diff options
Diffstat (limited to '')
64 files changed, 32233 insertions, 31110 deletions
diff --git a/docs/sqlglot.html b/docs/sqlglot.html index 896e331..5da9c75 100644 --- a/docs/sqlglot.html +++ b/docs/sqlglot.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -663,180 +663,188 @@ </span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</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-10"><a href="#L-10"><span class="linenos"> 10</span></a> </span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a><span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">expressions</span> <span class="k">as</span> <span class="n">exp</span> -</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span><span class="p">,</span> <span class="n">Dialects</span> -</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="kn">from</span> <span class="nn">sqlglot.diff</span> <span class="kn">import</span> <span class="n">diff</span> -</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="kn">from</span> <span class="nn">sqlglot.errors</span> <span class="kn">import</span> <span class="n">ErrorLevel</span><span class="p">,</span> <span class="n">ParseError</span><span class="p">,</span> <span class="n">TokenError</span><span class="p">,</span> <span class="n">UnsupportedError</span> -</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="kn">from</span> <span class="nn">sqlglot.expressions</span> <span class="kn">import</span> <span class="n">Expression</span> -</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a><span class="kn">from</span> <span class="nn">sqlglot.expressions</span> <span class="kn">import</span> <span class="n">alias_</span> <span class="k">as</span> <span class="n">alias</span> -</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a><span class="kn">from</span> <span class="nn">sqlglot.expressions</span> <span class="kn">import</span> <span class="p">(</span> -</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> <span class="n">and_</span><span class="p">,</span> -</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="n">column</span><span class="p">,</span> -</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="n">condition</span><span class="p">,</span> -</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="n">except_</span><span class="p">,</span> -</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="n">from_</span><span class="p">,</span> -</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> <span class="n">intersect</span><span class="p">,</span> -</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="n">maybe_parse</span><span class="p">,</span> -</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> <span class="n">not_</span><span class="p">,</span> -</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="n">or_</span><span class="p">,</span> -</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="n">select</span><span class="p">,</span> -</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="n">subquery</span><span class="p">,</span> -</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a><span class="p">)</span> -</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a><span class="kn">from</span> <span class="nn">sqlglot.expressions</span> <span class="kn">import</span> <span class="n">table_</span> <span class="k">as</span> <span class="n">table</span> -</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a><span class="kn">from</span> <span class="nn">sqlglot.expressions</span> <span class="kn">import</span> <span class="n">to_column</span><span class="p">,</span> <span class="n">to_table</span><span class="p">,</span> <span class="n">union</span> -</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a><span class="kn">from</span> <span class="nn">sqlglot.generator</span> <span class="kn">import</span> <span class="n">Generator</span> -</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a><span class="kn">from</span> <span class="nn">sqlglot.parser</span> <span class="kn">import</span> <span class="n">Parser</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.schema</span> <span class="kn">import</span> <span class="n">MappingSchema</span><span class="p">,</span> <span class="n">Schema</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.tokens</span> <span class="kn">import</span> <span class="n">Tokenizer</span><span class="p">,</span> <span class="n">TokenType</span> -</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> -</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a><span class="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">TYPE_CHECKING</span><span class="p">:</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.dialects.dialect</span> <span class="kn">import</span> <span class="n">DialectType</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">T</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">TypeVar</span><span class="p">(</span><span class="s2">"T"</span><span class="p">,</span> <span class="n">bound</span><span class="o">=</span><span class="n">Expression</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="n">__version__</span> <span class="o">=</span> <span class="s2">"11.1.3"</span> -</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> -</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a><span class="n">pretty</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a><span class="sd">"""Whether to format generated SQL by default."""</span> -</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> -</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a><span class="n">schema</span> <span class="o">=</span> <span class="n">MappingSchema</span><span class="p">()</span> -</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a><span class="sd">"""The default schema used by SQLGlot (e.g. in the optimizer)."""</span> -</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> +</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a><span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span> <span class="k">as</span> <span class="n">Dialect</span><span class="p">,</span> <span class="n">Dialects</span> <span class="k">as</span> <span class="n">Dialects</span> +</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="kn">from</span> <span class="nn">sqlglot.diff</span> <span class="kn">import</span> <span class="n">diff</span> <span class="k">as</span> <span class="n">diff</span> +</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="kn">from</span> <span class="nn">sqlglot.errors</span> <span class="kn">import</span> <span class="p">(</span> +</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a> <span class="n">ErrorLevel</span> <span class="k">as</span> <span class="n">ErrorLevel</span><span class="p">,</span> +</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">ParseError</span><span class="p">,</span> +</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> <span class="n">TokenError</span> <span class="k">as</span> <span class="n">TokenError</span><span class="p">,</span> +</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> <span class="n">UnsupportedError</span> <span class="k">as</span> <span class="n">UnsupportedError</span><span class="p">,</span> +</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a><span class="p">)</span> +</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a><span class="kn">from</span> <span class="nn">sqlglot.expressions</span> <span class="kn">import</span> <span class="p">(</span> +</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="n">Expression</span> <span class="k">as</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="n">alias_</span> <span class="k">as</span> <span class="n">alias</span><span class="p">,</span> +</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> <span class="n">and_</span> <span class="k">as</span> <span class="n">and_</span><span class="p">,</span> +</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="n">column</span> <span class="k">as</span> <span class="n">column</span><span class="p">,</span> +</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> <span class="n">condition</span> <span class="k">as</span> <span class="n">condition</span><span class="p">,</span> +</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="n">except_</span> <span class="k">as</span> <span class="n">except_</span><span class="p">,</span> +</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="n">from_</span> <span class="k">as</span> <span class="n">from_</span><span class="p">,</span> +</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="n">intersect</span> <span class="k">as</span> <span class="n">intersect</span><span class="p">,</span> +</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="n">maybe_parse</span> <span class="k">as</span> <span class="n">maybe_parse</span><span class="p">,</span> +</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="n">not_</span> <span class="k">as</span> <span class="n">not_</span><span class="p">,</span> +</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="n">or_</span> <span class="k">as</span> <span class="n">or_</span><span class="p">,</span> +</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="n">select</span> <span class="k">as</span> <span class="n">select</span><span class="p">,</span> +</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="n">subquery</span> <span class="k">as</span> <span class="n">subquery</span><span class="p">,</span> +</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> <span class="n">table_</span> <span class="k">as</span> <span class="n">table</span><span class="p">,</span> +</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="n">to_column</span> <span class="k">as</span> <span class="n">to_column</span><span class="p">,</span> +</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="n">to_table</span> <span class="k">as</span> <span class="n">to_table</span><span class="p">,</span> +</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="n">union</span> <span class="k">as</span> <span class="n">union</span><span class="p">,</span> +</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a><span class="p">)</span> +</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a><span class="kn">from</span> <span class="nn">sqlglot.generator</span> <span class="kn">import</span> <span class="n">Generator</span> <span class="k">as</span> <span class="n">Generator</span> +</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a><span class="kn">from</span> <span class="nn">sqlglot.parser</span> <span class="kn">import</span> <span class="n">Parser</span> <span class="k">as</span> <span class="n">Parser</span> +</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a><span class="kn">from</span> <span class="nn">sqlglot.schema</span> <span class="kn">import</span> <span class="n">MappingSchema</span> <span class="k">as</span> <span class="n">MappingSchema</span><span class="p">,</span> <span class="n">Schema</span> <span class="k">as</span> <span class="n">Schema</span> +</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a><span class="kn">from</span> <span class="nn">sqlglot.tokens</span> <span class="kn">import</span> <span class="n">Tokenizer</span> <span class="k">as</span> <span class="n">Tokenizer</span><span class="p">,</span> <span class="n">TokenType</span> <span class="k">as</span> <span class="n">TokenType</span> +</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> +</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a><span class="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">TYPE_CHECKING</span><span class="p">:</span> +</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">DialectType</span> <span class="k">as</span> <span class="n">DialectType</span> +</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> +</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="n">T</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">TypeVar</span><span class="p">(</span><span class="s2">"T"</span><span class="p">,</span> <span class="n">bound</span><span class="o">=</span><span class="n">Expression</span><span class="p">)</span> +</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> +</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> +</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="s2">"11.2.2"</span> </span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> -</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</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">Expression</span><span class="p">]]:</span> -</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a><span class="sd"> Parses the given SQL string into a collection of syntax trees, one per parsed SQL statement.</span> -</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> -</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a><span class="sd"> Args:</span> -</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a><span class="sd"> sql: the SQL code string to parse.</span> -</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span> -</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> -</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a><span class="sd"> Returns:</span> -</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a><span class="sd"> The resulting syntax tree collection.</span> -</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a><span class="sd"> """</span> -</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">read</span><span class="p">)()</span> -</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> +</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a><span class="n">pretty</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a><span class="sd">"""Whether to format generated SQL by default."""</span> +</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> +</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a><span class="n">schema</span> <span class="o">=</span> <span class="n">MappingSchema</span><span class="p">()</span> +</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a><span class="sd">"""The default schema used by SQLGlot (e.g. in the optimizer)."""</span> +</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><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</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">Expression</span><span class="p">]]:</span> +</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a><span class="sd"> Parses the given SQL string into a collection of syntax trees, one per parsed SQL statement.</span> +</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> +</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a><span class="sd"> Args:</span> +</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a><span class="sd"> sql: the SQL code string to parse.</span> +</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span> </span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> -</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> -</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="n">read</span><span class="p">:</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">T</span><span class="p">]</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span> -</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">T</span><span class="p">:</span> -</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="o">...</span> -</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> -</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> -</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> -</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">,</span> -</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">T</span><span class="p">],</span> -</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">T</span><span class="p">:</span> -</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="o">...</span> -</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> -</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> -</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> -</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="n">read</span><span class="p">:</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">]]]]</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="o">...</span> -</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> -</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> -</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">,</span> -</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">]]]],</span> -</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="o">...</span> -</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> -</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> -</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> -</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="o">...</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a><span class="sd"> Returns:</span> +</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="sd"> The resulting syntax tree collection.</span> +</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="sd"> """</span> +</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">read</span><span class="p">)()</span> +</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> +</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> +</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> +</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">read</span><span class="p">:</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">T</span><span class="p">]</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">T</span><span class="p">:</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="o">...</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="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> +</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">,</span> +</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">T</span><span class="p">],</span> +</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">T</span><span class="p">:</span> +</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="o">...</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> +</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 class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> +</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="n">read</span><span class="p">:</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">]]]]</span> <span class="o">=</span> <span class="o">...</span><span class="p">,</span> +</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="o">...</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="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> +</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span><span class="p">,</span> +</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="n">into</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">]]]],</span> +</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="o">...</span> +</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> </span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> -</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> +</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> </span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> </span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a><span class="sd"> Parses the given SQL string and returns a syntax tree for the first parsed SQL statement.</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> -</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a><span class="sd"> Args:</span> -</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a><span class="sd"> sql: the SQL code string to parse.</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a><span class="sd"> into: the SQLGlot Expression to parse into.</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> -</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a><span class="sd"> Returns:</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a><span class="sd"> The syntax tree for the first parsed statement.</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a><span class="sd"> """</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> -</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">read</span><span class="p">)()</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> -</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">into</span><span class="p">,</span> <span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="o">...</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> +</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> +</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a><span class="sd"> Parses the given SQL string and returns a syntax tree for the first parsed SQL statement.</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> +</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a><span class="sd"> Args:</span> +</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a><span class="sd"> sql: the SQL code string to parse.</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a><span class="sd"> into: the SQLGlot Expression to parse into.</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> +</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a><span class="sd"> Returns:</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a><span class="sd"> The syntax tree for the first parsed statement.</span> +</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a><span class="sd"> """</span> </span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> -</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">result</span><span class="p">:</span> -</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No expression was parsed from '</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> -</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">read</span><span class="p">)()</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> +</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">into</span><span class="p">,</span> <span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No expression was parsed from '</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> -</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> -</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a><span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span> -</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">write</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="n">identity</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a><span class="p">)</span> <span class="o">-></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-158"><a href="#L-158"><span class="linenos">158</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a><span class="sd"> Parses the given SQL string in accordance with the source dialect and returns a list of SQL strings transformed</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a><span class="sd"> to conform to the target dialect. Each string in the returned list represents a single transformed SQL statement.</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> -</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a><span class="sd"> Args:</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a><span class="sd"> sql: the SQL code string to transpile.</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a><span class="sd"> read: the source dialect used to parse the input string (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a><span class="sd"> write: the target dialect into which the input should be transformed (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a><span class="sd"> identity: if set to `True` and if the target dialect is not specified the source dialect will be used as both:</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a><span class="sd"> the source and the target dialect.</span> -</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a><span class="sd"> error_level: the desired error level of the parser.</span> -</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a><span class="sd"> **opts: other `sqlglot.generator.Generator` options.</span> -</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> -</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a><span class="sd"> Returns:</span> -</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a><span class="sd"> The list of transpiled SQL statements.</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a><span class="sd"> """</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="n">write</span> <span class="o">=</span> <span class="n">write</span> <span class="ow">or</span> <span class="n">read</span> <span class="k">if</span> <span class="n">identity</span> <span class="k">else</span> <span class="n">write</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="k">return</span> <span class="p">[</span> -</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">write</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">error_level</span><span class="p">)</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="p">]</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">result</span><span class="p">:</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No expression was parsed from '</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No expression was parsed from '</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> +</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">def</span> <span class="nf">transpile</span><span class="p">(</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">write</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="n">identity</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a><span class="p">)</span> <span class="o">-></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-165"><a href="#L-165"><span class="linenos">165</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a><span class="sd"> Parses the given SQL string in accordance with the source dialect and returns a list of SQL strings transformed</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a><span class="sd"> to conform to the target dialect. Each string in the returned list represents a single transformed SQL statement.</span> +</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="sd"> Args:</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a><span class="sd"> sql: the SQL code string to transpile.</span> +</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a><span class="sd"> read: the source dialect used to parse the input string (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a><span class="sd"> write: the target dialect into which the input should be transformed (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a><span class="sd"> identity: if set to `True` and if the target dialect is not specified the source dialect will be used as both:</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a><span class="sd"> the source and the target dialect.</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a><span class="sd"> error_level: the desired error level of the parser.</span> +</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a><span class="sd"> **opts: other `sqlglot.generator.Generator` options.</span> +</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> +</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a><span class="sd"> Returns:</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a><span class="sd"> The list of transpiled SQL statements.</span> +</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a><span class="sd"> """</span> +</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="n">write</span> <span class="o">=</span> <span class="n">write</span> <span class="ow">or</span> <span class="n">read</span> <span class="k">if</span> <span class="n">identity</span> <span class="k">else</span> <span class="n">write</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="k">return</span> <span class="p">[</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">write</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">error_level</span><span class="p">)</span> +</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="p">]</span> </span></pre></div> </section> <section id="pretty"> <div class="attr variable"> - <span class="name">pretty</span><span class="default_value"> = False</span> + <span class="name">pretty</span> = +<span class="default_value">False</span> </div> @@ -849,7 +857,8 @@ </section> <section id="schema"> <div class="attr variable"> - <span class="name">schema</span><span class="default_value"> = <<a href="sqlglot/schema.html#MappingSchema">sqlglot.schema.MappingSchema</a> object></span> + <span class="name">schema</span> = +<span class="default_value"><<a href="sqlglot/schema.html#MappingSchema">sqlglot.schema.MappingSchema</a> object></span> </div> @@ -871,20 +880,20 @@ </div> <a class="headerlink" href="#parse"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="parse-53"><a href="#parse-53"><span class="linenos">53</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</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">Expression</span><span class="p">]]:</span> -</span><span id="parse-54"><a href="#parse-54"><span class="linenos">54</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="parse-55"><a href="#parse-55"><span class="linenos">55</span></a><span class="sd"> Parses the given SQL string into a collection of syntax trees, one per parsed SQL statement.</span> -</span><span id="parse-56"><a href="#parse-56"><span class="linenos">56</span></a> -</span><span id="parse-57"><a href="#parse-57"><span class="linenos">57</span></a><span class="sd"> Args:</span> -</span><span id="parse-58"><a href="#parse-58"><span class="linenos">58</span></a><span class="sd"> sql: the SQL code string to parse.</span> -</span><span id="parse-59"><a href="#parse-59"><span class="linenos">59</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="parse-60"><a href="#parse-60"><span class="linenos">60</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span> -</span><span id="parse-61"><a href="#parse-61"><span class="linenos">61</span></a> -</span><span id="parse-62"><a href="#parse-62"><span class="linenos">62</span></a><span class="sd"> Returns:</span> -</span><span id="parse-63"><a href="#parse-63"><span class="linenos">63</span></a><span class="sd"> The resulting syntax tree collection.</span> -</span><span id="parse-64"><a href="#parse-64"><span class="linenos">64</span></a><span class="sd"> """</span> -</span><span id="parse-65"><a href="#parse-65"><span class="linenos">65</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">read</span><span class="p">)()</span> -</span><span id="parse-66"><a href="#parse-66"><span class="linenos">66</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="parse-60"><a href="#parse-60"><span class="linenos">60</span></a><span class="k">def</span> <span class="nf">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</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">Expression</span><span class="p">]]:</span> +</span><span id="parse-61"><a href="#parse-61"><span class="linenos">61</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="parse-62"><a href="#parse-62"><span class="linenos">62</span></a><span class="sd"> Parses the given SQL string into a collection of syntax trees, one per parsed SQL statement.</span> +</span><span id="parse-63"><a href="#parse-63"><span class="linenos">63</span></a> +</span><span id="parse-64"><a href="#parse-64"><span class="linenos">64</span></a><span class="sd"> Args:</span> +</span><span id="parse-65"><a href="#parse-65"><span class="linenos">65</span></a><span class="sd"> sql: the SQL code string to parse.</span> +</span><span id="parse-66"><a href="#parse-66"><span class="linenos">66</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="parse-67"><a href="#parse-67"><span class="linenos">67</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span> +</span><span id="parse-68"><a href="#parse-68"><span class="linenos">68</span></a> +</span><span id="parse-69"><a href="#parse-69"><span class="linenos">69</span></a><span class="sd"> Returns:</span> +</span><span id="parse-70"><a href="#parse-70"><span class="linenos">70</span></a><span class="sd"> The resulting syntax tree collection.</span> +</span><span id="parse-71"><a href="#parse-71"><span class="linenos">71</span></a><span class="sd"> """</span> +</span><span id="parse-72"><a href="#parse-72"><span class="linenos">72</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">read</span><span class="p">)()</span> +</span><span id="parse-73"><a href="#parse-73"><span class="linenos">73</span></a> <span class="k">return</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -918,38 +927,38 @@ </div> <a class="headerlink" href="#parse_one"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="parse_one-117"><a href="#parse_one-117"><span class="linenos">117</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> -</span><span id="parse_one-118"><a href="#parse_one-118"><span class="linenos">118</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="parse_one-119"><a href="#parse_one-119"><span class="linenos">119</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="parse_one-120"><a href="#parse_one-120"><span class="linenos">120</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="parse_one-121"><a href="#parse_one-121"><span class="linenos">121</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="parse_one-122"><a href="#parse_one-122"><span class="linenos">122</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="parse_one-123"><a href="#parse_one-123"><span class="linenos">123</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="parse_one-124"><a href="#parse_one-124"><span class="linenos">124</span></a><span class="sd"> Parses the given SQL string and returns a syntax tree for the first parsed SQL statement.</span> -</span><span id="parse_one-125"><a href="#parse_one-125"><span class="linenos">125</span></a> -</span><span id="parse_one-126"><a href="#parse_one-126"><span class="linenos">126</span></a><span class="sd"> Args:</span> -</span><span id="parse_one-127"><a href="#parse_one-127"><span class="linenos">127</span></a><span class="sd"> sql: the SQL code string to parse.</span> -</span><span id="parse_one-128"><a href="#parse_one-128"><span class="linenos">128</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="parse_one-129"><a href="#parse_one-129"><span class="linenos">129</span></a><span class="sd"> into: the SQLGlot Expression to parse into.</span> -</span><span id="parse_one-130"><a href="#parse_one-130"><span class="linenos">130</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span> -</span><span id="parse_one-131"><a href="#parse_one-131"><span class="linenos">131</span></a> -</span><span id="parse_one-132"><a href="#parse_one-132"><span class="linenos">132</span></a><span class="sd"> Returns:</span> -</span><span id="parse_one-133"><a href="#parse_one-133"><span class="linenos">133</span></a><span class="sd"> The syntax tree for the first parsed statement.</span> -</span><span id="parse_one-134"><a href="#parse_one-134"><span class="linenos">134</span></a><span class="sd"> """</span> -</span><span id="parse_one-135"><a href="#parse_one-135"><span class="linenos">135</span></a> -</span><span id="parse_one-136"><a href="#parse_one-136"><span class="linenos">136</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">read</span><span class="p">)()</span> -</span><span id="parse_one-137"><a href="#parse_one-137"><span class="linenos">137</span></a> -</span><span id="parse_one-138"><a href="#parse_one-138"><span class="linenos">138</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> -</span><span id="parse_one-139"><a href="#parse_one-139"><span class="linenos">139</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">into</span><span class="p">,</span> <span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="parse_one-140"><a href="#parse_one-140"><span class="linenos">140</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="parse_one-141"><a href="#parse_one-141"><span class="linenos">141</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="parse_one-124"><a href="#parse_one-124"><span class="linenos">124</span></a><span class="k">def</span> <span class="nf">parse_one</span><span class="p">(</span> +</span><span id="parse_one-125"><a href="#parse_one-125"><span class="linenos">125</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="parse_one-126"><a href="#parse_one-126"><span class="linenos">126</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="parse_one-127"><a href="#parse_one-127"><span class="linenos">127</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="parse_one-128"><a href="#parse_one-128"><span class="linenos">128</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="parse_one-129"><a href="#parse_one-129"><span class="linenos">129</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="parse_one-130"><a href="#parse_one-130"><span class="linenos">130</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="parse_one-131"><a href="#parse_one-131"><span class="linenos">131</span></a><span class="sd"> Parses the given SQL string and returns a syntax tree for the first parsed SQL statement.</span> +</span><span id="parse_one-132"><a href="#parse_one-132"><span class="linenos">132</span></a> +</span><span id="parse_one-133"><a href="#parse_one-133"><span class="linenos">133</span></a><span class="sd"> Args:</span> +</span><span id="parse_one-134"><a href="#parse_one-134"><span class="linenos">134</span></a><span class="sd"> sql: the SQL code string to parse.</span> +</span><span id="parse_one-135"><a href="#parse_one-135"><span class="linenos">135</span></a><span class="sd"> read: the SQL dialect to apply during parsing (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="parse_one-136"><a href="#parse_one-136"><span class="linenos">136</span></a><span class="sd"> into: the SQLGlot Expression to parse into.</span> +</span><span id="parse_one-137"><a href="#parse_one-137"><span class="linenos">137</span></a><span class="sd"> **opts: other `sqlglot.parser.Parser` options.</span> +</span><span id="parse_one-138"><a href="#parse_one-138"><span class="linenos">138</span></a> +</span><span id="parse_one-139"><a href="#parse_one-139"><span class="linenos">139</span></a><span class="sd"> Returns:</span> +</span><span id="parse_one-140"><a href="#parse_one-140"><span class="linenos">140</span></a><span class="sd"> The syntax tree for the first parsed statement.</span> +</span><span id="parse_one-141"><a href="#parse_one-141"><span class="linenos">141</span></a><span class="sd"> """</span> </span><span id="parse_one-142"><a href="#parse_one-142"><span class="linenos">142</span></a> -</span><span id="parse_one-143"><a href="#parse_one-143"><span class="linenos">143</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">result</span><span class="p">:</span> -</span><span id="parse_one-144"><a href="#parse_one-144"><span class="linenos">144</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="parse_one-145"><a href="#parse_one-145"><span class="linenos">145</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No expression was parsed from '</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> -</span><span id="parse_one-146"><a href="#parse_one-146"><span class="linenos">146</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="parse_one-143"><a href="#parse_one-143"><span class="linenos">143</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">read</span><span class="p">)()</span> +</span><span id="parse_one-144"><a href="#parse_one-144"><span class="linenos">144</span></a> +</span><span id="parse_one-145"><a href="#parse_one-145"><span class="linenos">145</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> +</span><span id="parse_one-146"><a href="#parse_one-146"><span class="linenos">146</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse_into</span><span class="p">(</span><span class="n">into</span><span class="p">,</span> <span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="parse_one-147"><a href="#parse_one-147"><span class="linenos">147</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="parse_one-148"><a href="#parse_one-148"><span class="linenos">148</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No expression was parsed from '</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> +</span><span id="parse_one-148"><a href="#parse_one-148"><span class="linenos">148</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="parse_one-149"><a href="#parse_one-149"><span class="linenos">149</span></a> +</span><span id="parse_one-150"><a href="#parse_one-150"><span class="linenos">150</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">result</span><span class="p">:</span> +</span><span id="parse_one-151"><a href="#parse_one-151"><span class="linenos">151</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="parse_one-152"><a href="#parse_one-152"><span class="linenos">152</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No expression was parsed from '</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> +</span><span id="parse_one-153"><a href="#parse_one-153"><span class="linenos">153</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="parse_one-154"><a href="#parse_one-154"><span class="linenos">154</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="parse_one-155"><a href="#parse_one-155"><span class="linenos">155</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No expression was parsed from '</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">'"</span><span class="p">)</span> </span></pre></div> @@ -984,35 +993,35 @@ </div> <a class="headerlink" href="#transpile"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="transpile-151"><a href="#transpile-151"><span class="linenos">151</span></a><span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span> -</span><span id="transpile-152"><a href="#transpile-152"><span class="linenos">152</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="transpile-153"><a href="#transpile-153"><span class="linenos">153</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="transpile-154"><a href="#transpile-154"><span class="linenos">154</span></a> <span class="n">write</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="transpile-155"><a href="#transpile-155"><span class="linenos">155</span></a> <span class="n">identity</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="transpile-156"><a href="#transpile-156"><span class="linenos">156</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="transpile-157"><a href="#transpile-157"><span class="linenos">157</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="transpile-158"><a href="#transpile-158"><span class="linenos">158</span></a><span class="p">)</span> <span class="o">-></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="transpile-159"><a href="#transpile-159"><span class="linenos">159</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="transpile-160"><a href="#transpile-160"><span class="linenos">160</span></a><span class="sd"> Parses the given SQL string in accordance with the source dialect and returns a list of SQL strings transformed</span> -</span><span id="transpile-161"><a href="#transpile-161"><span class="linenos">161</span></a><span class="sd"> to conform to the target dialect. Each string in the returned list represents a single transformed SQL statement.</span> -</span><span id="transpile-162"><a href="#transpile-162"><span class="linenos">162</span></a> -</span><span id="transpile-163"><a href="#transpile-163"><span class="linenos">163</span></a><span class="sd"> Args:</span> -</span><span id="transpile-164"><a href="#transpile-164"><span class="linenos">164</span></a><span class="sd"> sql: the SQL code string to transpile.</span> -</span><span id="transpile-165"><a href="#transpile-165"><span class="linenos">165</span></a><span class="sd"> read: the source dialect used to parse the input string (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="transpile-166"><a href="#transpile-166"><span class="linenos">166</span></a><span class="sd"> write: the target dialect into which the input should be transformed (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="transpile-167"><a href="#transpile-167"><span class="linenos">167</span></a><span class="sd"> identity: if set to `True` and if the target dialect is not specified the source dialect will be used as both:</span> -</span><span id="transpile-168"><a href="#transpile-168"><span class="linenos">168</span></a><span class="sd"> the source and the target dialect.</span> -</span><span id="transpile-169"><a href="#transpile-169"><span class="linenos">169</span></a><span class="sd"> error_level: the desired error level of the parser.</span> -</span><span id="transpile-170"><a href="#transpile-170"><span class="linenos">170</span></a><span class="sd"> **opts: other `sqlglot.generator.Generator` options.</span> -</span><span id="transpile-171"><a href="#transpile-171"><span class="linenos">171</span></a> -</span><span id="transpile-172"><a href="#transpile-172"><span class="linenos">172</span></a><span class="sd"> Returns:</span> -</span><span id="transpile-173"><a href="#transpile-173"><span class="linenos">173</span></a><span class="sd"> The list of transpiled SQL statements.</span> -</span><span id="transpile-174"><a href="#transpile-174"><span class="linenos">174</span></a><span class="sd"> """</span> -</span><span id="transpile-175"><a href="#transpile-175"><span class="linenos">175</span></a> <span class="n">write</span> <span class="o">=</span> <span class="n">write</span> <span class="ow">or</span> <span class="n">read</span> <span class="k">if</span> <span class="n">identity</span> <span class="k">else</span> <span class="n">write</span> -</span><span id="transpile-176"><a href="#transpile-176"><span class="linenos">176</span></a> <span class="k">return</span> <span class="p">[</span> -</span><span id="transpile-177"><a href="#transpile-177"><span class="linenos">177</span></a> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">write</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="transpile-178"><a href="#transpile-178"><span class="linenos">178</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">error_level</span><span class="p">)</span> -</span><span id="transpile-179"><a href="#transpile-179"><span class="linenos">179</span></a> <span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="transpile-158"><a href="#transpile-158"><span class="linenos">158</span></a><span class="k">def</span> <span class="nf">transpile</span><span class="p">(</span> +</span><span id="transpile-159"><a href="#transpile-159"><span class="linenos">159</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="transpile-160"><a href="#transpile-160"><span class="linenos">160</span></a> <span class="n">read</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="transpile-161"><a href="#transpile-161"><span class="linenos">161</span></a> <span class="n">write</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="transpile-162"><a href="#transpile-162"><span class="linenos">162</span></a> <span class="n">identity</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="transpile-163"><a href="#transpile-163"><span class="linenos">163</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="transpile-164"><a href="#transpile-164"><span class="linenos">164</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="transpile-165"><a href="#transpile-165"><span class="linenos">165</span></a><span class="p">)</span> <span class="o">-></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="transpile-166"><a href="#transpile-166"><span class="linenos">166</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="transpile-167"><a href="#transpile-167"><span class="linenos">167</span></a><span class="sd"> Parses the given SQL string in accordance with the source dialect and returns a list of SQL strings transformed</span> +</span><span id="transpile-168"><a href="#transpile-168"><span class="linenos">168</span></a><span class="sd"> to conform to the target dialect. Each string in the returned list represents a single transformed SQL statement.</span> +</span><span id="transpile-169"><a href="#transpile-169"><span class="linenos">169</span></a> +</span><span id="transpile-170"><a href="#transpile-170"><span class="linenos">170</span></a><span class="sd"> Args:</span> +</span><span id="transpile-171"><a href="#transpile-171"><span class="linenos">171</span></a><span class="sd"> sql: the SQL code string to transpile.</span> +</span><span id="transpile-172"><a href="#transpile-172"><span class="linenos">172</span></a><span class="sd"> read: the source dialect used to parse the input string (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="transpile-173"><a href="#transpile-173"><span class="linenos">173</span></a><span class="sd"> write: the target dialect into which the input should be transformed (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="transpile-174"><a href="#transpile-174"><span class="linenos">174</span></a><span class="sd"> identity: if set to `True` and if the target dialect is not specified the source dialect will be used as both:</span> +</span><span id="transpile-175"><a href="#transpile-175"><span class="linenos">175</span></a><span class="sd"> the source and the target dialect.</span> +</span><span id="transpile-176"><a href="#transpile-176"><span class="linenos">176</span></a><span class="sd"> error_level: the desired error level of the parser.</span> +</span><span id="transpile-177"><a href="#transpile-177"><span class="linenos">177</span></a><span class="sd"> **opts: other `sqlglot.generator.Generator` options.</span> +</span><span id="transpile-178"><a href="#transpile-178"><span class="linenos">178</span></a> +</span><span id="transpile-179"><a href="#transpile-179"><span class="linenos">179</span></a><span class="sd"> Returns:</span> +</span><span id="transpile-180"><a href="#transpile-180"><span class="linenos">180</span></a><span class="sd"> The list of transpiled SQL statements.</span> +</span><span id="transpile-181"><a href="#transpile-181"><span class="linenos">181</span></a><span class="sd"> """</span> +</span><span id="transpile-182"><a href="#transpile-182"><span class="linenos">182</span></a> <span class="n">write</span> <span class="o">=</span> <span class="n">write</span> <span class="ow">or</span> <span class="n">read</span> <span class="k">if</span> <span class="n">identity</span> <span class="k">else</span> <span class="n">write</span> +</span><span id="transpile-183"><a href="#transpile-183"><span class="linenos">183</span></a> <span class="k">return</span> <span class="p">[</span> +</span><span id="transpile-184"><a href="#transpile-184"><span class="linenos">184</span></a> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">write</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="transpile-185"><a href="#transpile-185"><span class="linenos">185</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">parse</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</span><span class="p">,</span> <span class="n">error_level</span><span class="o">=</span><span class="n">error_level</span><span class="p">)</span> +</span><span id="transpile-186"><a href="#transpile-186"><span class="linenos">186</span></a> <span class="p">]</span> </span></pre></div> @@ -1160,7 +1169,7 @@ the source and the target dialect.</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dataframe.html b/docs/sqlglot/dataframe.html index ea6f345..7befe92 100644 --- a/docs/sqlglot/dataframe.html +++ b/docs/sqlglot/dataframe.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dataframe 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -440,7 +440,7 @@ GROUP BY if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dataframe/sql.html b/docs/sqlglot/dataframe/sql.html index ea00232..3298708 100644 --- a/docs/sqlglot/dataframe/sql.html +++ b/docs/sqlglot/dataframe/sql.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dataframe.sql 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#SparkSession">SparkSession</a> <ul class="memberlist"> <li> - <a class="function" href="#SparkSession.__init__">SparkSession</a> - </li> - <li> <a class="function" href="#SparkSession.table">table</a> </li> <li> @@ -310,9 +307,6 @@ <a class="class" href="#Window">Window</a> <ul class="memberlist"> <li> - <a class="function" href="#Window.__init__">Window</a> - </li> - <li> <a class="function" href="#Window.partitionBy">partitionBy</a> </li> <li> @@ -590,24 +584,6 @@ - <div id="SparkSession.__init__" class="classattr"> - <input id="SparkSession.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> -<div class="attr function"> - - <span class="name">SparkSession</span><span class="signature pdoc-code condensed">()</span> - - <label class="view-source-button" for="SparkSession.__init__-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#SparkSession.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SparkSession.__init__-26"><a href="#SparkSession.__init__-26"><span class="linenos">26</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="SparkSession.__init__-27"><a href="#SparkSession.__init__-27"><span class="linenos">27</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">incrementing_id</span> <span class="o">=</span> <span class="mi">1</span> -</span></pre></div> - - - - - </div> <div id="SparkSession.table" class="classattr"> <input id="SparkSession.table-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr function"> @@ -632,7 +608,7 @@ <div class="attr function"> <span class="def">def</span> - <span class="name">createDataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">data</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483441683968'</span><span class="o">></span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483441683968'</span><span class="o">></span><span class="p">],</span> <span class="n">Tuple</span><span class="p">]]</span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483443386656'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">samplingRatio</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">verifySchema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">sqlglot.dataframe.sql.DataFrame</a></span>:</span></span> + <span class="name">createDataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">data</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512212685136'</span><span class="o">></span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512212685136'</span><span class="o">></span><span class="p">],</span> <span class="n">Tuple</span><span class="p">]]</span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512212632768'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">samplingRatio</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">verifySchema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">sqlglot.dataframe.sql.DataFrame</a></span>:</span></span> <label class="view-source-button" for="SparkSession.createDataFrame-view-source"><span>View Source</span></label> @@ -754,743 +730,743 @@ </div> <a class="headerlink" href="#DataFrame"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame-46"><a href="#DataFrame-46"><span class="linenos"> 46</span></a><span class="k">class</span> <span class="nc">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-47"><a href="#DataFrame-47"><span class="linenos"> 47</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="DataFrame-48"><a href="#DataFrame-48"><span class="linenos"> 48</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame-49"><a href="#DataFrame-49"><span class="linenos"> 49</span></a> <span class="n">spark</span><span class="p">:</span> <span class="n">SparkSession</span><span class="p">,</span> -</span><span id="DataFrame-50"><a href="#DataFrame-50"><span class="linenos"> 50</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> -</span><span id="DataFrame-51"><a href="#DataFrame-51"><span class="linenos"> 51</span></a> <span class="n">branch_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-52"><a href="#DataFrame-52"><span class="linenos"> 52</span></a> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-53"><a href="#DataFrame-53"><span class="linenos"> 53</span></a> <span class="n">last_op</span><span class="p">:</span> <span class="n">Operation</span> <span class="o">=</span> <span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">,</span> -</span><span id="DataFrame-54"><a href="#DataFrame-54"><span class="linenos"> 54</span></a> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-55"><a href="#DataFrame-55"><span class="linenos"> 55</span></a> <span class="n">output_expression_container</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">OutputExpressionContainer</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-56"><a href="#DataFrame-56"><span class="linenos"> 56</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="DataFrame-57"><a href="#DataFrame-57"><span class="linenos"> 57</span></a> <span class="p">):</span> -</span><span id="DataFrame-58"><a href="#DataFrame-58"><span class="linenos"> 58</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span> <span class="o">=</span> <span class="n">spark</span> -</span><span id="DataFrame-59"><a href="#DataFrame-59"><span class="linenos"> 59</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="DataFrame-60"><a href="#DataFrame-60"><span class="linenos"> 60</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">branch_id</span> <span class="o">=</span> <span class="n">branch_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_branch_id</span> -</span><span id="DataFrame-61"><a href="#DataFrame-61"><span class="linenos"> 61</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span> <span class="o">=</span> <span class="n">sequence_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_sequence_id</span> -</span><span id="DataFrame-62"><a href="#DataFrame-62"><span class="linenos"> 62</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">last_op</span> <span class="o">=</span> <span class="n">last_op</span> -</span><span id="DataFrame-63"><a href="#DataFrame-63"><span class="linenos"> 63</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span> <span class="o">=</span> <span class="n">pending_hints</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="DataFrame-64"><a href="#DataFrame-64"><span class="linenos"> 64</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">output_expression_container</span> <span class="o">=</span> <span class="n">output_expression_container</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">()</span> -</span><span id="DataFrame-65"><a href="#DataFrame-65"><span class="linenos"> 65</span></a> -</span><span id="DataFrame-66"><a href="#DataFrame-66"><span class="linenos"> 66</span></a> <span class="k">def</span> <span class="fm">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> -</span><span id="DataFrame-67"><a href="#DataFrame-67"><span class="linenos"> 67</span></a> <span class="k">return</span> <span class="bp">self</span><span class="p">[</span><span class="n">column_name</span><span class="p">]</span> -</span><span id="DataFrame-68"><a href="#DataFrame-68"><span class="linenos"> 68</span></a> -</span><span id="DataFrame-69"><a href="#DataFrame-69"><span class="linenos"> 69</span></a> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> -</span><span id="DataFrame-70"><a href="#DataFrame-70"><span class="linenos"> 70</span></a> <span class="n">column_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">branch_id</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">"</span> -</span><span id="DataFrame-71"><a href="#DataFrame-71"><span class="linenos"> 71</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span> -</span><span id="DataFrame-72"><a href="#DataFrame-72"><span class="linenos"> 72</span></a> -</span><span id="DataFrame-73"><a href="#DataFrame-73"><span class="linenos"> 73</span></a> <span class="k">def</span> <span class="nf">__copy__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="DataFrame-74"><a href="#DataFrame-74"><span class="linenos"> 74</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-75"><a href="#DataFrame-75"><span class="linenos"> 75</span></a> -</span><span id="DataFrame-76"><a href="#DataFrame-76"><span class="linenos"> 76</span></a> <span class="nd">@property</span> -</span><span id="DataFrame-77"><a href="#DataFrame-77"><span class="linenos"> 77</span></a> <span class="k">def</span> <span class="nf">sparkSession</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="DataFrame-78"><a href="#DataFrame-78"><span class="linenos"> 78</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span> -</span><span id="DataFrame-79"><a href="#DataFrame-79"><span class="linenos"> 79</span></a> -</span><span id="DataFrame-80"><a href="#DataFrame-80"><span class="linenos"> 80</span></a> <span class="nd">@property</span> -</span><span id="DataFrame-81"><a href="#DataFrame-81"><span class="linenos"> 81</span></a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="DataFrame-82"><a href="#DataFrame-82"><span class="linenos"> 82</span></a> <span class="k">return</span> <span class="n">DataFrameWriter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="DataFrame-83"><a href="#DataFrame-83"><span class="linenos"> 83</span></a> -</span><span id="DataFrame-84"><a href="#DataFrame-84"><span class="linenos"> 84</span></a> <span class="nd">@property</span> -</span><span id="DataFrame-85"><a href="#DataFrame-85"><span class="linenos"> 85</span></a> <span class="k">def</span> <span class="nf">latest_cte_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="DataFrame-86"><a href="#DataFrame-86"><span class="linenos"> 86</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> -</span><span id="DataFrame-87"><a href="#DataFrame-87"><span class="linenos"> 87</span></a> <span class="n">from_exp</span> <span class="o">=</span> <span class="bp">self</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">"from"</span><span class="p">]</span> -</span><span id="DataFrame-88"><a href="#DataFrame-88"><span class="linenos"> 88</span></a> <span class="k">if</span> <span class="n">from_exp</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> -</span><span id="DataFrame-89"><a href="#DataFrame-89"><span class="linenos"> 89</span></a> <span class="k">return</span> <span class="n">from_exp</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="DataFrame-90"><a href="#DataFrame-90"><span class="linenos"> 90</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">from_exp</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">)</span> -</span><span id="DataFrame-91"><a href="#DataFrame-91"><span class="linenos"> 91</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table_alias</span><span class="p">:</span> -</span><span id="DataFrame-92"><a href="#DataFrame-92"><span class="linenos"> 92</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> -</span><span id="DataFrame-93"><a href="#DataFrame-93"><span class="linenos"> 93</span></a> <span class="sa">f</span><span class="s2">"Could not find an alias name for this expression: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span> -</span><span id="DataFrame-94"><a href="#DataFrame-94"><span class="linenos"> 94</span></a> <span class="p">)</span> -</span><span id="DataFrame-95"><a href="#DataFrame-95"><span class="linenos"> 95</span></a> <span class="k">return</span> <span class="n">table_alias</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="DataFrame-96"><a href="#DataFrame-96"><span class="linenos"> 96</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">alias</span> -</span><span id="DataFrame-97"><a href="#DataFrame-97"><span class="linenos"> 97</span></a> -</span><span id="DataFrame-98"><a href="#DataFrame-98"><span class="linenos"> 98</span></a> <span class="nd">@property</span> -</span><span id="DataFrame-99"><a href="#DataFrame-99"><span class="linenos"> 99</span></a> <span class="k">def</span> <span class="nf">pending_join_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="DataFrame-100"><a href="#DataFrame-100"><span class="linenos">100</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">hint</span> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">hint</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">)]</span> -</span><span id="DataFrame-101"><a href="#DataFrame-101"><span class="linenos">101</span></a> -</span><span id="DataFrame-102"><a href="#DataFrame-102"><span class="linenos">102</span></a> <span class="nd">@property</span> -</span><span id="DataFrame-103"><a href="#DataFrame-103"><span class="linenos">103</span></a> <span class="k">def</span> <span class="nf">pending_partition_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="DataFrame-104"><a href="#DataFrame-104"><span class="linenos">104</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">hint</span> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">hint</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">)]</span> -</span><span id="DataFrame-105"><a href="#DataFrame-105"><span class="linenos">105</span></a> -</span><span id="DataFrame-106"><a href="#DataFrame-106"><span class="linenos">106</span></a> <span class="nd">@property</span> -</span><span id="DataFrame-107"><a href="#DataFrame-107"><span class="linenos">107</span></a> <span class="k">def</span> <span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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="DataFrame-108"><a href="#DataFrame-108"><span class="linenos">108</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> -</span><span id="DataFrame-109"><a href="#DataFrame-109"><span class="linenos">109</span></a> -</span><span id="DataFrame-110"><a href="#DataFrame-110"><span class="linenos">110</span></a> <span class="nd">@property</span> -</span><span id="DataFrame-111"><a href="#DataFrame-111"><span class="linenos">111</span></a> <span class="k">def</span> <span class="nf">na</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrameNaFunctions</span><span class="p">:</span> -</span><span id="DataFrame-112"><a href="#DataFrame-112"><span class="linenos">112</span></a> <span class="k">return</span> <span class="n">DataFrameNaFunctions</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="DataFrame-113"><a href="#DataFrame-113"><span class="linenos">113</span></a> -</span><span id="DataFrame-114"><a href="#DataFrame-114"><span class="linenos">114</span></a> <span class="k">def</span> <span class="nf">_replace_cte_names_with_hashes</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">Select</span><span class="p">):</span> -</span><span id="DataFrame-115"><a href="#DataFrame-115"><span class="linenos">115</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="DataFrame-116"><a href="#DataFrame-116"><span class="linenos">116</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> -</span><span id="DataFrame-117"><a href="#DataFrame-117"><span class="linenos">117</span></a> <span class="n">old_name_id</span> <span class="o">=</span> <span class="n">cte</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> -</span><span id="DataFrame-118"><a href="#DataFrame-118"><span class="linenos">118</span></a> <span class="n">new_hashed_id</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span> -</span><span id="DataFrame-119"><a href="#DataFrame-119"><span class="linenos">119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_create_hash_from_expression</span><span class="p">(</span><span class="n">cte</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="n">quoted</span><span class="o">=</span><span class="n">old_name_id</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"quoted"</span><span class="p">]</span> -</span><span id="DataFrame-120"><a href="#DataFrame-120"><span class="linenos">120</span></a> <span class="p">)</span> -</span><span id="DataFrame-121"><a href="#DataFrame-121"><span class="linenos">121</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">old_name_id</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_hashed_id</span> -</span><span id="DataFrame-122"><a href="#DataFrame-122"><span class="linenos">122</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">replace_id_value</span><span class="p">,</span> <span class="n">replacement_mapping</span><span class="p">)</span> -</span><span id="DataFrame-123"><a href="#DataFrame-123"><span class="linenos">123</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="DataFrame-124"><a href="#DataFrame-124"><span class="linenos">124</span></a> -</span><span id="DataFrame-125"><a href="#DataFrame-125"><span class="linenos">125</span></a> <span class="k">def</span> <span class="nf">_create_cte_from_expression</span><span class="p">(</span> -</span><span id="DataFrame-126"><a href="#DataFrame-126"><span class="linenos">126</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame-127"><a href="#DataFrame-127"><span class="linenos">127</span></a> <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><span id="DataFrame-128"><a href="#DataFrame-128"><span class="linenos">128</span></a> <span class="n">branch_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-129"><a href="#DataFrame-129"><span class="linenos">129</span></a> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-130"><a href="#DataFrame-130"><span class="linenos">130</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="DataFrame-131"><a href="#DataFrame-131"><span class="linenos">131</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="DataFrame-132"><a href="#DataFrame-132"><span class="linenos">132</span></a> <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_name</span> -</span><span id="DataFrame-133"><a href="#DataFrame-133"><span class="linenos">133</span></a> <span class="n">expression_to_cte</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-134"><a href="#DataFrame-134"><span class="linenos">134</span></a> <span class="n">expression_to_cte</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="DataFrame-135"><a href="#DataFrame-135"><span class="linenos">135</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">with_</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">as_</span><span class="o">=</span><span class="n">expression_to_cte</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="o">.</span><span class="n">ctes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="DataFrame-136"><a href="#DataFrame-136"><span class="linenos">136</span></a> <span class="n">cte</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"branch_id"</span><span class="p">,</span> <span class="n">branch_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">branch_id</span><span class="p">)</span> -</span><span id="DataFrame-137"><a href="#DataFrame-137"><span class="linenos">137</span></a> <span class="n">cte</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"sequence_id"</span><span class="p">,</span> <span class="n">sequence_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">)</span> -</span><span id="DataFrame-138"><a href="#DataFrame-138"><span class="linenos">138</span></a> <span class="k">return</span> <span class="n">cte</span><span class="p">,</span> <span class="n">name</span> -</span><span id="DataFrame-139"><a href="#DataFrame-139"><span class="linenos">139</span></a> -</span><span id="DataFrame-140"><a href="#DataFrame-140"><span class="linenos">140</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="DataFrame-141"><a href="#DataFrame-141"><span class="linenos">141</span></a> <span class="k">def</span> <span class="nf">_ensure_list_of_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">ColumnOrLiteral</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]:</span> -</span><span id="DataFrame-142"><a href="#DataFrame-142"><span class="linenos">142</span></a> <span class="o">...</span> -</span><span id="DataFrame-143"><a href="#DataFrame-143"><span class="linenos">143</span></a> -</span><span id="DataFrame-144"><a href="#DataFrame-144"><span class="linenos">144</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="DataFrame-145"><a href="#DataFrame-145"><span class="linenos">145</span></a> <span class="k">def</span> <span class="nf">_ensure_list_of_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cols</span><span class="p">:</span> <span class="n">ColumnOrLiteral</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]:</span> -</span><span id="DataFrame-146"><a href="#DataFrame-146"><span class="linenos">146</span></a> <span class="o">...</span> -</span><span id="DataFrame-147"><a href="#DataFrame-147"><span class="linenos">147</span></a> -</span><span id="DataFrame-148"><a href="#DataFrame-148"><span class="linenos">148</span></a> <span class="k">def</span> <span class="nf">_ensure_list_of_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cols</span><span class="p">):</span> -</span><span id="DataFrame-149"><a href="#DataFrame-149"><span class="linenos">149</span></a> <span class="k">return</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cols</span><span class="p">))</span> -</span><span id="DataFrame-150"><a href="#DataFrame-150"><span class="linenos">150</span></a> -</span><span id="DataFrame-151"><a href="#DataFrame-151"><span class="linenos">151</span></a> <span class="k">def</span> <span class="nf">_ensure_and_normalize_cols</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cols</span><span class="p">):</span> -</span><span id="DataFrame-152"><a href="#DataFrame-152"><span class="linenos">152</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame-153"><a href="#DataFrame-153"><span class="linenos">153</span></a> <span class="n">normalize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame-154"><a href="#DataFrame-154"><span class="linenos">154</span></a> <span class="k">return</span> <span class="n">cols</span> -</span><span id="DataFrame-155"><a href="#DataFrame-155"><span class="linenos">155</span></a> -</span><span id="DataFrame-156"><a href="#DataFrame-156"><span class="linenos">156</span></a> <span class="k">def</span> <span class="nf">_ensure_and_normalize_col</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">col</span><span class="p">):</span> -</span><span id="DataFrame-157"><a href="#DataFrame-157"><span class="linenos">157</span></a> <span class="n">col</span> <span class="o">=</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_col</span><span class="p">(</span><span class="n">col</span><span class="p">)</span> -</span><span id="DataFrame-158"><a href="#DataFrame-158"><span class="linenos">158</span></a> <span class="n">normalize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">col</span><span class="p">)</span> -</span><span id="DataFrame-159"><a href="#DataFrame-159"><span class="linenos">159</span></a> <span class="k">return</span> <span class="n">col</span> -</span><span id="DataFrame-160"><a href="#DataFrame-160"><span class="linenos">160</span></a> -</span><span id="DataFrame-161"><a href="#DataFrame-161"><span class="linenos">161</span></a> <span class="k">def</span> <span class="nf">_convert_leaf_to_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-162"><a href="#DataFrame-162"><span class="linenos">162</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resolve_pending_hints</span><span class="p">()</span> -</span><span id="DataFrame-163"><a href="#DataFrame-163"><span class="linenos">163</span></a> <span class="n">sequence_id</span> <span class="o">=</span> <span class="n">sequence_id</span> <span class="ow">or</span> <span class="n">df</span><span class="o">.</span><span class="n">sequence_id</span> -</span><span id="DataFrame-164"><a href="#DataFrame-164"><span class="linenos">164</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-165"><a href="#DataFrame-165"><span class="linenos">165</span></a> <span class="n">cte_expression</span><span class="p">,</span> <span class="n">cte_name</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_create_cte_from_expression</span><span class="p">(</span> -</span><span id="DataFrame-166"><a href="#DataFrame-166"><span class="linenos">166</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">sequence_id</span><span class="o">=</span><span class="n">sequence_id</span> -</span><span id="DataFrame-167"><a href="#DataFrame-167"><span class="linenos">167</span></a> <span class="p">)</span> -</span><span id="DataFrame-168"><a href="#DataFrame-168"><span class="linenos">168</span></a> <span class="n">new_expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_add_ctes_to_expression</span><span class="p">(</span> -</span><span id="DataFrame-169"><a href="#DataFrame-169"><span class="linenos">169</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">(),</span> <span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> <span class="o">+</span> <span class="p">[</span><span class="n">cte_expression</span><span class="p">]</span> -</span><span id="DataFrame-170"><a href="#DataFrame-170"><span class="linenos">170</span></a> <span class="p">)</span> -</span><span id="DataFrame-171"><a href="#DataFrame-171"><span class="linenos">171</span></a> <span class="n">sel_columns</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">cte_expression</span><span class="p">)</span> -</span><span id="DataFrame-172"><a href="#DataFrame-172"><span class="linenos">172</span></a> <span class="n">new_expression</span> <span class="o">=</span> <span class="n">new_expression</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">cte_name</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">(</span> -</span><span id="DataFrame-173"><a href="#DataFrame-173"><span class="linenos">173</span></a> <span class="o">*</span><span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">sel_columns</span><span class="p">]</span> -</span><span id="DataFrame-174"><a href="#DataFrame-174"><span class="linenos">174</span></a> <span class="p">)</span> -</span><span id="DataFrame-175"><a href="#DataFrame-175"><span class="linenos">175</span></a> <span class="k">return</span> <span class="n">df</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">new_expression</span><span class="p">,</span> <span class="n">sequence_id</span><span class="o">=</span><span class="n">sequence_id</span><span class="p">)</span> -</span><span id="DataFrame-176"><a href="#DataFrame-176"><span class="linenos">176</span></a> -</span><span id="DataFrame-177"><a href="#DataFrame-177"><span class="linenos">177</span></a> <span class="k">def</span> <span class="nf">_resolve_pending_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-178"><a href="#DataFrame-178"><span class="linenos">178</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-179"><a href="#DataFrame-179"><span class="linenos">179</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span><span class="p">:</span> -</span><span id="DataFrame-180"><a href="#DataFrame-180"><span class="linenos">180</span></a> <span class="k">return</span> <span class="n">df</span> -</span><span id="DataFrame-181"><a href="#DataFrame-181"><span class="linenos">181</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">expression</span> -</span><span id="DataFrame-182"><a href="#DataFrame-182"><span class="linenos">182</span></a> <span class="n">hint_expression</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">"hint"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[])</span> -</span><span id="DataFrame-183"><a href="#DataFrame-183"><span class="linenos">183</span></a> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">pending_partition_hints</span><span class="p">:</span> -</span><span id="DataFrame-184"><a href="#DataFrame-184"><span class="linenos">184</span></a> <span class="n">hint_expression</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">hint</span><span class="p">)</span> -</span><span id="DataFrame-185"><a href="#DataFrame-185"><span class="linenos">185</span></a> <span class="n">df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> -</span><span id="DataFrame-186"><a href="#DataFrame-186"><span class="linenos">186</span></a> -</span><span id="DataFrame-187"><a href="#DataFrame-187"><span class="linenos">187</span></a> <span class="n">join_aliases</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataFrame-188"><a href="#DataFrame-188"><span class="linenos">188</span></a> <span class="n">join_table</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="DataFrame-189"><a href="#DataFrame-189"><span class="linenos">189</span></a> <span class="k">for</span> <span class="n">join_table</span> <span class="ow">in</span> <span class="n">get_tables_from_expression_with_join</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame-190"><a href="#DataFrame-190"><span class="linenos">190</span></a> <span class="p">}</span> -</span><span id="DataFrame-191"><a href="#DataFrame-191"><span class="linenos">191</span></a> <span class="k">if</span> <span class="n">join_aliases</span><span class="p">:</span> -</span><span id="DataFrame-192"><a href="#DataFrame-192"><span class="linenos">192</span></a> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">pending_join_hints</span><span class="p">:</span> -</span><span id="DataFrame-193"><a href="#DataFrame-193"><span class="linenos">193</span></a> <span class="k">for</span> <span class="n">sequence_id_expression</span> <span class="ow">in</span> <span class="n">hint</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="DataFrame-194"><a href="#DataFrame-194"><span class="linenos">194</span></a> <span class="n">sequence_id_or_name</span> <span class="o">=</span> <span class="n">sequence_id_expression</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="DataFrame-195"><a href="#DataFrame-195"><span class="linenos">195</span></a> <span class="n">sequence_ids_to_match</span> <span class="o">=</span> <span class="p">[</span><span class="n">sequence_id_or_name</span><span class="p">]</span> -</span><span id="DataFrame-196"><a href="#DataFrame-196"><span class="linenos">196</span></a> <span class="k">if</span> <span class="n">sequence_id_or_name</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">name_to_sequence_id_mapping</span><span class="p">:</span> -</span><span id="DataFrame-197"><a href="#DataFrame-197"><span class="linenos">197</span></a> <span class="n">sequence_ids_to_match</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">name_to_sequence_id_mapping</span><span class="p">[</span> -</span><span id="DataFrame-198"><a href="#DataFrame-198"><span class="linenos">198</span></a> <span class="n">sequence_id_or_name</span> -</span><span id="DataFrame-199"><a href="#DataFrame-199"><span class="linenos">199</span></a> <span class="p">]</span> -</span><span id="DataFrame-200"><a href="#DataFrame-200"><span class="linenos">200</span></a> <span class="n">matching_ctes</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-201"><a href="#DataFrame-201"><span class="linenos">201</span></a> <span class="n">cte</span> -</span><span id="DataFrame-202"><a href="#DataFrame-202"><span class="linenos">202</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="nb">reversed</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">)</span> -</span><span id="DataFrame-203"><a href="#DataFrame-203"><span class="linenos">203</span></a> <span class="k">if</span> <span class="n">cte</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"sequence_id"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">sequence_ids_to_match</span> -</span><span id="DataFrame-204"><a href="#DataFrame-204"><span class="linenos">204</span></a> <span class="p">]</span> -</span><span id="DataFrame-205"><a href="#DataFrame-205"><span class="linenos">205</span></a> <span class="k">for</span> <span class="n">matching_cte</span> <span class="ow">in</span> <span class="n">matching_ctes</span><span class="p">:</span> -</span><span id="DataFrame-206"><a href="#DataFrame-206"><span class="linenos">206</span></a> <span class="k">if</span> <span class="n">matching_cte</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">join_aliases</span><span class="p">:</span> -</span><span id="DataFrame-207"><a href="#DataFrame-207"><span class="linenos">207</span></a> <span class="n">sequence_id_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">matching_cte</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="DataFrame-208"><a href="#DataFrame-208"><span class="linenos">208</span></a> <span class="n">df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> -</span><span id="DataFrame-209"><a href="#DataFrame-209"><span class="linenos">209</span></a> <span class="k">break</span> -</span><span id="DataFrame-210"><a href="#DataFrame-210"><span class="linenos">210</span></a> <span class="n">hint_expression</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">hint</span><span class="p">)</span> -</span><span id="DataFrame-211"><a href="#DataFrame-211"><span class="linenos">211</span></a> <span class="k">if</span> <span class="n">hint_expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="DataFrame-212"><a href="#DataFrame-212"><span class="linenos">212</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"hint"</span><span class="p">,</span> <span class="n">hint_expression</span><span class="p">)</span> -</span><span id="DataFrame-213"><a href="#DataFrame-213"><span class="linenos">213</span></a> <span class="k">return</span> <span class="n">df</span> -</span><span id="DataFrame-214"><a href="#DataFrame-214"><span class="linenos">214</span></a> -</span><span id="DataFrame-215"><a href="#DataFrame-215"><span class="linenos">215</span></a> <span class="k">def</span> <span class="nf">_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hint_name</span><span class="p">:</span> <span class="nb">str</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="n">Column</span><span class="p">])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-216"><a href="#DataFrame-216"><span class="linenos">216</span></a> <span class="n">hint_name</span> <span class="o">=</span> <span class="n">hint_name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="DataFrame-217"><a href="#DataFrame-217"><span class="linenos">217</span></a> <span class="n">hint_expression</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="DataFrame-218"><a href="#DataFrame-218"><span class="linenos">218</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span> -</span><span id="DataFrame-219"><a href="#DataFrame-219"><span class="linenos">219</span></a> <span class="n">this</span><span class="o">=</span><span class="n">hint_name</span><span class="p">,</span> -</span><span id="DataFrame-220"><a href="#DataFrame-220"><span class="linenos">220</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_table</span><span class="p">(</span><span class="n">parameter</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">parameter</span> <span class="ow">in</span> <span class="n">args</span><span class="p">],</span> -</span><span id="DataFrame-221"><a href="#DataFrame-221"><span class="linenos">221</span></a> <span class="p">)</span> -</span><span id="DataFrame-222"><a href="#DataFrame-222"><span class="linenos">222</span></a> <span class="k">if</span> <span class="n">hint_name</span> <span class="ow">in</span> <span class="n">JOIN_HINTS</span> -</span><span id="DataFrame-223"><a href="#DataFrame-223"><span class="linenos">223</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">(</span> -</span><span id="DataFrame-224"><a href="#DataFrame-224"><span class="linenos">224</span></a> <span class="n">this</span><span class="o">=</span><span class="n">hint_name</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">parameter</span><span class="o">.</span><span class="n">expression</span> <span class="k">for</span> <span class="n">parameter</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span> -</span><span id="DataFrame-225"><a href="#DataFrame-225"><span class="linenos">225</span></a> <span class="p">)</span> -</span><span id="DataFrame-226"><a href="#DataFrame-226"><span class="linenos">226</span></a> <span class="p">)</span> -</span><span id="DataFrame-227"><a href="#DataFrame-227"><span class="linenos">227</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-228"><a href="#DataFrame-228"><span class="linenos">228</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">hint_expression</span><span class="p">)</span> -</span><span id="DataFrame-229"><a href="#DataFrame-229"><span class="linenos">229</span></a> <span class="k">return</span> <span class="n">new_df</span> -</span><span id="DataFrame-230"><a href="#DataFrame-230"><span class="linenos">230</span></a> -</span><span id="DataFrame-231"><a href="#DataFrame-231"><span class="linenos">231</span></a> <span class="k">def</span> <span class="nf">_set_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">klass</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span><span class="p">):</span> -</span><span id="DataFrame-232"><a href="#DataFrame-232"><span class="linenos">232</span></a> <span class="n">other_df</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> -</span><span id="DataFrame-233"><a href="#DataFrame-233"><span class="linenos">233</span></a> <span class="n">base_expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-234"><a href="#DataFrame-234"><span class="linenos">234</span></a> <span class="n">base_expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add_ctes_to_expression</span><span class="p">(</span><span class="n">base_expression</span><span class="p">,</span> <span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">)</span> -</span><span id="DataFrame-235"><a href="#DataFrame-235"><span class="linenos">235</span></a> <span class="n">all_ctes</span> <span class="o">=</span> <span class="n">base_expression</span><span class="o">.</span><span class="n">ctes</span> -</span><span id="DataFrame-236"><a href="#DataFrame-236"><span class="linenos">236</span></a> <span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="DataFrame-237"><a href="#DataFrame-237"><span class="linenos">237</span></a> <span class="n">base_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="DataFrame-238"><a href="#DataFrame-238"><span class="linenos">238</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">klass</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">base_expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame-239"><a href="#DataFrame-239"><span class="linenos">239</span></a> <span class="n">operation</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">all_ctes</span><span class="p">))</span> -</span><span id="DataFrame-240"><a href="#DataFrame-240"><span class="linenos">240</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">operation</span><span class="p">)</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> -</span><span id="DataFrame-241"><a href="#DataFrame-241"><span class="linenos">241</span></a> -</span><span id="DataFrame-242"><a href="#DataFrame-242"><span class="linenos">242</span></a> <span class="k">def</span> <span class="nf">_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">storage_level</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="DataFrame-243"><a href="#DataFrame-243"><span class="linenos">243</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> -</span><span id="DataFrame-244"><a href="#DataFrame-244"><span class="linenos">244</span></a> <span class="n">df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cache_storage_level"</span><span class="p">,</span> <span class="n">storage_level</span><span class="p">)</span> -</span><span id="DataFrame-245"><a href="#DataFrame-245"><span class="linenos">245</span></a> <span class="k">return</span> <span class="n">df</span> -</span><span id="DataFrame-246"><a href="#DataFrame-246"><span class="linenos">246</span></a> -</span><span id="DataFrame-247"><a href="#DataFrame-247"><span class="linenos">247</span></a> <span class="nd">@classmethod</span> -</span><span id="DataFrame-248"><a href="#DataFrame-248"><span class="linenos">248</span></a> <span class="k">def</span> <span class="nf">_add_ctes_to_expression</span><span class="p">(</span><span class="bp">cls</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">Select</span><span class="p">,</span> <span class="n">ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> -</span><span id="DataFrame-249"><a href="#DataFrame-249"><span class="linenos">249</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-250"><a href="#DataFrame-250"><span class="linenos">250</span></a> <span class="n">with_expression</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">"with"</span><span class="p">)</span> -</span><span id="DataFrame-251"><a href="#DataFrame-251"><span class="linenos">251</span></a> <span class="k">if</span> <span class="n">with_expression</span><span class="p">:</span> -</span><span id="DataFrame-252"><a href="#DataFrame-252"><span class="linenos">252</span></a> <span class="n">existing_ctes</span> <span class="o">=</span> <span class="n">with_expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="DataFrame-253"><a href="#DataFrame-253"><span class="linenos">253</span></a> <span class="n">existsing_cte_names</span> <span class="o">=</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">existing_ctes</span><span class="p">}</span> -</span><span id="DataFrame-254"><a href="#DataFrame-254"><span class="linenos">254</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="n">ctes</span><span class="p">:</span> -</span><span id="DataFrame-255"><a href="#DataFrame-255"><span class="linenos">255</span></a> <span class="k">if</span> <span class="n">cte</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">existsing_cte_names</span><span class="p">:</span> -</span><span id="DataFrame-256"><a href="#DataFrame-256"><span class="linenos">256</span></a> <span class="n">existing_ctes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cte</span><span class="p">)</span> -</span><span id="DataFrame-257"><a href="#DataFrame-257"><span class="linenos">257</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-258"><a href="#DataFrame-258"><span class="linenos">258</span></a> <span class="n">existing_ctes</span> <span class="o">=</span> <span class="n">ctes</span> -</span><span id="DataFrame-259"><a href="#DataFrame-259"><span class="linenos">259</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">existing_ctes</span><span class="p">))</span> -</span><span id="DataFrame-260"><a href="#DataFrame-260"><span class="linenos">260</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="DataFrame-261"><a href="#DataFrame-261"><span class="linenos">261</span></a> -</span><span id="DataFrame-262"><a href="#DataFrame-262"><span class="linenos">262</span></a> <span class="nd">@classmethod</span> -</span><span id="DataFrame-263"><a href="#DataFrame-263"><span class="linenos">263</span></a> <span class="k">def</span> <span class="nf">_get_outer_select_columns</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">item</span><span class="p">:</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">Expression</span><span class="p">,</span> <span class="n">DataFrame</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]:</span> -</span><span id="DataFrame-264"><a href="#DataFrame-264"><span class="linenos">264</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">expression</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="k">else</span> <span class="n">item</span> -</span><span id="DataFrame-265"><a href="#DataFrame-265"><span class="linenos">265</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> -</span><span id="DataFrame-266"><a href="#DataFrame-266"><span class="linenos">266</span></a> -</span><span id="DataFrame-267"><a href="#DataFrame-267"><span class="linenos">267</span></a> <span class="nd">@classmethod</span> -</span><span id="DataFrame-268"><a href="#DataFrame-268"><span class="linenos">268</span></a> <span class="k">def</span> <span class="nf">_create_hash_from_expression</span><span class="p">(</span><span class="bp">cls</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">Select</span><span class="p">):</span> -</span><span id="DataFrame-269"><a href="#DataFrame-269"><span class="linenos">269</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="s2">"spark"</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">"utf-8"</span><span class="p">)</span> -</span><span id="DataFrame-270"><a href="#DataFrame-270"><span class="linenos">270</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"t</span><span class="si">{</span><span class="n">zlib</span><span class="o">.</span><span class="n">crc32</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">[:</span><span class="mi">6</span><span class="p">]</span> -</span><span id="DataFrame-271"><a href="#DataFrame-271"><span class="linenos">271</span></a> -</span><span id="DataFrame-272"><a href="#DataFrame-272"><span class="linenos">272</span></a> <span class="k">def</span> <span class="nf">_get_select_expressions</span><span class="p">(</span> -</span><span id="DataFrame-273"><a href="#DataFrame-273"><span class="linenos">273</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame-274"><a href="#DataFrame-274"><span class="linenos">274</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">],</span> <span class="n">OutputExpressionContainer</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">]]:</span> -</span><span id="DataFrame-275"><a href="#DataFrame-275"><span class="linenos">275</span></a> <span class="n">select_expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span> -</span><span id="DataFrame-276"><a href="#DataFrame-276"><span class="linenos">276</span></a> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">],</span> <span class="n">OutputExpressionContainer</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">]</span> -</span><span id="DataFrame-277"><a href="#DataFrame-277"><span class="linenos">277</span></a> <span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="DataFrame-278"><a href="#DataFrame-278"><span class="linenos">278</span></a> <span class="n">main_select_ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="DataFrame-279"><a href="#DataFrame-279"><span class="linenos">279</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> -</span><span id="DataFrame-280"><a href="#DataFrame-280"><span class="linenos">280</span></a> <span class="n">cache_storage_level</span> <span class="o">=</span> <span class="n">cte</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">"cache_storage_level"</span><span class="p">)</span> -</span><span id="DataFrame-281"><a href="#DataFrame-281"><span class="linenos">281</span></a> <span class="k">if</span> <span class="n">cache_storage_level</span><span class="p">:</span> -</span><span id="DataFrame-282"><a href="#DataFrame-282"><span class="linenos">282</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">cte</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-283"><a href="#DataFrame-283"><span class="linenos">283</span></a> <span class="n">select_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">copy</span><span class="p">(</span><span class="n">main_select_ctes</span><span class="p">)))</span> -</span><span id="DataFrame-284"><a href="#DataFrame-284"><span class="linenos">284</span></a> <span class="n">select_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cte_alias_name"</span><span class="p">,</span> <span class="n">cte</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> -</span><span id="DataFrame-285"><a href="#DataFrame-285"><span class="linenos">285</span></a> <span class="n">select_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cache_storage_level"</span><span class="p">,</span> <span class="n">cache_storage_level</span><span class="p">)</span> -</span><span id="DataFrame-286"><a href="#DataFrame-286"><span class="linenos">286</span></a> <span class="n">select_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">select_expression</span><span class="p">))</span> -</span><span id="DataFrame-287"><a href="#DataFrame-287"><span class="linenos">287</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-288"><a href="#DataFrame-288"><span class="linenos">288</span></a> <span class="n">main_select_ctes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cte</span><span class="p">)</span> -</span><span id="DataFrame-289"><a href="#DataFrame-289"><span class="linenos">289</span></a> <span class="n">main_select</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-290"><a href="#DataFrame-290"><span class="linenos">290</span></a> <span class="k">if</span> <span class="n">main_select_ctes</span><span class="p">:</span> -</span><span id="DataFrame-291"><a href="#DataFrame-291"><span class="linenos">291</span></a> <span class="n">main_select</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">main_select_ctes</span><span class="p">))</span> -</span><span id="DataFrame-292"><a href="#DataFrame-292"><span class="linenos">292</span></a> <span class="n">expression_select_pair</span> <span class="o">=</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">output_expression_container</span><span class="p">),</span> <span class="n">main_select</span><span class="p">)</span> -</span><span id="DataFrame-293"><a href="#DataFrame-293"><span class="linenos">293</span></a> <span class="n">select_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression_select_pair</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="DataFrame-294"><a href="#DataFrame-294"><span class="linenos">294</span></a> <span class="k">return</span> <span class="n">select_expressions</span> -</span><span id="DataFrame-295"><a href="#DataFrame-295"><span class="linenos">295</span></a> -</span><span id="DataFrame-296"><a href="#DataFrame-296"><span class="linenos">296</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="s2">"spark"</span><span class="p">,</span> <span class="n">optimize</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></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="DataFrame-297"><a href="#DataFrame-297"><span class="linenos">297</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resolve_pending_hints</span><span class="p">()</span> -</span><span id="DataFrame-298"><a href="#DataFrame-298"><span class="linenos">298</span></a> <span class="n">select_expressions</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_get_select_expressions</span><span class="p">()</span> -</span><span id="DataFrame-299"><a href="#DataFrame-299"><span class="linenos">299</span></a> <span class="n">output_expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">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">Select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="DataFrame-300"><a href="#DataFrame-300"><span class="linenos">300</span></a> <span class="n">replacement_mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="DataFrame-301"><a href="#DataFrame-301"><span class="linenos">301</span></a> <span class="k">for</span> <span class="n">expression_type</span><span class="p">,</span> <span class="n">select_expression</span> <span class="ow">in</span> <span class="n">select_expressions</span><span class="p">:</span> -</span><span id="DataFrame-302"><a href="#DataFrame-302"><span class="linenos">302</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">replace_id_value</span><span class="p">,</span> <span class="n">replacement_mapping</span><span class="p">)</span> -</span><span id="DataFrame-303"><a href="#DataFrame-303"><span class="linenos">303</span></a> <span class="k">if</span> <span class="n">optimize</span><span class="p">:</span> -</span><span id="DataFrame-304"><a href="#DataFrame-304"><span class="linenos">304</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">optimize_func</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> -</span><span id="DataFrame-305"><a href="#DataFrame-305"><span class="linenos">305</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_replace_cte_names_with_hashes</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> -</span><span id="DataFrame-306"><a href="#DataFrame-306"><span class="linenos">306</span></a> <span class="n">expression</span><span class="p">:</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">Select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">]</span> -</span><span id="DataFrame-307"><a href="#DataFrame-307"><span class="linenos">307</span></a> <span class="k">if</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">:</span> -</span><span id="DataFrame-308"><a href="#DataFrame-308"><span class="linenos">308</span></a> <span class="n">cache_table_name</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_create_hash_from_expression</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> -</span><span id="DataFrame-309"><a href="#DataFrame-309"><span class="linenos">309</span></a> <span class="n">cache_table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_table</span><span class="p">(</span><span class="n">cache_table_name</span><span class="p">)</span> -</span><span id="DataFrame-310"><a href="#DataFrame-310"><span class="linenos">310</span></a> <span class="n">original_alias_name</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"cte_alias_name"</span><span class="p">]</span> -</span><span id="DataFrame-311"><a href="#DataFrame-311"><span class="linenos">311</span></a> -</span><span id="DataFrame-312"><a href="#DataFrame-312"><span class="linenos">312</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">original_alias_name</span><span class="p">)]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span> <span class="c1"># type: ignore</span> -</span><span id="DataFrame-313"><a href="#DataFrame-313"><span class="linenos">313</span></a> <span class="n">cache_table_name</span> -</span><span id="DataFrame-314"><a href="#DataFrame-314"><span class="linenos">314</span></a> <span class="p">)</span> -</span><span id="DataFrame-315"><a href="#DataFrame-315"><span class="linenos">315</span></a> <span class="n">sqlglot</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">add_table</span><span class="p">(</span> -</span><span id="DataFrame-316"><a href="#DataFrame-316"><span class="linenos">316</span></a> <span class="n">cache_table_name</span><span class="p">,</span> -</span><span id="DataFrame-317"><a href="#DataFrame-317"><span class="linenos">317</span></a> <span class="p">{</span> -</span><span id="DataFrame-318"><a href="#DataFrame-318"><span class="linenos">318</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"spark"</span><span class="p">)</span> -</span><span id="DataFrame-319"><a href="#DataFrame-319"><span class="linenos">319</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="DataFrame-320"><a href="#DataFrame-320"><span class="linenos">320</span></a> <span class="p">},</span> -</span><span id="DataFrame-321"><a href="#DataFrame-321"><span class="linenos">321</span></a> <span class="p">)</span> -</span><span id="DataFrame-322"><a href="#DataFrame-322"><span class="linenos">322</span></a> <span class="n">cache_storage_level</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"cache_storage_level"</span><span class="p">]</span> -</span><span id="DataFrame-323"><a href="#DataFrame-323"><span class="linenos">323</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-324"><a href="#DataFrame-324"><span class="linenos">324</span></a> <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">"storageLevel"</span><span class="p">),</span> -</span><span id="DataFrame-325"><a href="#DataFrame-325"><span class="linenos">325</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">cache_storage_level</span><span class="p">),</span> -</span><span id="DataFrame-326"><a href="#DataFrame-326"><span class="linenos">326</span></a> <span class="p">]</span> -</span><span id="DataFrame-327"><a href="#DataFrame-327"><span class="linenos">327</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">(</span> -</span><span id="DataFrame-328"><a href="#DataFrame-328"><span class="linenos">328</span></a> <span class="n">this</span><span class="o">=</span><span class="n">cache_table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select_expression</span><span class="p">,</span> <span class="n">lazy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span> -</span><span id="DataFrame-329"><a href="#DataFrame-329"><span class="linenos">329</span></a> <span class="p">)</span> -</span><span id="DataFrame-330"><a href="#DataFrame-330"><span class="linenos">330</span></a> <span class="c1"># We will drop the "view" if it exists before running the cache table</span> -</span><span id="DataFrame-331"><a href="#DataFrame-331"><span class="linenos">331</span></a> <span class="n">output_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">cache_table</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="s2">"VIEW"</span><span class="p">))</span> -</span><span id="DataFrame-332"><a href="#DataFrame-332"><span class="linenos">332</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> -</span><span id="DataFrame-333"><a href="#DataFrame-333"><span class="linenos">333</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">output_expression_container</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-334"><a href="#DataFrame-334"><span class="linenos">334</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">select_expression</span><span class="p">)</span> -</span><span id="DataFrame-335"><a href="#DataFrame-335"><span class="linenos">335</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">:</span> -</span><span id="DataFrame-336"><a href="#DataFrame-336"><span class="linenos">336</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">output_expression_container</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-337"><a href="#DataFrame-337"><span class="linenos">337</span></a> <span class="n">select_without_ctes</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-338"><a href="#DataFrame-338"><span class="linenos">338</span></a> <span class="n">select_without_ctes</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="DataFrame-339"><a href="#DataFrame-339"><span class="linenos">339</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">select_without_ctes</span><span class="p">)</span> -</span><span id="DataFrame-340"><a href="#DataFrame-340"><span class="linenos">340</span></a> <span class="k">if</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> -</span><span id="DataFrame-341"><a href="#DataFrame-341"><span class="linenos">341</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">select_expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">))</span> -</span><span id="DataFrame-342"><a href="#DataFrame-342"><span class="linenos">342</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> -</span><span id="DataFrame-343"><a href="#DataFrame-343"><span class="linenos">343</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">select_expression</span> -</span><span id="DataFrame-344"><a href="#DataFrame-344"><span class="linenos">344</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-345"><a href="#DataFrame-345"><span class="linenos">345</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid expression type: </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="DataFrame-346"><a href="#DataFrame-346"><span class="linenos">346</span></a> <span class="n">output_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame-347"><a href="#DataFrame-347"><span class="linenos">347</span></a> -</span><span id="DataFrame-348"><a href="#DataFrame-348"><span class="linenos">348</span></a> <span class="k">return</span> <span class="p">[</span> -</span><span id="DataFrame-349"><a href="#DataFrame-349"><span class="linenos">349</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">output_expressions</span> -</span><span id="DataFrame-350"><a href="#DataFrame-350"><span class="linenos">350</span></a> <span class="p">]</span> -</span><span id="DataFrame-351"><a href="#DataFrame-351"><span class="linenos">351</span></a> -</span><span id="DataFrame-352"><a href="#DataFrame-352"><span class="linenos">352</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-353"><a href="#DataFrame-353"><span class="linenos">353</span></a> <span class="k">return</span> <span class="n">DataFrame</span><span class="p">(</span><span class="o">**</span><span class="n">object_to_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> -</span><span id="DataFrame-354"><a href="#DataFrame-354"><span class="linenos">354</span></a> -</span><span id="DataFrame-355"><a href="#DataFrame-355"><span class="linenos">355</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame-356"><a href="#DataFrame-356"><span class="linenos">356</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-357"><a href="#DataFrame-357"><span class="linenos">357</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame-358"><a href="#DataFrame-358"><span class="linenos">358</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"append"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"append"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="DataFrame-359"><a href="#DataFrame-359"><span class="linenos">359</span></a> <span class="k">if</span> <span class="bp">self</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">"joins"</span><span class="p">):</span> -</span><span id="DataFrame-360"><a href="#DataFrame-360"><span class="linenos">360</span></a> <span class="n">ambiguous_cols</span> <span class="o">=</span> <span class="p">[</span><span class="n">col</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">cols</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">col</span><span class="o">.</span><span class="n">column_expression</span><span class="o">.</span><span class="n">table</span><span class="p">]</span> -</span><span id="DataFrame-361"><a href="#DataFrame-361"><span class="linenos">361</span></a> <span class="k">if</span> <span class="n">ambiguous_cols</span><span class="p">:</span> -</span><span id="DataFrame-362"><a href="#DataFrame-362"><span class="linenos">362</span></a> <span class="n">join_table_identifiers</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-363"><a href="#DataFrame-363"><span class="linenos">363</span></a> <span class="n">x</span><span class="o">.</span><span class="n">this</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">get_tables_from_expression_with_join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame-364"><a href="#DataFrame-364"><span class="linenos">364</span></a> <span class="p">]</span> -</span><span id="DataFrame-365"><a href="#DataFrame-365"><span class="linenos">365</span></a> <span class="n">cte_names_in_join</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">this</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">join_table_identifiers</span><span class="p">]</span> -</span><span id="DataFrame-366"><a href="#DataFrame-366"><span class="linenos">366</span></a> <span class="k">for</span> <span class="n">ambiguous_col</span> <span class="ow">in</span> <span class="n">ambiguous_cols</span><span class="p">:</span> -</span><span id="DataFrame-367"><a href="#DataFrame-367"><span class="linenos">367</span></a> <span class="n">ctes_with_column</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-368"><a href="#DataFrame-368"><span class="linenos">368</span></a> <span class="n">cte</span> -</span><span id="DataFrame-369"><a href="#DataFrame-369"><span class="linenos">369</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> -</span><span id="DataFrame-370"><a href="#DataFrame-370"><span class="linenos">370</span></a> <span class="k">if</span> <span class="n">cte</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">cte_names_in_join</span> -</span><span id="DataFrame-371"><a href="#DataFrame-371"><span class="linenos">371</span></a> <span class="ow">and</span> <span class="n">ambiguous_col</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">cte</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">named_selects</span> -</span><span id="DataFrame-372"><a href="#DataFrame-372"><span class="linenos">372</span></a> <span class="p">]</span> -</span><span id="DataFrame-373"><a href="#DataFrame-373"><span class="linenos">373</span></a> <span class="c1"># If the select column does not specify a table and there is a join</span> -</span><span id="DataFrame-374"><a href="#DataFrame-374"><span class="linenos">374</span></a> <span class="c1"># then we assume they are referring to the left table</span> -</span><span id="DataFrame-375"><a href="#DataFrame-375"><span class="linenos">375</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ctes_with_column</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="DataFrame-376"><a href="#DataFrame-376"><span class="linenos">376</span></a> <span class="n">table_identifier</span> <span class="o">=</span> <span class="bp">self</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">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> -</span><span id="DataFrame-377"><a href="#DataFrame-377"><span class="linenos">377</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-378"><a href="#DataFrame-378"><span class="linenos">378</span></a> <span class="n">table_identifier</span> <span class="o">=</span> <span class="n">ctes_with_column</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> -</span><span id="DataFrame-379"><a href="#DataFrame-379"><span class="linenos">379</span></a> <span class="n">ambiguous_col</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">table_identifier</span><span class="p">)</span> -</span><span id="DataFrame-380"><a href="#DataFrame-380"><span class="linenos">380</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">expression</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">cols</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="DataFrame-381"><a href="#DataFrame-381"><span class="linenos">381</span></a> <span class="n">qualify_columns</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">schema</span><span class="p">)</span> -</span><span id="DataFrame-382"><a href="#DataFrame-382"><span class="linenos">382</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</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">kwargs</span><span class="p">)</span> -</span><span id="DataFrame-383"><a href="#DataFrame-383"><span class="linenos">383</span></a> -</span><span id="DataFrame-384"><a href="#DataFrame-384"><span class="linenos">384</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame-385"><a href="#DataFrame-385"><span class="linenos">385</span></a> <span class="k">def</span> <span class="nf">alias</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-386"><a href="#DataFrame-386"><span class="linenos">386</span></a> <span class="n">new_sequence_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_sequence_id</span> -</span><span id="DataFrame-387"><a href="#DataFrame-387"><span class="linenos">387</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-388"><a href="#DataFrame-388"><span class="linenos">388</span></a> <span class="k">for</span> <span class="n">join_hint</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">pending_join_hints</span><span class="p">:</span> -</span><span id="DataFrame-389"><a href="#DataFrame-389"><span class="linenos">389</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">join_hint</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="DataFrame-390"><a href="#DataFrame-390"><span class="linenos">390</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">:</span> -</span><span id="DataFrame-391"><a href="#DataFrame-391"><span class="linenos">391</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_col</span><span class="p">(</span><span class="n">new_sequence_id</span><span class="p">)</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame-392"><a href="#DataFrame-392"><span class="linenos">392</span></a> <span class="n">df</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_add_alias_to_mapping</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">new_sequence_id</span><span class="p">)</span> -</span><span id="DataFrame-393"><a href="#DataFrame-393"><span class="linenos">393</span></a> <span class="k">return</span> <span class="n">df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">(</span><span class="n">sequence_id</span><span class="o">=</span><span class="n">new_sequence_id</span><span class="p">)</span> -</span><span id="DataFrame-394"><a href="#DataFrame-394"><span class="linenos">394</span></a> -</span><span id="DataFrame-395"><a href="#DataFrame-395"><span class="linenos">395</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> -</span><span id="DataFrame-396"><a href="#DataFrame-396"><span class="linenos">396</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">Column</span><span class="p">,</span> <span class="nb">bool</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-397"><a href="#DataFrame-397"><span class="linenos">397</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> -</span><span id="DataFrame-398"><a href="#DataFrame-398"><span class="linenos">398</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">))</span> -</span><span id="DataFrame-399"><a href="#DataFrame-399"><span class="linenos">399</span></a> -</span><span id="DataFrame-400"><a href="#DataFrame-400"><span class="linenos">400</span></a> <span class="nb">filter</span> <span class="o">=</span> <span class="n">where</span> -</span><span id="DataFrame-401"><a href="#DataFrame-401"><span class="linenos">401</span></a> -</span><span id="DataFrame-402"><a href="#DataFrame-402"><span class="linenos">402</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">)</span> -</span><span id="DataFrame-403"><a href="#DataFrame-403"><span class="linenos">403</span></a> <span class="k">def</span> <span class="nf">groupBy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">GroupedData</span><span class="p">:</span> -</span><span id="DataFrame-404"><a href="#DataFrame-404"><span class="linenos">404</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame-405"><a href="#DataFrame-405"><span class="linenos">405</span></a> <span class="k">return</span> <span class="n">GroupedData</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">columns</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_op</span><span class="p">)</span> -</span><span id="DataFrame-406"><a href="#DataFrame-406"><span class="linenos">406</span></a> -</span><span id="DataFrame-407"><a href="#DataFrame-407"><span class="linenos">407</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame-408"><a href="#DataFrame-408"><span class="linenos">408</span></a> <span class="k">def</span> <span class="nf">agg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">exprs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-409"><a href="#DataFrame-409"><span class="linenos">409</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">exprs</span><span class="p">)</span> -</span><span id="DataFrame-410"><a href="#DataFrame-410"><span class="linenos">410</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupBy</span><span class="p">()</span><span class="o">.</span><span class="n">agg</span><span class="p">(</span><span class="o">*</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame-411"><a href="#DataFrame-411"><span class="linenos">411</span></a> -</span><span id="DataFrame-412"><a href="#DataFrame-412"><span class="linenos">412</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame-413"><a href="#DataFrame-413"><span class="linenos">413</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> -</span><span id="DataFrame-414"><a href="#DataFrame-414"><span class="linenos">414</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame-415"><a href="#DataFrame-415"><span class="linenos">415</span></a> <span class="n">other_df</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> -</span><span id="DataFrame-416"><a href="#DataFrame-416"><span class="linenos">416</span></a> <span class="n">on</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Column</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]],</span> -</span><span id="DataFrame-417"><a href="#DataFrame-417"><span class="linenos">417</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"inner"</span><span class="p">,</span> -</span><span id="DataFrame-418"><a href="#DataFrame-418"><span class="linenos">418</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="DataFrame-419"><a href="#DataFrame-419"><span class="linenos">419</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-420"><a href="#DataFrame-420"><span class="linenos">420</span></a> <span class="n">other_df</span> <span class="o">=</span> <span class="n">other_df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> -</span><span id="DataFrame-421"><a href="#DataFrame-421"><span class="linenos">421</span></a> <span class="n">pre_join_self_latest_cte_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_cte_name</span> -</span><span id="DataFrame-422"><a href="#DataFrame-422"><span class="linenos">422</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">on</span><span class="p">)</span> -</span><span id="DataFrame-423"><a href="#DataFrame-423"><span class="linenos">423</span></a> <span class="n">join_type</span> <span class="o">=</span> <span class="n">how</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"_"</span><span class="p">,</span> <span class="s2">" "</span><span class="p">)</span> -</span><span id="DataFrame-424"><a href="#DataFrame-424"><span class="linenos">424</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</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">Column</span><span class="p">):</span> -</span><span id="DataFrame-425"><a href="#DataFrame-425"><span class="linenos">425</span></a> <span class="n">join_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-426"><a href="#DataFrame-426"><span class="linenos">426</span></a> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span> -</span><span id="DataFrame-427"><a href="#DataFrame-427"><span class="linenos">427</span></a> <span class="p">]</span> -</span><span id="DataFrame-428"><a href="#DataFrame-428"><span class="linenos">428</span></a> <span class="n">join_clause</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span> -</span><span id="DataFrame-429"><a href="#DataFrame-429"><span class="linenos">429</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">&</span> <span class="n">y</span><span class="p">,</span> -</span><span id="DataFrame-430"><a href="#DataFrame-430"><span class="linenos">430</span></a> <span class="p">[</span> -</span><span id="DataFrame-431"><a href="#DataFrame-431"><span class="linenos">431</span></a> <span class="n">col</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> -</span><span id="DataFrame-432"><a href="#DataFrame-432"><span class="linenos">432</span></a> <span class="o">==</span> <span class="n">col</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">)</span> -</span><span id="DataFrame-433"><a href="#DataFrame-433"><span class="linenos">433</span></a> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">columns</span> -</span><span id="DataFrame-434"><a href="#DataFrame-434"><span class="linenos">434</span></a> <span class="p">],</span> -</span><span id="DataFrame-435"><a href="#DataFrame-435"><span class="linenos">435</span></a> <span class="p">)</span> -</span><span id="DataFrame-436"><a href="#DataFrame-436"><span class="linenos">436</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-437"><a href="#DataFrame-437"><span class="linenos">437</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="DataFrame-438"><a href="#DataFrame-438"><span class="linenos">438</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">&</span> <span class="n">y</span><span class="p">,</span> <span class="n">columns</span><span class="p">)]</span> -</span><span id="DataFrame-439"><a href="#DataFrame-439"><span class="linenos">439</span></a> <span class="n">join_clause</span> <span class="o">=</span> <span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="DataFrame-440"><a href="#DataFrame-440"><span class="linenos">440</span></a> <span class="n">join_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-441"><a href="#DataFrame-441"><span class="linenos">441</span></a> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> -</span><span id="DataFrame-442"><a href="#DataFrame-442"><span class="linenos">442</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> -</span><span id="DataFrame-443"><a href="#DataFrame-443"><span class="linenos">443</span></a> <span class="k">else</span> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">)</span> -</span><span id="DataFrame-444"><a href="#DataFrame-444"><span class="linenos">444</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">join_clause</span><span class="o">.</span><span class="n">expression</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">Column</span><span class="p">))</span> -</span><span id="DataFrame-445"><a href="#DataFrame-445"><span class="linenos">445</span></a> <span class="p">]</span> -</span><span id="DataFrame-446"><a href="#DataFrame-446"><span class="linenos">446</span></a> <span class="n">self_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-447"><a href="#DataFrame-447"><span class="linenos">447</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="DataFrame-448"><a href="#DataFrame-448"><span class="linenos">448</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="DataFrame-449"><a href="#DataFrame-449"><span class="linenos">449</span></a> <span class="p">]</span> -</span><span id="DataFrame-450"><a href="#DataFrame-450"><span class="linenos">450</span></a> <span class="n">other_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-451"><a href="#DataFrame-451"><span class="linenos">451</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="DataFrame-452"><a href="#DataFrame-452"><span class="linenos">452</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">other_df</span><span class="p">)</span> -</span><span id="DataFrame-453"><a href="#DataFrame-453"><span class="linenos">453</span></a> <span class="p">]</span> -</span><span id="DataFrame-454"><a href="#DataFrame-454"><span class="linenos">454</span></a> <span class="n">column_value_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataFrame-455"><a href="#DataFrame-455"><span class="linenos">455</span></a> <span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="DataFrame-456"><a href="#DataFrame-456"><span class="linenos">456</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="o">.</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">Star</span><span class="p">)</span> -</span><span id="DataFrame-457"><a href="#DataFrame-457"><span class="linenos">457</span></a> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">sql</span><span class="p">():</span> <span class="n">column</span> -</span><span id="DataFrame-458"><a href="#DataFrame-458"><span class="linenos">458</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">other_columns</span> <span class="o">+</span> <span class="n">self_columns</span> <span class="o">+</span> <span class="n">join_columns</span> -</span><span id="DataFrame-459"><a href="#DataFrame-459"><span class="linenos">459</span></a> <span class="p">}</span> -</span><span id="DataFrame-460"><a href="#DataFrame-460"><span class="linenos">460</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-461"><a href="#DataFrame-461"><span class="linenos">461</span></a> <span class="n">column_value_mapping</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> -</span><span id="DataFrame-462"><a href="#DataFrame-462"><span class="linenos">462</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">join_columns</span> <span class="o">+</span> <span class="n">self_columns</span> <span class="o">+</span> <span class="n">other_columns</span><span class="p">}</span> -</span><span id="DataFrame-463"><a href="#DataFrame-463"><span class="linenos">463</span></a> <span class="p">]</span> -</span><span id="DataFrame-464"><a href="#DataFrame-464"><span class="linenos">464</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span> -</span><span id="DataFrame-465"><a href="#DataFrame-465"><span class="linenos">465</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="DataFrame-466"><a href="#DataFrame-466"><span class="linenos">466</span></a> <span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">join_clause</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">join_type</span><span class="o">=</span><span class="n">join_type</span> -</span><span id="DataFrame-467"><a href="#DataFrame-467"><span class="linenos">467</span></a> <span class="p">)</span> -</span><span id="DataFrame-468"><a href="#DataFrame-468"><span class="linenos">468</span></a> <span class="p">)</span> -</span><span id="DataFrame-469"><a href="#DataFrame-469"><span class="linenos">469</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">expression</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">_add_ctes_to_expression</span><span class="p">(</span> -</span><span id="DataFrame-470"><a href="#DataFrame-470"><span class="linenos">470</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> -</span><span id="DataFrame-471"><a href="#DataFrame-471"><span class="linenos">471</span></a> <span class="p">)</span> -</span><span id="DataFrame-472"><a href="#DataFrame-472"><span class="linenos">472</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="p">)</span> -</span><span id="DataFrame-473"><a href="#DataFrame-473"><span class="linenos">473</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="o">.</span><span class="n">__wrapped__</span><span class="p">(</span><span class="n">new_df</span><span class="p">,</span> <span class="o">*</span><span class="n">all_columns</span><span class="p">)</span> -</span><span id="DataFrame-474"><a href="#DataFrame-474"><span class="linenos">474</span></a> <span class="k">return</span> <span class="n">new_df</span> -</span><span id="DataFrame-475"><a href="#DataFrame-475"><span class="linenos">475</span></a> -</span><span id="DataFrame-476"><a href="#DataFrame-476"><span class="linenos">476</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">)</span> -</span><span id="DataFrame-477"><a href="#DataFrame-477"><span class="linenos">477</span></a> <span class="k">def</span> <span class="nf">orderBy</span><span class="p">(</span> -</span><span id="DataFrame-478"><a href="#DataFrame-478"><span class="linenos">478</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame-479"><a href="#DataFrame-479"><span class="linenos">479</span></a> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">],</span> -</span><span id="DataFrame-480"><a href="#DataFrame-480"><span class="linenos">480</span></a> <span class="n">ascending</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-481"><a href="#DataFrame-481"><span class="linenos">481</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-482"><a href="#DataFrame-482"><span class="linenos">482</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataFrame-483"><a href="#DataFrame-483"><span class="linenos">483</span></a><span class="sd"> This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark</span> -</span><span id="DataFrame-484"><a href="#DataFrame-484"><span class="linenos">484</span></a><span class="sd"> has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this</span> -</span><span id="DataFrame-485"><a href="#DataFrame-485"><span class="linenos">485</span></a><span class="sd"> is unlikely to come up.</span> -</span><span id="DataFrame-486"><a href="#DataFrame-486"><span class="linenos">486</span></a><span class="sd"> """</span> -</span><span id="DataFrame-487"><a href="#DataFrame-487"><span class="linenos">487</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame-488"><a href="#DataFrame-488"><span class="linenos">488</span></a> <span class="n">pre_ordered_col_indexes</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-489"><a href="#DataFrame-489"><span class="linenos">489</span></a> <span class="n">x</span> -</span><span id="DataFrame-490"><a href="#DataFrame-490"><span class="linenos">490</span></a> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span> -</span><span id="DataFrame-491"><a href="#DataFrame-491"><span class="linenos">491</span></a> <span class="n">i</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">col</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">Ordered</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="DataFrame-492"><a href="#DataFrame-492"><span class="linenos">492</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame-493"><a href="#DataFrame-493"><span class="linenos">493</span></a> <span class="p">]</span> -</span><span id="DataFrame-494"><a href="#DataFrame-494"><span class="linenos">494</span></a> <span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> -</span><span id="DataFrame-495"><a href="#DataFrame-495"><span class="linenos">495</span></a> <span class="p">]</span> -</span><span id="DataFrame-496"><a href="#DataFrame-496"><span class="linenos">496</span></a> <span class="k">if</span> <span class="n">ascending</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="DataFrame-497"><a href="#DataFrame-497"><span class="linenos">497</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame-498"><a href="#DataFrame-498"><span class="linenos">498</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ascending</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="DataFrame-499"><a href="#DataFrame-499"><span class="linenos">499</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="n">ascending</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame-500"><a href="#DataFrame-500"><span class="linenos">500</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="nb">bool</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">ascending</span><span class="p">)]</span> -</span><span id="DataFrame-501"><a href="#DataFrame-501"><span class="linenos">501</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> -</span><span id="DataFrame-502"><a href="#DataFrame-502"><span class="linenos">502</span></a> <span class="n">ascending</span> -</span><span id="DataFrame-503"><a href="#DataFrame-503"><span class="linenos">503</span></a> <span class="p">),</span> <span class="s2">"The length of items in ascending must equal the number of columns provided"</span> -</span><span id="DataFrame-504"><a href="#DataFrame-504"><span class="linenos">504</span></a> <span class="n">col_and_ascending</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">ascending</span><span class="p">))</span> -</span><span id="DataFrame-505"><a href="#DataFrame-505"><span class="linenos">505</span></a> <span class="n">order_by_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-506"><a href="#DataFrame-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="ow">not</span> <span class="n">asc</span><span class="p">)</span> -</span><span id="DataFrame-507"><a href="#DataFrame-507"><span class="linenos">507</span></a> <span class="k">if</span> <span class="n">i</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pre_ordered_col_indexes</span> -</span><span id="DataFrame-508"><a href="#DataFrame-508"><span class="linenos">508</span></a> <span class="k">else</span> <span class="n">columns</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">column_expression</span> -</span><span id="DataFrame-509"><a href="#DataFrame-509"><span class="linenos">509</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">asc</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">col_and_ascending</span><span class="p">)</span> -</span><span id="DataFrame-510"><a href="#DataFrame-510"><span class="linenos">510</span></a> <span class="p">]</span> -</span><span id="DataFrame-511"><a href="#DataFrame-511"><span class="linenos">511</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="o">*</span><span class="n">order_by_columns</span><span class="p">))</span> -</span><span id="DataFrame-512"><a href="#DataFrame-512"><span class="linenos">512</span></a> -</span><span id="DataFrame-513"><a href="#DataFrame-513"><span class="linenos">513</span></a> <span class="n">sort</span> <span class="o">=</span> <span class="n">orderBy</span> -</span><span id="DataFrame-514"><a href="#DataFrame-514"><span class="linenos">514</span></a> -</span><span id="DataFrame-515"><a href="#DataFrame-515"><span class="linenos">515</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame-516"><a href="#DataFrame-516"><span class="linenos">516</span></a> <span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-517"><a href="#DataFrame-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="DataFrame-518"><a href="#DataFrame-518"><span class="linenos">518</span></a> -</span><span id="DataFrame-519"><a href="#DataFrame-519"><span class="linenos">519</span></a> <span class="n">unionAll</span> <span class="o">=</span> <span class="n">union</span> -</span><span id="DataFrame-520"><a href="#DataFrame-520"><span class="linenos">520</span></a> -</span><span id="DataFrame-521"><a href="#DataFrame-521"><span class="linenos">521</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame-522"><a href="#DataFrame-522"><span class="linenos">522</span></a> <span class="k">def</span> <span class="nf">unionByName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> <span class="n">allowMissingColumns</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="DataFrame-523"><a href="#DataFrame-523"><span class="linenos">523</span></a> <span class="n">l_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span> -</span><span id="DataFrame-524"><a href="#DataFrame-524"><span class="linenos">524</span></a> <span class="n">r_columns</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">columns</span> -</span><span id="DataFrame-525"><a href="#DataFrame-525"><span class="linenos">525</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">allowMissingColumns</span><span class="p">:</span> -</span><span id="DataFrame-526"><a href="#DataFrame-526"><span class="linenos">526</span></a> <span class="n">l_expressions</span> <span class="o">=</span> <span class="n">l_columns</span> -</span><span id="DataFrame-527"><a href="#DataFrame-527"><span class="linenos">527</span></a> <span class="n">r_expressions</span> <span class="o">=</span> <span class="n">l_columns</span> -</span><span id="DataFrame-528"><a href="#DataFrame-528"><span class="linenos">528</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-529"><a href="#DataFrame-529"><span class="linenos">529</span></a> <span class="n">l_expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="DataFrame-530"><a href="#DataFrame-530"><span class="linenos">530</span></a> <span class="n">r_expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="DataFrame-531"><a href="#DataFrame-531"><span class="linenos">531</span></a> <span class="n">r_columns_unused</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">r_columns</span><span class="p">)</span> -</span><span id="DataFrame-532"><a href="#DataFrame-532"><span class="linenos">532</span></a> <span class="k">for</span> <span class="n">l_column</span> <span class="ow">in</span> <span class="n">l_columns</span><span class="p">:</span> -</span><span id="DataFrame-533"><a href="#DataFrame-533"><span class="linenos">533</span></a> <span class="n">l_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> -</span><span id="DataFrame-534"><a href="#DataFrame-534"><span class="linenos">534</span></a> <span class="k">if</span> <span class="n">l_column</span> <span class="ow">in</span> <span class="n">r_columns</span><span class="p">:</span> -</span><span id="DataFrame-535"><a href="#DataFrame-535"><span class="linenos">535</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> -</span><span id="DataFrame-536"><a href="#DataFrame-536"><span class="linenos">536</span></a> <span class="n">r_columns_unused</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> -</span><span id="DataFrame-537"><a href="#DataFrame-537"><span class="linenos">537</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-538"><a href="#DataFrame-538"><span class="linenos">538</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">(),</span> <span class="n">l_column</span><span class="p">))</span> -</span><span id="DataFrame-539"><a href="#DataFrame-539"><span class="linenos">539</span></a> <span class="k">for</span> <span class="n">r_column</span> <span class="ow">in</span> <span class="n">r_columns_unused</span><span class="p">:</span> -</span><span id="DataFrame-540"><a href="#DataFrame-540"><span class="linenos">540</span></a> <span class="n">l_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">(),</span> <span class="n">r_column</span><span class="p">))</span> -</span><span id="DataFrame-541"><a href="#DataFrame-541"><span class="linenos">541</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">r_column</span><span class="p">)</span> -</span><span id="DataFrame-542"><a href="#DataFrame-542"><span class="linenos">542</span></a> <span class="n">r_df</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="DataFrame-543"><a href="#DataFrame-543"><span class="linenos">543</span></a> <span class="n">other</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">r_expressions</span><span class="p">))</span> -</span><span id="DataFrame-544"><a href="#DataFrame-544"><span class="linenos">544</span></a> <span class="p">)</span> -</span><span id="DataFrame-545"><a href="#DataFrame-545"><span class="linenos">545</span></a> <span class="n">l_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-546"><a href="#DataFrame-546"><span class="linenos">546</span></a> <span class="k">if</span> <span class="n">allowMissingColumns</span><span class="p">:</span> -</span><span id="DataFrame-547"><a href="#DataFrame-547"><span class="linenos">547</span></a> <span class="n">l_df</span> <span class="o">=</span> <span class="n">l_df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">l_expressions</span><span class="p">))</span> -</span><span id="DataFrame-548"><a href="#DataFrame-548"><span class="linenos">548</span></a> <span class="k">return</span> <span class="n">l_df</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">r_df</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="DataFrame-549"><a href="#DataFrame-549"><span class="linenos">549</span></a> -</span><span id="DataFrame-550"><a href="#DataFrame-550"><span class="linenos">550</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame-551"><a href="#DataFrame-551"><span class="linenos">551</span></a> <span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-552"><a href="#DataFrame-552"><span class="linenos">552</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="DataFrame-553"><a href="#DataFrame-553"><span class="linenos">553</span></a> -</span><span id="DataFrame-554"><a href="#DataFrame-554"><span class="linenos">554</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame-555"><a href="#DataFrame-555"><span class="linenos">555</span></a> <span class="k">def</span> <span class="nf">intersectAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-556"><a href="#DataFrame-556"><span class="linenos">556</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="DataFrame-557"><a href="#DataFrame-557"><span class="linenos">557</span></a> -</span><span id="DataFrame-558"><a href="#DataFrame-558"><span class="linenos">558</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame-559"><a href="#DataFrame-559"><span class="linenos">559</span></a> <span class="k">def</span> <span class="nf">exceptAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-560"><a href="#DataFrame-560"><span class="linenos">560</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="DataFrame-561"><a href="#DataFrame-561"><span class="linenos">561</span></a> -</span><span id="DataFrame-562"><a href="#DataFrame-562"><span class="linenos">562</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame-563"><a href="#DataFrame-563"><span class="linenos">563</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-564"><a href="#DataFrame-564"><span class="linenos">564</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">distinct</span><span class="p">())</span> -</span><span id="DataFrame-565"><a href="#DataFrame-565"><span class="linenos">565</span></a> -</span><span id="DataFrame-566"><a href="#DataFrame-566"><span class="linenos">566</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame-567"><a href="#DataFrame-567"><span class="linenos">567</span></a> <span class="k">def</span> <span class="nf">dropDuplicates</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> -</span><span id="DataFrame-568"><a href="#DataFrame-568"><span class="linenos">568</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subset</span><span class="p">:</span> -</span><span id="DataFrame-569"><a href="#DataFrame-569"><span class="linenos">569</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="p">()</span> -</span><span id="DataFrame-570"><a href="#DataFrame-570"><span class="linenos">570</span></a> <span class="n">column_names</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> -</span><span id="DataFrame-571"><a href="#DataFrame-571"><span class="linenos">571</span></a> <span class="n">window</span> <span class="o">=</span> <span class="n">Window</span><span class="o">.</span><span class="n">partitionBy</span><span class="p">(</span><span class="o">*</span><span class="n">column_names</span><span class="p">)</span><span class="o">.</span><span class="n">orderBy</span><span class="p">(</span><span class="o">*</span><span class="n">column_names</span><span class="p">)</span> -</span><span id="DataFrame-572"><a href="#DataFrame-572"><span class="linenos">572</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="DataFrame-573"><a href="#DataFrame-573"><span class="linenos">573</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-574"><a href="#DataFrame-574"><span class="linenos">574</span></a> <span class="o">.</span><span class="n">withColumn</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">,</span> <span class="n">F</span><span class="o">.</span><span class="n">row_number</span><span class="p">()</span><span class="o">.</span><span class="n">over</span><span class="p">(</span><span class="n">window</span><span class="p">))</span> -</span><span id="DataFrame-575"><a href="#DataFrame-575"><span class="linenos">575</span></a> <span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">col</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">)</span> <span class="o">==</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span> -</span><span id="DataFrame-576"><a href="#DataFrame-576"><span class="linenos">576</span></a> <span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">)</span> -</span><span id="DataFrame-577"><a href="#DataFrame-577"><span class="linenos">577</span></a> <span class="p">)</span> -</span><span id="DataFrame-578"><a href="#DataFrame-578"><span class="linenos">578</span></a> -</span><span id="DataFrame-579"><a href="#DataFrame-579"><span class="linenos">579</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame-580"><a href="#DataFrame-580"><span class="linenos">580</span></a> <span class="k">def</span> <span class="nf">dropna</span><span class="p">(</span> -</span><span id="DataFrame-581"><a href="#DataFrame-581"><span class="linenos">581</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame-582"><a href="#DataFrame-582"><span class="linenos">582</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"any"</span><span class="p">,</span> -</span><span id="DataFrame-583"><a href="#DataFrame-583"><span class="linenos">583</span></a> <span class="n">thresh</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-584"><a href="#DataFrame-584"><span class="linenos">584</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-585"><a href="#DataFrame-585"><span class="linenos">585</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-586"><a href="#DataFrame-586"><span class="linenos">586</span></a> <span class="n">minimum_non_null</span> <span class="o">=</span> <span class="n">thresh</span> <span class="ow">or</span> <span class="mi">0</span> <span class="c1"># will be determined later if thresh is null</span> -</span><span id="DataFrame-587"><a href="#DataFrame-587"><span class="linenos">587</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-588"><a href="#DataFrame-588"><span class="linenos">588</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame-589"><a href="#DataFrame-589"><span class="linenos">589</span></a> <span class="k">if</span> <span class="n">subset</span><span class="p">:</span> -</span><span id="DataFrame-590"><a href="#DataFrame-590"><span class="linenos">590</span></a> <span class="n">null_check_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> -</span><span id="DataFrame-591"><a href="#DataFrame-591"><span class="linenos">591</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-592"><a href="#DataFrame-592"><span class="linenos">592</span></a> <span class="n">null_check_columns</span> <span class="o">=</span> <span class="n">all_columns</span> -</span><span id="DataFrame-593"><a href="#DataFrame-593"><span class="linenos">593</span></a> <span class="k">if</span> <span class="n">thresh</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="DataFrame-594"><a href="#DataFrame-594"><span class="linenos">594</span></a> <span class="n">minimum_num_nulls</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">how</span> <span class="o">==</span> <span class="s2">"any"</span> <span class="k">else</span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span> -</span><span id="DataFrame-595"><a href="#DataFrame-595"><span class="linenos">595</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-596"><a href="#DataFrame-596"><span class="linenos">596</span></a> <span class="n">minimum_num_nulls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span> <span class="o">-</span> <span class="n">minimum_non_null</span> <span class="o">+</span> <span class="mi">1</span> -</span><span id="DataFrame-597"><a href="#DataFrame-597"><span class="linenos">597</span></a> <span class="k">if</span> <span class="n">minimum_num_nulls</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">):</span> -</span><span id="DataFrame-598"><a href="#DataFrame-598"><span class="linenos">598</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> -</span><span id="DataFrame-599"><a href="#DataFrame-599"><span class="linenos">599</span></a> <span class="sa">f</span><span class="s2">"The minimum num nulls for dropna must be less than or equal to the number of columns. "</span> -</span><span id="DataFrame-600"><a href="#DataFrame-600"><span class="linenos">600</span></a> <span class="sa">f</span><span class="s2">"Minimum num nulls: </span><span class="si">{</span><span class="n">minimum_num_nulls</span><span class="si">}</span><span class="s2">, Num Columns: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="DataFrame-601"><a href="#DataFrame-601"><span class="linenos">601</span></a> <span class="p">)</span> -</span><span id="DataFrame-602"><a href="#DataFrame-602"><span class="linenos">602</span></a> <span class="n">if_null_checks</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-603"><a href="#DataFrame-603"><span class="linenos">603</span></a> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">isNull</span><span class="p">(),</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">null_check_columns</span> -</span><span id="DataFrame-604"><a href="#DataFrame-604"><span class="linenos">604</span></a> <span class="p">]</span> -</span><span id="DataFrame-605"><a href="#DataFrame-605"><span class="linenos">605</span></a> <span class="n">nulls_added_together</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">,</span> <span class="n">if_null_checks</span><span class="p">)</span> -</span><span id="DataFrame-606"><a href="#DataFrame-606"><span class="linenos">606</span></a> <span class="n">num_nulls</span> <span class="o">=</span> <span class="n">nulls_added_together</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">"num_nulls"</span><span class="p">)</span> -</span><span id="DataFrame-607"><a href="#DataFrame-607"><span class="linenos">607</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">num_nulls</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="DataFrame-608"><a href="#DataFrame-608"><span class="linenos">608</span></a> <span class="n">filtered_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">col</span><span class="p">(</span><span class="s2">"num_nulls"</span><span class="p">)</span> <span class="o"><</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="n">minimum_num_nulls</span><span class="p">))</span> -</span><span id="DataFrame-609"><a href="#DataFrame-609"><span class="linenos">609</span></a> <span class="n">final_df</span> <span class="o">=</span> <span class="n">filtered_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">all_columns</span><span class="p">)</span> -</span><span id="DataFrame-610"><a href="#DataFrame-610"><span class="linenos">610</span></a> <span class="k">return</span> <span class="n">final_df</span> -</span><span id="DataFrame-611"><a href="#DataFrame-611"><span class="linenos">611</span></a> -</span><span id="DataFrame-612"><a href="#DataFrame-612"><span class="linenos">612</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame-613"><a href="#DataFrame-613"><span class="linenos">613</span></a> <span class="k">def</span> <span class="nf">fillna</span><span class="p">(</span> -</span><span id="DataFrame-614"><a href="#DataFrame-614"><span class="linenos">614</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame-615"><a href="#DataFrame-615"><span class="linenos">615</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">ColumnLiterals</span><span class="p">],</span> -</span><span id="DataFrame-616"><a href="#DataFrame-616"><span class="linenos">616</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-617"><a href="#DataFrame-617"><span class="linenos">617</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-618"><a href="#DataFrame-618"><span class="linenos">618</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataFrame-619"><a href="#DataFrame-619"><span class="linenos">619</span></a><span class="sd"> Functionality Difference: If you provide a value to replace a null and that type conflicts</span> -</span><span id="DataFrame-620"><a href="#DataFrame-620"><span class="linenos">620</span></a><span class="sd"> with the type of the column then PySpark will just ignore your replacement.</span> -</span><span id="DataFrame-621"><a href="#DataFrame-621"><span class="linenos">621</span></a><span class="sd"> This will try to cast them to be the same in some cases. So they won't always match.</span> -</span><span id="DataFrame-622"><a href="#DataFrame-622"><span class="linenos">622</span></a><span class="sd"> Best to not mix types so make sure replacement is the same type as the column</span> -</span><span id="DataFrame-623"><a href="#DataFrame-623"><span class="linenos">623</span></a> -</span><span id="DataFrame-624"><a href="#DataFrame-624"><span class="linenos">624</span></a><span class="sd"> Possibility for improvement: Use `typeof` function to get the type of the column</span> -</span><span id="DataFrame-625"><a href="#DataFrame-625"><span class="linenos">625</span></a><span class="sd"> and check if it matches the type of the value provided. If not then make it null.</span> -</span><span id="DataFrame-626"><a href="#DataFrame-626"><span class="linenos">626</span></a><span class="sd"> """</span> -</span><span id="DataFrame-627"><a href="#DataFrame-627"><span class="linenos">627</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dataframe.sql.functions</span> <span class="kn">import</span> <span class="n">lit</span> -</span><span id="DataFrame-628"><a href="#DataFrame-628"><span class="linenos">628</span></a> -</span><span id="DataFrame-629"><a href="#DataFrame-629"><span class="linenos">629</span></a> <span class="n">values</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="DataFrame-630"><a href="#DataFrame-630"><span class="linenos">630</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="DataFrame-631"><a href="#DataFrame-631"><span class="linenos">631</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-632"><a href="#DataFrame-632"><span class="linenos">632</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame-633"><a href="#DataFrame-633"><span class="linenos">633</span></a> <span class="n">all_column_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">}</span> -</span><span id="DataFrame-634"><a href="#DataFrame-634"><span class="linenos">634</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="DataFrame-635"><a href="#DataFrame-635"><span class="linenos">635</span></a> <span class="n">values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> -</span><span id="DataFrame-636"><a href="#DataFrame-636"><span class="linenos">636</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">value</span><span class="p">))</span> -</span><span id="DataFrame-637"><a href="#DataFrame-637"><span class="linenos">637</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="DataFrame-638"><a href="#DataFrame-638"><span class="linenos">638</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> <span class="k">if</span> <span class="n">subset</span> <span class="k">else</span> <span class="n">all_columns</span> -</span><span id="DataFrame-639"><a href="#DataFrame-639"><span class="linenos">639</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">values</span><span class="p">:</span> -</span><span id="DataFrame-640"><a href="#DataFrame-640"><span class="linenos">640</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame-641"><a href="#DataFrame-641"><span class="linenos">641</span></a> <span class="n">value_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">]</span> -</span><span id="DataFrame-642"><a href="#DataFrame-642"><span class="linenos">642</span></a> -</span><span id="DataFrame-643"><a href="#DataFrame-643"><span class="linenos">643</span></a> <span class="n">null_replacement_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataFrame-644"><a href="#DataFrame-644"><span class="linenos">644</span></a> <span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="p">(</span> -</span><span id="DataFrame-645"><a href="#DataFrame-645"><span class="linenos">645</span></a> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">isNull</span><span class="p">(),</span> <span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">column</span><span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> -</span><span id="DataFrame-646"><a href="#DataFrame-646"><span class="linenos">646</span></a> <span class="p">)</span> -</span><span id="DataFrame-647"><a href="#DataFrame-647"><span class="linenos">647</span></a> <span class="k">for</span> <span class="n">column</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">value_columns</span><span class="p">)</span> -</span><span id="DataFrame-648"><a href="#DataFrame-648"><span class="linenos">648</span></a> <span class="p">}</span> -</span><span id="DataFrame-649"><a href="#DataFrame-649"><span class="linenos">649</span></a> <span class="n">null_replacement_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">all_column_mapping</span><span class="p">,</span> <span class="o">**</span><span class="n">null_replacement_mapping</span><span class="p">}</span> -</span><span id="DataFrame-650"><a href="#DataFrame-650"><span class="linenos">650</span></a> <span class="n">null_replacement_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-651"><a href="#DataFrame-651"><span class="linenos">651</span></a> <span class="n">null_replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span> -</span><span id="DataFrame-652"><a href="#DataFrame-652"><span class="linenos">652</span></a> <span class="p">]</span> -</span><span id="DataFrame-653"><a href="#DataFrame-653"><span class="linenos">653</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">null_replacement_columns</span><span class="p">)</span> -</span><span id="DataFrame-654"><a href="#DataFrame-654"><span class="linenos">654</span></a> <span class="k">return</span> <span class="n">new_df</span> -</span><span id="DataFrame-655"><a href="#DataFrame-655"><span class="linenos">655</span></a> -</span><span id="DataFrame-656"><a href="#DataFrame-656"><span class="linenos">656</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame-657"><a href="#DataFrame-657"><span class="linenos">657</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span> -</span><span id="DataFrame-658"><a href="#DataFrame-658"><span class="linenos">658</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame-659"><a href="#DataFrame-659"><span class="linenos">659</span></a> <span class="n">to_replace</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> -</span><span id="DataFrame-660"><a href="#DataFrame-660"><span class="linenos">660</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-661"><a href="#DataFrame-661"><span class="linenos">661</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">ColumnOrName</span><span class="p">]</span> <span class="o">|</span> <span class="n">ColumnOrName</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame-662"><a href="#DataFrame-662"><span class="linenos">662</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-663"><a href="#DataFrame-663"><span class="linenos">663</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dataframe.sql.functions</span> <span class="kn">import</span> <span class="n">lit</span> -</span><span id="DataFrame-664"><a href="#DataFrame-664"><span class="linenos">664</span></a> -</span><span id="DataFrame-665"><a href="#DataFrame-665"><span class="linenos">665</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="DataFrame-666"><a href="#DataFrame-666"><span class="linenos">666</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-667"><a href="#DataFrame-667"><span class="linenos">667</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame-668"><a href="#DataFrame-668"><span class="linenos">668</span></a> <span class="n">all_column_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">}</span> -</span><span id="DataFrame-669"><a href="#DataFrame-669"><span class="linenos">669</span></a> -</span><span id="DataFrame-670"><a href="#DataFrame-670"><span class="linenos">670</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> <span class="k">if</span> <span class="n">subset</span> <span class="k">else</span> <span class="n">all_columns</span> -</span><span id="DataFrame-671"><a href="#DataFrame-671"><span class="linenos">671</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to_replace</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="DataFrame-672"><a href="#DataFrame-672"><span class="linenos">672</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">to_replace</span><span class="p">)</span> -</span><span id="DataFrame-673"><a href="#DataFrame-673"><span class="linenos">673</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">to_replace</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> -</span><span id="DataFrame-674"><a href="#DataFrame-674"><span class="linenos">674</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">old_values</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to_replace</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="DataFrame-675"><a href="#DataFrame-675"><span class="linenos">675</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="s2">"value must be a list since the replacements are a list"</span> -</span><span id="DataFrame-676"><a href="#DataFrame-676"><span class="linenos">676</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">to_replace</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> -</span><span id="DataFrame-677"><a href="#DataFrame-677"><span class="linenos">677</span></a> <span class="n">value</span> -</span><span id="DataFrame-678"><a href="#DataFrame-678"><span class="linenos">678</span></a> <span class="p">),</span> <span class="s2">"the replacements and values must be the same length"</span> -</span><span id="DataFrame-679"><a href="#DataFrame-679"><span class="linenos">679</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="n">to_replace</span> -</span><span id="DataFrame-680"><a href="#DataFrame-680"><span class="linenos">680</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="n">value</span> -</span><span id="DataFrame-681"><a href="#DataFrame-681"><span class="linenos">681</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-682"><a href="#DataFrame-682"><span class="linenos">682</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">to_replace</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame-683"><a href="#DataFrame-683"><span class="linenos">683</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame-684"><a href="#DataFrame-684"><span class="linenos">684</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">old_values</span><span class="p">]</span> -</span><span id="DataFrame-685"><a href="#DataFrame-685"><span class="linenos">685</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">new_values</span><span class="p">]</span> -</span><span id="DataFrame-686"><a href="#DataFrame-686"><span class="linenos">686</span></a> -</span><span id="DataFrame-687"><a href="#DataFrame-687"><span class="linenos">687</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="DataFrame-688"><a href="#DataFrame-688"><span class="linenos">688</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="DataFrame-689"><a href="#DataFrame-689"><span class="linenos">689</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> -</span><span id="DataFrame-690"><a href="#DataFrame-690"><span class="linenos">690</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">old_values</span><span class="p">,</span> <span class="n">new_values</span><span class="p">)):</span> -</span><span id="DataFrame-691"><a href="#DataFrame-691"><span class="linenos">691</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="DataFrame-692"><a href="#DataFrame-692"><span class="linenos">692</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> -</span><span id="DataFrame-693"><a href="#DataFrame-693"><span class="linenos">693</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-694"><a href="#DataFrame-694"><span class="linenos">694</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="DataFrame-695"><a href="#DataFrame-695"><span class="linenos">695</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">column</span><span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span> -</span><span id="DataFrame-696"><a href="#DataFrame-696"><span class="linenos">696</span></a> <span class="n">column</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="DataFrame-697"><a href="#DataFrame-697"><span class="linenos">697</span></a> <span class="p">)</span> -</span><span id="DataFrame-698"><a href="#DataFrame-698"><span class="linenos">698</span></a> -</span><span id="DataFrame-699"><a href="#DataFrame-699"><span class="linenos">699</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">all_column_mapping</span><span class="p">,</span> <span class="o">**</span><span class="n">replacement_mapping</span><span class="p">}</span> -</span><span id="DataFrame-700"><a href="#DataFrame-700"><span class="linenos">700</span></a> <span class="n">replacement_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">]</span> -</span><span id="DataFrame-701"><a href="#DataFrame-701"><span class="linenos">701</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">replacement_columns</span><span class="p">)</span> -</span><span id="DataFrame-702"><a href="#DataFrame-702"><span class="linenos">702</span></a> <span class="k">return</span> <span class="n">new_df</span> -</span><span id="DataFrame-703"><a href="#DataFrame-703"><span class="linenos">703</span></a> -</span><span id="DataFrame-704"><a href="#DataFrame-704"><span class="linenos">704</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame-705"><a href="#DataFrame-705"><span class="linenos">705</span></a> <span class="k">def</span> <span class="nf">withColumn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">colName</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">col</span><span class="p">:</span> <span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-706"><a href="#DataFrame-706"><span class="linenos">706</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">col</span><span class="p">)</span> -</span><span id="DataFrame-707"><a href="#DataFrame-707"><span class="linenos">707</span></a> <span class="n">existing_col_names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> -</span><span id="DataFrame-708"><a href="#DataFrame-708"><span class="linenos">708</span></a> <span class="n">existing_col_index</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="DataFrame-709"><a href="#DataFrame-709"><span class="linenos">709</span></a> <span class="n">existing_col_names</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">colName</span><span class="p">)</span> <span class="k">if</span> <span class="n">colName</span> <span class="ow">in</span> <span class="n">existing_col_names</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="DataFrame-710"><a href="#DataFrame-710"><span class="linenos">710</span></a> <span class="p">)</span> -</span><span id="DataFrame-711"><a href="#DataFrame-711"><span class="linenos">711</span></a> <span class="k">if</span> <span class="n">existing_col_index</span><span class="p">:</span> -</span><span id="DataFrame-712"><a href="#DataFrame-712"><span class="linenos">712</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-713"><a href="#DataFrame-713"><span class="linenos">713</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="n">existing_col_index</span><span class="p">]</span> <span class="o">=</span> <span class="n">col</span><span class="o">.</span><span class="n">expression</span> -</span><span id="DataFrame-714"><a href="#DataFrame-714"><span class="linenos">714</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</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="DataFrame-715"><a href="#DataFrame-715"><span class="linenos">715</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="n">colName</span><span class="p">),</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="DataFrame-716"><a href="#DataFrame-716"><span class="linenos">716</span></a> -</span><span id="DataFrame-717"><a href="#DataFrame-717"><span class="linenos">717</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame-718"><a href="#DataFrame-718"><span class="linenos">718</span></a> <span class="k">def</span> <span class="nf">withColumnRenamed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">existing</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">new</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="DataFrame-719"><a href="#DataFrame-719"><span class="linenos">719</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame-720"><a href="#DataFrame-720"><span class="linenos">720</span></a> <span class="n">existing_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-721"><a href="#DataFrame-721"><span class="linenos">721</span></a> <span class="n">expression</span> -</span><span id="DataFrame-722"><a href="#DataFrame-722"><span class="linenos">722</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="DataFrame-723"><a href="#DataFrame-723"><span class="linenos">723</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="n">existing</span> -</span><span id="DataFrame-724"><a href="#DataFrame-724"><span class="linenos">724</span></a> <span class="p">]</span> -</span><span id="DataFrame-725"><a href="#DataFrame-725"><span class="linenos">725</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">existing_columns</span><span class="p">:</span> -</span><span id="DataFrame-726"><a href="#DataFrame-726"><span class="linenos">726</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Tried to rename a column that doesn't exist"</span><span class="p">)</span> -</span><span id="DataFrame-727"><a href="#DataFrame-727"><span class="linenos">727</span></a> <span class="k">for</span> <span class="n">existing_column</span> <span class="ow">in</span> <span class="n">existing_columns</span><span class="p">:</span> -</span><span id="DataFrame-728"><a href="#DataFrame-728"><span class="linenos">728</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">existing_column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="DataFrame-729"><a href="#DataFrame-729"><span class="linenos">729</span></a> <span class="n">existing_column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">existing_column</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">new</span><span class="p">))</span> -</span><span id="DataFrame-730"><a href="#DataFrame-730"><span class="linenos">730</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame-731"><a href="#DataFrame-731"><span class="linenos">731</span></a> <span class="n">existing_column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">new</span><span class="p">))</span> -</span><span id="DataFrame-732"><a href="#DataFrame-732"><span class="linenos">732</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</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="DataFrame-733"><a href="#DataFrame-733"><span class="linenos">733</span></a> -</span><span id="DataFrame-734"><a href="#DataFrame-734"><span class="linenos">734</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame-735"><a href="#DataFrame-735"><span class="linenos">735</span></a> <span class="k">def</span> <span class="nf">drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-736"><a href="#DataFrame-736"><span class="linenos">736</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame-737"><a href="#DataFrame-737"><span class="linenos">737</span></a> <span class="n">drop_cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame-738"><a href="#DataFrame-738"><span class="linenos">738</span></a> <span class="n">new_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame-739"><a href="#DataFrame-739"><span class="linenos">739</span></a> <span class="n">col</span> -</span><span id="DataFrame-740"><a href="#DataFrame-740"><span class="linenos">740</span></a> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">all_columns</span> -</span><span id="DataFrame-741"><a href="#DataFrame-741"><span class="linenos">741</span></a> <span class="k">if</span> <span class="n">col</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="n">drop_column</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="k">for</span> <span class="n">drop_column</span> <span class="ow">in</span> <span class="n">drop_cols</span><span class="p">]</span> -</span><span id="DataFrame-742"><a href="#DataFrame-742"><span class="linenos">742</span></a> <span class="p">]</span> -</span><span id="DataFrame-743"><a href="#DataFrame-743"><span class="linenos">743</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">new_columns</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="DataFrame-744"><a href="#DataFrame-744"><span class="linenos">744</span></a> -</span><span id="DataFrame-745"><a href="#DataFrame-745"><span class="linenos">745</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">)</span> -</span><span id="DataFrame-746"><a href="#DataFrame-746"><span class="linenos">746</span></a> <span class="k">def</span> <span class="nf">limit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-747"><a href="#DataFrame-747"><span class="linenos">747</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">limit</span><span class="p">(</span><span class="n">num</span><span class="p">))</span> -</span><span id="DataFrame-748"><a href="#DataFrame-748"><span class="linenos">748</span></a> -</span><span id="DataFrame-749"><a href="#DataFrame-749"><span class="linenos">749</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame-750"><a href="#DataFrame-750"><span class="linenos">750</span></a> <span class="k">def</span> <span class="nf">hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">parameters</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-751"><a href="#DataFrame-751"><span class="linenos">751</span></a> <span class="n">parameter_list</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> -</span><span id="DataFrame-752"><a href="#DataFrame-752"><span class="linenos">752</span></a> <span class="n">parameter_columns</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="DataFrame-753"><a href="#DataFrame-753"><span class="linenos">753</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">parameter_list</span><span class="p">)</span> -</span><span id="DataFrame-754"><a href="#DataFrame-754"><span class="linenos">754</span></a> <span class="k">if</span> <span class="n">parameters</span> -</span><span id="DataFrame-755"><a href="#DataFrame-755"><span class="linenos">755</span></a> <span class="k">else</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">])</span> -</span><span id="DataFrame-756"><a href="#DataFrame-756"><span class="linenos">756</span></a> <span class="p">)</span> -</span><span id="DataFrame-757"><a href="#DataFrame-757"><span class="linenos">757</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">parameter_columns</span><span class="p">)</span> -</span><span id="DataFrame-758"><a href="#DataFrame-758"><span class="linenos">758</span></a> -</span><span id="DataFrame-759"><a href="#DataFrame-759"><span class="linenos">759</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame-760"><a href="#DataFrame-760"><span class="linenos">760</span></a> <span class="k">def</span> <span class="nf">repartition</span><span class="p">(</span> -</span><span id="DataFrame-761"><a href="#DataFrame-761"><span class="linenos">761</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">ColumnOrName</span><span class="p">],</span> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">ColumnOrName</span> -</span><span id="DataFrame-762"><a href="#DataFrame-762"><span class="linenos">762</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-763"><a href="#DataFrame-763"><span class="linenos">763</span></a> <span class="n">num_partition_cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">numPartitions</span><span class="p">)</span> -</span><span id="DataFrame-764"><a href="#DataFrame-764"><span class="linenos">764</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame-765"><a href="#DataFrame-765"><span class="linenos">765</span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">num_partition_cols</span> <span class="o">+</span> <span class="n">columns</span> -</span><span id="DataFrame-766"><a href="#DataFrame-766"><span class="linenos">766</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="s2">"repartition"</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="DataFrame-767"><a href="#DataFrame-767"><span class="linenos">767</span></a> -</span><span id="DataFrame-768"><a href="#DataFrame-768"><span class="linenos">768</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame-769"><a href="#DataFrame-769"><span class="linenos">769</span></a> <span class="k">def</span> <span class="nf">coalesce</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">numPartitions</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-770"><a href="#DataFrame-770"><span class="linenos">770</span></a> <span class="n">num_partitions</span> <span class="o">=</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">([</span><span class="n">numPartitions</span><span class="p">])</span> -</span><span id="DataFrame-771"><a href="#DataFrame-771"><span class="linenos">771</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="s2">"coalesce"</span><span class="p">,</span> <span class="n">num_partitions</span><span class="p">)</span> -</span><span id="DataFrame-772"><a href="#DataFrame-772"><span class="linenos">772</span></a> -</span><span id="DataFrame-773"><a href="#DataFrame-773"><span class="linenos">773</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame-774"><a href="#DataFrame-774"><span class="linenos">774</span></a> <span class="k">def</span> <span class="nf">cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-775"><a href="#DataFrame-775"><span class="linenos">775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">(</span><span class="n">storage_level</span><span class="o">=</span><span class="s2">"MEMORY_AND_DISK"</span><span class="p">)</span> -</span><span id="DataFrame-776"><a href="#DataFrame-776"><span class="linenos">776</span></a> -</span><span id="DataFrame-777"><a href="#DataFrame-777"><span class="linenos">777</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame-778"><a href="#DataFrame-778"><span class="linenos">778</span></a> <span class="k">def</span> <span class="nf">persist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">storageLevel</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"MEMORY_AND_DISK_SER"</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame-779"><a href="#DataFrame-779"><span class="linenos">779</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataFrame-780"><a href="#DataFrame-780"><span class="linenos">780</span></a><span class="sd"> Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html</span> -</span><span id="DataFrame-781"><a href="#DataFrame-781"><span class="linenos">781</span></a><span class="sd"> """</span> -</span><span id="DataFrame-782"><a href="#DataFrame-782"><span class="linenos">782</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">(</span><span class="n">storageLevel</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame-45"><a href="#DataFrame-45"><span class="linenos"> 45</span></a><span class="k">class</span> <span class="nc">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-46"><a href="#DataFrame-46"><span class="linenos"> 46</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="DataFrame-47"><a href="#DataFrame-47"><span class="linenos"> 47</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame-48"><a href="#DataFrame-48"><span class="linenos"> 48</span></a> <span class="n">spark</span><span class="p">:</span> <span class="n">SparkSession</span><span class="p">,</span> +</span><span id="DataFrame-49"><a href="#DataFrame-49"><span class="linenos"> 49</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> +</span><span id="DataFrame-50"><a href="#DataFrame-50"><span class="linenos"> 50</span></a> <span class="n">branch_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-51"><a href="#DataFrame-51"><span class="linenos"> 51</span></a> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-52"><a href="#DataFrame-52"><span class="linenos"> 52</span></a> <span class="n">last_op</span><span class="p">:</span> <span class="n">Operation</span> <span class="o">=</span> <span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">,</span> +</span><span id="DataFrame-53"><a href="#DataFrame-53"><span class="linenos"> 53</span></a> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-54"><a href="#DataFrame-54"><span class="linenos"> 54</span></a> <span class="n">output_expression_container</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">OutputExpressionContainer</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-55"><a href="#DataFrame-55"><span class="linenos"> 55</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="DataFrame-56"><a href="#DataFrame-56"><span class="linenos"> 56</span></a> <span class="p">):</span> +</span><span id="DataFrame-57"><a href="#DataFrame-57"><span class="linenos"> 57</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span> <span class="o">=</span> <span class="n">spark</span> +</span><span id="DataFrame-58"><a href="#DataFrame-58"><span class="linenos"> 58</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="DataFrame-59"><a href="#DataFrame-59"><span class="linenos"> 59</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">branch_id</span> <span class="o">=</span> <span class="n">branch_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_branch_id</span> +</span><span id="DataFrame-60"><a href="#DataFrame-60"><span class="linenos"> 60</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span> <span class="o">=</span> <span class="n">sequence_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_sequence_id</span> +</span><span id="DataFrame-61"><a href="#DataFrame-61"><span class="linenos"> 61</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">last_op</span> <span class="o">=</span> <span class="n">last_op</span> +</span><span id="DataFrame-62"><a href="#DataFrame-62"><span class="linenos"> 62</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span> <span class="o">=</span> <span class="n">pending_hints</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="DataFrame-63"><a href="#DataFrame-63"><span class="linenos"> 63</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">output_expression_container</span> <span class="o">=</span> <span class="n">output_expression_container</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">()</span> +</span><span id="DataFrame-64"><a href="#DataFrame-64"><span class="linenos"> 64</span></a> +</span><span id="DataFrame-65"><a href="#DataFrame-65"><span class="linenos"> 65</span></a> <span class="k">def</span> <span class="fm">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> +</span><span id="DataFrame-66"><a href="#DataFrame-66"><span class="linenos"> 66</span></a> <span class="k">return</span> <span class="bp">self</span><span class="p">[</span><span class="n">column_name</span><span class="p">]</span> +</span><span id="DataFrame-67"><a href="#DataFrame-67"><span class="linenos"> 67</span></a> +</span><span id="DataFrame-68"><a href="#DataFrame-68"><span class="linenos"> 68</span></a> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> +</span><span id="DataFrame-69"><a href="#DataFrame-69"><span class="linenos"> 69</span></a> <span class="n">column_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">branch_id</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column_name</span><span class="si">}</span><span class="s2">"</span> +</span><span id="DataFrame-70"><a href="#DataFrame-70"><span class="linenos"> 70</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span> +</span><span id="DataFrame-71"><a href="#DataFrame-71"><span class="linenos"> 71</span></a> +</span><span id="DataFrame-72"><a href="#DataFrame-72"><span class="linenos"> 72</span></a> <span class="k">def</span> <span class="nf">__copy__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="DataFrame-73"><a href="#DataFrame-73"><span class="linenos"> 73</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-74"><a href="#DataFrame-74"><span class="linenos"> 74</span></a> +</span><span id="DataFrame-75"><a href="#DataFrame-75"><span class="linenos"> 75</span></a> <span class="nd">@property</span> +</span><span id="DataFrame-76"><a href="#DataFrame-76"><span class="linenos"> 76</span></a> <span class="k">def</span> <span class="nf">sparkSession</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="DataFrame-77"><a href="#DataFrame-77"><span class="linenos"> 77</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span> +</span><span id="DataFrame-78"><a href="#DataFrame-78"><span class="linenos"> 78</span></a> +</span><span id="DataFrame-79"><a href="#DataFrame-79"><span class="linenos"> 79</span></a> <span class="nd">@property</span> +</span><span id="DataFrame-80"><a href="#DataFrame-80"><span class="linenos"> 80</span></a> <span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="DataFrame-81"><a href="#DataFrame-81"><span class="linenos"> 81</span></a> <span class="k">return</span> <span class="n">DataFrameWriter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="DataFrame-82"><a href="#DataFrame-82"><span class="linenos"> 82</span></a> +</span><span id="DataFrame-83"><a href="#DataFrame-83"><span class="linenos"> 83</span></a> <span class="nd">@property</span> +</span><span id="DataFrame-84"><a href="#DataFrame-84"><span class="linenos"> 84</span></a> <span class="k">def</span> <span class="nf">latest_cte_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="DataFrame-85"><a href="#DataFrame-85"><span class="linenos"> 85</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> +</span><span id="DataFrame-86"><a href="#DataFrame-86"><span class="linenos"> 86</span></a> <span class="n">from_exp</span> <span class="o">=</span> <span class="bp">self</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">"from"</span><span class="p">]</span> +</span><span id="DataFrame-87"><a href="#DataFrame-87"><span class="linenos"> 87</span></a> <span class="k">if</span> <span class="n">from_exp</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> +</span><span id="DataFrame-88"><a href="#DataFrame-88"><span class="linenos"> 88</span></a> <span class="k">return</span> <span class="n">from_exp</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="DataFrame-89"><a href="#DataFrame-89"><span class="linenos"> 89</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">from_exp</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">)</span> +</span><span id="DataFrame-90"><a href="#DataFrame-90"><span class="linenos"> 90</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table_alias</span><span class="p">:</span> +</span><span id="DataFrame-91"><a href="#DataFrame-91"><span class="linenos"> 91</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> +</span><span id="DataFrame-92"><a href="#DataFrame-92"><span class="linenos"> 92</span></a> <span class="sa">f</span><span class="s2">"Could not find an alias name for this expression: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span> +</span><span id="DataFrame-93"><a href="#DataFrame-93"><span class="linenos"> 93</span></a> <span class="p">)</span> +</span><span id="DataFrame-94"><a href="#DataFrame-94"><span class="linenos"> 94</span></a> <span class="k">return</span> <span class="n">table_alias</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="DataFrame-95"><a href="#DataFrame-95"><span class="linenos"> 95</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">alias</span> +</span><span id="DataFrame-96"><a href="#DataFrame-96"><span class="linenos"> 96</span></a> +</span><span id="DataFrame-97"><a href="#DataFrame-97"><span class="linenos"> 97</span></a> <span class="nd">@property</span> +</span><span id="DataFrame-98"><a href="#DataFrame-98"><span class="linenos"> 98</span></a> <span class="k">def</span> <span class="nf">pending_join_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="DataFrame-99"><a href="#DataFrame-99"><span class="linenos"> 99</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">hint</span> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">hint</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">)]</span> +</span><span id="DataFrame-100"><a href="#DataFrame-100"><span class="linenos">100</span></a> +</span><span id="DataFrame-101"><a href="#DataFrame-101"><span class="linenos">101</span></a> <span class="nd">@property</span> +</span><span id="DataFrame-102"><a href="#DataFrame-102"><span class="linenos">102</span></a> <span class="k">def</span> <span class="nf">pending_partition_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="DataFrame-103"><a href="#DataFrame-103"><span class="linenos">103</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">hint</span> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">hint</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">)]</span> +</span><span id="DataFrame-104"><a href="#DataFrame-104"><span class="linenos">104</span></a> +</span><span id="DataFrame-105"><a href="#DataFrame-105"><span class="linenos">105</span></a> <span class="nd">@property</span> +</span><span id="DataFrame-106"><a href="#DataFrame-106"><span class="linenos">106</span></a> <span class="k">def</span> <span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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="DataFrame-107"><a href="#DataFrame-107"><span class="linenos">107</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> +</span><span id="DataFrame-108"><a href="#DataFrame-108"><span class="linenos">108</span></a> +</span><span id="DataFrame-109"><a href="#DataFrame-109"><span class="linenos">109</span></a> <span class="nd">@property</span> +</span><span id="DataFrame-110"><a href="#DataFrame-110"><span class="linenos">110</span></a> <span class="k">def</span> <span class="nf">na</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrameNaFunctions</span><span class="p">:</span> +</span><span id="DataFrame-111"><a href="#DataFrame-111"><span class="linenos">111</span></a> <span class="k">return</span> <span class="n">DataFrameNaFunctions</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="DataFrame-112"><a href="#DataFrame-112"><span class="linenos">112</span></a> +</span><span id="DataFrame-113"><a href="#DataFrame-113"><span class="linenos">113</span></a> <span class="k">def</span> <span class="nf">_replace_cte_names_with_hashes</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">Select</span><span class="p">):</span> +</span><span id="DataFrame-114"><a href="#DataFrame-114"><span class="linenos">114</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="DataFrame-115"><a href="#DataFrame-115"><span class="linenos">115</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> +</span><span id="DataFrame-116"><a href="#DataFrame-116"><span class="linenos">116</span></a> <span class="n">old_name_id</span> <span class="o">=</span> <span class="n">cte</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> +</span><span id="DataFrame-117"><a href="#DataFrame-117"><span class="linenos">117</span></a> <span class="n">new_hashed_id</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span> +</span><span id="DataFrame-118"><a href="#DataFrame-118"><span class="linenos">118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_create_hash_from_expression</span><span class="p">(</span><span class="n">cte</span><span class="o">.</span><span class="n">this</span><span class="p">),</span> <span class="n">quoted</span><span class="o">=</span><span class="n">old_name_id</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"quoted"</span><span class="p">]</span> +</span><span id="DataFrame-119"><a href="#DataFrame-119"><span class="linenos">119</span></a> <span class="p">)</span> +</span><span id="DataFrame-120"><a href="#DataFrame-120"><span class="linenos">120</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">old_name_id</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_hashed_id</span> +</span><span id="DataFrame-121"><a href="#DataFrame-121"><span class="linenos">121</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">replace_id_value</span><span class="p">,</span> <span class="n">replacement_mapping</span><span class="p">)</span> +</span><span id="DataFrame-122"><a href="#DataFrame-122"><span class="linenos">122</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="DataFrame-123"><a href="#DataFrame-123"><span class="linenos">123</span></a> +</span><span id="DataFrame-124"><a href="#DataFrame-124"><span class="linenos">124</span></a> <span class="k">def</span> <span class="nf">_create_cte_from_expression</span><span class="p">(</span> +</span><span id="DataFrame-125"><a href="#DataFrame-125"><span class="linenos">125</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame-126"><a href="#DataFrame-126"><span class="linenos">126</span></a> <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><span id="DataFrame-127"><a href="#DataFrame-127"><span class="linenos">127</span></a> <span class="n">branch_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-128"><a href="#DataFrame-128"><span class="linenos">128</span></a> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-129"><a href="#DataFrame-129"><span class="linenos">129</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="DataFrame-130"><a href="#DataFrame-130"><span class="linenos">130</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="DataFrame-131"><a href="#DataFrame-131"><span class="linenos">131</span></a> <span class="n">name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_name</span> +</span><span id="DataFrame-132"><a href="#DataFrame-132"><span class="linenos">132</span></a> <span class="n">expression_to_cte</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-133"><a href="#DataFrame-133"><span class="linenos">133</span></a> <span class="n">expression_to_cte</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="DataFrame-134"><a href="#DataFrame-134"><span class="linenos">134</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">with_</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">as_</span><span class="o">=</span><span class="n">expression_to_cte</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="o">.</span><span class="n">ctes</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="DataFrame-135"><a href="#DataFrame-135"><span class="linenos">135</span></a> <span class="n">cte</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"branch_id"</span><span class="p">,</span> <span class="n">branch_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">branch_id</span><span class="p">)</span> +</span><span id="DataFrame-136"><a href="#DataFrame-136"><span class="linenos">136</span></a> <span class="n">cte</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"sequence_id"</span><span class="p">,</span> <span class="n">sequence_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">)</span> +</span><span id="DataFrame-137"><a href="#DataFrame-137"><span class="linenos">137</span></a> <span class="k">return</span> <span class="n">cte</span><span class="p">,</span> <span class="n">name</span> +</span><span id="DataFrame-138"><a href="#DataFrame-138"><span class="linenos">138</span></a> +</span><span id="DataFrame-139"><a href="#DataFrame-139"><span class="linenos">139</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="DataFrame-140"><a href="#DataFrame-140"><span class="linenos">140</span></a> <span class="k">def</span> <span class="nf">_ensure_list_of_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">ColumnOrLiteral</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]:</span> +</span><span id="DataFrame-141"><a href="#DataFrame-141"><span class="linenos">141</span></a> <span class="o">...</span> +</span><span id="DataFrame-142"><a href="#DataFrame-142"><span class="linenos">142</span></a> +</span><span id="DataFrame-143"><a href="#DataFrame-143"><span class="linenos">143</span></a> <span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="DataFrame-144"><a href="#DataFrame-144"><span class="linenos">144</span></a> <span class="k">def</span> <span class="nf">_ensure_list_of_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cols</span><span class="p">:</span> <span class="n">ColumnOrLiteral</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]:</span> +</span><span id="DataFrame-145"><a href="#DataFrame-145"><span class="linenos">145</span></a> <span class="o">...</span> +</span><span id="DataFrame-146"><a href="#DataFrame-146"><span class="linenos">146</span></a> +</span><span id="DataFrame-147"><a href="#DataFrame-147"><span class="linenos">147</span></a> <span class="k">def</span> <span class="nf">_ensure_list_of_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cols</span><span class="p">):</span> +</span><span id="DataFrame-148"><a href="#DataFrame-148"><span class="linenos">148</span></a> <span class="k">return</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cols</span><span class="p">))</span> +</span><span id="DataFrame-149"><a href="#DataFrame-149"><span class="linenos">149</span></a> +</span><span id="DataFrame-150"><a href="#DataFrame-150"><span class="linenos">150</span></a> <span class="k">def</span> <span class="nf">_ensure_and_normalize_cols</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cols</span><span class="p">):</span> +</span><span id="DataFrame-151"><a href="#DataFrame-151"><span class="linenos">151</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame-152"><a href="#DataFrame-152"><span class="linenos">152</span></a> <span class="n">normalize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame-153"><a href="#DataFrame-153"><span class="linenos">153</span></a> <span class="k">return</span> <span class="n">cols</span> +</span><span id="DataFrame-154"><a href="#DataFrame-154"><span class="linenos">154</span></a> +</span><span id="DataFrame-155"><a href="#DataFrame-155"><span class="linenos">155</span></a> <span class="k">def</span> <span class="nf">_ensure_and_normalize_col</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">col</span><span class="p">):</span> +</span><span id="DataFrame-156"><a href="#DataFrame-156"><span class="linenos">156</span></a> <span class="n">col</span> <span class="o">=</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_col</span><span class="p">(</span><span class="n">col</span><span class="p">)</span> +</span><span id="DataFrame-157"><a href="#DataFrame-157"><span class="linenos">157</span></a> <span class="n">normalize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">col</span><span class="p">)</span> +</span><span id="DataFrame-158"><a href="#DataFrame-158"><span class="linenos">158</span></a> <span class="k">return</span> <span class="n">col</span> +</span><span id="DataFrame-159"><a href="#DataFrame-159"><span class="linenos">159</span></a> +</span><span id="DataFrame-160"><a href="#DataFrame-160"><span class="linenos">160</span></a> <span class="k">def</span> <span class="nf">_convert_leaf_to_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-161"><a href="#DataFrame-161"><span class="linenos">161</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resolve_pending_hints</span><span class="p">()</span> +</span><span id="DataFrame-162"><a href="#DataFrame-162"><span class="linenos">162</span></a> <span class="n">sequence_id</span> <span class="o">=</span> <span class="n">sequence_id</span> <span class="ow">or</span> <span class="n">df</span><span class="o">.</span><span class="n">sequence_id</span> +</span><span id="DataFrame-163"><a href="#DataFrame-163"><span class="linenos">163</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-164"><a href="#DataFrame-164"><span class="linenos">164</span></a> <span class="n">cte_expression</span><span class="p">,</span> <span class="n">cte_name</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_create_cte_from_expression</span><span class="p">(</span> +</span><span id="DataFrame-165"><a href="#DataFrame-165"><span class="linenos">165</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">sequence_id</span><span class="o">=</span><span class="n">sequence_id</span> +</span><span id="DataFrame-166"><a href="#DataFrame-166"><span class="linenos">166</span></a> <span class="p">)</span> +</span><span id="DataFrame-167"><a href="#DataFrame-167"><span class="linenos">167</span></a> <span class="n">new_expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_add_ctes_to_expression</span><span class="p">(</span> +</span><span id="DataFrame-168"><a href="#DataFrame-168"><span class="linenos">168</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">(),</span> <span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> <span class="o">+</span> <span class="p">[</span><span class="n">cte_expression</span><span class="p">]</span> +</span><span id="DataFrame-169"><a href="#DataFrame-169"><span class="linenos">169</span></a> <span class="p">)</span> +</span><span id="DataFrame-170"><a href="#DataFrame-170"><span class="linenos">170</span></a> <span class="n">sel_columns</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">cte_expression</span><span class="p">)</span> +</span><span id="DataFrame-171"><a href="#DataFrame-171"><span class="linenos">171</span></a> <span class="n">new_expression</span> <span class="o">=</span> <span class="n">new_expression</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">cte_name</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">(</span> +</span><span id="DataFrame-172"><a href="#DataFrame-172"><span class="linenos">172</span></a> <span class="o">*</span><span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">sel_columns</span><span class="p">]</span> +</span><span id="DataFrame-173"><a href="#DataFrame-173"><span class="linenos">173</span></a> <span class="p">)</span> +</span><span id="DataFrame-174"><a href="#DataFrame-174"><span class="linenos">174</span></a> <span class="k">return</span> <span class="n">df</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">new_expression</span><span class="p">,</span> <span class="n">sequence_id</span><span class="o">=</span><span class="n">sequence_id</span><span class="p">)</span> +</span><span id="DataFrame-175"><a href="#DataFrame-175"><span class="linenos">175</span></a> +</span><span id="DataFrame-176"><a href="#DataFrame-176"><span class="linenos">176</span></a> <span class="k">def</span> <span class="nf">_resolve_pending_hints</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-177"><a href="#DataFrame-177"><span class="linenos">177</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-178"><a href="#DataFrame-178"><span class="linenos">178</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span><span class="p">:</span> +</span><span id="DataFrame-179"><a href="#DataFrame-179"><span class="linenos">179</span></a> <span class="k">return</span> <span class="n">df</span> +</span><span id="DataFrame-180"><a href="#DataFrame-180"><span class="linenos">180</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">expression</span> +</span><span id="DataFrame-181"><a href="#DataFrame-181"><span class="linenos">181</span></a> <span class="n">hint_expression</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">"hint"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[])</span> +</span><span id="DataFrame-182"><a href="#DataFrame-182"><span class="linenos">182</span></a> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">pending_partition_hints</span><span class="p">:</span> +</span><span id="DataFrame-183"><a href="#DataFrame-183"><span class="linenos">183</span></a> <span class="n">hint_expression</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">hint</span><span class="p">)</span> +</span><span id="DataFrame-184"><a href="#DataFrame-184"><span class="linenos">184</span></a> <span class="n">df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> +</span><span id="DataFrame-185"><a href="#DataFrame-185"><span class="linenos">185</span></a> +</span><span id="DataFrame-186"><a href="#DataFrame-186"><span class="linenos">186</span></a> <span class="n">join_aliases</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataFrame-187"><a href="#DataFrame-187"><span class="linenos">187</span></a> <span class="n">join_table</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="DataFrame-188"><a href="#DataFrame-188"><span class="linenos">188</span></a> <span class="k">for</span> <span class="n">join_table</span> <span class="ow">in</span> <span class="n">get_tables_from_expression_with_join</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame-189"><a href="#DataFrame-189"><span class="linenos">189</span></a> <span class="p">}</span> +</span><span id="DataFrame-190"><a href="#DataFrame-190"><span class="linenos">190</span></a> <span class="k">if</span> <span class="n">join_aliases</span><span class="p">:</span> +</span><span id="DataFrame-191"><a href="#DataFrame-191"><span class="linenos">191</span></a> <span class="k">for</span> <span class="n">hint</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">pending_join_hints</span><span class="p">:</span> +</span><span id="DataFrame-192"><a href="#DataFrame-192"><span class="linenos">192</span></a> <span class="k">for</span> <span class="n">sequence_id_expression</span> <span class="ow">in</span> <span class="n">hint</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="DataFrame-193"><a href="#DataFrame-193"><span class="linenos">193</span></a> <span class="n">sequence_id_or_name</span> <span class="o">=</span> <span class="n">sequence_id_expression</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="DataFrame-194"><a href="#DataFrame-194"><span class="linenos">194</span></a> <span class="n">sequence_ids_to_match</span> <span class="o">=</span> <span class="p">[</span><span class="n">sequence_id_or_name</span><span class="p">]</span> +</span><span id="DataFrame-195"><a href="#DataFrame-195"><span class="linenos">195</span></a> <span class="k">if</span> <span class="n">sequence_id_or_name</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">name_to_sequence_id_mapping</span><span class="p">:</span> +</span><span id="DataFrame-196"><a href="#DataFrame-196"><span class="linenos">196</span></a> <span class="n">sequence_ids_to_match</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">name_to_sequence_id_mapping</span><span class="p">[</span> +</span><span id="DataFrame-197"><a href="#DataFrame-197"><span class="linenos">197</span></a> <span class="n">sequence_id_or_name</span> +</span><span id="DataFrame-198"><a href="#DataFrame-198"><span class="linenos">198</span></a> <span class="p">]</span> +</span><span id="DataFrame-199"><a href="#DataFrame-199"><span class="linenos">199</span></a> <span class="n">matching_ctes</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-200"><a href="#DataFrame-200"><span class="linenos">200</span></a> <span class="n">cte</span> +</span><span id="DataFrame-201"><a href="#DataFrame-201"><span class="linenos">201</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="nb">reversed</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">)</span> +</span><span id="DataFrame-202"><a href="#DataFrame-202"><span class="linenos">202</span></a> <span class="k">if</span> <span class="n">cte</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"sequence_id"</span><span class="p">]</span> <span class="ow">in</span> <span class="n">sequence_ids_to_match</span> +</span><span id="DataFrame-203"><a href="#DataFrame-203"><span class="linenos">203</span></a> <span class="p">]</span> +</span><span id="DataFrame-204"><a href="#DataFrame-204"><span class="linenos">204</span></a> <span class="k">for</span> <span class="n">matching_cte</span> <span class="ow">in</span> <span class="n">matching_ctes</span><span class="p">:</span> +</span><span id="DataFrame-205"><a href="#DataFrame-205"><span class="linenos">205</span></a> <span class="k">if</span> <span class="n">matching_cte</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">join_aliases</span><span class="p">:</span> +</span><span id="DataFrame-206"><a href="#DataFrame-206"><span class="linenos">206</span></a> <span class="n">sequence_id_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">matching_cte</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="DataFrame-207"><a href="#DataFrame-207"><span class="linenos">207</span></a> <span class="n">df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">hint</span><span class="p">)</span> +</span><span id="DataFrame-208"><a href="#DataFrame-208"><span class="linenos">208</span></a> <span class="k">break</span> +</span><span id="DataFrame-209"><a href="#DataFrame-209"><span class="linenos">209</span></a> <span class="n">hint_expression</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="n">hint</span><span class="p">)</span> +</span><span id="DataFrame-210"><a href="#DataFrame-210"><span class="linenos">210</span></a> <span class="k">if</span> <span class="n">hint_expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="DataFrame-211"><a href="#DataFrame-211"><span class="linenos">211</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"hint"</span><span class="p">,</span> <span class="n">hint_expression</span><span class="p">)</span> +</span><span id="DataFrame-212"><a href="#DataFrame-212"><span class="linenos">212</span></a> <span class="k">return</span> <span class="n">df</span> +</span><span id="DataFrame-213"><a href="#DataFrame-213"><span class="linenos">213</span></a> +</span><span id="DataFrame-214"><a href="#DataFrame-214"><span class="linenos">214</span></a> <span class="k">def</span> <span class="nf">_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hint_name</span><span class="p">:</span> <span class="nb">str</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="n">Column</span><span class="p">])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-215"><a href="#DataFrame-215"><span class="linenos">215</span></a> <span class="n">hint_name</span> <span class="o">=</span> <span class="n">hint_name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="DataFrame-216"><a href="#DataFrame-216"><span class="linenos">216</span></a> <span class="n">hint_expression</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="DataFrame-217"><a href="#DataFrame-217"><span class="linenos">217</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span> +</span><span id="DataFrame-218"><a href="#DataFrame-218"><span class="linenos">218</span></a> <span class="n">this</span><span class="o">=</span><span class="n">hint_name</span><span class="p">,</span> +</span><span id="DataFrame-219"><a href="#DataFrame-219"><span class="linenos">219</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_table</span><span class="p">(</span><span class="n">parameter</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">parameter</span> <span class="ow">in</span> <span class="n">args</span><span class="p">],</span> +</span><span id="DataFrame-220"><a href="#DataFrame-220"><span class="linenos">220</span></a> <span class="p">)</span> +</span><span id="DataFrame-221"><a href="#DataFrame-221"><span class="linenos">221</span></a> <span class="k">if</span> <span class="n">hint_name</span> <span class="ow">in</span> <span class="n">JOIN_HINTS</span> +</span><span id="DataFrame-222"><a href="#DataFrame-222"><span class="linenos">222</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">(</span> +</span><span id="DataFrame-223"><a href="#DataFrame-223"><span class="linenos">223</span></a> <span class="n">this</span><span class="o">=</span><span class="n">hint_name</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">parameter</span><span class="o">.</span><span class="n">expression</span> <span class="k">for</span> <span class="n">parameter</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span> +</span><span id="DataFrame-224"><a href="#DataFrame-224"><span class="linenos">224</span></a> <span class="p">)</span> +</span><span id="DataFrame-225"><a href="#DataFrame-225"><span class="linenos">225</span></a> <span class="p">)</span> +</span><span id="DataFrame-226"><a href="#DataFrame-226"><span class="linenos">226</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-227"><a href="#DataFrame-227"><span class="linenos">227</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">hint_expression</span><span class="p">)</span> +</span><span id="DataFrame-228"><a href="#DataFrame-228"><span class="linenos">228</span></a> <span class="k">return</span> <span class="n">new_df</span> +</span><span id="DataFrame-229"><a href="#DataFrame-229"><span class="linenos">229</span></a> +</span><span id="DataFrame-230"><a href="#DataFrame-230"><span class="linenos">230</span></a> <span class="k">def</span> <span class="nf">_set_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">klass</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> <span class="n">distinct</span><span class="p">:</span> <span class="nb">bool</span><span class="p">):</span> +</span><span id="DataFrame-231"><a href="#DataFrame-231"><span class="linenos">231</span></a> <span class="n">other_df</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> +</span><span id="DataFrame-232"><a href="#DataFrame-232"><span class="linenos">232</span></a> <span class="n">base_expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-233"><a href="#DataFrame-233"><span class="linenos">233</span></a> <span class="n">base_expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add_ctes_to_expression</span><span class="p">(</span><span class="n">base_expression</span><span class="p">,</span> <span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">)</span> +</span><span id="DataFrame-234"><a href="#DataFrame-234"><span class="linenos">234</span></a> <span class="n">all_ctes</span> <span class="o">=</span> <span class="n">base_expression</span><span class="o">.</span><span class="n">ctes</span> +</span><span id="DataFrame-235"><a href="#DataFrame-235"><span class="linenos">235</span></a> <span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="DataFrame-236"><a href="#DataFrame-236"><span class="linenos">236</span></a> <span class="n">base_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="DataFrame-237"><a href="#DataFrame-237"><span class="linenos">237</span></a> <span class="n">operation</span> <span class="o">=</span> <span class="n">klass</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">base_expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame-238"><a href="#DataFrame-238"><span class="linenos">238</span></a> <span class="n">operation</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">all_ctes</span><span class="p">))</span> +</span><span id="DataFrame-239"><a href="#DataFrame-239"><span class="linenos">239</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">operation</span><span class="p">)</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> +</span><span id="DataFrame-240"><a href="#DataFrame-240"><span class="linenos">240</span></a> +</span><span id="DataFrame-241"><a href="#DataFrame-241"><span class="linenos">241</span></a> <span class="k">def</span> <span class="nf">_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">storage_level</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="DataFrame-242"><a href="#DataFrame-242"><span class="linenos">242</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> +</span><span id="DataFrame-243"><a href="#DataFrame-243"><span class="linenos">243</span></a> <span class="n">df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cache_storage_level"</span><span class="p">,</span> <span class="n">storage_level</span><span class="p">)</span> +</span><span id="DataFrame-244"><a href="#DataFrame-244"><span class="linenos">244</span></a> <span class="k">return</span> <span class="n">df</span> +</span><span id="DataFrame-245"><a href="#DataFrame-245"><span class="linenos">245</span></a> +</span><span id="DataFrame-246"><a href="#DataFrame-246"><span class="linenos">246</span></a> <span class="nd">@classmethod</span> +</span><span id="DataFrame-247"><a href="#DataFrame-247"><span class="linenos">247</span></a> <span class="k">def</span> <span class="nf">_add_ctes_to_expression</span><span class="p">(</span><span class="bp">cls</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">Select</span><span class="p">,</span> <span class="n">ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> +</span><span id="DataFrame-248"><a href="#DataFrame-248"><span class="linenos">248</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-249"><a href="#DataFrame-249"><span class="linenos">249</span></a> <span class="n">with_expression</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">"with"</span><span class="p">)</span> +</span><span id="DataFrame-250"><a href="#DataFrame-250"><span class="linenos">250</span></a> <span class="k">if</span> <span class="n">with_expression</span><span class="p">:</span> +</span><span id="DataFrame-251"><a href="#DataFrame-251"><span class="linenos">251</span></a> <span class="n">existing_ctes</span> <span class="o">=</span> <span class="n">with_expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="DataFrame-252"><a href="#DataFrame-252"><span class="linenos">252</span></a> <span class="n">existsing_cte_names</span> <span class="o">=</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">existing_ctes</span><span class="p">}</span> +</span><span id="DataFrame-253"><a href="#DataFrame-253"><span class="linenos">253</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="n">ctes</span><span class="p">:</span> +</span><span id="DataFrame-254"><a href="#DataFrame-254"><span class="linenos">254</span></a> <span class="k">if</span> <span class="n">cte</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">existsing_cte_names</span><span class="p">:</span> +</span><span id="DataFrame-255"><a href="#DataFrame-255"><span class="linenos">255</span></a> <span class="n">existing_ctes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cte</span><span class="p">)</span> +</span><span id="DataFrame-256"><a href="#DataFrame-256"><span class="linenos">256</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-257"><a href="#DataFrame-257"><span class="linenos">257</span></a> <span class="n">existing_ctes</span> <span class="o">=</span> <span class="n">ctes</span> +</span><span id="DataFrame-258"><a href="#DataFrame-258"><span class="linenos">258</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">existing_ctes</span><span class="p">))</span> +</span><span id="DataFrame-259"><a href="#DataFrame-259"><span class="linenos">259</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="DataFrame-260"><a href="#DataFrame-260"><span class="linenos">260</span></a> +</span><span id="DataFrame-261"><a href="#DataFrame-261"><span class="linenos">261</span></a> <span class="nd">@classmethod</span> +</span><span id="DataFrame-262"><a href="#DataFrame-262"><span class="linenos">262</span></a> <span class="k">def</span> <span class="nf">_get_outer_select_columns</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">item</span><span class="p">:</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">Expression</span><span class="p">,</span> <span class="n">DataFrame</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]:</span> +</span><span id="DataFrame-263"><a href="#DataFrame-263"><span class="linenos">263</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">item</span><span class="o">.</span><span class="n">expression</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="k">else</span> <span class="n">item</span> +</span><span id="DataFrame-264"><a href="#DataFrame-264"><span class="linenos">264</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span> +</span><span id="DataFrame-265"><a href="#DataFrame-265"><span class="linenos">265</span></a> +</span><span id="DataFrame-266"><a href="#DataFrame-266"><span class="linenos">266</span></a> <span class="nd">@classmethod</span> +</span><span id="DataFrame-267"><a href="#DataFrame-267"><span class="linenos">267</span></a> <span class="k">def</span> <span class="nf">_create_hash_from_expression</span><span class="p">(</span><span class="bp">cls</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">Select</span><span class="p">):</span> +</span><span id="DataFrame-268"><a href="#DataFrame-268"><span class="linenos">268</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="s2">"spark"</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">"utf-8"</span><span class="p">)</span> +</span><span id="DataFrame-269"><a href="#DataFrame-269"><span class="linenos">269</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"t</span><span class="si">{</span><span class="n">zlib</span><span class="o">.</span><span class="n">crc32</span><span class="p">(</span><span class="n">value</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">[:</span><span class="mi">6</span><span class="p">]</span> +</span><span id="DataFrame-270"><a href="#DataFrame-270"><span class="linenos">270</span></a> +</span><span id="DataFrame-271"><a href="#DataFrame-271"><span class="linenos">271</span></a> <span class="k">def</span> <span class="nf">_get_select_expressions</span><span class="p">(</span> +</span><span id="DataFrame-272"><a href="#DataFrame-272"><span class="linenos">272</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame-273"><a href="#DataFrame-273"><span class="linenos">273</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">],</span> <span class="n">OutputExpressionContainer</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">]]:</span> +</span><span id="DataFrame-274"><a href="#DataFrame-274"><span class="linenos">274</span></a> <span class="n">select_expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span> +</span><span id="DataFrame-275"><a href="#DataFrame-275"><span class="linenos">275</span></a> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">],</span> <span class="n">OutputExpressionContainer</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">]</span> +</span><span id="DataFrame-276"><a href="#DataFrame-276"><span class="linenos">276</span></a> <span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="DataFrame-277"><a href="#DataFrame-277"><span class="linenos">277</span></a> <span class="n">main_select_ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="DataFrame-278"><a href="#DataFrame-278"><span class="linenos">278</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> +</span><span id="DataFrame-279"><a href="#DataFrame-279"><span class="linenos">279</span></a> <span class="n">cache_storage_level</span> <span class="o">=</span> <span class="n">cte</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">"cache_storage_level"</span><span class="p">)</span> +</span><span id="DataFrame-280"><a href="#DataFrame-280"><span class="linenos">280</span></a> <span class="k">if</span> <span class="n">cache_storage_level</span><span class="p">:</span> +</span><span id="DataFrame-281"><a href="#DataFrame-281"><span class="linenos">281</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">cte</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-282"><a href="#DataFrame-282"><span class="linenos">282</span></a> <span class="n">select_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">copy</span><span class="p">(</span><span class="n">main_select_ctes</span><span class="p">)))</span> +</span><span id="DataFrame-283"><a href="#DataFrame-283"><span class="linenos">283</span></a> <span class="n">select_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cte_alias_name"</span><span class="p">,</span> <span class="n">cte</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> +</span><span id="DataFrame-284"><a href="#DataFrame-284"><span class="linenos">284</span></a> <span class="n">select_expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cache_storage_level"</span><span class="p">,</span> <span class="n">cache_storage_level</span><span class="p">)</span> +</span><span id="DataFrame-285"><a href="#DataFrame-285"><span class="linenos">285</span></a> <span class="n">select_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">select_expression</span><span class="p">))</span> +</span><span id="DataFrame-286"><a href="#DataFrame-286"><span class="linenos">286</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-287"><a href="#DataFrame-287"><span class="linenos">287</span></a> <span class="n">main_select_ctes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cte</span><span class="p">)</span> +</span><span id="DataFrame-288"><a href="#DataFrame-288"><span class="linenos">288</span></a> <span class="n">main_select</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-289"><a href="#DataFrame-289"><span class="linenos">289</span></a> <span class="k">if</span> <span class="n">main_select_ctes</span><span class="p">:</span> +</span><span id="DataFrame-290"><a href="#DataFrame-290"><span class="linenos">290</span></a> <span class="n">main_select</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">main_select_ctes</span><span class="p">))</span> +</span><span id="DataFrame-291"><a href="#DataFrame-291"><span class="linenos">291</span></a> <span class="n">expression_select_pair</span> <span class="o">=</span> <span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">output_expression_container</span><span class="p">),</span> <span class="n">main_select</span><span class="p">)</span> +</span><span id="DataFrame-292"><a href="#DataFrame-292"><span class="linenos">292</span></a> <span class="n">select_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression_select_pair</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="DataFrame-293"><a href="#DataFrame-293"><span class="linenos">293</span></a> <span class="k">return</span> <span class="n">select_expressions</span> +</span><span id="DataFrame-294"><a href="#DataFrame-294"><span class="linenos">294</span></a> +</span><span id="DataFrame-295"><a href="#DataFrame-295"><span class="linenos">295</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="s2">"spark"</span><span class="p">,</span> <span class="n">optimize</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></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="DataFrame-296"><a href="#DataFrame-296"><span class="linenos">296</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resolve_pending_hints</span><span class="p">()</span> +</span><span id="DataFrame-297"><a href="#DataFrame-297"><span class="linenos">297</span></a> <span class="n">select_expressions</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_get_select_expressions</span><span class="p">()</span> +</span><span id="DataFrame-298"><a href="#DataFrame-298"><span class="linenos">298</span></a> <span class="n">output_expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">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">Select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="DataFrame-299"><a href="#DataFrame-299"><span class="linenos">299</span></a> <span class="n">replacement_mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="DataFrame-300"><a href="#DataFrame-300"><span class="linenos">300</span></a> <span class="k">for</span> <span class="n">expression_type</span><span class="p">,</span> <span class="n">select_expression</span> <span class="ow">in</span> <span class="n">select_expressions</span><span class="p">:</span> +</span><span id="DataFrame-301"><a href="#DataFrame-301"><span class="linenos">301</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">replace_id_value</span><span class="p">,</span> <span class="n">replacement_mapping</span><span class="p">)</span> +</span><span id="DataFrame-302"><a href="#DataFrame-302"><span class="linenos">302</span></a> <span class="k">if</span> <span class="n">optimize</span><span class="p">:</span> +</span><span id="DataFrame-303"><a href="#DataFrame-303"><span class="linenos">303</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">optimize_func</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> +</span><span id="DataFrame-304"><a href="#DataFrame-304"><span class="linenos">304</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_replace_cte_names_with_hashes</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> +</span><span id="DataFrame-305"><a href="#DataFrame-305"><span class="linenos">305</span></a> <span class="n">expression</span><span class="p">:</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">Select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">]</span> +</span><span id="DataFrame-306"><a href="#DataFrame-306"><span class="linenos">306</span></a> <span class="k">if</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">:</span> +</span><span id="DataFrame-307"><a href="#DataFrame-307"><span class="linenos">307</span></a> <span class="n">cache_table_name</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_create_hash_from_expression</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> +</span><span id="DataFrame-308"><a href="#DataFrame-308"><span class="linenos">308</span></a> <span class="n">cache_table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_table</span><span class="p">(</span><span class="n">cache_table_name</span><span class="p">)</span> +</span><span id="DataFrame-309"><a href="#DataFrame-309"><span class="linenos">309</span></a> <span class="n">original_alias_name</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"cte_alias_name"</span><span class="p">]</span> +</span><span id="DataFrame-310"><a href="#DataFrame-310"><span class="linenos">310</span></a> +</span><span id="DataFrame-311"><a href="#DataFrame-311"><span class="linenos">311</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">original_alias_name</span><span class="p">)]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span> <span class="c1"># type: ignore</span> +</span><span id="DataFrame-312"><a href="#DataFrame-312"><span class="linenos">312</span></a> <span class="n">cache_table_name</span> +</span><span id="DataFrame-313"><a href="#DataFrame-313"><span class="linenos">313</span></a> <span class="p">)</span> +</span><span id="DataFrame-314"><a href="#DataFrame-314"><span class="linenos">314</span></a> <span class="n">sqlglot</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">add_table</span><span class="p">(</span> +</span><span id="DataFrame-315"><a href="#DataFrame-315"><span class="linenos">315</span></a> <span class="n">cache_table_name</span><span class="p">,</span> +</span><span id="DataFrame-316"><a href="#DataFrame-316"><span class="linenos">316</span></a> <span class="p">{</span> +</span><span id="DataFrame-317"><a href="#DataFrame-317"><span class="linenos">317</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"spark"</span><span class="p">)</span> +</span><span id="DataFrame-318"><a href="#DataFrame-318"><span class="linenos">318</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="DataFrame-319"><a href="#DataFrame-319"><span class="linenos">319</span></a> <span class="p">},</span> +</span><span id="DataFrame-320"><a href="#DataFrame-320"><span class="linenos">320</span></a> <span class="p">)</span> +</span><span id="DataFrame-321"><a href="#DataFrame-321"><span class="linenos">321</span></a> <span class="n">cache_storage_level</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"cache_storage_level"</span><span class="p">]</span> +</span><span id="DataFrame-322"><a href="#DataFrame-322"><span class="linenos">322</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-323"><a href="#DataFrame-323"><span class="linenos">323</span></a> <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">"storageLevel"</span><span class="p">),</span> +</span><span id="DataFrame-324"><a href="#DataFrame-324"><span class="linenos">324</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">cache_storage_level</span><span class="p">),</span> +</span><span id="DataFrame-325"><a href="#DataFrame-325"><span class="linenos">325</span></a> <span class="p">]</span> +</span><span id="DataFrame-326"><a href="#DataFrame-326"><span class="linenos">326</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">(</span> +</span><span id="DataFrame-327"><a href="#DataFrame-327"><span class="linenos">327</span></a> <span class="n">this</span><span class="o">=</span><span class="n">cache_table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select_expression</span><span class="p">,</span> <span class="n">lazy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span> +</span><span id="DataFrame-328"><a href="#DataFrame-328"><span class="linenos">328</span></a> <span class="p">)</span> +</span><span id="DataFrame-329"><a href="#DataFrame-329"><span class="linenos">329</span></a> <span class="c1"># We will drop the "view" if it exists before running the cache table</span> +</span><span id="DataFrame-330"><a href="#DataFrame-330"><span class="linenos">330</span></a> <span class="n">output_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">cache_table</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="s2">"VIEW"</span><span class="p">))</span> +</span><span id="DataFrame-331"><a href="#DataFrame-331"><span class="linenos">331</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> +</span><span id="DataFrame-332"><a href="#DataFrame-332"><span class="linenos">332</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">output_expression_container</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-333"><a href="#DataFrame-333"><span class="linenos">333</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">select_expression</span><span class="p">)</span> +</span><span id="DataFrame-334"><a href="#DataFrame-334"><span class="linenos">334</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">:</span> +</span><span id="DataFrame-335"><a href="#DataFrame-335"><span class="linenos">335</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">output_expression_container</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-336"><a href="#DataFrame-336"><span class="linenos">336</span></a> <span class="n">select_without_ctes</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-337"><a href="#DataFrame-337"><span class="linenos">337</span></a> <span class="n">select_without_ctes</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="DataFrame-338"><a href="#DataFrame-338"><span class="linenos">338</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">select_without_ctes</span><span class="p">)</span> +</span><span id="DataFrame-339"><a href="#DataFrame-339"><span class="linenos">339</span></a> <span class="k">if</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> +</span><span id="DataFrame-340"><a href="#DataFrame-340"><span class="linenos">340</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">select_expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">))</span> +</span><span id="DataFrame-341"><a href="#DataFrame-341"><span class="linenos">341</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> +</span><span id="DataFrame-342"><a href="#DataFrame-342"><span class="linenos">342</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">select_expression</span> +</span><span id="DataFrame-343"><a href="#DataFrame-343"><span class="linenos">343</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-344"><a href="#DataFrame-344"><span class="linenos">344</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid expression type: </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="DataFrame-345"><a href="#DataFrame-345"><span class="linenos">345</span></a> <span class="n">output_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame-346"><a href="#DataFrame-346"><span class="linenos">346</span></a> +</span><span id="DataFrame-347"><a href="#DataFrame-347"><span class="linenos">347</span></a> <span class="k">return</span> <span class="p">[</span> +</span><span id="DataFrame-348"><a href="#DataFrame-348"><span class="linenos">348</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">output_expressions</span> +</span><span id="DataFrame-349"><a href="#DataFrame-349"><span class="linenos">349</span></a> <span class="p">]</span> +</span><span id="DataFrame-350"><a href="#DataFrame-350"><span class="linenos">350</span></a> +</span><span id="DataFrame-351"><a href="#DataFrame-351"><span class="linenos">351</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-352"><a href="#DataFrame-352"><span class="linenos">352</span></a> <span class="k">return</span> <span class="n">DataFrame</span><span class="p">(</span><span class="o">**</span><span class="n">object_to_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> +</span><span id="DataFrame-353"><a href="#DataFrame-353"><span class="linenos">353</span></a> +</span><span id="DataFrame-354"><a href="#DataFrame-354"><span class="linenos">354</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame-355"><a href="#DataFrame-355"><span class="linenos">355</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-356"><a href="#DataFrame-356"><span class="linenos">356</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame-357"><a href="#DataFrame-357"><span class="linenos">357</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"append"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"append"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="DataFrame-358"><a href="#DataFrame-358"><span class="linenos">358</span></a> <span class="k">if</span> <span class="bp">self</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">"joins"</span><span class="p">):</span> +</span><span id="DataFrame-359"><a href="#DataFrame-359"><span class="linenos">359</span></a> <span class="n">ambiguous_cols</span> <span class="o">=</span> <span class="p">[</span><span class="n">col</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">cols</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">col</span><span class="o">.</span><span class="n">column_expression</span><span class="o">.</span><span class="n">table</span><span class="p">]</span> +</span><span id="DataFrame-360"><a href="#DataFrame-360"><span class="linenos">360</span></a> <span class="k">if</span> <span class="n">ambiguous_cols</span><span class="p">:</span> +</span><span id="DataFrame-361"><a href="#DataFrame-361"><span class="linenos">361</span></a> <span class="n">join_table_identifiers</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-362"><a href="#DataFrame-362"><span class="linenos">362</span></a> <span class="n">x</span><span class="o">.</span><span class="n">this</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">get_tables_from_expression_with_join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame-363"><a href="#DataFrame-363"><span class="linenos">363</span></a> <span class="p">]</span> +</span><span id="DataFrame-364"><a href="#DataFrame-364"><span class="linenos">364</span></a> <span class="n">cte_names_in_join</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">this</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">join_table_identifiers</span><span class="p">]</span> +</span><span id="DataFrame-365"><a href="#DataFrame-365"><span class="linenos">365</span></a> <span class="k">for</span> <span class="n">ambiguous_col</span> <span class="ow">in</span> <span class="n">ambiguous_cols</span><span class="p">:</span> +</span><span id="DataFrame-366"><a href="#DataFrame-366"><span class="linenos">366</span></a> <span class="n">ctes_with_column</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-367"><a href="#DataFrame-367"><span class="linenos">367</span></a> <span class="n">cte</span> +</span><span id="DataFrame-368"><a href="#DataFrame-368"><span class="linenos">368</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> +</span><span id="DataFrame-369"><a href="#DataFrame-369"><span class="linenos">369</span></a> <span class="k">if</span> <span class="n">cte</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">cte_names_in_join</span> +</span><span id="DataFrame-370"><a href="#DataFrame-370"><span class="linenos">370</span></a> <span class="ow">and</span> <span class="n">ambiguous_col</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">cte</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">named_selects</span> +</span><span id="DataFrame-371"><a href="#DataFrame-371"><span class="linenos">371</span></a> <span class="p">]</span> +</span><span id="DataFrame-372"><a href="#DataFrame-372"><span class="linenos">372</span></a> <span class="c1"># If the select column does not specify a table and there is a join</span> +</span><span id="DataFrame-373"><a href="#DataFrame-373"><span class="linenos">373</span></a> <span class="c1"># then we assume they are referring to the left table</span> +</span><span id="DataFrame-374"><a href="#DataFrame-374"><span class="linenos">374</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ctes_with_column</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="DataFrame-375"><a href="#DataFrame-375"><span class="linenos">375</span></a> <span class="n">table_identifier</span> <span class="o">=</span> <span class="bp">self</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">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> +</span><span id="DataFrame-376"><a href="#DataFrame-376"><span class="linenos">376</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-377"><a href="#DataFrame-377"><span class="linenos">377</span></a> <span class="n">table_identifier</span> <span class="o">=</span> <span class="n">ctes_with_column</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> +</span><span id="DataFrame-378"><a href="#DataFrame-378"><span class="linenos">378</span></a> <span class="n">ambiguous_col</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">table_identifier</span><span class="p">)</span> +</span><span id="DataFrame-379"><a href="#DataFrame-379"><span class="linenos">379</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span> +</span><span id="DataFrame-380"><a href="#DataFrame-380"><span class="linenos">380</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">expression</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">cols</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="DataFrame-381"><a href="#DataFrame-381"><span class="linenos">381</span></a> <span class="p">)</span> +</span><span id="DataFrame-382"><a href="#DataFrame-382"><span class="linenos">382</span></a> +</span><span id="DataFrame-383"><a href="#DataFrame-383"><span class="linenos">383</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame-384"><a href="#DataFrame-384"><span class="linenos">384</span></a> <span class="k">def</span> <span class="nf">alias</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-385"><a href="#DataFrame-385"><span class="linenos">385</span></a> <span class="n">new_sequence_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_sequence_id</span> +</span><span id="DataFrame-386"><a href="#DataFrame-386"><span class="linenos">386</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-387"><a href="#DataFrame-387"><span class="linenos">387</span></a> <span class="k">for</span> <span class="n">join_hint</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">pending_join_hints</span><span class="p">:</span> +</span><span id="DataFrame-388"><a href="#DataFrame-388"><span class="linenos">388</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">join_hint</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="DataFrame-389"><a href="#DataFrame-389"><span class="linenos">389</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">:</span> +</span><span id="DataFrame-390"><a href="#DataFrame-390"><span class="linenos">390</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_col</span><span class="p">(</span><span class="n">new_sequence_id</span><span class="p">)</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame-391"><a href="#DataFrame-391"><span class="linenos">391</span></a> <span class="n">df</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_add_alias_to_mapping</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">new_sequence_id</span><span class="p">)</span> +</span><span id="DataFrame-392"><a href="#DataFrame-392"><span class="linenos">392</span></a> <span class="k">return</span> <span class="n">df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">(</span><span class="n">sequence_id</span><span class="o">=</span><span class="n">new_sequence_id</span><span class="p">)</span> +</span><span id="DataFrame-393"><a href="#DataFrame-393"><span class="linenos">393</span></a> +</span><span id="DataFrame-394"><a href="#DataFrame-394"><span class="linenos">394</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> +</span><span id="DataFrame-395"><a href="#DataFrame-395"><span class="linenos">395</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">Column</span><span class="p">,</span> <span class="nb">bool</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-396"><a href="#DataFrame-396"><span class="linenos">396</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> +</span><span id="DataFrame-397"><a href="#DataFrame-397"><span class="linenos">397</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">))</span> +</span><span id="DataFrame-398"><a href="#DataFrame-398"><span class="linenos">398</span></a> +</span><span id="DataFrame-399"><a href="#DataFrame-399"><span class="linenos">399</span></a> <span class="nb">filter</span> <span class="o">=</span> <span class="n">where</span> +</span><span id="DataFrame-400"><a href="#DataFrame-400"><span class="linenos">400</span></a> +</span><span id="DataFrame-401"><a href="#DataFrame-401"><span class="linenos">401</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">)</span> +</span><span id="DataFrame-402"><a href="#DataFrame-402"><span class="linenos">402</span></a> <span class="k">def</span> <span class="nf">groupBy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">GroupedData</span><span class="p">:</span> +</span><span id="DataFrame-403"><a href="#DataFrame-403"><span class="linenos">403</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame-404"><a href="#DataFrame-404"><span class="linenos">404</span></a> <span class="k">return</span> <span class="n">GroupedData</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">columns</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_op</span><span class="p">)</span> +</span><span id="DataFrame-405"><a href="#DataFrame-405"><span class="linenos">405</span></a> +</span><span id="DataFrame-406"><a href="#DataFrame-406"><span class="linenos">406</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame-407"><a href="#DataFrame-407"><span class="linenos">407</span></a> <span class="k">def</span> <span class="nf">agg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">exprs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-408"><a href="#DataFrame-408"><span class="linenos">408</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">exprs</span><span class="p">)</span> +</span><span id="DataFrame-409"><a href="#DataFrame-409"><span class="linenos">409</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupBy</span><span class="p">()</span><span class="o">.</span><span class="n">agg</span><span class="p">(</span><span class="o">*</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame-410"><a href="#DataFrame-410"><span class="linenos">410</span></a> +</span><span id="DataFrame-411"><a href="#DataFrame-411"><span class="linenos">411</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame-412"><a href="#DataFrame-412"><span class="linenos">412</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> +</span><span id="DataFrame-413"><a href="#DataFrame-413"><span class="linenos">413</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame-414"><a href="#DataFrame-414"><span class="linenos">414</span></a> <span class="n">other_df</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> +</span><span id="DataFrame-415"><a href="#DataFrame-415"><span class="linenos">415</span></a> <span class="n">on</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Column</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]],</span> +</span><span id="DataFrame-416"><a href="#DataFrame-416"><span class="linenos">416</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"inner"</span><span class="p">,</span> +</span><span id="DataFrame-417"><a href="#DataFrame-417"><span class="linenos">417</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="DataFrame-418"><a href="#DataFrame-418"><span class="linenos">418</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-419"><a href="#DataFrame-419"><span class="linenos">419</span></a> <span class="n">other_df</span> <span class="o">=</span> <span class="n">other_df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> +</span><span id="DataFrame-420"><a href="#DataFrame-420"><span class="linenos">420</span></a> <span class="n">pre_join_self_latest_cte_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_cte_name</span> +</span><span id="DataFrame-421"><a href="#DataFrame-421"><span class="linenos">421</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">on</span><span class="p">)</span> +</span><span id="DataFrame-422"><a href="#DataFrame-422"><span class="linenos">422</span></a> <span class="n">join_type</span> <span class="o">=</span> <span class="n">how</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"_"</span><span class="p">,</span> <span class="s2">" "</span><span class="p">)</span> +</span><span id="DataFrame-423"><a href="#DataFrame-423"><span class="linenos">423</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</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">Column</span><span class="p">):</span> +</span><span id="DataFrame-424"><a href="#DataFrame-424"><span class="linenos">424</span></a> <span class="n">join_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-425"><a href="#DataFrame-425"><span class="linenos">425</span></a> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span> +</span><span id="DataFrame-426"><a href="#DataFrame-426"><span class="linenos">426</span></a> <span class="p">]</span> +</span><span id="DataFrame-427"><a href="#DataFrame-427"><span class="linenos">427</span></a> <span class="n">join_clause</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span> +</span><span id="DataFrame-428"><a href="#DataFrame-428"><span class="linenos">428</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">&</span> <span class="n">y</span><span class="p">,</span> +</span><span id="DataFrame-429"><a href="#DataFrame-429"><span class="linenos">429</span></a> <span class="p">[</span> +</span><span id="DataFrame-430"><a href="#DataFrame-430"><span class="linenos">430</span></a> <span class="n">col</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> +</span><span id="DataFrame-431"><a href="#DataFrame-431"><span class="linenos">431</span></a> <span class="o">==</span> <span class="n">col</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">)</span> +</span><span id="DataFrame-432"><a href="#DataFrame-432"><span class="linenos">432</span></a> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">columns</span> +</span><span id="DataFrame-433"><a href="#DataFrame-433"><span class="linenos">433</span></a> <span class="p">],</span> +</span><span id="DataFrame-434"><a href="#DataFrame-434"><span class="linenos">434</span></a> <span class="p">)</span> +</span><span id="DataFrame-435"><a href="#DataFrame-435"><span class="linenos">435</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-436"><a href="#DataFrame-436"><span class="linenos">436</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="DataFrame-437"><a href="#DataFrame-437"><span class="linenos">437</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">&</span> <span class="n">y</span><span class="p">,</span> <span class="n">columns</span><span class="p">)]</span> +</span><span id="DataFrame-438"><a href="#DataFrame-438"><span class="linenos">438</span></a> <span class="n">join_clause</span> <span class="o">=</span> <span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="DataFrame-439"><a href="#DataFrame-439"><span class="linenos">439</span></a> <span class="n">join_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-440"><a href="#DataFrame-440"><span class="linenos">440</span></a> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> +</span><span id="DataFrame-441"><a href="#DataFrame-441"><span class="linenos">441</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> +</span><span id="DataFrame-442"><a href="#DataFrame-442"><span class="linenos">442</span></a> <span class="k">else</span> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">)</span> +</span><span id="DataFrame-443"><a href="#DataFrame-443"><span class="linenos">443</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">join_clause</span><span class="o">.</span><span class="n">expression</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">Column</span><span class="p">))</span> +</span><span id="DataFrame-444"><a href="#DataFrame-444"><span class="linenos">444</span></a> <span class="p">]</span> +</span><span id="DataFrame-445"><a href="#DataFrame-445"><span class="linenos">445</span></a> <span class="n">self_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-446"><a href="#DataFrame-446"><span class="linenos">446</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="DataFrame-447"><a href="#DataFrame-447"><span class="linenos">447</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="DataFrame-448"><a href="#DataFrame-448"><span class="linenos">448</span></a> <span class="p">]</span> +</span><span id="DataFrame-449"><a href="#DataFrame-449"><span class="linenos">449</span></a> <span class="n">other_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-450"><a href="#DataFrame-450"><span class="linenos">450</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="DataFrame-451"><a href="#DataFrame-451"><span class="linenos">451</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">other_df</span><span class="p">)</span> +</span><span id="DataFrame-452"><a href="#DataFrame-452"><span class="linenos">452</span></a> <span class="p">]</span> +</span><span id="DataFrame-453"><a href="#DataFrame-453"><span class="linenos">453</span></a> <span class="n">column_value_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataFrame-454"><a href="#DataFrame-454"><span class="linenos">454</span></a> <span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="DataFrame-455"><a href="#DataFrame-455"><span class="linenos">455</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="o">.</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">Star</span><span class="p">)</span> +</span><span id="DataFrame-456"><a href="#DataFrame-456"><span class="linenos">456</span></a> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">sql</span><span class="p">():</span> <span class="n">column</span> +</span><span id="DataFrame-457"><a href="#DataFrame-457"><span class="linenos">457</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">other_columns</span> <span class="o">+</span> <span class="n">self_columns</span> <span class="o">+</span> <span class="n">join_columns</span> +</span><span id="DataFrame-458"><a href="#DataFrame-458"><span class="linenos">458</span></a> <span class="p">}</span> +</span><span id="DataFrame-459"><a href="#DataFrame-459"><span class="linenos">459</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-460"><a href="#DataFrame-460"><span class="linenos">460</span></a> <span class="n">column_value_mapping</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> +</span><span id="DataFrame-461"><a href="#DataFrame-461"><span class="linenos">461</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">join_columns</span> <span class="o">+</span> <span class="n">self_columns</span> <span class="o">+</span> <span class="n">other_columns</span><span class="p">}</span> +</span><span id="DataFrame-462"><a href="#DataFrame-462"><span class="linenos">462</span></a> <span class="p">]</span> +</span><span id="DataFrame-463"><a href="#DataFrame-463"><span class="linenos">463</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span> +</span><span id="DataFrame-464"><a href="#DataFrame-464"><span class="linenos">464</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="DataFrame-465"><a href="#DataFrame-465"><span class="linenos">465</span></a> <span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">join_clause</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">join_type</span><span class="o">=</span><span class="n">join_type</span> +</span><span id="DataFrame-466"><a href="#DataFrame-466"><span class="linenos">466</span></a> <span class="p">)</span> +</span><span id="DataFrame-467"><a href="#DataFrame-467"><span class="linenos">467</span></a> <span class="p">)</span> +</span><span id="DataFrame-468"><a href="#DataFrame-468"><span class="linenos">468</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">expression</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">_add_ctes_to_expression</span><span class="p">(</span> +</span><span id="DataFrame-469"><a href="#DataFrame-469"><span class="linenos">469</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> +</span><span id="DataFrame-470"><a href="#DataFrame-470"><span class="linenos">470</span></a> <span class="p">)</span> +</span><span id="DataFrame-471"><a href="#DataFrame-471"><span class="linenos">471</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="p">)</span> +</span><span id="DataFrame-472"><a href="#DataFrame-472"><span class="linenos">472</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="o">.</span><span class="n">__wrapped__</span><span class="p">(</span><span class="n">new_df</span><span class="p">,</span> <span class="o">*</span><span class="n">all_columns</span><span class="p">)</span> +</span><span id="DataFrame-473"><a href="#DataFrame-473"><span class="linenos">473</span></a> <span class="k">return</span> <span class="n">new_df</span> +</span><span id="DataFrame-474"><a href="#DataFrame-474"><span class="linenos">474</span></a> +</span><span id="DataFrame-475"><a href="#DataFrame-475"><span class="linenos">475</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">)</span> +</span><span id="DataFrame-476"><a href="#DataFrame-476"><span class="linenos">476</span></a> <span class="k">def</span> <span class="nf">orderBy</span><span class="p">(</span> +</span><span id="DataFrame-477"><a href="#DataFrame-477"><span class="linenos">477</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame-478"><a href="#DataFrame-478"><span class="linenos">478</span></a> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">],</span> +</span><span id="DataFrame-479"><a href="#DataFrame-479"><span class="linenos">479</span></a> <span class="n">ascending</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-480"><a href="#DataFrame-480"><span class="linenos">480</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-481"><a href="#DataFrame-481"><span class="linenos">481</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataFrame-482"><a href="#DataFrame-482"><span class="linenos">482</span></a><span class="sd"> This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark</span> +</span><span id="DataFrame-483"><a href="#DataFrame-483"><span class="linenos">483</span></a><span class="sd"> has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this</span> +</span><span id="DataFrame-484"><a href="#DataFrame-484"><span class="linenos">484</span></a><span class="sd"> is unlikely to come up.</span> +</span><span id="DataFrame-485"><a href="#DataFrame-485"><span class="linenos">485</span></a><span class="sd"> """</span> +</span><span id="DataFrame-486"><a href="#DataFrame-486"><span class="linenos">486</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame-487"><a href="#DataFrame-487"><span class="linenos">487</span></a> <span class="n">pre_ordered_col_indexes</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-488"><a href="#DataFrame-488"><span class="linenos">488</span></a> <span class="n">x</span> +</span><span id="DataFrame-489"><a href="#DataFrame-489"><span class="linenos">489</span></a> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span> +</span><span id="DataFrame-490"><a href="#DataFrame-490"><span class="linenos">490</span></a> <span class="n">i</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">col</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">Ordered</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="DataFrame-491"><a href="#DataFrame-491"><span class="linenos">491</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame-492"><a href="#DataFrame-492"><span class="linenos">492</span></a> <span class="p">]</span> +</span><span id="DataFrame-493"><a href="#DataFrame-493"><span class="linenos">493</span></a> <span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> +</span><span id="DataFrame-494"><a href="#DataFrame-494"><span class="linenos">494</span></a> <span class="p">]</span> +</span><span id="DataFrame-495"><a href="#DataFrame-495"><span class="linenos">495</span></a> <span class="k">if</span> <span class="n">ascending</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="DataFrame-496"><a href="#DataFrame-496"><span class="linenos">496</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame-497"><a href="#DataFrame-497"><span class="linenos">497</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ascending</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="DataFrame-498"><a href="#DataFrame-498"><span class="linenos">498</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="n">ascending</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame-499"><a href="#DataFrame-499"><span class="linenos">499</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="nb">bool</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">ascending</span><span class="p">)]</span> +</span><span id="DataFrame-500"><a href="#DataFrame-500"><span class="linenos">500</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> +</span><span id="DataFrame-501"><a href="#DataFrame-501"><span class="linenos">501</span></a> <span class="n">ascending</span> +</span><span id="DataFrame-502"><a href="#DataFrame-502"><span class="linenos">502</span></a> <span class="p">),</span> <span class="s2">"The length of items in ascending must equal the number of columns provided"</span> +</span><span id="DataFrame-503"><a href="#DataFrame-503"><span class="linenos">503</span></a> <span class="n">col_and_ascending</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">ascending</span><span class="p">))</span> +</span><span id="DataFrame-504"><a href="#DataFrame-504"><span class="linenos">504</span></a> <span class="n">order_by_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-505"><a href="#DataFrame-505"><span class="linenos">505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="ow">not</span> <span class="n">asc</span><span class="p">)</span> +</span><span id="DataFrame-506"><a href="#DataFrame-506"><span class="linenos">506</span></a> <span class="k">if</span> <span class="n">i</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pre_ordered_col_indexes</span> +</span><span id="DataFrame-507"><a href="#DataFrame-507"><span class="linenos">507</span></a> <span class="k">else</span> <span class="n">columns</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">column_expression</span> +</span><span id="DataFrame-508"><a href="#DataFrame-508"><span class="linenos">508</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">asc</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">col_and_ascending</span><span class="p">)</span> +</span><span id="DataFrame-509"><a href="#DataFrame-509"><span class="linenos">509</span></a> <span class="p">]</span> +</span><span id="DataFrame-510"><a href="#DataFrame-510"><span class="linenos">510</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="o">*</span><span class="n">order_by_columns</span><span class="p">))</span> +</span><span id="DataFrame-511"><a href="#DataFrame-511"><span class="linenos">511</span></a> +</span><span id="DataFrame-512"><a href="#DataFrame-512"><span class="linenos">512</span></a> <span class="n">sort</span> <span class="o">=</span> <span class="n">orderBy</span> +</span><span id="DataFrame-513"><a href="#DataFrame-513"><span class="linenos">513</span></a> +</span><span id="DataFrame-514"><a href="#DataFrame-514"><span class="linenos">514</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame-515"><a href="#DataFrame-515"><span class="linenos">515</span></a> <span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-516"><a href="#DataFrame-516"><span class="linenos">516</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="DataFrame-517"><a href="#DataFrame-517"><span class="linenos">517</span></a> +</span><span id="DataFrame-518"><a href="#DataFrame-518"><span class="linenos">518</span></a> <span class="n">unionAll</span> <span class="o">=</span> <span class="n">union</span> +</span><span id="DataFrame-519"><a href="#DataFrame-519"><span class="linenos">519</span></a> +</span><span id="DataFrame-520"><a href="#DataFrame-520"><span class="linenos">520</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame-521"><a href="#DataFrame-521"><span class="linenos">521</span></a> <span class="k">def</span> <span class="nf">unionByName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> <span class="n">allowMissingColumns</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="DataFrame-522"><a href="#DataFrame-522"><span class="linenos">522</span></a> <span class="n">l_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span> +</span><span id="DataFrame-523"><a href="#DataFrame-523"><span class="linenos">523</span></a> <span class="n">r_columns</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">columns</span> +</span><span id="DataFrame-524"><a href="#DataFrame-524"><span class="linenos">524</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">allowMissingColumns</span><span class="p">:</span> +</span><span id="DataFrame-525"><a href="#DataFrame-525"><span class="linenos">525</span></a> <span class="n">l_expressions</span> <span class="o">=</span> <span class="n">l_columns</span> +</span><span id="DataFrame-526"><a href="#DataFrame-526"><span class="linenos">526</span></a> <span class="n">r_expressions</span> <span class="o">=</span> <span class="n">l_columns</span> +</span><span id="DataFrame-527"><a href="#DataFrame-527"><span class="linenos">527</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-528"><a href="#DataFrame-528"><span class="linenos">528</span></a> <span class="n">l_expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="DataFrame-529"><a href="#DataFrame-529"><span class="linenos">529</span></a> <span class="n">r_expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="DataFrame-530"><a href="#DataFrame-530"><span class="linenos">530</span></a> <span class="n">r_columns_unused</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">r_columns</span><span class="p">)</span> +</span><span id="DataFrame-531"><a href="#DataFrame-531"><span class="linenos">531</span></a> <span class="k">for</span> <span class="n">l_column</span> <span class="ow">in</span> <span class="n">l_columns</span><span class="p">:</span> +</span><span id="DataFrame-532"><a href="#DataFrame-532"><span class="linenos">532</span></a> <span class="n">l_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> +</span><span id="DataFrame-533"><a href="#DataFrame-533"><span class="linenos">533</span></a> <span class="k">if</span> <span class="n">l_column</span> <span class="ow">in</span> <span class="n">r_columns</span><span class="p">:</span> +</span><span id="DataFrame-534"><a href="#DataFrame-534"><span class="linenos">534</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> +</span><span id="DataFrame-535"><a href="#DataFrame-535"><span class="linenos">535</span></a> <span class="n">r_columns_unused</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> +</span><span id="DataFrame-536"><a href="#DataFrame-536"><span class="linenos">536</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-537"><a href="#DataFrame-537"><span class="linenos">537</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">(),</span> <span class="n">l_column</span><span class="p">))</span> +</span><span id="DataFrame-538"><a href="#DataFrame-538"><span class="linenos">538</span></a> <span class="k">for</span> <span class="n">r_column</span> <span class="ow">in</span> <span class="n">r_columns_unused</span><span class="p">:</span> +</span><span id="DataFrame-539"><a href="#DataFrame-539"><span class="linenos">539</span></a> <span class="n">l_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">(),</span> <span class="n">r_column</span><span class="p">))</span> +</span><span id="DataFrame-540"><a href="#DataFrame-540"><span class="linenos">540</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">r_column</span><span class="p">)</span> +</span><span id="DataFrame-541"><a href="#DataFrame-541"><span class="linenos">541</span></a> <span class="n">r_df</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="DataFrame-542"><a href="#DataFrame-542"><span class="linenos">542</span></a> <span class="n">other</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">r_expressions</span><span class="p">))</span> +</span><span id="DataFrame-543"><a href="#DataFrame-543"><span class="linenos">543</span></a> <span class="p">)</span> +</span><span id="DataFrame-544"><a href="#DataFrame-544"><span class="linenos">544</span></a> <span class="n">l_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-545"><a href="#DataFrame-545"><span class="linenos">545</span></a> <span class="k">if</span> <span class="n">allowMissingColumns</span><span class="p">:</span> +</span><span id="DataFrame-546"><a href="#DataFrame-546"><span class="linenos">546</span></a> <span class="n">l_df</span> <span class="o">=</span> <span class="n">l_df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">l_expressions</span><span class="p">))</span> +</span><span id="DataFrame-547"><a href="#DataFrame-547"><span class="linenos">547</span></a> <span class="k">return</span> <span class="n">l_df</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">r_df</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="DataFrame-548"><a href="#DataFrame-548"><span class="linenos">548</span></a> +</span><span id="DataFrame-549"><a href="#DataFrame-549"><span class="linenos">549</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame-550"><a href="#DataFrame-550"><span class="linenos">550</span></a> <span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-551"><a href="#DataFrame-551"><span class="linenos">551</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="DataFrame-552"><a href="#DataFrame-552"><span class="linenos">552</span></a> +</span><span id="DataFrame-553"><a href="#DataFrame-553"><span class="linenos">553</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame-554"><a href="#DataFrame-554"><span class="linenos">554</span></a> <span class="k">def</span> <span class="nf">intersectAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-555"><a href="#DataFrame-555"><span class="linenos">555</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="DataFrame-556"><a href="#DataFrame-556"><span class="linenos">556</span></a> +</span><span id="DataFrame-557"><a href="#DataFrame-557"><span class="linenos">557</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame-558"><a href="#DataFrame-558"><span class="linenos">558</span></a> <span class="k">def</span> <span class="nf">exceptAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-559"><a href="#DataFrame-559"><span class="linenos">559</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="DataFrame-560"><a href="#DataFrame-560"><span class="linenos">560</span></a> +</span><span id="DataFrame-561"><a href="#DataFrame-561"><span class="linenos">561</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame-562"><a href="#DataFrame-562"><span class="linenos">562</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-563"><a href="#DataFrame-563"><span class="linenos">563</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">distinct</span><span class="p">())</span> +</span><span id="DataFrame-564"><a href="#DataFrame-564"><span class="linenos">564</span></a> +</span><span id="DataFrame-565"><a href="#DataFrame-565"><span class="linenos">565</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame-566"><a href="#DataFrame-566"><span class="linenos">566</span></a> <span class="k">def</span> <span class="nf">dropDuplicates</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +</span><span id="DataFrame-567"><a href="#DataFrame-567"><span class="linenos">567</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subset</span><span class="p">:</span> +</span><span id="DataFrame-568"><a href="#DataFrame-568"><span class="linenos">568</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="p">()</span> +</span><span id="DataFrame-569"><a href="#DataFrame-569"><span class="linenos">569</span></a> <span class="n">column_names</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> +</span><span id="DataFrame-570"><a href="#DataFrame-570"><span class="linenos">570</span></a> <span class="n">window</span> <span class="o">=</span> <span class="n">Window</span><span class="o">.</span><span class="n">partitionBy</span><span class="p">(</span><span class="o">*</span><span class="n">column_names</span><span class="p">)</span><span class="o">.</span><span class="n">orderBy</span><span class="p">(</span><span class="o">*</span><span class="n">column_names</span><span class="p">)</span> +</span><span id="DataFrame-571"><a href="#DataFrame-571"><span class="linenos">571</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="DataFrame-572"><a href="#DataFrame-572"><span class="linenos">572</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-573"><a href="#DataFrame-573"><span class="linenos">573</span></a> <span class="o">.</span><span class="n">withColumn</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">,</span> <span class="n">F</span><span class="o">.</span><span class="n">row_number</span><span class="p">()</span><span class="o">.</span><span class="n">over</span><span class="p">(</span><span class="n">window</span><span class="p">))</span> +</span><span id="DataFrame-574"><a href="#DataFrame-574"><span class="linenos">574</span></a> <span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">col</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">)</span> <span class="o">==</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span> +</span><span id="DataFrame-575"><a href="#DataFrame-575"><span class="linenos">575</span></a> <span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">)</span> +</span><span id="DataFrame-576"><a href="#DataFrame-576"><span class="linenos">576</span></a> <span class="p">)</span> +</span><span id="DataFrame-577"><a href="#DataFrame-577"><span class="linenos">577</span></a> +</span><span id="DataFrame-578"><a href="#DataFrame-578"><span class="linenos">578</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame-579"><a href="#DataFrame-579"><span class="linenos">579</span></a> <span class="k">def</span> <span class="nf">dropna</span><span class="p">(</span> +</span><span id="DataFrame-580"><a href="#DataFrame-580"><span class="linenos">580</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame-581"><a href="#DataFrame-581"><span class="linenos">581</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"any"</span><span class="p">,</span> +</span><span id="DataFrame-582"><a href="#DataFrame-582"><span class="linenos">582</span></a> <span class="n">thresh</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-583"><a href="#DataFrame-583"><span class="linenos">583</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-584"><a href="#DataFrame-584"><span class="linenos">584</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-585"><a href="#DataFrame-585"><span class="linenos">585</span></a> <span class="n">minimum_non_null</span> <span class="o">=</span> <span class="n">thresh</span> <span class="ow">or</span> <span class="mi">0</span> <span class="c1"># will be determined later if thresh is null</span> +</span><span id="DataFrame-586"><a href="#DataFrame-586"><span class="linenos">586</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-587"><a href="#DataFrame-587"><span class="linenos">587</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame-588"><a href="#DataFrame-588"><span class="linenos">588</span></a> <span class="k">if</span> <span class="n">subset</span><span class="p">:</span> +</span><span id="DataFrame-589"><a href="#DataFrame-589"><span class="linenos">589</span></a> <span class="n">null_check_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> +</span><span id="DataFrame-590"><a href="#DataFrame-590"><span class="linenos">590</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-591"><a href="#DataFrame-591"><span class="linenos">591</span></a> <span class="n">null_check_columns</span> <span class="o">=</span> <span class="n">all_columns</span> +</span><span id="DataFrame-592"><a href="#DataFrame-592"><span class="linenos">592</span></a> <span class="k">if</span> <span class="n">thresh</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="DataFrame-593"><a href="#DataFrame-593"><span class="linenos">593</span></a> <span class="n">minimum_num_nulls</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">how</span> <span class="o">==</span> <span class="s2">"any"</span> <span class="k">else</span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span> +</span><span id="DataFrame-594"><a href="#DataFrame-594"><span class="linenos">594</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-595"><a href="#DataFrame-595"><span class="linenos">595</span></a> <span class="n">minimum_num_nulls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span> <span class="o">-</span> <span class="n">minimum_non_null</span> <span class="o">+</span> <span class="mi">1</span> +</span><span id="DataFrame-596"><a href="#DataFrame-596"><span class="linenos">596</span></a> <span class="k">if</span> <span class="n">minimum_num_nulls</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">):</span> +</span><span id="DataFrame-597"><a href="#DataFrame-597"><span class="linenos">597</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> +</span><span id="DataFrame-598"><a href="#DataFrame-598"><span class="linenos">598</span></a> <span class="sa">f</span><span class="s2">"The minimum num nulls for dropna must be less than or equal to the number of columns. "</span> +</span><span id="DataFrame-599"><a href="#DataFrame-599"><span class="linenos">599</span></a> <span class="sa">f</span><span class="s2">"Minimum num nulls: </span><span class="si">{</span><span class="n">minimum_num_nulls</span><span class="si">}</span><span class="s2">, Num Columns: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="DataFrame-600"><a href="#DataFrame-600"><span class="linenos">600</span></a> <span class="p">)</span> +</span><span id="DataFrame-601"><a href="#DataFrame-601"><span class="linenos">601</span></a> <span class="n">if_null_checks</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-602"><a href="#DataFrame-602"><span class="linenos">602</span></a> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">isNull</span><span class="p">(),</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">null_check_columns</span> +</span><span id="DataFrame-603"><a href="#DataFrame-603"><span class="linenos">603</span></a> <span class="p">]</span> +</span><span id="DataFrame-604"><a href="#DataFrame-604"><span class="linenos">604</span></a> <span class="n">nulls_added_together</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">,</span> <span class="n">if_null_checks</span><span class="p">)</span> +</span><span id="DataFrame-605"><a href="#DataFrame-605"><span class="linenos">605</span></a> <span class="n">num_nulls</span> <span class="o">=</span> <span class="n">nulls_added_together</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">"num_nulls"</span><span class="p">)</span> +</span><span id="DataFrame-606"><a href="#DataFrame-606"><span class="linenos">606</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">num_nulls</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="DataFrame-607"><a href="#DataFrame-607"><span class="linenos">607</span></a> <span class="n">filtered_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">col</span><span class="p">(</span><span class="s2">"num_nulls"</span><span class="p">)</span> <span class="o"><</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="n">minimum_num_nulls</span><span class="p">))</span> +</span><span id="DataFrame-608"><a href="#DataFrame-608"><span class="linenos">608</span></a> <span class="n">final_df</span> <span class="o">=</span> <span class="n">filtered_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">all_columns</span><span class="p">)</span> +</span><span id="DataFrame-609"><a href="#DataFrame-609"><span class="linenos">609</span></a> <span class="k">return</span> <span class="n">final_df</span> +</span><span id="DataFrame-610"><a href="#DataFrame-610"><span class="linenos">610</span></a> +</span><span id="DataFrame-611"><a href="#DataFrame-611"><span class="linenos">611</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame-612"><a href="#DataFrame-612"><span class="linenos">612</span></a> <span class="k">def</span> <span class="nf">fillna</span><span class="p">(</span> +</span><span id="DataFrame-613"><a href="#DataFrame-613"><span class="linenos">613</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame-614"><a href="#DataFrame-614"><span class="linenos">614</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">ColumnLiterals</span><span class="p">],</span> +</span><span id="DataFrame-615"><a href="#DataFrame-615"><span class="linenos">615</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-616"><a href="#DataFrame-616"><span class="linenos">616</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-617"><a href="#DataFrame-617"><span class="linenos">617</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataFrame-618"><a href="#DataFrame-618"><span class="linenos">618</span></a><span class="sd"> Functionality Difference: If you provide a value to replace a null and that type conflicts</span> +</span><span id="DataFrame-619"><a href="#DataFrame-619"><span class="linenos">619</span></a><span class="sd"> with the type of the column then PySpark will just ignore your replacement.</span> +</span><span id="DataFrame-620"><a href="#DataFrame-620"><span class="linenos">620</span></a><span class="sd"> This will try to cast them to be the same in some cases. So they won't always match.</span> +</span><span id="DataFrame-621"><a href="#DataFrame-621"><span class="linenos">621</span></a><span class="sd"> Best to not mix types so make sure replacement is the same type as the column</span> +</span><span id="DataFrame-622"><a href="#DataFrame-622"><span class="linenos">622</span></a> +</span><span id="DataFrame-623"><a href="#DataFrame-623"><span class="linenos">623</span></a><span class="sd"> Possibility for improvement: Use `typeof` function to get the type of the column</span> +</span><span id="DataFrame-624"><a href="#DataFrame-624"><span class="linenos">624</span></a><span class="sd"> and check if it matches the type of the value provided. If not then make it null.</span> +</span><span id="DataFrame-625"><a href="#DataFrame-625"><span class="linenos">625</span></a><span class="sd"> """</span> +</span><span id="DataFrame-626"><a href="#DataFrame-626"><span class="linenos">626</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dataframe.sql.functions</span> <span class="kn">import</span> <span class="n">lit</span> +</span><span id="DataFrame-627"><a href="#DataFrame-627"><span class="linenos">627</span></a> +</span><span id="DataFrame-628"><a href="#DataFrame-628"><span class="linenos">628</span></a> <span class="n">values</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="DataFrame-629"><a href="#DataFrame-629"><span class="linenos">629</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="DataFrame-630"><a href="#DataFrame-630"><span class="linenos">630</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-631"><a href="#DataFrame-631"><span class="linenos">631</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame-632"><a href="#DataFrame-632"><span class="linenos">632</span></a> <span class="n">all_column_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">}</span> +</span><span id="DataFrame-633"><a href="#DataFrame-633"><span class="linenos">633</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="DataFrame-634"><a href="#DataFrame-634"><span class="linenos">634</span></a> <span class="n">values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="DataFrame-635"><a href="#DataFrame-635"><span class="linenos">635</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">value</span><span class="p">))</span> +</span><span id="DataFrame-636"><a href="#DataFrame-636"><span class="linenos">636</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="DataFrame-637"><a href="#DataFrame-637"><span class="linenos">637</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> <span class="k">if</span> <span class="n">subset</span> <span class="k">else</span> <span class="n">all_columns</span> +</span><span id="DataFrame-638"><a href="#DataFrame-638"><span class="linenos">638</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">values</span><span class="p">:</span> +</span><span id="DataFrame-639"><a href="#DataFrame-639"><span class="linenos">639</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame-640"><a href="#DataFrame-640"><span class="linenos">640</span></a> <span class="n">value_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">]</span> +</span><span id="DataFrame-641"><a href="#DataFrame-641"><span class="linenos">641</span></a> +</span><span id="DataFrame-642"><a href="#DataFrame-642"><span class="linenos">642</span></a> <span class="n">null_replacement_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataFrame-643"><a href="#DataFrame-643"><span class="linenos">643</span></a> <span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="p">(</span> +</span><span id="DataFrame-644"><a href="#DataFrame-644"><span class="linenos">644</span></a> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">isNull</span><span class="p">(),</span> <span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">column</span><span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> +</span><span id="DataFrame-645"><a href="#DataFrame-645"><span class="linenos">645</span></a> <span class="p">)</span> +</span><span id="DataFrame-646"><a href="#DataFrame-646"><span class="linenos">646</span></a> <span class="k">for</span> <span class="n">column</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">value_columns</span><span class="p">)</span> +</span><span id="DataFrame-647"><a href="#DataFrame-647"><span class="linenos">647</span></a> <span class="p">}</span> +</span><span id="DataFrame-648"><a href="#DataFrame-648"><span class="linenos">648</span></a> <span class="n">null_replacement_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">all_column_mapping</span><span class="p">,</span> <span class="o">**</span><span class="n">null_replacement_mapping</span><span class="p">}</span> +</span><span id="DataFrame-649"><a href="#DataFrame-649"><span class="linenos">649</span></a> <span class="n">null_replacement_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-650"><a href="#DataFrame-650"><span class="linenos">650</span></a> <span class="n">null_replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span> +</span><span id="DataFrame-651"><a href="#DataFrame-651"><span class="linenos">651</span></a> <span class="p">]</span> +</span><span id="DataFrame-652"><a href="#DataFrame-652"><span class="linenos">652</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">null_replacement_columns</span><span class="p">)</span> +</span><span id="DataFrame-653"><a href="#DataFrame-653"><span class="linenos">653</span></a> <span class="k">return</span> <span class="n">new_df</span> +</span><span id="DataFrame-654"><a href="#DataFrame-654"><span class="linenos">654</span></a> +</span><span id="DataFrame-655"><a href="#DataFrame-655"><span class="linenos">655</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame-656"><a href="#DataFrame-656"><span class="linenos">656</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span> +</span><span id="DataFrame-657"><a href="#DataFrame-657"><span class="linenos">657</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame-658"><a href="#DataFrame-658"><span class="linenos">658</span></a> <span class="n">to_replace</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> +</span><span id="DataFrame-659"><a href="#DataFrame-659"><span class="linenos">659</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-660"><a href="#DataFrame-660"><span class="linenos">660</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">ColumnOrName</span><span class="p">]</span> <span class="o">|</span> <span class="n">ColumnOrName</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame-661"><a href="#DataFrame-661"><span class="linenos">661</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-662"><a href="#DataFrame-662"><span class="linenos">662</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dataframe.sql.functions</span> <span class="kn">import</span> <span class="n">lit</span> +</span><span id="DataFrame-663"><a href="#DataFrame-663"><span class="linenos">663</span></a> +</span><span id="DataFrame-664"><a href="#DataFrame-664"><span class="linenos">664</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="DataFrame-665"><a href="#DataFrame-665"><span class="linenos">665</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-666"><a href="#DataFrame-666"><span class="linenos">666</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame-667"><a href="#DataFrame-667"><span class="linenos">667</span></a> <span class="n">all_column_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">}</span> +</span><span id="DataFrame-668"><a href="#DataFrame-668"><span class="linenos">668</span></a> +</span><span id="DataFrame-669"><a href="#DataFrame-669"><span class="linenos">669</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> <span class="k">if</span> <span class="n">subset</span> <span class="k">else</span> <span class="n">all_columns</span> +</span><span id="DataFrame-670"><a href="#DataFrame-670"><span class="linenos">670</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to_replace</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="DataFrame-671"><a href="#DataFrame-671"><span class="linenos">671</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">to_replace</span><span class="p">)</span> +</span><span id="DataFrame-672"><a href="#DataFrame-672"><span class="linenos">672</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">to_replace</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="DataFrame-673"><a href="#DataFrame-673"><span class="linenos">673</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">old_values</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to_replace</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="DataFrame-674"><a href="#DataFrame-674"><span class="linenos">674</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="s2">"value must be a list since the replacements are a list"</span> +</span><span id="DataFrame-675"><a href="#DataFrame-675"><span class="linenos">675</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">to_replace</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> +</span><span id="DataFrame-676"><a href="#DataFrame-676"><span class="linenos">676</span></a> <span class="n">value</span> +</span><span id="DataFrame-677"><a href="#DataFrame-677"><span class="linenos">677</span></a> <span class="p">),</span> <span class="s2">"the replacements and values must be the same length"</span> +</span><span id="DataFrame-678"><a href="#DataFrame-678"><span class="linenos">678</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="n">to_replace</span> +</span><span id="DataFrame-679"><a href="#DataFrame-679"><span class="linenos">679</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="n">value</span> +</span><span id="DataFrame-680"><a href="#DataFrame-680"><span class="linenos">680</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-681"><a href="#DataFrame-681"><span class="linenos">681</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">to_replace</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame-682"><a href="#DataFrame-682"><span class="linenos">682</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame-683"><a href="#DataFrame-683"><span class="linenos">683</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">old_values</span><span class="p">]</span> +</span><span id="DataFrame-684"><a href="#DataFrame-684"><span class="linenos">684</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">new_values</span><span class="p">]</span> +</span><span id="DataFrame-685"><a href="#DataFrame-685"><span class="linenos">685</span></a> +</span><span id="DataFrame-686"><a href="#DataFrame-686"><span class="linenos">686</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="DataFrame-687"><a href="#DataFrame-687"><span class="linenos">687</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="DataFrame-688"><a href="#DataFrame-688"><span class="linenos">688</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> +</span><span id="DataFrame-689"><a href="#DataFrame-689"><span class="linenos">689</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">old_values</span><span class="p">,</span> <span class="n">new_values</span><span class="p">)):</span> +</span><span id="DataFrame-690"><a href="#DataFrame-690"><span class="linenos">690</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="DataFrame-691"><a href="#DataFrame-691"><span class="linenos">691</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> +</span><span id="DataFrame-692"><a href="#DataFrame-692"><span class="linenos">692</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-693"><a href="#DataFrame-693"><span class="linenos">693</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="DataFrame-694"><a href="#DataFrame-694"><span class="linenos">694</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">column</span><span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span> +</span><span id="DataFrame-695"><a href="#DataFrame-695"><span class="linenos">695</span></a> <span class="n">column</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="DataFrame-696"><a href="#DataFrame-696"><span class="linenos">696</span></a> <span class="p">)</span> +</span><span id="DataFrame-697"><a href="#DataFrame-697"><span class="linenos">697</span></a> +</span><span id="DataFrame-698"><a href="#DataFrame-698"><span class="linenos">698</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">all_column_mapping</span><span class="p">,</span> <span class="o">**</span><span class="n">replacement_mapping</span><span class="p">}</span> +</span><span id="DataFrame-699"><a href="#DataFrame-699"><span class="linenos">699</span></a> <span class="n">replacement_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">]</span> +</span><span id="DataFrame-700"><a href="#DataFrame-700"><span class="linenos">700</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">replacement_columns</span><span class="p">)</span> +</span><span id="DataFrame-701"><a href="#DataFrame-701"><span class="linenos">701</span></a> <span class="k">return</span> <span class="n">new_df</span> +</span><span id="DataFrame-702"><a href="#DataFrame-702"><span class="linenos">702</span></a> +</span><span id="DataFrame-703"><a href="#DataFrame-703"><span class="linenos">703</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame-704"><a href="#DataFrame-704"><span class="linenos">704</span></a> <span class="k">def</span> <span class="nf">withColumn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">colName</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">col</span><span class="p">:</span> <span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-705"><a href="#DataFrame-705"><span class="linenos">705</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">col</span><span class="p">)</span> +</span><span id="DataFrame-706"><a href="#DataFrame-706"><span class="linenos">706</span></a> <span class="n">existing_col_names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> +</span><span id="DataFrame-707"><a href="#DataFrame-707"><span class="linenos">707</span></a> <span class="n">existing_col_index</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="DataFrame-708"><a href="#DataFrame-708"><span class="linenos">708</span></a> <span class="n">existing_col_names</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">colName</span><span class="p">)</span> <span class="k">if</span> <span class="n">colName</span> <span class="ow">in</span> <span class="n">existing_col_names</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="DataFrame-709"><a href="#DataFrame-709"><span class="linenos">709</span></a> <span class="p">)</span> +</span><span id="DataFrame-710"><a href="#DataFrame-710"><span class="linenos">710</span></a> <span class="k">if</span> <span class="n">existing_col_index</span><span class="p">:</span> +</span><span id="DataFrame-711"><a href="#DataFrame-711"><span class="linenos">711</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-712"><a href="#DataFrame-712"><span class="linenos">712</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="n">existing_col_index</span><span class="p">]</span> <span class="o">=</span> <span class="n">col</span><span class="o">.</span><span class="n">expression</span> +</span><span id="DataFrame-713"><a href="#DataFrame-713"><span class="linenos">713</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</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="DataFrame-714"><a href="#DataFrame-714"><span class="linenos">714</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="n">colName</span><span class="p">),</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="DataFrame-715"><a href="#DataFrame-715"><span class="linenos">715</span></a> +</span><span id="DataFrame-716"><a href="#DataFrame-716"><span class="linenos">716</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame-717"><a href="#DataFrame-717"><span class="linenos">717</span></a> <span class="k">def</span> <span class="nf">withColumnRenamed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">existing</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">new</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="DataFrame-718"><a href="#DataFrame-718"><span class="linenos">718</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame-719"><a href="#DataFrame-719"><span class="linenos">719</span></a> <span class="n">existing_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-720"><a href="#DataFrame-720"><span class="linenos">720</span></a> <span class="n">expression</span> +</span><span id="DataFrame-721"><a href="#DataFrame-721"><span class="linenos">721</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="DataFrame-722"><a href="#DataFrame-722"><span class="linenos">722</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="n">existing</span> +</span><span id="DataFrame-723"><a href="#DataFrame-723"><span class="linenos">723</span></a> <span class="p">]</span> +</span><span id="DataFrame-724"><a href="#DataFrame-724"><span class="linenos">724</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">existing_columns</span><span class="p">:</span> +</span><span id="DataFrame-725"><a href="#DataFrame-725"><span class="linenos">725</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Tried to rename a column that doesn't exist"</span><span class="p">)</span> +</span><span id="DataFrame-726"><a href="#DataFrame-726"><span class="linenos">726</span></a> <span class="k">for</span> <span class="n">existing_column</span> <span class="ow">in</span> <span class="n">existing_columns</span><span class="p">:</span> +</span><span id="DataFrame-727"><a href="#DataFrame-727"><span class="linenos">727</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">existing_column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="DataFrame-728"><a href="#DataFrame-728"><span class="linenos">728</span></a> <span class="n">existing_column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">existing_column</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">new</span><span class="p">))</span> +</span><span id="DataFrame-729"><a href="#DataFrame-729"><span class="linenos">729</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame-730"><a href="#DataFrame-730"><span class="linenos">730</span></a> <span class="n">existing_column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">new</span><span class="p">))</span> +</span><span id="DataFrame-731"><a href="#DataFrame-731"><span class="linenos">731</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</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="DataFrame-732"><a href="#DataFrame-732"><span class="linenos">732</span></a> +</span><span id="DataFrame-733"><a href="#DataFrame-733"><span class="linenos">733</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame-734"><a href="#DataFrame-734"><span class="linenos">734</span></a> <span class="k">def</span> <span class="nf">drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-735"><a href="#DataFrame-735"><span class="linenos">735</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame-736"><a href="#DataFrame-736"><span class="linenos">736</span></a> <span class="n">drop_cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame-737"><a href="#DataFrame-737"><span class="linenos">737</span></a> <span class="n">new_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame-738"><a href="#DataFrame-738"><span class="linenos">738</span></a> <span class="n">col</span> +</span><span id="DataFrame-739"><a href="#DataFrame-739"><span class="linenos">739</span></a> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">all_columns</span> +</span><span id="DataFrame-740"><a href="#DataFrame-740"><span class="linenos">740</span></a> <span class="k">if</span> <span class="n">col</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="n">drop_column</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="k">for</span> <span class="n">drop_column</span> <span class="ow">in</span> <span class="n">drop_cols</span><span class="p">]</span> +</span><span id="DataFrame-741"><a href="#DataFrame-741"><span class="linenos">741</span></a> <span class="p">]</span> +</span><span id="DataFrame-742"><a href="#DataFrame-742"><span class="linenos">742</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">new_columns</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="DataFrame-743"><a href="#DataFrame-743"><span class="linenos">743</span></a> +</span><span id="DataFrame-744"><a href="#DataFrame-744"><span class="linenos">744</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">)</span> +</span><span id="DataFrame-745"><a href="#DataFrame-745"><span class="linenos">745</span></a> <span class="k">def</span> <span class="nf">limit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-746"><a href="#DataFrame-746"><span class="linenos">746</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">limit</span><span class="p">(</span><span class="n">num</span><span class="p">))</span> +</span><span id="DataFrame-747"><a href="#DataFrame-747"><span class="linenos">747</span></a> +</span><span id="DataFrame-748"><a href="#DataFrame-748"><span class="linenos">748</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame-749"><a href="#DataFrame-749"><span class="linenos">749</span></a> <span class="k">def</span> <span class="nf">hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">parameters</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-750"><a href="#DataFrame-750"><span class="linenos">750</span></a> <span class="n">parameter_list</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> +</span><span id="DataFrame-751"><a href="#DataFrame-751"><span class="linenos">751</span></a> <span class="n">parameter_columns</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="DataFrame-752"><a href="#DataFrame-752"><span class="linenos">752</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">parameter_list</span><span class="p">)</span> +</span><span id="DataFrame-753"><a href="#DataFrame-753"><span class="linenos">753</span></a> <span class="k">if</span> <span class="n">parameters</span> +</span><span id="DataFrame-754"><a href="#DataFrame-754"><span class="linenos">754</span></a> <span class="k">else</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">])</span> +</span><span id="DataFrame-755"><a href="#DataFrame-755"><span class="linenos">755</span></a> <span class="p">)</span> +</span><span id="DataFrame-756"><a href="#DataFrame-756"><span class="linenos">756</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">parameter_columns</span><span class="p">)</span> +</span><span id="DataFrame-757"><a href="#DataFrame-757"><span class="linenos">757</span></a> +</span><span id="DataFrame-758"><a href="#DataFrame-758"><span class="linenos">758</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame-759"><a href="#DataFrame-759"><span class="linenos">759</span></a> <span class="k">def</span> <span class="nf">repartition</span><span class="p">(</span> +</span><span id="DataFrame-760"><a href="#DataFrame-760"><span class="linenos">760</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">ColumnOrName</span><span class="p">],</span> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">ColumnOrName</span> +</span><span id="DataFrame-761"><a href="#DataFrame-761"><span class="linenos">761</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-762"><a href="#DataFrame-762"><span class="linenos">762</span></a> <span class="n">num_partition_cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">numPartitions</span><span class="p">)</span> +</span><span id="DataFrame-763"><a href="#DataFrame-763"><span class="linenos">763</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame-764"><a href="#DataFrame-764"><span class="linenos">764</span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">num_partition_cols</span> <span class="o">+</span> <span class="n">columns</span> +</span><span id="DataFrame-765"><a href="#DataFrame-765"><span class="linenos">765</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="s2">"repartition"</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="DataFrame-766"><a href="#DataFrame-766"><span class="linenos">766</span></a> +</span><span id="DataFrame-767"><a href="#DataFrame-767"><span class="linenos">767</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame-768"><a href="#DataFrame-768"><span class="linenos">768</span></a> <span class="k">def</span> <span class="nf">coalesce</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">numPartitions</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-769"><a href="#DataFrame-769"><span class="linenos">769</span></a> <span class="n">num_partitions</span> <span class="o">=</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">([</span><span class="n">numPartitions</span><span class="p">])</span> +</span><span id="DataFrame-770"><a href="#DataFrame-770"><span class="linenos">770</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="s2">"coalesce"</span><span class="p">,</span> <span class="n">num_partitions</span><span class="p">)</span> +</span><span id="DataFrame-771"><a href="#DataFrame-771"><span class="linenos">771</span></a> +</span><span id="DataFrame-772"><a href="#DataFrame-772"><span class="linenos">772</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame-773"><a href="#DataFrame-773"><span class="linenos">773</span></a> <span class="k">def</span> <span class="nf">cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-774"><a href="#DataFrame-774"><span class="linenos">774</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">(</span><span class="n">storage_level</span><span class="o">=</span><span class="s2">"MEMORY_AND_DISK"</span><span class="p">)</span> +</span><span id="DataFrame-775"><a href="#DataFrame-775"><span class="linenos">775</span></a> +</span><span id="DataFrame-776"><a href="#DataFrame-776"><span class="linenos">776</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame-777"><a href="#DataFrame-777"><span class="linenos">777</span></a> <span class="k">def</span> <span class="nf">persist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">storageLevel</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"MEMORY_AND_DISK_SER"</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame-778"><a href="#DataFrame-778"><span class="linenos">778</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataFrame-779"><a href="#DataFrame-779"><span class="linenos">779</span></a><span class="sd"> Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html</span> +</span><span id="DataFrame-780"><a href="#DataFrame-780"><span class="linenos">780</span></a><span class="sd"> """</span> +</span><span id="DataFrame-781"><a href="#DataFrame-781"><span class="linenos">781</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">(</span><span class="n">storageLevel</span><span class="p">)</span> </span></pre></div> @@ -1500,30 +1476,30 @@ <input id="DataFrame.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr function"> - <span class="name">DataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">spark</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483442251840'</span><span class="o">></span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Select">sqlglot.expressions.Select</a></span>,</span><span class="param"> <span class="n">branch_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">last_op</span><span class="p">:</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">dataframe</span><span class="o">.</span><span class="n">sql</span><span class="o">.</span><span class="n">operations</span><span class="o">.</span><span class="n">Operation</span> <span class="o">=</span> <span class="o"><</span><span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="o">></span>,</span><span class="param"> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">output_expression_container</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483442487456'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span>)</span> + <span class="name">DataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">spark</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512217589712'</span><span class="o">></span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Select">sqlglot.expressions.Select</a></span>,</span><span class="param"> <span class="n">branch_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">last_op</span><span class="p">:</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">dataframe</span><span class="o">.</span><span class="n">sql</span><span class="o">.</span><span class="n">operations</span><span class="o">.</span><span class="n">Operation</span> <span class="o">=</span> <span class="o"><</span><span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="o">></span>,</span><span class="param"> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">output_expression_container</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512217372640'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span>)</span> <label class="view-source-button" for="DataFrame.__init__-view-source"><span>View Source</span></label> </div> <a class="headerlink" href="#DataFrame.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.__init__-47"><a href="#DataFrame.__init__-47"><span class="linenos">47</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="DataFrame.__init__-48"><a href="#DataFrame.__init__-48"><span class="linenos">48</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame.__init__-49"><a href="#DataFrame.__init__-49"><span class="linenos">49</span></a> <span class="n">spark</span><span class="p">:</span> <span class="n">SparkSession</span><span class="p">,</span> -</span><span id="DataFrame.__init__-50"><a href="#DataFrame.__init__-50"><span class="linenos">50</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> -</span><span id="DataFrame.__init__-51"><a href="#DataFrame.__init__-51"><span class="linenos">51</span></a> <span class="n">branch_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.__init__-52"><a href="#DataFrame.__init__-52"><span class="linenos">52</span></a> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.__init__-53"><a href="#DataFrame.__init__-53"><span class="linenos">53</span></a> <span class="n">last_op</span><span class="p">:</span> <span class="n">Operation</span> <span class="o">=</span> <span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">,</span> -</span><span id="DataFrame.__init__-54"><a href="#DataFrame.__init__-54"><span class="linenos">54</span></a> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.__init__-55"><a href="#DataFrame.__init__-55"><span class="linenos">55</span></a> <span class="n">output_expression_container</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">OutputExpressionContainer</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.__init__-56"><a href="#DataFrame.__init__-56"><span class="linenos">56</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="DataFrame.__init__-57"><a href="#DataFrame.__init__-57"><span class="linenos">57</span></a> <span class="p">):</span> -</span><span id="DataFrame.__init__-58"><a href="#DataFrame.__init__-58"><span class="linenos">58</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span> <span class="o">=</span> <span class="n">spark</span> -</span><span id="DataFrame.__init__-59"><a href="#DataFrame.__init__-59"><span class="linenos">59</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="DataFrame.__init__-60"><a href="#DataFrame.__init__-60"><span class="linenos">60</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">branch_id</span> <span class="o">=</span> <span class="n">branch_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_branch_id</span> -</span><span id="DataFrame.__init__-61"><a href="#DataFrame.__init__-61"><span class="linenos">61</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span> <span class="o">=</span> <span class="n">sequence_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_sequence_id</span> -</span><span id="DataFrame.__init__-62"><a href="#DataFrame.__init__-62"><span class="linenos">62</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">last_op</span> <span class="o">=</span> <span class="n">last_op</span> -</span><span id="DataFrame.__init__-63"><a href="#DataFrame.__init__-63"><span class="linenos">63</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span> <span class="o">=</span> <span class="n">pending_hints</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="DataFrame.__init__-64"><a href="#DataFrame.__init__-64"><span class="linenos">64</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">output_expression_container</span> <span class="o">=</span> <span class="n">output_expression_container</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">()</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.__init__-46"><a href="#DataFrame.__init__-46"><span class="linenos">46</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="DataFrame.__init__-47"><a href="#DataFrame.__init__-47"><span class="linenos">47</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame.__init__-48"><a href="#DataFrame.__init__-48"><span class="linenos">48</span></a> <span class="n">spark</span><span class="p">:</span> <span class="n">SparkSession</span><span class="p">,</span> +</span><span id="DataFrame.__init__-49"><a href="#DataFrame.__init__-49"><span class="linenos">49</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> +</span><span id="DataFrame.__init__-50"><a href="#DataFrame.__init__-50"><span class="linenos">50</span></a> <span class="n">branch_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.__init__-51"><a href="#DataFrame.__init__-51"><span class="linenos">51</span></a> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.__init__-52"><a href="#DataFrame.__init__-52"><span class="linenos">52</span></a> <span class="n">last_op</span><span class="p">:</span> <span class="n">Operation</span> <span class="o">=</span> <span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">,</span> +</span><span id="DataFrame.__init__-53"><a href="#DataFrame.__init__-53"><span class="linenos">53</span></a> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.__init__-54"><a href="#DataFrame.__init__-54"><span class="linenos">54</span></a> <span class="n">output_expression_container</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">OutputExpressionContainer</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.__init__-55"><a href="#DataFrame.__init__-55"><span class="linenos">55</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="DataFrame.__init__-56"><a href="#DataFrame.__init__-56"><span class="linenos">56</span></a> <span class="p">):</span> +</span><span id="DataFrame.__init__-57"><a href="#DataFrame.__init__-57"><span class="linenos">57</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span> <span class="o">=</span> <span class="n">spark</span> +</span><span id="DataFrame.__init__-58"><a href="#DataFrame.__init__-58"><span class="linenos">58</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="DataFrame.__init__-59"><a href="#DataFrame.__init__-59"><span class="linenos">59</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">branch_id</span> <span class="o">=</span> <span class="n">branch_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_branch_id</span> +</span><span id="DataFrame.__init__-60"><a href="#DataFrame.__init__-60"><span class="linenos">60</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span> <span class="o">=</span> <span class="n">sequence_id</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_sequence_id</span> +</span><span id="DataFrame.__init__-61"><a href="#DataFrame.__init__-61"><span class="linenos">61</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">last_op</span> <span class="o">=</span> <span class="n">last_op</span> +</span><span id="DataFrame.__init__-62"><a href="#DataFrame.__init__-62"><span class="linenos">62</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pending_hints</span> <span class="o">=</span> <span class="n">pending_hints</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="DataFrame.__init__-63"><a href="#DataFrame.__init__-63"><span class="linenos">63</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">output_expression_container</span> <span class="o">=</span> <span class="n">output_expression_container</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">()</span> </span></pre></div> @@ -1541,61 +1517,61 @@ </div> <a class="headerlink" href="#DataFrame.sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.sql-296"><a href="#DataFrame.sql-296"><span class="linenos">296</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="s2">"spark"</span><span class="p">,</span> <span class="n">optimize</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></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="DataFrame.sql-297"><a href="#DataFrame.sql-297"><span class="linenos">297</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resolve_pending_hints</span><span class="p">()</span> -</span><span id="DataFrame.sql-298"><a href="#DataFrame.sql-298"><span class="linenos">298</span></a> <span class="n">select_expressions</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_get_select_expressions</span><span class="p">()</span> -</span><span id="DataFrame.sql-299"><a href="#DataFrame.sql-299"><span class="linenos">299</span></a> <span class="n">output_expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">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">Select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="DataFrame.sql-300"><a href="#DataFrame.sql-300"><span class="linenos">300</span></a> <span class="n">replacement_mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="DataFrame.sql-301"><a href="#DataFrame.sql-301"><span class="linenos">301</span></a> <span class="k">for</span> <span class="n">expression_type</span><span class="p">,</span> <span class="n">select_expression</span> <span class="ow">in</span> <span class="n">select_expressions</span><span class="p">:</span> -</span><span id="DataFrame.sql-302"><a href="#DataFrame.sql-302"><span class="linenos">302</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">replace_id_value</span><span class="p">,</span> <span class="n">replacement_mapping</span><span class="p">)</span> -</span><span id="DataFrame.sql-303"><a href="#DataFrame.sql-303"><span class="linenos">303</span></a> <span class="k">if</span> <span class="n">optimize</span><span class="p">:</span> -</span><span id="DataFrame.sql-304"><a href="#DataFrame.sql-304"><span class="linenos">304</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">optimize_func</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> -</span><span id="DataFrame.sql-305"><a href="#DataFrame.sql-305"><span class="linenos">305</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_replace_cte_names_with_hashes</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> -</span><span id="DataFrame.sql-306"><a href="#DataFrame.sql-306"><span class="linenos">306</span></a> <span class="n">expression</span><span class="p">:</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">Select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">]</span> -</span><span id="DataFrame.sql-307"><a href="#DataFrame.sql-307"><span class="linenos">307</span></a> <span class="k">if</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">:</span> -</span><span id="DataFrame.sql-308"><a href="#DataFrame.sql-308"><span class="linenos">308</span></a> <span class="n">cache_table_name</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_create_hash_from_expression</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> -</span><span id="DataFrame.sql-309"><a href="#DataFrame.sql-309"><span class="linenos">309</span></a> <span class="n">cache_table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_table</span><span class="p">(</span><span class="n">cache_table_name</span><span class="p">)</span> -</span><span id="DataFrame.sql-310"><a href="#DataFrame.sql-310"><span class="linenos">310</span></a> <span class="n">original_alias_name</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"cte_alias_name"</span><span class="p">]</span> -</span><span id="DataFrame.sql-311"><a href="#DataFrame.sql-311"><span class="linenos">311</span></a> -</span><span id="DataFrame.sql-312"><a href="#DataFrame.sql-312"><span class="linenos">312</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">original_alias_name</span><span class="p">)]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span> <span class="c1"># type: ignore</span> -</span><span id="DataFrame.sql-313"><a href="#DataFrame.sql-313"><span class="linenos">313</span></a> <span class="n">cache_table_name</span> -</span><span id="DataFrame.sql-314"><a href="#DataFrame.sql-314"><span class="linenos">314</span></a> <span class="p">)</span> -</span><span id="DataFrame.sql-315"><a href="#DataFrame.sql-315"><span class="linenos">315</span></a> <span class="n">sqlglot</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">add_table</span><span class="p">(</span> -</span><span id="DataFrame.sql-316"><a href="#DataFrame.sql-316"><span class="linenos">316</span></a> <span class="n">cache_table_name</span><span class="p">,</span> -</span><span id="DataFrame.sql-317"><a href="#DataFrame.sql-317"><span class="linenos">317</span></a> <span class="p">{</span> -</span><span id="DataFrame.sql-318"><a href="#DataFrame.sql-318"><span class="linenos">318</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"spark"</span><span class="p">)</span> -</span><span id="DataFrame.sql-319"><a href="#DataFrame.sql-319"><span class="linenos">319</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="DataFrame.sql-320"><a href="#DataFrame.sql-320"><span class="linenos">320</span></a> <span class="p">},</span> -</span><span id="DataFrame.sql-321"><a href="#DataFrame.sql-321"><span class="linenos">321</span></a> <span class="p">)</span> -</span><span id="DataFrame.sql-322"><a href="#DataFrame.sql-322"><span class="linenos">322</span></a> <span class="n">cache_storage_level</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"cache_storage_level"</span><span class="p">]</span> -</span><span id="DataFrame.sql-323"><a href="#DataFrame.sql-323"><span class="linenos">323</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.sql-324"><a href="#DataFrame.sql-324"><span class="linenos">324</span></a> <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">"storageLevel"</span><span class="p">),</span> -</span><span id="DataFrame.sql-325"><a href="#DataFrame.sql-325"><span class="linenos">325</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">cache_storage_level</span><span class="p">),</span> -</span><span id="DataFrame.sql-326"><a href="#DataFrame.sql-326"><span class="linenos">326</span></a> <span class="p">]</span> -</span><span id="DataFrame.sql-327"><a href="#DataFrame.sql-327"><span class="linenos">327</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">(</span> -</span><span id="DataFrame.sql-328"><a href="#DataFrame.sql-328"><span class="linenos">328</span></a> <span class="n">this</span><span class="o">=</span><span class="n">cache_table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select_expression</span><span class="p">,</span> <span class="n">lazy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span> -</span><span id="DataFrame.sql-329"><a href="#DataFrame.sql-329"><span class="linenos">329</span></a> <span class="p">)</span> -</span><span id="DataFrame.sql-330"><a href="#DataFrame.sql-330"><span class="linenos">330</span></a> <span class="c1"># We will drop the "view" if it exists before running the cache table</span> -</span><span id="DataFrame.sql-331"><a href="#DataFrame.sql-331"><span class="linenos">331</span></a> <span class="n">output_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">cache_table</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="s2">"VIEW"</span><span class="p">))</span> -</span><span id="DataFrame.sql-332"><a href="#DataFrame.sql-332"><span class="linenos">332</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> -</span><span id="DataFrame.sql-333"><a href="#DataFrame.sql-333"><span class="linenos">333</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">output_expression_container</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.sql-334"><a href="#DataFrame.sql-334"><span class="linenos">334</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">select_expression</span><span class="p">)</span> -</span><span id="DataFrame.sql-335"><a href="#DataFrame.sql-335"><span class="linenos">335</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">:</span> -</span><span id="DataFrame.sql-336"><a href="#DataFrame.sql-336"><span class="linenos">336</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">output_expression_container</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.sql-337"><a href="#DataFrame.sql-337"><span class="linenos">337</span></a> <span class="n">select_without_ctes</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.sql-338"><a href="#DataFrame.sql-338"><span class="linenos">338</span></a> <span class="n">select_without_ctes</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="DataFrame.sql-339"><a href="#DataFrame.sql-339"><span class="linenos">339</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">select_without_ctes</span><span class="p">)</span> -</span><span id="DataFrame.sql-340"><a href="#DataFrame.sql-340"><span class="linenos">340</span></a> <span class="k">if</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> -</span><span id="DataFrame.sql-341"><a href="#DataFrame.sql-341"><span class="linenos">341</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">select_expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">))</span> -</span><span id="DataFrame.sql-342"><a href="#DataFrame.sql-342"><span class="linenos">342</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> -</span><span id="DataFrame.sql-343"><a href="#DataFrame.sql-343"><span class="linenos">343</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">select_expression</span> -</span><span id="DataFrame.sql-344"><a href="#DataFrame.sql-344"><span class="linenos">344</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.sql-345"><a href="#DataFrame.sql-345"><span class="linenos">345</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid expression type: </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="DataFrame.sql-346"><a href="#DataFrame.sql-346"><span class="linenos">346</span></a> <span class="n">output_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame.sql-347"><a href="#DataFrame.sql-347"><span class="linenos">347</span></a> -</span><span id="DataFrame.sql-348"><a href="#DataFrame.sql-348"><span class="linenos">348</span></a> <span class="k">return</span> <span class="p">[</span> -</span><span id="DataFrame.sql-349"><a href="#DataFrame.sql-349"><span class="linenos">349</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">output_expressions</span> -</span><span id="DataFrame.sql-350"><a href="#DataFrame.sql-350"><span class="linenos">350</span></a> <span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.sql-295"><a href="#DataFrame.sql-295"><span class="linenos">295</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="s2">"spark"</span><span class="p">,</span> <span class="n">optimize</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></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="DataFrame.sql-296"><a href="#DataFrame.sql-296"><span class="linenos">296</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resolve_pending_hints</span><span class="p">()</span> +</span><span id="DataFrame.sql-297"><a href="#DataFrame.sql-297"><span class="linenos">297</span></a> <span class="n">select_expressions</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_get_select_expressions</span><span class="p">()</span> +</span><span id="DataFrame.sql-298"><a href="#DataFrame.sql-298"><span class="linenos">298</span></a> <span class="n">output_expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">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">Select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="DataFrame.sql-299"><a href="#DataFrame.sql-299"><span class="linenos">299</span></a> <span class="n">replacement_mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="DataFrame.sql-300"><a href="#DataFrame.sql-300"><span class="linenos">300</span></a> <span class="k">for</span> <span class="n">expression_type</span><span class="p">,</span> <span class="n">select_expression</span> <span class="ow">in</span> <span class="n">select_expressions</span><span class="p">:</span> +</span><span id="DataFrame.sql-301"><a href="#DataFrame.sql-301"><span class="linenos">301</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">replace_id_value</span><span class="p">,</span> <span class="n">replacement_mapping</span><span class="p">)</span> +</span><span id="DataFrame.sql-302"><a href="#DataFrame.sql-302"><span class="linenos">302</span></a> <span class="k">if</span> <span class="n">optimize</span><span class="p">:</span> +</span><span id="DataFrame.sql-303"><a href="#DataFrame.sql-303"><span class="linenos">303</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">optimize_func</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> +</span><span id="DataFrame.sql-304"><a href="#DataFrame.sql-304"><span class="linenos">304</span></a> <span class="n">select_expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_replace_cte_names_with_hashes</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> +</span><span id="DataFrame.sql-305"><a href="#DataFrame.sql-305"><span class="linenos">305</span></a> <span class="n">expression</span><span class="p">:</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">Select</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">]</span> +</span><span id="DataFrame.sql-306"><a href="#DataFrame.sql-306"><span class="linenos">306</span></a> <span class="k">if</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">:</span> +</span><span id="DataFrame.sql-307"><a href="#DataFrame.sql-307"><span class="linenos">307</span></a> <span class="n">cache_table_name</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">_create_hash_from_expression</span><span class="p">(</span><span class="n">select_expression</span><span class="p">)</span> +</span><span id="DataFrame.sql-308"><a href="#DataFrame.sql-308"><span class="linenos">308</span></a> <span class="n">cache_table</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_table</span><span class="p">(</span><span class="n">cache_table_name</span><span class="p">)</span> +</span><span id="DataFrame.sql-309"><a href="#DataFrame.sql-309"><span class="linenos">309</span></a> <span class="n">original_alias_name</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"cte_alias_name"</span><span class="p">]</span> +</span><span id="DataFrame.sql-310"><a href="#DataFrame.sql-310"><span class="linenos">310</span></a> +</span><span id="DataFrame.sql-311"><a href="#DataFrame.sql-311"><span class="linenos">311</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">original_alias_name</span><span class="p">)]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span> <span class="c1"># type: ignore</span> +</span><span id="DataFrame.sql-312"><a href="#DataFrame.sql-312"><span class="linenos">312</span></a> <span class="n">cache_table_name</span> +</span><span id="DataFrame.sql-313"><a href="#DataFrame.sql-313"><span class="linenos">313</span></a> <span class="p">)</span> +</span><span id="DataFrame.sql-314"><a href="#DataFrame.sql-314"><span class="linenos">314</span></a> <span class="n">sqlglot</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">add_table</span><span class="p">(</span> +</span><span id="DataFrame.sql-315"><a href="#DataFrame.sql-315"><span class="linenos">315</span></a> <span class="n">cache_table_name</span><span class="p">,</span> +</span><span id="DataFrame.sql-316"><a href="#DataFrame.sql-316"><span class="linenos">316</span></a> <span class="p">{</span> +</span><span id="DataFrame.sql-317"><a href="#DataFrame.sql-317"><span class="linenos">317</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="s2">"spark"</span><span class="p">)</span> +</span><span id="DataFrame.sql-318"><a href="#DataFrame.sql-318"><span class="linenos">318</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="DataFrame.sql-319"><a href="#DataFrame.sql-319"><span class="linenos">319</span></a> <span class="p">},</span> +</span><span id="DataFrame.sql-320"><a href="#DataFrame.sql-320"><span class="linenos">320</span></a> <span class="p">)</span> +</span><span id="DataFrame.sql-321"><a href="#DataFrame.sql-321"><span class="linenos">321</span></a> <span class="n">cache_storage_level</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"cache_storage_level"</span><span class="p">]</span> +</span><span id="DataFrame.sql-322"><a href="#DataFrame.sql-322"><span class="linenos">322</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.sql-323"><a href="#DataFrame.sql-323"><span class="linenos">323</span></a> <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">"storageLevel"</span><span class="p">),</span> +</span><span id="DataFrame.sql-324"><a href="#DataFrame.sql-324"><span class="linenos">324</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">cache_storage_level</span><span class="p">),</span> +</span><span id="DataFrame.sql-325"><a href="#DataFrame.sql-325"><span class="linenos">325</span></a> <span class="p">]</span> +</span><span id="DataFrame.sql-326"><a href="#DataFrame.sql-326"><span class="linenos">326</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">(</span> +</span><span id="DataFrame.sql-327"><a href="#DataFrame.sql-327"><span class="linenos">327</span></a> <span class="n">this</span><span class="o">=</span><span class="n">cache_table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select_expression</span><span class="p">,</span> <span class="n">lazy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span> +</span><span id="DataFrame.sql-328"><a href="#DataFrame.sql-328"><span class="linenos">328</span></a> <span class="p">)</span> +</span><span id="DataFrame.sql-329"><a href="#DataFrame.sql-329"><span class="linenos">329</span></a> <span class="c1"># We will drop the "view" if it exists before running the cache table</span> +</span><span id="DataFrame.sql-330"><a href="#DataFrame.sql-330"><span class="linenos">330</span></a> <span class="n">output_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">cache_table</span><span class="p">,</span> <span class="n">exists</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="s2">"VIEW"</span><span class="p">))</span> +</span><span id="DataFrame.sql-331"><a href="#DataFrame.sql-331"><span class="linenos">331</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> +</span><span id="DataFrame.sql-332"><a href="#DataFrame.sql-332"><span class="linenos">332</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">output_expression_container</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.sql-333"><a href="#DataFrame.sql-333"><span class="linenos">333</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">select_expression</span><span class="p">)</span> +</span><span id="DataFrame.sql-334"><a href="#DataFrame.sql-334"><span class="linenos">334</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">:</span> +</span><span id="DataFrame.sql-335"><a href="#DataFrame.sql-335"><span class="linenos">335</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">output_expression_container</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.sql-336"><a href="#DataFrame.sql-336"><span class="linenos">336</span></a> <span class="n">select_without_ctes</span> <span class="o">=</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.sql-337"><a href="#DataFrame.sql-337"><span class="linenos">337</span></a> <span class="n">select_without_ctes</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="DataFrame.sql-338"><a href="#DataFrame.sql-338"><span class="linenos">338</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">select_without_ctes</span><span class="p">)</span> +</span><span id="DataFrame.sql-339"><a href="#DataFrame.sql-339"><span class="linenos">339</span></a> <span class="k">if</span> <span class="n">select_expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">:</span> +</span><span id="DataFrame.sql-340"><a href="#DataFrame.sql-340"><span class="linenos">340</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">select_expression</span><span class="o">.</span><span class="n">ctes</span><span class="p">))</span> +</span><span id="DataFrame.sql-341"><a href="#DataFrame.sql-341"><span class="linenos">341</span></a> <span class="k">elif</span> <span class="n">expression_type</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">:</span> +</span><span id="DataFrame.sql-342"><a href="#DataFrame.sql-342"><span class="linenos">342</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">select_expression</span> +</span><span id="DataFrame.sql-343"><a href="#DataFrame.sql-343"><span class="linenos">343</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.sql-344"><a href="#DataFrame.sql-344"><span class="linenos">344</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid expression type: </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="DataFrame.sql-345"><a href="#DataFrame.sql-345"><span class="linenos">345</span></a> <span class="n">output_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame.sql-346"><a href="#DataFrame.sql-346"><span class="linenos">346</span></a> +</span><span id="DataFrame.sql-347"><a href="#DataFrame.sql-347"><span class="linenos">347</span></a> <span class="k">return</span> <span class="p">[</span> +</span><span id="DataFrame.sql-348"><a href="#DataFrame.sql-348"><span class="linenos">348</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">output_expressions</span> +</span><span id="DataFrame.sql-349"><a href="#DataFrame.sql-349"><span class="linenos">349</span></a> <span class="p">]</span> </span></pre></div> @@ -1613,8 +1589,8 @@ </div> <a class="headerlink" href="#DataFrame.copy"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.copy-352"><a href="#DataFrame.copy-352"><span class="linenos">352</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.copy-353"><a href="#DataFrame.copy-353"><span class="linenos">353</span></a> <span class="k">return</span> <span class="n">DataFrame</span><span class="p">(</span><span class="o">**</span><span class="n">object_to_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.copy-351"><a href="#DataFrame.copy-351"><span class="linenos">351</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.copy-352"><a href="#DataFrame.copy-352"><span class="linenos">352</span></a> <span class="k">return</span> <span class="n">DataFrame</span><span class="p">(</span><span class="o">**</span><span class="n">object_to_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> </span></pre></div> @@ -1633,34 +1609,34 @@ </div> <a class="headerlink" href="#DataFrame.select"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.select-355"><a href="#DataFrame.select-355"><span class="linenos">355</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame.select-356"><a href="#DataFrame.select-356"><span class="linenos">356</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.select-357"><a href="#DataFrame.select-357"><span class="linenos">357</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame.select-358"><a href="#DataFrame.select-358"><span class="linenos">358</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"append"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"append"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="DataFrame.select-359"><a href="#DataFrame.select-359"><span class="linenos">359</span></a> <span class="k">if</span> <span class="bp">self</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">"joins"</span><span class="p">):</span> -</span><span id="DataFrame.select-360"><a href="#DataFrame.select-360"><span class="linenos">360</span></a> <span class="n">ambiguous_cols</span> <span class="o">=</span> <span class="p">[</span><span class="n">col</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">cols</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">col</span><span class="o">.</span><span class="n">column_expression</span><span class="o">.</span><span class="n">table</span><span class="p">]</span> -</span><span id="DataFrame.select-361"><a href="#DataFrame.select-361"><span class="linenos">361</span></a> <span class="k">if</span> <span class="n">ambiguous_cols</span><span class="p">:</span> -</span><span id="DataFrame.select-362"><a href="#DataFrame.select-362"><span class="linenos">362</span></a> <span class="n">join_table_identifiers</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.select-363"><a href="#DataFrame.select-363"><span class="linenos">363</span></a> <span class="n">x</span><span class="o">.</span><span class="n">this</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">get_tables_from_expression_with_join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame.select-364"><a href="#DataFrame.select-364"><span class="linenos">364</span></a> <span class="p">]</span> -</span><span id="DataFrame.select-365"><a href="#DataFrame.select-365"><span class="linenos">365</span></a> <span class="n">cte_names_in_join</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">this</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">join_table_identifiers</span><span class="p">]</span> -</span><span id="DataFrame.select-366"><a href="#DataFrame.select-366"><span class="linenos">366</span></a> <span class="k">for</span> <span class="n">ambiguous_col</span> <span class="ow">in</span> <span class="n">ambiguous_cols</span><span class="p">:</span> -</span><span id="DataFrame.select-367"><a href="#DataFrame.select-367"><span class="linenos">367</span></a> <span class="n">ctes_with_column</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.select-368"><a href="#DataFrame.select-368"><span class="linenos">368</span></a> <span class="n">cte</span> -</span><span id="DataFrame.select-369"><a href="#DataFrame.select-369"><span class="linenos">369</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> -</span><span id="DataFrame.select-370"><a href="#DataFrame.select-370"><span class="linenos">370</span></a> <span class="k">if</span> <span class="n">cte</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">cte_names_in_join</span> -</span><span id="DataFrame.select-371"><a href="#DataFrame.select-371"><span class="linenos">371</span></a> <span class="ow">and</span> <span class="n">ambiguous_col</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">cte</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">named_selects</span> -</span><span id="DataFrame.select-372"><a href="#DataFrame.select-372"><span class="linenos">372</span></a> <span class="p">]</span> -</span><span id="DataFrame.select-373"><a href="#DataFrame.select-373"><span class="linenos">373</span></a> <span class="c1"># If the select column does not specify a table and there is a join</span> -</span><span id="DataFrame.select-374"><a href="#DataFrame.select-374"><span class="linenos">374</span></a> <span class="c1"># then we assume they are referring to the left table</span> -</span><span id="DataFrame.select-375"><a href="#DataFrame.select-375"><span class="linenos">375</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ctes_with_column</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="DataFrame.select-376"><a href="#DataFrame.select-376"><span class="linenos">376</span></a> <span class="n">table_identifier</span> <span class="o">=</span> <span class="bp">self</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">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> -</span><span id="DataFrame.select-377"><a href="#DataFrame.select-377"><span class="linenos">377</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.select-378"><a href="#DataFrame.select-378"><span class="linenos">378</span></a> <span class="n">table_identifier</span> <span class="o">=</span> <span class="n">ctes_with_column</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> -</span><span id="DataFrame.select-379"><a href="#DataFrame.select-379"><span class="linenos">379</span></a> <span class="n">ambiguous_col</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">table_identifier</span><span class="p">)</span> -</span><span id="DataFrame.select-380"><a href="#DataFrame.select-380"><span class="linenos">380</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">expression</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">cols</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="DataFrame.select-381"><a href="#DataFrame.select-381"><span class="linenos">381</span></a> <span class="n">qualify_columns</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">schema</span><span class="p">)</span> -</span><span id="DataFrame.select-382"><a href="#DataFrame.select-382"><span class="linenos">382</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</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">kwargs</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.select-354"><a href="#DataFrame.select-354"><span class="linenos">354</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame.select-355"><a href="#DataFrame.select-355"><span class="linenos">355</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.select-356"><a href="#DataFrame.select-356"><span class="linenos">356</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame.select-357"><a href="#DataFrame.select-357"><span class="linenos">357</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"append"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"append"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> +</span><span id="DataFrame.select-358"><a href="#DataFrame.select-358"><span class="linenos">358</span></a> <span class="k">if</span> <span class="bp">self</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">"joins"</span><span class="p">):</span> +</span><span id="DataFrame.select-359"><a href="#DataFrame.select-359"><span class="linenos">359</span></a> <span class="n">ambiguous_cols</span> <span class="o">=</span> <span class="p">[</span><span class="n">col</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">cols</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">col</span><span class="o">.</span><span class="n">column_expression</span><span class="o">.</span><span class="n">table</span><span class="p">]</span> +</span><span id="DataFrame.select-360"><a href="#DataFrame.select-360"><span class="linenos">360</span></a> <span class="k">if</span> <span class="n">ambiguous_cols</span><span class="p">:</span> +</span><span id="DataFrame.select-361"><a href="#DataFrame.select-361"><span class="linenos">361</span></a> <span class="n">join_table_identifiers</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.select-362"><a href="#DataFrame.select-362"><span class="linenos">362</span></a> <span class="n">x</span><span class="o">.</span><span class="n">this</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">get_tables_from_expression_with_join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame.select-363"><a href="#DataFrame.select-363"><span class="linenos">363</span></a> <span class="p">]</span> +</span><span id="DataFrame.select-364"><a href="#DataFrame.select-364"><span class="linenos">364</span></a> <span class="n">cte_names_in_join</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">this</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">join_table_identifiers</span><span class="p">]</span> +</span><span id="DataFrame.select-365"><a href="#DataFrame.select-365"><span class="linenos">365</span></a> <span class="k">for</span> <span class="n">ambiguous_col</span> <span class="ow">in</span> <span class="n">ambiguous_cols</span><span class="p">:</span> +</span><span id="DataFrame.select-366"><a href="#DataFrame.select-366"><span class="linenos">366</span></a> <span class="n">ctes_with_column</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.select-367"><a href="#DataFrame.select-367"><span class="linenos">367</span></a> <span class="n">cte</span> +</span><span id="DataFrame.select-368"><a href="#DataFrame.select-368"><span class="linenos">368</span></a> <span class="k">for</span> <span class="n">cte</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> +</span><span id="DataFrame.select-369"><a href="#DataFrame.select-369"><span class="linenos">369</span></a> <span class="k">if</span> <span class="n">cte</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">cte_names_in_join</span> +</span><span id="DataFrame.select-370"><a href="#DataFrame.select-370"><span class="linenos">370</span></a> <span class="ow">and</span> <span class="n">ambiguous_col</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">in</span> <span class="n">cte</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">named_selects</span> +</span><span id="DataFrame.select-371"><a href="#DataFrame.select-371"><span class="linenos">371</span></a> <span class="p">]</span> +</span><span id="DataFrame.select-372"><a href="#DataFrame.select-372"><span class="linenos">372</span></a> <span class="c1"># If the select column does not specify a table and there is a join</span> +</span><span id="DataFrame.select-373"><a href="#DataFrame.select-373"><span class="linenos">373</span></a> <span class="c1"># then we assume they are referring to the left table</span> +</span><span id="DataFrame.select-374"><a href="#DataFrame.select-374"><span class="linenos">374</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">ctes_with_column</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="DataFrame.select-375"><a href="#DataFrame.select-375"><span class="linenos">375</span></a> <span class="n">table_identifier</span> <span class="o">=</span> <span class="bp">self</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">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> +</span><span id="DataFrame.select-376"><a href="#DataFrame.select-376"><span class="linenos">376</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.select-377"><a href="#DataFrame.select-377"><span class="linenos">377</span></a> <span class="n">table_identifier</span> <span class="o">=</span> <span class="n">ctes_with_column</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">this</span> +</span><span id="DataFrame.select-378"><a href="#DataFrame.select-378"><span class="linenos">378</span></a> <span class="n">ambiguous_col</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">table_identifier</span><span class="p">)</span> +</span><span id="DataFrame.select-379"><a href="#DataFrame.select-379"><span class="linenos">379</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span> +</span><span id="DataFrame.select-380"><a href="#DataFrame.select-380"><span class="linenos">380</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">expression</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">cols</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="DataFrame.select-381"><a href="#DataFrame.select-381"><span class="linenos">381</span></a> <span class="p">)</span> </span></pre></div> @@ -1679,16 +1655,16 @@ </div> <a class="headerlink" href="#DataFrame.alias"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.alias-384"><a href="#DataFrame.alias-384"><span class="linenos">384</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame.alias-385"><a href="#DataFrame.alias-385"><span class="linenos">385</span></a> <span class="k">def</span> <span class="nf">alias</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.alias-386"><a href="#DataFrame.alias-386"><span class="linenos">386</span></a> <span class="n">new_sequence_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_sequence_id</span> -</span><span id="DataFrame.alias-387"><a href="#DataFrame.alias-387"><span class="linenos">387</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.alias-388"><a href="#DataFrame.alias-388"><span class="linenos">388</span></a> <span class="k">for</span> <span class="n">join_hint</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">pending_join_hints</span><span class="p">:</span> -</span><span id="DataFrame.alias-389"><a href="#DataFrame.alias-389"><span class="linenos">389</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">join_hint</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="DataFrame.alias-390"><a href="#DataFrame.alias-390"><span class="linenos">390</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">:</span> -</span><span id="DataFrame.alias-391"><a href="#DataFrame.alias-391"><span class="linenos">391</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_col</span><span class="p">(</span><span class="n">new_sequence_id</span><span class="p">)</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame.alias-392"><a href="#DataFrame.alias-392"><span class="linenos">392</span></a> <span class="n">df</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_add_alias_to_mapping</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">new_sequence_id</span><span class="p">)</span> -</span><span id="DataFrame.alias-393"><a href="#DataFrame.alias-393"><span class="linenos">393</span></a> <span class="k">return</span> <span class="n">df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">(</span><span class="n">sequence_id</span><span class="o">=</span><span class="n">new_sequence_id</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.alias-383"><a href="#DataFrame.alias-383"><span class="linenos">383</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame.alias-384"><a href="#DataFrame.alias-384"><span class="linenos">384</span></a> <span class="k">def</span> <span class="nf">alias</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.alias-385"><a href="#DataFrame.alias-385"><span class="linenos">385</span></a> <span class="n">new_sequence_id</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_random_sequence_id</span> +</span><span id="DataFrame.alias-386"><a href="#DataFrame.alias-386"><span class="linenos">386</span></a> <span class="n">df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.alias-387"><a href="#DataFrame.alias-387"><span class="linenos">387</span></a> <span class="k">for</span> <span class="n">join_hint</span> <span class="ow">in</span> <span class="n">df</span><span class="o">.</span><span class="n">pending_join_hints</span><span class="p">:</span> +</span><span id="DataFrame.alias-388"><a href="#DataFrame.alias-388"><span class="linenos">388</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">join_hint</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="DataFrame.alias-389"><a href="#DataFrame.alias-389"><span class="linenos">389</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">:</span> +</span><span id="DataFrame.alias-390"><a href="#DataFrame.alias-390"><span class="linenos">390</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_col</span><span class="p">(</span><span class="n">new_sequence_id</span><span class="p">)</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame.alias-391"><a href="#DataFrame.alias-391"><span class="linenos">391</span></a> <span class="n">df</span><span class="o">.</span><span class="n">spark</span><span class="o">.</span><span class="n">_add_alias_to_mapping</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">new_sequence_id</span><span class="p">)</span> +</span><span id="DataFrame.alias-392"><a href="#DataFrame.alias-392"><span class="linenos">392</span></a> <span class="k">return</span> <span class="n">df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">(</span><span class="n">sequence_id</span><span class="o">=</span><span class="n">new_sequence_id</span><span class="p">)</span> </span></pre></div> @@ -1707,10 +1683,10 @@ </div> <a class="headerlink" href="#DataFrame.where"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.where-395"><a href="#DataFrame.where-395"><span class="linenos">395</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> -</span><span id="DataFrame.where-396"><a href="#DataFrame.where-396"><span class="linenos">396</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">Column</span><span class="p">,</span> <span class="nb">bool</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.where-397"><a href="#DataFrame.where-397"><span class="linenos">397</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> -</span><span id="DataFrame.where-398"><a href="#DataFrame.where-398"><span class="linenos">398</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.where-394"><a href="#DataFrame.where-394"><span class="linenos">394</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> +</span><span id="DataFrame.where-395"><a href="#DataFrame.where-395"><span class="linenos">395</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">Column</span><span class="p">,</span> <span class="nb">bool</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.where-396"><a href="#DataFrame.where-396"><span class="linenos">396</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> +</span><span id="DataFrame.where-397"><a href="#DataFrame.where-397"><span class="linenos">397</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">))</span> </span></pre></div> @@ -1729,10 +1705,10 @@ </div> <a class="headerlink" href="#DataFrame.filter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.filter-395"><a href="#DataFrame.filter-395"><span class="linenos">395</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> -</span><span id="DataFrame.filter-396"><a href="#DataFrame.filter-396"><span class="linenos">396</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">Column</span><span class="p">,</span> <span class="nb">bool</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.filter-397"><a href="#DataFrame.filter-397"><span class="linenos">397</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> -</span><span id="DataFrame.filter-398"><a href="#DataFrame.filter-398"><span class="linenos">398</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.filter-394"><a href="#DataFrame.filter-394"><span class="linenos">394</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">WHERE</span><span class="p">)</span> +</span><span id="DataFrame.filter-395"><a href="#DataFrame.filter-395"><span class="linenos">395</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">Column</span><span class="p">,</span> <span class="nb">bool</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.filter-396"><a href="#DataFrame.filter-396"><span class="linenos">396</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">column</span><span class="p">)</span> +</span><span id="DataFrame.filter-397"><a href="#DataFrame.filter-397"><span class="linenos">397</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">))</span> </span></pre></div> @@ -1751,10 +1727,10 @@ </div> <a class="headerlink" href="#DataFrame.groupBy"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.groupBy-402"><a href="#DataFrame.groupBy-402"><span class="linenos">402</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">)</span> -</span><span id="DataFrame.groupBy-403"><a href="#DataFrame.groupBy-403"><span class="linenos">403</span></a> <span class="k">def</span> <span class="nf">groupBy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">GroupedData</span><span class="p">:</span> -</span><span id="DataFrame.groupBy-404"><a href="#DataFrame.groupBy-404"><span class="linenos">404</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame.groupBy-405"><a href="#DataFrame.groupBy-405"><span class="linenos">405</span></a> <span class="k">return</span> <span class="n">GroupedData</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">columns</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_op</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.groupBy-401"><a href="#DataFrame.groupBy-401"><span class="linenos">401</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">)</span> +</span><span id="DataFrame.groupBy-402"><a href="#DataFrame.groupBy-402"><span class="linenos">402</span></a> <span class="k">def</span> <span class="nf">groupBy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">GroupedData</span><span class="p">:</span> +</span><span id="DataFrame.groupBy-403"><a href="#DataFrame.groupBy-403"><span class="linenos">403</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame.groupBy-404"><a href="#DataFrame.groupBy-404"><span class="linenos">404</span></a> <span class="k">return</span> <span class="n">GroupedData</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">columns</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">last_op</span><span class="p">)</span> </span></pre></div> @@ -1773,10 +1749,10 @@ </div> <a class="headerlink" href="#DataFrame.agg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.agg-407"><a href="#DataFrame.agg-407"><span class="linenos">407</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame.agg-408"><a href="#DataFrame.agg-408"><span class="linenos">408</span></a> <span class="k">def</span> <span class="nf">agg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">exprs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.agg-409"><a href="#DataFrame.agg-409"><span class="linenos">409</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">exprs</span><span class="p">)</span> -</span><span id="DataFrame.agg-410"><a href="#DataFrame.agg-410"><span class="linenos">410</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupBy</span><span class="p">()</span><span class="o">.</span><span class="n">agg</span><span class="p">(</span><span class="o">*</span><span class="n">cols</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.agg-406"><a href="#DataFrame.agg-406"><span class="linenos">406</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame.agg-407"><a href="#DataFrame.agg-407"><span class="linenos">407</span></a> <span class="k">def</span> <span class="nf">agg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">exprs</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.agg-408"><a href="#DataFrame.agg-408"><span class="linenos">408</span></a> <span class="n">cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">exprs</span><span class="p">)</span> +</span><span id="DataFrame.agg-409"><a href="#DataFrame.agg-409"><span class="linenos">409</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">groupBy</span><span class="p">()</span><span class="o">.</span><span class="n">agg</span><span class="p">(</span><span class="o">*</span><span class="n">cols</span><span class="p">)</span> </span></pre></div> @@ -1795,69 +1771,69 @@ </div> <a class="headerlink" href="#DataFrame.join"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.join-412"><a href="#DataFrame.join-412"><span class="linenos">412</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.join-413"><a href="#DataFrame.join-413"><span class="linenos">413</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> -</span><span id="DataFrame.join-414"><a href="#DataFrame.join-414"><span class="linenos">414</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame.join-415"><a href="#DataFrame.join-415"><span class="linenos">415</span></a> <span class="n">other_df</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> -</span><span id="DataFrame.join-416"><a href="#DataFrame.join-416"><span class="linenos">416</span></a> <span class="n">on</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Column</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]],</span> -</span><span id="DataFrame.join-417"><a href="#DataFrame.join-417"><span class="linenos">417</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"inner"</span><span class="p">,</span> -</span><span id="DataFrame.join-418"><a href="#DataFrame.join-418"><span class="linenos">418</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> -</span><span id="DataFrame.join-419"><a href="#DataFrame.join-419"><span class="linenos">419</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.join-420"><a href="#DataFrame.join-420"><span class="linenos">420</span></a> <span class="n">other_df</span> <span class="o">=</span> <span class="n">other_df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> -</span><span id="DataFrame.join-421"><a href="#DataFrame.join-421"><span class="linenos">421</span></a> <span class="n">pre_join_self_latest_cte_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_cte_name</span> -</span><span id="DataFrame.join-422"><a href="#DataFrame.join-422"><span class="linenos">422</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">on</span><span class="p">)</span> -</span><span id="DataFrame.join-423"><a href="#DataFrame.join-423"><span class="linenos">423</span></a> <span class="n">join_type</span> <span class="o">=</span> <span class="n">how</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"_"</span><span class="p">,</span> <span class="s2">" "</span><span class="p">)</span> -</span><span id="DataFrame.join-424"><a href="#DataFrame.join-424"><span class="linenos">424</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</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">Column</span><span class="p">):</span> -</span><span id="DataFrame.join-425"><a href="#DataFrame.join-425"><span class="linenos">425</span></a> <span class="n">join_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.join-426"><a href="#DataFrame.join-426"><span class="linenos">426</span></a> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span> -</span><span id="DataFrame.join-427"><a href="#DataFrame.join-427"><span class="linenos">427</span></a> <span class="p">]</span> -</span><span id="DataFrame.join-428"><a href="#DataFrame.join-428"><span class="linenos">428</span></a> <span class="n">join_clause</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span> -</span><span id="DataFrame.join-429"><a href="#DataFrame.join-429"><span class="linenos">429</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">&</span> <span class="n">y</span><span class="p">,</span> -</span><span id="DataFrame.join-430"><a href="#DataFrame.join-430"><span class="linenos">430</span></a> <span class="p">[</span> -</span><span id="DataFrame.join-431"><a href="#DataFrame.join-431"><span class="linenos">431</span></a> <span class="n">col</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> -</span><span id="DataFrame.join-432"><a href="#DataFrame.join-432"><span class="linenos">432</span></a> <span class="o">==</span> <span class="n">col</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">)</span> -</span><span id="DataFrame.join-433"><a href="#DataFrame.join-433"><span class="linenos">433</span></a> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">columns</span> -</span><span id="DataFrame.join-434"><a href="#DataFrame.join-434"><span class="linenos">434</span></a> <span class="p">],</span> -</span><span id="DataFrame.join-435"><a href="#DataFrame.join-435"><span class="linenos">435</span></a> <span class="p">)</span> -</span><span id="DataFrame.join-436"><a href="#DataFrame.join-436"><span class="linenos">436</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.join-437"><a href="#DataFrame.join-437"><span class="linenos">437</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="DataFrame.join-438"><a href="#DataFrame.join-438"><span class="linenos">438</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">&</span> <span class="n">y</span><span class="p">,</span> <span class="n">columns</span><span class="p">)]</span> -</span><span id="DataFrame.join-439"><a href="#DataFrame.join-439"><span class="linenos">439</span></a> <span class="n">join_clause</span> <span class="o">=</span> <span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="DataFrame.join-440"><a href="#DataFrame.join-440"><span class="linenos">440</span></a> <span class="n">join_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.join-441"><a href="#DataFrame.join-441"><span class="linenos">441</span></a> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> -</span><span id="DataFrame.join-442"><a href="#DataFrame.join-442"><span class="linenos">442</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> -</span><span id="DataFrame.join-443"><a href="#DataFrame.join-443"><span class="linenos">443</span></a> <span class="k">else</span> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">)</span> -</span><span id="DataFrame.join-444"><a href="#DataFrame.join-444"><span class="linenos">444</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">join_clause</span><span class="o">.</span><span class="n">expression</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">Column</span><span class="p">))</span> -</span><span id="DataFrame.join-445"><a href="#DataFrame.join-445"><span class="linenos">445</span></a> <span class="p">]</span> -</span><span id="DataFrame.join-446"><a href="#DataFrame.join-446"><span class="linenos">446</span></a> <span class="n">self_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.join-447"><a href="#DataFrame.join-447"><span class="linenos">447</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="DataFrame.join-448"><a href="#DataFrame.join-448"><span class="linenos">448</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="DataFrame.join-449"><a href="#DataFrame.join-449"><span class="linenos">449</span></a> <span class="p">]</span> -</span><span id="DataFrame.join-450"><a href="#DataFrame.join-450"><span class="linenos">450</span></a> <span class="n">other_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.join-451"><a href="#DataFrame.join-451"><span class="linenos">451</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="DataFrame.join-452"><a href="#DataFrame.join-452"><span class="linenos">452</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">other_df</span><span class="p">)</span> -</span><span id="DataFrame.join-453"><a href="#DataFrame.join-453"><span class="linenos">453</span></a> <span class="p">]</span> -</span><span id="DataFrame.join-454"><a href="#DataFrame.join-454"><span class="linenos">454</span></a> <span class="n">column_value_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataFrame.join-455"><a href="#DataFrame.join-455"><span class="linenos">455</span></a> <span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="DataFrame.join-456"><a href="#DataFrame.join-456"><span class="linenos">456</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="o">.</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">Star</span><span class="p">)</span> -</span><span id="DataFrame.join-457"><a href="#DataFrame.join-457"><span class="linenos">457</span></a> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">sql</span><span class="p">():</span> <span class="n">column</span> -</span><span id="DataFrame.join-458"><a href="#DataFrame.join-458"><span class="linenos">458</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">other_columns</span> <span class="o">+</span> <span class="n">self_columns</span> <span class="o">+</span> <span class="n">join_columns</span> -</span><span id="DataFrame.join-459"><a href="#DataFrame.join-459"><span class="linenos">459</span></a> <span class="p">}</span> -</span><span id="DataFrame.join-460"><a href="#DataFrame.join-460"><span class="linenos">460</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.join-461"><a href="#DataFrame.join-461"><span class="linenos">461</span></a> <span class="n">column_value_mapping</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> -</span><span id="DataFrame.join-462"><a href="#DataFrame.join-462"><span class="linenos">462</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">join_columns</span> <span class="o">+</span> <span class="n">self_columns</span> <span class="o">+</span> <span class="n">other_columns</span><span class="p">}</span> -</span><span id="DataFrame.join-463"><a href="#DataFrame.join-463"><span class="linenos">463</span></a> <span class="p">]</span> -</span><span id="DataFrame.join-464"><a href="#DataFrame.join-464"><span class="linenos">464</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span> -</span><span id="DataFrame.join-465"><a href="#DataFrame.join-465"><span class="linenos">465</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="DataFrame.join-466"><a href="#DataFrame.join-466"><span class="linenos">466</span></a> <span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">join_clause</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">join_type</span><span class="o">=</span><span class="n">join_type</span> -</span><span id="DataFrame.join-467"><a href="#DataFrame.join-467"><span class="linenos">467</span></a> <span class="p">)</span> -</span><span id="DataFrame.join-468"><a href="#DataFrame.join-468"><span class="linenos">468</span></a> <span class="p">)</span> -</span><span id="DataFrame.join-469"><a href="#DataFrame.join-469"><span class="linenos">469</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">expression</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">_add_ctes_to_expression</span><span class="p">(</span> -</span><span id="DataFrame.join-470"><a href="#DataFrame.join-470"><span class="linenos">470</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> -</span><span id="DataFrame.join-471"><a href="#DataFrame.join-471"><span class="linenos">471</span></a> <span class="p">)</span> -</span><span id="DataFrame.join-472"><a href="#DataFrame.join-472"><span class="linenos">472</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="p">)</span> -</span><span id="DataFrame.join-473"><a href="#DataFrame.join-473"><span class="linenos">473</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="o">.</span><span class="n">__wrapped__</span><span class="p">(</span><span class="n">new_df</span><span class="p">,</span> <span class="o">*</span><span class="n">all_columns</span><span class="p">)</span> -</span><span id="DataFrame.join-474"><a href="#DataFrame.join-474"><span class="linenos">474</span></a> <span class="k">return</span> <span class="n">new_df</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.join-411"><a href="#DataFrame.join-411"><span class="linenos">411</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.join-412"><a href="#DataFrame.join-412"><span class="linenos">412</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> +</span><span id="DataFrame.join-413"><a href="#DataFrame.join-413"><span class="linenos">413</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame.join-414"><a href="#DataFrame.join-414"><span class="linenos">414</span></a> <span class="n">other_df</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> +</span><span id="DataFrame.join-415"><a href="#DataFrame.join-415"><span class="linenos">415</span></a> <span class="n">on</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">Column</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Column</span><span class="p">]],</span> +</span><span id="DataFrame.join-416"><a href="#DataFrame.join-416"><span class="linenos">416</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"inner"</span><span class="p">,</span> +</span><span id="DataFrame.join-417"><a href="#DataFrame.join-417"><span class="linenos">417</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">,</span> +</span><span id="DataFrame.join-418"><a href="#DataFrame.join-418"><span class="linenos">418</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.join-419"><a href="#DataFrame.join-419"><span class="linenos">419</span></a> <span class="n">other_df</span> <span class="o">=</span> <span class="n">other_df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span> +</span><span id="DataFrame.join-420"><a href="#DataFrame.join-420"><span class="linenos">420</span></a> <span class="n">pre_join_self_latest_cte_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">latest_cte_name</span> +</span><span id="DataFrame.join-421"><a href="#DataFrame.join-421"><span class="linenos">421</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">on</span><span class="p">)</span> +</span><span id="DataFrame.join-422"><a href="#DataFrame.join-422"><span class="linenos">422</span></a> <span class="n">join_type</span> <span class="o">=</span> <span class="n">how</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"_"</span><span class="p">,</span> <span class="s2">" "</span><span class="p">)</span> +</span><span id="DataFrame.join-423"><a href="#DataFrame.join-423"><span class="linenos">423</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</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">Column</span><span class="p">):</span> +</span><span id="DataFrame.join-424"><a href="#DataFrame.join-424"><span class="linenos">424</span></a> <span class="n">join_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.join-425"><a href="#DataFrame.join-425"><span class="linenos">425</span></a> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span> +</span><span id="DataFrame.join-426"><a href="#DataFrame.join-426"><span class="linenos">426</span></a> <span class="p">]</span> +</span><span id="DataFrame.join-427"><a href="#DataFrame.join-427"><span class="linenos">427</span></a> <span class="n">join_clause</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span> +</span><span id="DataFrame.join-428"><a href="#DataFrame.join-428"><span class="linenos">428</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">&</span> <span class="n">y</span><span class="p">,</span> +</span><span id="DataFrame.join-429"><a href="#DataFrame.join-429"><span class="linenos">429</span></a> <span class="p">[</span> +</span><span id="DataFrame.join-430"><a href="#DataFrame.join-430"><span class="linenos">430</span></a> <span class="n">col</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> +</span><span id="DataFrame.join-431"><a href="#DataFrame.join-431"><span class="linenos">431</span></a> <span class="o">==</span> <span class="n">col</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">)</span> +</span><span id="DataFrame.join-432"><a href="#DataFrame.join-432"><span class="linenos">432</span></a> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">columns</span> +</span><span id="DataFrame.join-433"><a href="#DataFrame.join-433"><span class="linenos">433</span></a> <span class="p">],</span> +</span><span id="DataFrame.join-434"><a href="#DataFrame.join-434"><span class="linenos">434</span></a> <span class="p">)</span> +</span><span id="DataFrame.join-435"><a href="#DataFrame.join-435"><span class="linenos">435</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.join-436"><a href="#DataFrame.join-436"><span class="linenos">436</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="DataFrame.join-437"><a href="#DataFrame.join-437"><span class="linenos">437</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">&</span> <span class="n">y</span><span class="p">,</span> <span class="n">columns</span><span class="p">)]</span> +</span><span id="DataFrame.join-438"><a href="#DataFrame.join-438"><span class="linenos">438</span></a> <span class="n">join_clause</span> <span class="o">=</span> <span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="DataFrame.join-439"><a href="#DataFrame.join-439"><span class="linenos">439</span></a> <span class="n">join_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.join-440"><a href="#DataFrame.join-440"><span class="linenos">440</span></a> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">)</span> +</span><span id="DataFrame.join-441"><a href="#DataFrame.join-441"><span class="linenos">441</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> +</span><span id="DataFrame.join-442"><a href="#DataFrame.join-442"><span class="linenos">442</span></a> <span class="k">else</span> <span class="n">Column</span><span class="p">(</span><span class="n">x</span><span class="p">)</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">)</span> +</span><span id="DataFrame.join-443"><a href="#DataFrame.join-443"><span class="linenos">443</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">join_clause</span><span class="o">.</span><span class="n">expression</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">Column</span><span class="p">))</span> +</span><span id="DataFrame.join-444"><a href="#DataFrame.join-444"><span class="linenos">444</span></a> <span class="p">]</span> +</span><span id="DataFrame.join-445"><a href="#DataFrame.join-445"><span class="linenos">445</span></a> <span class="n">self_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.join-446"><a href="#DataFrame.join-446"><span class="linenos">446</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">pre_join_self_latest_cte_name</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="DataFrame.join-447"><a href="#DataFrame.join-447"><span class="linenos">447</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="DataFrame.join-448"><a href="#DataFrame.join-448"><span class="linenos">448</span></a> <span class="p">]</span> +</span><span id="DataFrame.join-449"><a href="#DataFrame.join-449"><span class="linenos">449</span></a> <span class="n">other_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.join-450"><a href="#DataFrame.join-450"><span class="linenos">450</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set_table_name</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="DataFrame.join-451"><a href="#DataFrame.join-451"><span class="linenos">451</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">other_df</span><span class="p">)</span> +</span><span id="DataFrame.join-452"><a href="#DataFrame.join-452"><span class="linenos">452</span></a> <span class="p">]</span> +</span><span id="DataFrame.join-453"><a href="#DataFrame.join-453"><span class="linenos">453</span></a> <span class="n">column_value_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataFrame.join-454"><a href="#DataFrame.join-454"><span class="linenos">454</span></a> <span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="DataFrame.join-455"><a href="#DataFrame.join-455"><span class="linenos">455</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="o">.</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">Star</span><span class="p">)</span> +</span><span id="DataFrame.join-456"><a href="#DataFrame.join-456"><span class="linenos">456</span></a> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">sql</span><span class="p">():</span> <span class="n">column</span> +</span><span id="DataFrame.join-457"><a href="#DataFrame.join-457"><span class="linenos">457</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">other_columns</span> <span class="o">+</span> <span class="n">self_columns</span> <span class="o">+</span> <span class="n">join_columns</span> +</span><span id="DataFrame.join-458"><a href="#DataFrame.join-458"><span class="linenos">458</span></a> <span class="p">}</span> +</span><span id="DataFrame.join-459"><a href="#DataFrame.join-459"><span class="linenos">459</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.join-460"><a href="#DataFrame.join-460"><span class="linenos">460</span></a> <span class="n">column_value_mapping</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> +</span><span id="DataFrame.join-461"><a href="#DataFrame.join-461"><span class="linenos">461</span></a> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">join_columns</span> <span class="o">+</span> <span class="n">self_columns</span> <span class="o">+</span> <span class="n">other_columns</span><span class="p">}</span> +</span><span id="DataFrame.join-462"><a href="#DataFrame.join-462"><span class="linenos">462</span></a> <span class="p">]</span> +</span><span id="DataFrame.join-463"><a href="#DataFrame.join-463"><span class="linenos">463</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span> +</span><span id="DataFrame.join-464"><a href="#DataFrame.join-464"><span class="linenos">464</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="DataFrame.join-465"><a href="#DataFrame.join-465"><span class="linenos">465</span></a> <span class="n">other_df</span><span class="o">.</span><span class="n">latest_cte_name</span><span class="p">,</span> <span class="n">on</span><span class="o">=</span><span class="n">join_clause</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">join_type</span><span class="o">=</span><span class="n">join_type</span> +</span><span id="DataFrame.join-466"><a href="#DataFrame.join-466"><span class="linenos">466</span></a> <span class="p">)</span> +</span><span id="DataFrame.join-467"><a href="#DataFrame.join-467"><span class="linenos">467</span></a> <span class="p">)</span> +</span><span id="DataFrame.join-468"><a href="#DataFrame.join-468"><span class="linenos">468</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">expression</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">_add_ctes_to_expression</span><span class="p">(</span> +</span><span id="DataFrame.join-469"><a href="#DataFrame.join-469"><span class="linenos">469</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">other_df</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">ctes</span> +</span><span id="DataFrame.join-470"><a href="#DataFrame.join-470"><span class="linenos">470</span></a> <span class="p">)</span> +</span><span id="DataFrame.join-471"><a href="#DataFrame.join-471"><span class="linenos">471</span></a> <span class="n">new_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">other_df</span><span class="o">.</span><span class="n">pending_hints</span><span class="p">)</span> +</span><span id="DataFrame.join-472"><a href="#DataFrame.join-472"><span class="linenos">472</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="o">.</span><span class="n">__wrapped__</span><span class="p">(</span><span class="n">new_df</span><span class="p">,</span> <span class="o">*</span><span class="n">all_columns</span><span class="p">)</span> +</span><span id="DataFrame.join-473"><a href="#DataFrame.join-473"><span class="linenos">473</span></a> <span class="k">return</span> <span class="n">new_df</span> </span></pre></div> @@ -1876,42 +1852,42 @@ </div> <a class="headerlink" href="#DataFrame.orderBy"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.orderBy-476"><a href="#DataFrame.orderBy-476"><span class="linenos">476</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">)</span> -</span><span id="DataFrame.orderBy-477"><a href="#DataFrame.orderBy-477"><span class="linenos">477</span></a> <span class="k">def</span> <span class="nf">orderBy</span><span class="p">(</span> -</span><span id="DataFrame.orderBy-478"><a href="#DataFrame.orderBy-478"><span class="linenos">478</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame.orderBy-479"><a href="#DataFrame.orderBy-479"><span class="linenos">479</span></a> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">],</span> -</span><span id="DataFrame.orderBy-480"><a href="#DataFrame.orderBy-480"><span class="linenos">480</span></a> <span class="n">ascending</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.orderBy-481"><a href="#DataFrame.orderBy-481"><span class="linenos">481</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.orderBy-482"><a href="#DataFrame.orderBy-482"><span class="linenos">482</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataFrame.orderBy-483"><a href="#DataFrame.orderBy-483"><span class="linenos">483</span></a><span class="sd"> This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark</span> -</span><span id="DataFrame.orderBy-484"><a href="#DataFrame.orderBy-484"><span class="linenos">484</span></a><span class="sd"> has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this</span> -</span><span id="DataFrame.orderBy-485"><a href="#DataFrame.orderBy-485"><span class="linenos">485</span></a><span class="sd"> is unlikely to come up.</span> -</span><span id="DataFrame.orderBy-486"><a href="#DataFrame.orderBy-486"><span class="linenos">486</span></a><span class="sd"> """</span> -</span><span id="DataFrame.orderBy-487"><a href="#DataFrame.orderBy-487"><span class="linenos">487</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame.orderBy-488"><a href="#DataFrame.orderBy-488"><span class="linenos">488</span></a> <span class="n">pre_ordered_col_indexes</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.orderBy-489"><a href="#DataFrame.orderBy-489"><span class="linenos">489</span></a> <span class="n">x</span> -</span><span id="DataFrame.orderBy-490"><a href="#DataFrame.orderBy-490"><span class="linenos">490</span></a> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span> -</span><span id="DataFrame.orderBy-491"><a href="#DataFrame.orderBy-491"><span class="linenos">491</span></a> <span class="n">i</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">col</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">Ordered</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="DataFrame.orderBy-492"><a href="#DataFrame.orderBy-492"><span class="linenos">492</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame.orderBy-493"><a href="#DataFrame.orderBy-493"><span class="linenos">493</span></a> <span class="p">]</span> -</span><span id="DataFrame.orderBy-494"><a href="#DataFrame.orderBy-494"><span class="linenos">494</span></a> <span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> -</span><span id="DataFrame.orderBy-495"><a href="#DataFrame.orderBy-495"><span class="linenos">495</span></a> <span class="p">]</span> -</span><span id="DataFrame.orderBy-496"><a href="#DataFrame.orderBy-496"><span class="linenos">496</span></a> <span class="k">if</span> <span class="n">ascending</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="DataFrame.orderBy-497"><a href="#DataFrame.orderBy-497"><span class="linenos">497</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame.orderBy-498"><a href="#DataFrame.orderBy-498"><span class="linenos">498</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ascending</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="DataFrame.orderBy-499"><a href="#DataFrame.orderBy-499"><span class="linenos">499</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="n">ascending</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame.orderBy-500"><a href="#DataFrame.orderBy-500"><span class="linenos">500</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="nb">bool</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">ascending</span><span class="p">)]</span> -</span><span id="DataFrame.orderBy-501"><a href="#DataFrame.orderBy-501"><span class="linenos">501</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> -</span><span id="DataFrame.orderBy-502"><a href="#DataFrame.orderBy-502"><span class="linenos">502</span></a> <span class="n">ascending</span> -</span><span id="DataFrame.orderBy-503"><a href="#DataFrame.orderBy-503"><span class="linenos">503</span></a> <span class="p">),</span> <span class="s2">"The length of items in ascending must equal the number of columns provided"</span> -</span><span id="DataFrame.orderBy-504"><a href="#DataFrame.orderBy-504"><span class="linenos">504</span></a> <span class="n">col_and_ascending</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">ascending</span><span class="p">))</span> -</span><span id="DataFrame.orderBy-505"><a href="#DataFrame.orderBy-505"><span class="linenos">505</span></a> <span class="n">order_by_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.orderBy-506"><a href="#DataFrame.orderBy-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="ow">not</span> <span class="n">asc</span><span class="p">)</span> -</span><span id="DataFrame.orderBy-507"><a href="#DataFrame.orderBy-507"><span class="linenos">507</span></a> <span class="k">if</span> <span class="n">i</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pre_ordered_col_indexes</span> -</span><span id="DataFrame.orderBy-508"><a href="#DataFrame.orderBy-508"><span class="linenos">508</span></a> <span class="k">else</span> <span class="n">columns</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">column_expression</span> -</span><span id="DataFrame.orderBy-509"><a href="#DataFrame.orderBy-509"><span class="linenos">509</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">asc</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">col_and_ascending</span><span class="p">)</span> -</span><span id="DataFrame.orderBy-510"><a href="#DataFrame.orderBy-510"><span class="linenos">510</span></a> <span class="p">]</span> -</span><span id="DataFrame.orderBy-511"><a href="#DataFrame.orderBy-511"><span class="linenos">511</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="o">*</span><span class="n">order_by_columns</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.orderBy-475"><a href="#DataFrame.orderBy-475"><span class="linenos">475</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">)</span> +</span><span id="DataFrame.orderBy-476"><a href="#DataFrame.orderBy-476"><span class="linenos">476</span></a> <span class="k">def</span> <span class="nf">orderBy</span><span class="p">(</span> +</span><span id="DataFrame.orderBy-477"><a href="#DataFrame.orderBy-477"><span class="linenos">477</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame.orderBy-478"><a href="#DataFrame.orderBy-478"><span class="linenos">478</span></a> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">],</span> +</span><span id="DataFrame.orderBy-479"><a href="#DataFrame.orderBy-479"><span class="linenos">479</span></a> <span class="n">ascending</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.orderBy-480"><a href="#DataFrame.orderBy-480"><span class="linenos">480</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.orderBy-481"><a href="#DataFrame.orderBy-481"><span class="linenos">481</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataFrame.orderBy-482"><a href="#DataFrame.orderBy-482"><span class="linenos">482</span></a><span class="sd"> This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark</span> +</span><span id="DataFrame.orderBy-483"><a href="#DataFrame.orderBy-483"><span class="linenos">483</span></a><span class="sd"> has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this</span> +</span><span id="DataFrame.orderBy-484"><a href="#DataFrame.orderBy-484"><span class="linenos">484</span></a><span class="sd"> is unlikely to come up.</span> +</span><span id="DataFrame.orderBy-485"><a href="#DataFrame.orderBy-485"><span class="linenos">485</span></a><span class="sd"> """</span> +</span><span id="DataFrame.orderBy-486"><a href="#DataFrame.orderBy-486"><span class="linenos">486</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame.orderBy-487"><a href="#DataFrame.orderBy-487"><span class="linenos">487</span></a> <span class="n">pre_ordered_col_indexes</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.orderBy-488"><a href="#DataFrame.orderBy-488"><span class="linenos">488</span></a> <span class="n">x</span> +</span><span id="DataFrame.orderBy-489"><a href="#DataFrame.orderBy-489"><span class="linenos">489</span></a> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span> +</span><span id="DataFrame.orderBy-490"><a href="#DataFrame.orderBy-490"><span class="linenos">490</span></a> <span class="n">i</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">col</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">Ordered</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="DataFrame.orderBy-491"><a href="#DataFrame.orderBy-491"><span class="linenos">491</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame.orderBy-492"><a href="#DataFrame.orderBy-492"><span class="linenos">492</span></a> <span class="p">]</span> +</span><span id="DataFrame.orderBy-493"><a href="#DataFrame.orderBy-493"><span class="linenos">493</span></a> <span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> +</span><span id="DataFrame.orderBy-494"><a href="#DataFrame.orderBy-494"><span class="linenos">494</span></a> <span class="p">]</span> +</span><span id="DataFrame.orderBy-495"><a href="#DataFrame.orderBy-495"><span class="linenos">495</span></a> <span class="k">if</span> <span class="n">ascending</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="DataFrame.orderBy-496"><a href="#DataFrame.orderBy-496"><span class="linenos">496</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame.orderBy-497"><a href="#DataFrame.orderBy-497"><span class="linenos">497</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ascending</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="DataFrame.orderBy-498"><a href="#DataFrame.orderBy-498"><span class="linenos">498</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="n">ascending</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame.orderBy-499"><a href="#DataFrame.orderBy-499"><span class="linenos">499</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="nb">bool</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">ascending</span><span class="p">)]</span> +</span><span id="DataFrame.orderBy-500"><a href="#DataFrame.orderBy-500"><span class="linenos">500</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> +</span><span id="DataFrame.orderBy-501"><a href="#DataFrame.orderBy-501"><span class="linenos">501</span></a> <span class="n">ascending</span> +</span><span id="DataFrame.orderBy-502"><a href="#DataFrame.orderBy-502"><span class="linenos">502</span></a> <span class="p">),</span> <span class="s2">"The length of items in ascending must equal the number of columns provided"</span> +</span><span id="DataFrame.orderBy-503"><a href="#DataFrame.orderBy-503"><span class="linenos">503</span></a> <span class="n">col_and_ascending</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">ascending</span><span class="p">))</span> +</span><span id="DataFrame.orderBy-504"><a href="#DataFrame.orderBy-504"><span class="linenos">504</span></a> <span class="n">order_by_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.orderBy-505"><a href="#DataFrame.orderBy-505"><span class="linenos">505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="ow">not</span> <span class="n">asc</span><span class="p">)</span> +</span><span id="DataFrame.orderBy-506"><a href="#DataFrame.orderBy-506"><span class="linenos">506</span></a> <span class="k">if</span> <span class="n">i</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pre_ordered_col_indexes</span> +</span><span id="DataFrame.orderBy-507"><a href="#DataFrame.orderBy-507"><span class="linenos">507</span></a> <span class="k">else</span> <span class="n">columns</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">column_expression</span> +</span><span id="DataFrame.orderBy-508"><a href="#DataFrame.orderBy-508"><span class="linenos">508</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">asc</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">col_and_ascending</span><span class="p">)</span> +</span><span id="DataFrame.orderBy-509"><a href="#DataFrame.orderBy-509"><span class="linenos">509</span></a> <span class="p">]</span> +</span><span id="DataFrame.orderBy-510"><a href="#DataFrame.orderBy-510"><span class="linenos">510</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="o">*</span><span class="n">order_by_columns</span><span class="p">))</span> </span></pre></div> @@ -1934,42 +1910,42 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.sort"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.sort-476"><a href="#DataFrame.sort-476"><span class="linenos">476</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">)</span> -</span><span id="DataFrame.sort-477"><a href="#DataFrame.sort-477"><span class="linenos">477</span></a> <span class="k">def</span> <span class="nf">orderBy</span><span class="p">(</span> -</span><span id="DataFrame.sort-478"><a href="#DataFrame.sort-478"><span class="linenos">478</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame.sort-479"><a href="#DataFrame.sort-479"><span class="linenos">479</span></a> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">],</span> -</span><span id="DataFrame.sort-480"><a href="#DataFrame.sort-480"><span class="linenos">480</span></a> <span class="n">ascending</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.sort-481"><a href="#DataFrame.sort-481"><span class="linenos">481</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.sort-482"><a href="#DataFrame.sort-482"><span class="linenos">482</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataFrame.sort-483"><a href="#DataFrame.sort-483"><span class="linenos">483</span></a><span class="sd"> This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark</span> -</span><span id="DataFrame.sort-484"><a href="#DataFrame.sort-484"><span class="linenos">484</span></a><span class="sd"> has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this</span> -</span><span id="DataFrame.sort-485"><a href="#DataFrame.sort-485"><span class="linenos">485</span></a><span class="sd"> is unlikely to come up.</span> -</span><span id="DataFrame.sort-486"><a href="#DataFrame.sort-486"><span class="linenos">486</span></a><span class="sd"> """</span> -</span><span id="DataFrame.sort-487"><a href="#DataFrame.sort-487"><span class="linenos">487</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame.sort-488"><a href="#DataFrame.sort-488"><span class="linenos">488</span></a> <span class="n">pre_ordered_col_indexes</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.sort-489"><a href="#DataFrame.sort-489"><span class="linenos">489</span></a> <span class="n">x</span> -</span><span id="DataFrame.sort-490"><a href="#DataFrame.sort-490"><span class="linenos">490</span></a> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span> -</span><span id="DataFrame.sort-491"><a href="#DataFrame.sort-491"><span class="linenos">491</span></a> <span class="n">i</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">col</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">Ordered</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="DataFrame.sort-492"><a href="#DataFrame.sort-492"><span class="linenos">492</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame.sort-493"><a href="#DataFrame.sort-493"><span class="linenos">493</span></a> <span class="p">]</span> -</span><span id="DataFrame.sort-494"><a href="#DataFrame.sort-494"><span class="linenos">494</span></a> <span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> -</span><span id="DataFrame.sort-495"><a href="#DataFrame.sort-495"><span class="linenos">495</span></a> <span class="p">]</span> -</span><span id="DataFrame.sort-496"><a href="#DataFrame.sort-496"><span class="linenos">496</span></a> <span class="k">if</span> <span class="n">ascending</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="DataFrame.sort-497"><a href="#DataFrame.sort-497"><span class="linenos">497</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame.sort-498"><a href="#DataFrame.sort-498"><span class="linenos">498</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ascending</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="DataFrame.sort-499"><a href="#DataFrame.sort-499"><span class="linenos">499</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="n">ascending</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame.sort-500"><a href="#DataFrame.sort-500"><span class="linenos">500</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="nb">bool</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">ascending</span><span class="p">)]</span> -</span><span id="DataFrame.sort-501"><a href="#DataFrame.sort-501"><span class="linenos">501</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> -</span><span id="DataFrame.sort-502"><a href="#DataFrame.sort-502"><span class="linenos">502</span></a> <span class="n">ascending</span> -</span><span id="DataFrame.sort-503"><a href="#DataFrame.sort-503"><span class="linenos">503</span></a> <span class="p">),</span> <span class="s2">"The length of items in ascending must equal the number of columns provided"</span> -</span><span id="DataFrame.sort-504"><a href="#DataFrame.sort-504"><span class="linenos">504</span></a> <span class="n">col_and_ascending</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">ascending</span><span class="p">))</span> -</span><span id="DataFrame.sort-505"><a href="#DataFrame.sort-505"><span class="linenos">505</span></a> <span class="n">order_by_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.sort-506"><a href="#DataFrame.sort-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="ow">not</span> <span class="n">asc</span><span class="p">)</span> -</span><span id="DataFrame.sort-507"><a href="#DataFrame.sort-507"><span class="linenos">507</span></a> <span class="k">if</span> <span class="n">i</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pre_ordered_col_indexes</span> -</span><span id="DataFrame.sort-508"><a href="#DataFrame.sort-508"><span class="linenos">508</span></a> <span class="k">else</span> <span class="n">columns</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">column_expression</span> -</span><span id="DataFrame.sort-509"><a href="#DataFrame.sort-509"><span class="linenos">509</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">asc</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">col_and_ascending</span><span class="p">)</span> -</span><span id="DataFrame.sort-510"><a href="#DataFrame.sort-510"><span class="linenos">510</span></a> <span class="p">]</span> -</span><span id="DataFrame.sort-511"><a href="#DataFrame.sort-511"><span class="linenos">511</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="o">*</span><span class="n">order_by_columns</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.sort-475"><a href="#DataFrame.sort-475"><span class="linenos">475</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">)</span> +</span><span id="DataFrame.sort-476"><a href="#DataFrame.sort-476"><span class="linenos">476</span></a> <span class="k">def</span> <span class="nf">orderBy</span><span class="p">(</span> +</span><span id="DataFrame.sort-477"><a href="#DataFrame.sort-477"><span class="linenos">477</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame.sort-478"><a href="#DataFrame.sort-478"><span class="linenos">478</span></a> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">],</span> +</span><span id="DataFrame.sort-479"><a href="#DataFrame.sort-479"><span class="linenos">479</span></a> <span class="n">ascending</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.sort-480"><a href="#DataFrame.sort-480"><span class="linenos">480</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.sort-481"><a href="#DataFrame.sort-481"><span class="linenos">481</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataFrame.sort-482"><a href="#DataFrame.sort-482"><span class="linenos">482</span></a><span class="sd"> This implementation lets any ordered columns take priority over whatever is provided in `ascending`. Spark</span> +</span><span id="DataFrame.sort-483"><a href="#DataFrame.sort-483"><span class="linenos">483</span></a><span class="sd"> has irregular behavior and can result in runtime errors. Users shouldn't be mixing the two anyways so this</span> +</span><span id="DataFrame.sort-484"><a href="#DataFrame.sort-484"><span class="linenos">484</span></a><span class="sd"> is unlikely to come up.</span> +</span><span id="DataFrame.sort-485"><a href="#DataFrame.sort-485"><span class="linenos">485</span></a><span class="sd"> """</span> +</span><span id="DataFrame.sort-486"><a href="#DataFrame.sort-486"><span class="linenos">486</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame.sort-487"><a href="#DataFrame.sort-487"><span class="linenos">487</span></a> <span class="n">pre_ordered_col_indexes</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.sort-488"><a href="#DataFrame.sort-488"><span class="linenos">488</span></a> <span class="n">x</span> +</span><span id="DataFrame.sort-489"><a href="#DataFrame.sort-489"><span class="linenos">489</span></a> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="p">[</span> +</span><span id="DataFrame.sort-490"><a href="#DataFrame.sort-490"><span class="linenos">490</span></a> <span class="n">i</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">col</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">Ordered</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="DataFrame.sort-491"><a href="#DataFrame.sort-491"><span class="linenos">491</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame.sort-492"><a href="#DataFrame.sort-492"><span class="linenos">492</span></a> <span class="p">]</span> +</span><span id="DataFrame.sort-493"><a href="#DataFrame.sort-493"><span class="linenos">493</span></a> <span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> +</span><span id="DataFrame.sort-494"><a href="#DataFrame.sort-494"><span class="linenos">494</span></a> <span class="p">]</span> +</span><span id="DataFrame.sort-495"><a href="#DataFrame.sort-495"><span class="linenos">495</span></a> <span class="k">if</span> <span class="n">ascending</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="DataFrame.sort-496"><a href="#DataFrame.sort-496"><span class="linenos">496</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="kc">True</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame.sort-497"><a href="#DataFrame.sort-497"><span class="linenos">497</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ascending</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="DataFrame.sort-498"><a href="#DataFrame.sort-498"><span class="linenos">498</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="n">ascending</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame.sort-499"><a href="#DataFrame.sort-499"><span class="linenos">499</span></a> <span class="n">ascending</span> <span class="o">=</span> <span class="p">[</span><span class="nb">bool</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">ascending</span><span class="p">)]</span> +</span><span id="DataFrame.sort-500"><a href="#DataFrame.sort-500"><span class="linenos">500</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> +</span><span id="DataFrame.sort-501"><a href="#DataFrame.sort-501"><span class="linenos">501</span></a> <span class="n">ascending</span> +</span><span id="DataFrame.sort-502"><a href="#DataFrame.sort-502"><span class="linenos">502</span></a> <span class="p">),</span> <span class="s2">"The length of items in ascending must equal the number of columns provided"</span> +</span><span id="DataFrame.sort-503"><a href="#DataFrame.sort-503"><span class="linenos">503</span></a> <span class="n">col_and_ascending</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">ascending</span><span class="p">))</span> +</span><span id="DataFrame.sort-504"><a href="#DataFrame.sort-504"><span class="linenos">504</span></a> <span class="n">order_by_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.sort-505"><a href="#DataFrame.sort-505"><span class="linenos">505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">col</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="ow">not</span> <span class="n">asc</span><span class="p">)</span> +</span><span id="DataFrame.sort-506"><a href="#DataFrame.sort-506"><span class="linenos">506</span></a> <span class="k">if</span> <span class="n">i</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">pre_ordered_col_indexes</span> +</span><span id="DataFrame.sort-507"><a href="#DataFrame.sort-507"><span class="linenos">507</span></a> <span class="k">else</span> <span class="n">columns</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">column_expression</span> +</span><span id="DataFrame.sort-508"><a href="#DataFrame.sort-508"><span class="linenos">508</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">asc</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">col_and_ascending</span><span class="p">)</span> +</span><span id="DataFrame.sort-509"><a href="#DataFrame.sort-509"><span class="linenos">509</span></a> <span class="p">]</span> +</span><span id="DataFrame.sort-510"><a href="#DataFrame.sort-510"><span class="linenos">510</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">order_by</span><span class="p">(</span><span class="o">*</span><span class="n">order_by_columns</span><span class="p">))</span> </span></pre></div> @@ -1992,9 +1968,9 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.union"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.union-515"><a href="#DataFrame.union-515"><span class="linenos">515</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.union-516"><a href="#DataFrame.union-516"><span class="linenos">516</span></a> <span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.union-517"><a href="#DataFrame.union-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.union-514"><a href="#DataFrame.union-514"><span class="linenos">514</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.union-515"><a href="#DataFrame.union-515"><span class="linenos">515</span></a> <span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.union-516"><a href="#DataFrame.union-516"><span class="linenos">516</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> </span></pre></div> @@ -2013,9 +1989,9 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.unionAll"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.unionAll-515"><a href="#DataFrame.unionAll-515"><span class="linenos">515</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.unionAll-516"><a href="#DataFrame.unionAll-516"><span class="linenos">516</span></a> <span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.unionAll-517"><a href="#DataFrame.unionAll-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.unionAll-514"><a href="#DataFrame.unionAll-514"><span class="linenos">514</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.unionAll-515"><a href="#DataFrame.unionAll-515"><span class="linenos">515</span></a> <span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.unionAll-516"><a href="#DataFrame.unionAll-516"><span class="linenos">516</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> </span></pre></div> @@ -2034,34 +2010,34 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.unionByName"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.unionByName-521"><a href="#DataFrame.unionByName-521"><span class="linenos">521</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.unionByName-522"><a href="#DataFrame.unionByName-522"><span class="linenos">522</span></a> <span class="k">def</span> <span class="nf">unionByName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> <span class="n">allowMissingColumns</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="DataFrame.unionByName-523"><a href="#DataFrame.unionByName-523"><span class="linenos">523</span></a> <span class="n">l_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span> -</span><span id="DataFrame.unionByName-524"><a href="#DataFrame.unionByName-524"><span class="linenos">524</span></a> <span class="n">r_columns</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">columns</span> -</span><span id="DataFrame.unionByName-525"><a href="#DataFrame.unionByName-525"><span class="linenos">525</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">allowMissingColumns</span><span class="p">:</span> -</span><span id="DataFrame.unionByName-526"><a href="#DataFrame.unionByName-526"><span class="linenos">526</span></a> <span class="n">l_expressions</span> <span class="o">=</span> <span class="n">l_columns</span> -</span><span id="DataFrame.unionByName-527"><a href="#DataFrame.unionByName-527"><span class="linenos">527</span></a> <span class="n">r_expressions</span> <span class="o">=</span> <span class="n">l_columns</span> -</span><span id="DataFrame.unionByName-528"><a href="#DataFrame.unionByName-528"><span class="linenos">528</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.unionByName-529"><a href="#DataFrame.unionByName-529"><span class="linenos">529</span></a> <span class="n">l_expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="DataFrame.unionByName-530"><a href="#DataFrame.unionByName-530"><span class="linenos">530</span></a> <span class="n">r_expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="DataFrame.unionByName-531"><a href="#DataFrame.unionByName-531"><span class="linenos">531</span></a> <span class="n">r_columns_unused</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">r_columns</span><span class="p">)</span> -</span><span id="DataFrame.unionByName-532"><a href="#DataFrame.unionByName-532"><span class="linenos">532</span></a> <span class="k">for</span> <span class="n">l_column</span> <span class="ow">in</span> <span class="n">l_columns</span><span class="p">:</span> -</span><span id="DataFrame.unionByName-533"><a href="#DataFrame.unionByName-533"><span class="linenos">533</span></a> <span class="n">l_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> -</span><span id="DataFrame.unionByName-534"><a href="#DataFrame.unionByName-534"><span class="linenos">534</span></a> <span class="k">if</span> <span class="n">l_column</span> <span class="ow">in</span> <span class="n">r_columns</span><span class="p">:</span> -</span><span id="DataFrame.unionByName-535"><a href="#DataFrame.unionByName-535"><span class="linenos">535</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> -</span><span id="DataFrame.unionByName-536"><a href="#DataFrame.unionByName-536"><span class="linenos">536</span></a> <span class="n">r_columns_unused</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> -</span><span id="DataFrame.unionByName-537"><a href="#DataFrame.unionByName-537"><span class="linenos">537</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.unionByName-538"><a href="#DataFrame.unionByName-538"><span class="linenos">538</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">(),</span> <span class="n">l_column</span><span class="p">))</span> -</span><span id="DataFrame.unionByName-539"><a href="#DataFrame.unionByName-539"><span class="linenos">539</span></a> <span class="k">for</span> <span class="n">r_column</span> <span class="ow">in</span> <span class="n">r_columns_unused</span><span class="p">:</span> -</span><span id="DataFrame.unionByName-540"><a href="#DataFrame.unionByName-540"><span class="linenos">540</span></a> <span class="n">l_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">(),</span> <span class="n">r_column</span><span class="p">))</span> -</span><span id="DataFrame.unionByName-541"><a href="#DataFrame.unionByName-541"><span class="linenos">541</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">r_column</span><span class="p">)</span> -</span><span id="DataFrame.unionByName-542"><a href="#DataFrame.unionByName-542"><span class="linenos">542</span></a> <span class="n">r_df</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="DataFrame.unionByName-543"><a href="#DataFrame.unionByName-543"><span class="linenos">543</span></a> <span class="n">other</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">r_expressions</span><span class="p">))</span> -</span><span id="DataFrame.unionByName-544"><a href="#DataFrame.unionByName-544"><span class="linenos">544</span></a> <span class="p">)</span> -</span><span id="DataFrame.unionByName-545"><a href="#DataFrame.unionByName-545"><span class="linenos">545</span></a> <span class="n">l_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.unionByName-546"><a href="#DataFrame.unionByName-546"><span class="linenos">546</span></a> <span class="k">if</span> <span class="n">allowMissingColumns</span><span class="p">:</span> -</span><span id="DataFrame.unionByName-547"><a href="#DataFrame.unionByName-547"><span class="linenos">547</span></a> <span class="n">l_df</span> <span class="o">=</span> <span class="n">l_df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">l_expressions</span><span class="p">))</span> -</span><span id="DataFrame.unionByName-548"><a href="#DataFrame.unionByName-548"><span class="linenos">548</span></a> <span class="k">return</span> <span class="n">l_df</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">r_df</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.unionByName-520"><a href="#DataFrame.unionByName-520"><span class="linenos">520</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.unionByName-521"><a href="#DataFrame.unionByName-521"><span class="linenos">521</span></a> <span class="k">def</span> <span class="nf">unionByName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">,</span> <span class="n">allowMissingColumns</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="DataFrame.unionByName-522"><a href="#DataFrame.unionByName-522"><span class="linenos">522</span></a> <span class="n">l_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">columns</span> +</span><span id="DataFrame.unionByName-523"><a href="#DataFrame.unionByName-523"><span class="linenos">523</span></a> <span class="n">r_columns</span> <span class="o">=</span> <span class="n">other</span><span class="o">.</span><span class="n">columns</span> +</span><span id="DataFrame.unionByName-524"><a href="#DataFrame.unionByName-524"><span class="linenos">524</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">allowMissingColumns</span><span class="p">:</span> +</span><span id="DataFrame.unionByName-525"><a href="#DataFrame.unionByName-525"><span class="linenos">525</span></a> <span class="n">l_expressions</span> <span class="o">=</span> <span class="n">l_columns</span> +</span><span id="DataFrame.unionByName-526"><a href="#DataFrame.unionByName-526"><span class="linenos">526</span></a> <span class="n">r_expressions</span> <span class="o">=</span> <span class="n">l_columns</span> +</span><span id="DataFrame.unionByName-527"><a href="#DataFrame.unionByName-527"><span class="linenos">527</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.unionByName-528"><a href="#DataFrame.unionByName-528"><span class="linenos">528</span></a> <span class="n">l_expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="DataFrame.unionByName-529"><a href="#DataFrame.unionByName-529"><span class="linenos">529</span></a> <span class="n">r_expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="DataFrame.unionByName-530"><a href="#DataFrame.unionByName-530"><span class="linenos">530</span></a> <span class="n">r_columns_unused</span> <span class="o">=</span> <span class="n">copy</span><span class="p">(</span><span class="n">r_columns</span><span class="p">)</span> +</span><span id="DataFrame.unionByName-531"><a href="#DataFrame.unionByName-531"><span class="linenos">531</span></a> <span class="k">for</span> <span class="n">l_column</span> <span class="ow">in</span> <span class="n">l_columns</span><span class="p">:</span> +</span><span id="DataFrame.unionByName-532"><a href="#DataFrame.unionByName-532"><span class="linenos">532</span></a> <span class="n">l_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> +</span><span id="DataFrame.unionByName-533"><a href="#DataFrame.unionByName-533"><span class="linenos">533</span></a> <span class="k">if</span> <span class="n">l_column</span> <span class="ow">in</span> <span class="n">r_columns</span><span class="p">:</span> +</span><span id="DataFrame.unionByName-534"><a href="#DataFrame.unionByName-534"><span class="linenos">534</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> +</span><span id="DataFrame.unionByName-535"><a href="#DataFrame.unionByName-535"><span class="linenos">535</span></a> <span class="n">r_columns_unused</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">l_column</span><span class="p">)</span> +</span><span id="DataFrame.unionByName-536"><a href="#DataFrame.unionByName-536"><span class="linenos">536</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.unionByName-537"><a href="#DataFrame.unionByName-537"><span class="linenos">537</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">(),</span> <span class="n">l_column</span><span class="p">))</span> +</span><span id="DataFrame.unionByName-538"><a href="#DataFrame.unionByName-538"><span class="linenos">538</span></a> <span class="k">for</span> <span class="n">r_column</span> <span class="ow">in</span> <span class="n">r_columns_unused</span><span class="p">:</span> +</span><span id="DataFrame.unionByName-539"><a href="#DataFrame.unionByName-539"><span class="linenos">539</span></a> <span class="n">l_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">(),</span> <span class="n">r_column</span><span class="p">))</span> +</span><span id="DataFrame.unionByName-540"><a href="#DataFrame.unionByName-540"><span class="linenos">540</span></a> <span class="n">r_expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">r_column</span><span class="p">)</span> +</span><span id="DataFrame.unionByName-541"><a href="#DataFrame.unionByName-541"><span class="linenos">541</span></a> <span class="n">r_df</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="DataFrame.unionByName-542"><a href="#DataFrame.unionByName-542"><span class="linenos">542</span></a> <span class="n">other</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">r_expressions</span><span class="p">))</span> +</span><span id="DataFrame.unionByName-543"><a href="#DataFrame.unionByName-543"><span class="linenos">543</span></a> <span class="p">)</span> +</span><span id="DataFrame.unionByName-544"><a href="#DataFrame.unionByName-544"><span class="linenos">544</span></a> <span class="n">l_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.unionByName-545"><a href="#DataFrame.unionByName-545"><span class="linenos">545</span></a> <span class="k">if</span> <span class="n">allowMissingColumns</span><span class="p">:</span> +</span><span id="DataFrame.unionByName-546"><a href="#DataFrame.unionByName-546"><span class="linenos">546</span></a> <span class="n">l_df</span> <span class="o">=</span> <span class="n">l_df</span><span class="o">.</span><span class="n">_convert_leaf_to_cte</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">l_expressions</span><span class="p">))</span> +</span><span id="DataFrame.unionByName-547"><a href="#DataFrame.unionByName-547"><span class="linenos">547</span></a> <span class="k">return</span> <span class="n">l_df</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">,</span> <span class="n">r_df</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> </span></pre></div> @@ -2080,9 +2056,9 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.intersect"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.intersect-550"><a href="#DataFrame.intersect-550"><span class="linenos">550</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.intersect-551"><a href="#DataFrame.intersect-551"><span class="linenos">551</span></a> <span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.intersect-552"><a href="#DataFrame.intersect-552"><span class="linenos">552</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.intersect-549"><a href="#DataFrame.intersect-549"><span class="linenos">549</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.intersect-550"><a href="#DataFrame.intersect-550"><span class="linenos">550</span></a> <span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.intersect-551"><a href="#DataFrame.intersect-551"><span class="linenos">551</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> </span></pre></div> @@ -2101,9 +2077,9 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.intersectAll"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.intersectAll-554"><a href="#DataFrame.intersectAll-554"><span class="linenos">554</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.intersectAll-555"><a href="#DataFrame.intersectAll-555"><span class="linenos">555</span></a> <span class="k">def</span> <span class="nf">intersectAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.intersectAll-556"><a href="#DataFrame.intersectAll-556"><span class="linenos">556</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.intersectAll-553"><a href="#DataFrame.intersectAll-553"><span class="linenos">553</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.intersectAll-554"><a href="#DataFrame.intersectAll-554"><span class="linenos">554</span></a> <span class="k">def</span> <span class="nf">intersectAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.intersectAll-555"><a href="#DataFrame.intersectAll-555"><span class="linenos">555</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> </span></pre></div> @@ -2122,9 +2098,9 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.exceptAll"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.exceptAll-558"><a href="#DataFrame.exceptAll-558"><span class="linenos">558</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.exceptAll-559"><a href="#DataFrame.exceptAll-559"><span class="linenos">559</span></a> <span class="k">def</span> <span class="nf">exceptAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.exceptAll-560"><a href="#DataFrame.exceptAll-560"><span class="linenos">560</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.exceptAll-557"><a href="#DataFrame.exceptAll-557"><span class="linenos">557</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.exceptAll-558"><a href="#DataFrame.exceptAll-558"><span class="linenos">558</span></a> <span class="k">def</span> <span class="nf">exceptAll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.exceptAll-559"><a href="#DataFrame.exceptAll-559"><span class="linenos">559</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_operation</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Except</span><span class="p">,</span> <span class="n">other</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> </span></pre></div> @@ -2143,9 +2119,9 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.distinct"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.distinct-562"><a href="#DataFrame.distinct-562"><span class="linenos">562</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame.distinct-563"><a href="#DataFrame.distinct-563"><span class="linenos">563</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.distinct-564"><a href="#DataFrame.distinct-564"><span class="linenos">564</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">distinct</span><span class="p">())</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.distinct-561"><a href="#DataFrame.distinct-561"><span class="linenos">561</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame.distinct-562"><a href="#DataFrame.distinct-562"><span class="linenos">562</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.distinct-563"><a href="#DataFrame.distinct-563"><span class="linenos">563</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">distinct</span><span class="p">())</span> </span></pre></div> @@ -2164,18 +2140,18 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.dropDuplicates"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.dropDuplicates-566"><a href="#DataFrame.dropDuplicates-566"><span class="linenos">566</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame.dropDuplicates-567"><a href="#DataFrame.dropDuplicates-567"><span class="linenos">567</span></a> <span class="k">def</span> <span class="nf">dropDuplicates</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> -</span><span id="DataFrame.dropDuplicates-568"><a href="#DataFrame.dropDuplicates-568"><span class="linenos">568</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subset</span><span class="p">:</span> -</span><span id="DataFrame.dropDuplicates-569"><a href="#DataFrame.dropDuplicates-569"><span class="linenos">569</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="p">()</span> -</span><span id="DataFrame.dropDuplicates-570"><a href="#DataFrame.dropDuplicates-570"><span class="linenos">570</span></a> <span class="n">column_names</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> -</span><span id="DataFrame.dropDuplicates-571"><a href="#DataFrame.dropDuplicates-571"><span class="linenos">571</span></a> <span class="n">window</span> <span class="o">=</span> <span class="n">Window</span><span class="o">.</span><span class="n">partitionBy</span><span class="p">(</span><span class="o">*</span><span class="n">column_names</span><span class="p">)</span><span class="o">.</span><span class="n">orderBy</span><span class="p">(</span><span class="o">*</span><span class="n">column_names</span><span class="p">)</span> -</span><span id="DataFrame.dropDuplicates-572"><a href="#DataFrame.dropDuplicates-572"><span class="linenos">572</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="DataFrame.dropDuplicates-573"><a href="#DataFrame.dropDuplicates-573"><span class="linenos">573</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.dropDuplicates-574"><a href="#DataFrame.dropDuplicates-574"><span class="linenos">574</span></a> <span class="o">.</span><span class="n">withColumn</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">,</span> <span class="n">F</span><span class="o">.</span><span class="n">row_number</span><span class="p">()</span><span class="o">.</span><span class="n">over</span><span class="p">(</span><span class="n">window</span><span class="p">))</span> -</span><span id="DataFrame.dropDuplicates-575"><a href="#DataFrame.dropDuplicates-575"><span class="linenos">575</span></a> <span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">col</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">)</span> <span class="o">==</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span> -</span><span id="DataFrame.dropDuplicates-576"><a href="#DataFrame.dropDuplicates-576"><span class="linenos">576</span></a> <span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">)</span> -</span><span id="DataFrame.dropDuplicates-577"><a href="#DataFrame.dropDuplicates-577"><span class="linenos">577</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.dropDuplicates-565"><a href="#DataFrame.dropDuplicates-565"><span class="linenos">565</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame.dropDuplicates-566"><a href="#DataFrame.dropDuplicates-566"><span class="linenos">566</span></a> <span class="k">def</span> <span class="nf">dropDuplicates</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +</span><span id="DataFrame.dropDuplicates-567"><a href="#DataFrame.dropDuplicates-567"><span class="linenos">567</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">subset</span><span class="p">:</span> +</span><span id="DataFrame.dropDuplicates-568"><a href="#DataFrame.dropDuplicates-568"><span class="linenos">568</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="p">()</span> +</span><span id="DataFrame.dropDuplicates-569"><a href="#DataFrame.dropDuplicates-569"><span class="linenos">569</span></a> <span class="n">column_names</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> +</span><span id="DataFrame.dropDuplicates-570"><a href="#DataFrame.dropDuplicates-570"><span class="linenos">570</span></a> <span class="n">window</span> <span class="o">=</span> <span class="n">Window</span><span class="o">.</span><span class="n">partitionBy</span><span class="p">(</span><span class="o">*</span><span class="n">column_names</span><span class="p">)</span><span class="o">.</span><span class="n">orderBy</span><span class="p">(</span><span class="o">*</span><span class="n">column_names</span><span class="p">)</span> +</span><span id="DataFrame.dropDuplicates-571"><a href="#DataFrame.dropDuplicates-571"><span class="linenos">571</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="DataFrame.dropDuplicates-572"><a href="#DataFrame.dropDuplicates-572"><span class="linenos">572</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.dropDuplicates-573"><a href="#DataFrame.dropDuplicates-573"><span class="linenos">573</span></a> <span class="o">.</span><span class="n">withColumn</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">,</span> <span class="n">F</span><span class="o">.</span><span class="n">row_number</span><span class="p">()</span><span class="o">.</span><span class="n">over</span><span class="p">(</span><span class="n">window</span><span class="p">))</span> +</span><span id="DataFrame.dropDuplicates-574"><a href="#DataFrame.dropDuplicates-574"><span class="linenos">574</span></a> <span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">col</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">)</span> <span class="o">==</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span> +</span><span id="DataFrame.dropDuplicates-575"><a href="#DataFrame.dropDuplicates-575"><span class="linenos">575</span></a> <span class="o">.</span><span class="n">drop</span><span class="p">(</span><span class="s2">"row_num"</span><span class="p">)</span> +</span><span id="DataFrame.dropDuplicates-576"><a href="#DataFrame.dropDuplicates-576"><span class="linenos">576</span></a> <span class="p">)</span> </span></pre></div> @@ -2194,38 +2170,38 @@ is unlikely to come up.</p> </div> <a class="headerlink" href="#DataFrame.dropna"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.dropna-579"><a href="#DataFrame.dropna-579"><span class="linenos">579</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.dropna-580"><a href="#DataFrame.dropna-580"><span class="linenos">580</span></a> <span class="k">def</span> <span class="nf">dropna</span><span class="p">(</span> -</span><span id="DataFrame.dropna-581"><a href="#DataFrame.dropna-581"><span class="linenos">581</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame.dropna-582"><a href="#DataFrame.dropna-582"><span class="linenos">582</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"any"</span><span class="p">,</span> -</span><span id="DataFrame.dropna-583"><a href="#DataFrame.dropna-583"><span class="linenos">583</span></a> <span class="n">thresh</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.dropna-584"><a href="#DataFrame.dropna-584"><span class="linenos">584</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.dropna-585"><a href="#DataFrame.dropna-585"><span class="linenos">585</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.dropna-586"><a href="#DataFrame.dropna-586"><span class="linenos">586</span></a> <span class="n">minimum_non_null</span> <span class="o">=</span> <span class="n">thresh</span> <span class="ow">or</span> <span class="mi">0</span> <span class="c1"># will be determined later if thresh is null</span> -</span><span id="DataFrame.dropna-587"><a href="#DataFrame.dropna-587"><span class="linenos">587</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.dropna-588"><a href="#DataFrame.dropna-588"><span class="linenos">588</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame.dropna-589"><a href="#DataFrame.dropna-589"><span class="linenos">589</span></a> <span class="k">if</span> <span class="n">subset</span><span class="p">:</span> -</span><span id="DataFrame.dropna-590"><a href="#DataFrame.dropna-590"><span class="linenos">590</span></a> <span class="n">null_check_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> -</span><span id="DataFrame.dropna-591"><a href="#DataFrame.dropna-591"><span class="linenos">591</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.dropna-592"><a href="#DataFrame.dropna-592"><span class="linenos">592</span></a> <span class="n">null_check_columns</span> <span class="o">=</span> <span class="n">all_columns</span> -</span><span id="DataFrame.dropna-593"><a href="#DataFrame.dropna-593"><span class="linenos">593</span></a> <span class="k">if</span> <span class="n">thresh</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="DataFrame.dropna-594"><a href="#DataFrame.dropna-594"><span class="linenos">594</span></a> <span class="n">minimum_num_nulls</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">how</span> <span class="o">==</span> <span class="s2">"any"</span> <span class="k">else</span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span> -</span><span id="DataFrame.dropna-595"><a href="#DataFrame.dropna-595"><span class="linenos">595</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.dropna-596"><a href="#DataFrame.dropna-596"><span class="linenos">596</span></a> <span class="n">minimum_num_nulls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span> <span class="o">-</span> <span class="n">minimum_non_null</span> <span class="o">+</span> <span class="mi">1</span> -</span><span id="DataFrame.dropna-597"><a href="#DataFrame.dropna-597"><span class="linenos">597</span></a> <span class="k">if</span> <span class="n">minimum_num_nulls</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">):</span> -</span><span id="DataFrame.dropna-598"><a href="#DataFrame.dropna-598"><span class="linenos">598</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> -</span><span id="DataFrame.dropna-599"><a href="#DataFrame.dropna-599"><span class="linenos">599</span></a> <span class="sa">f</span><span class="s2">"The minimum num nulls for dropna must be less than or equal to the number of columns. "</span> -</span><span id="DataFrame.dropna-600"><a href="#DataFrame.dropna-600"><span class="linenos">600</span></a> <span class="sa">f</span><span class="s2">"Minimum num nulls: </span><span class="si">{</span><span class="n">minimum_num_nulls</span><span class="si">}</span><span class="s2">, Num Columns: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="DataFrame.dropna-601"><a href="#DataFrame.dropna-601"><span class="linenos">601</span></a> <span class="p">)</span> -</span><span id="DataFrame.dropna-602"><a href="#DataFrame.dropna-602"><span class="linenos">602</span></a> <span class="n">if_null_checks</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.dropna-603"><a href="#DataFrame.dropna-603"><span class="linenos">603</span></a> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">isNull</span><span class="p">(),</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">null_check_columns</span> -</span><span id="DataFrame.dropna-604"><a href="#DataFrame.dropna-604"><span class="linenos">604</span></a> <span class="p">]</span> -</span><span id="DataFrame.dropna-605"><a href="#DataFrame.dropna-605"><span class="linenos">605</span></a> <span class="n">nulls_added_together</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">,</span> <span class="n">if_null_checks</span><span class="p">)</span> -</span><span id="DataFrame.dropna-606"><a href="#DataFrame.dropna-606"><span class="linenos">606</span></a> <span class="n">num_nulls</span> <span class="o">=</span> <span class="n">nulls_added_together</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">"num_nulls"</span><span class="p">)</span> -</span><span id="DataFrame.dropna-607"><a href="#DataFrame.dropna-607"><span class="linenos">607</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">num_nulls</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="DataFrame.dropna-608"><a href="#DataFrame.dropna-608"><span class="linenos">608</span></a> <span class="n">filtered_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">col</span><span class="p">(</span><span class="s2">"num_nulls"</span><span class="p">)</span> <span class="o"><</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="n">minimum_num_nulls</span><span class="p">))</span> -</span><span id="DataFrame.dropna-609"><a href="#DataFrame.dropna-609"><span class="linenos">609</span></a> <span class="n">final_df</span> <span class="o">=</span> <span class="n">filtered_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">all_columns</span><span class="p">)</span> -</span><span id="DataFrame.dropna-610"><a href="#DataFrame.dropna-610"><span class="linenos">610</span></a> <span class="k">return</span> <span class="n">final_df</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.dropna-578"><a href="#DataFrame.dropna-578"><span class="linenos">578</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.dropna-579"><a href="#DataFrame.dropna-579"><span class="linenos">579</span></a> <span class="k">def</span> <span class="nf">dropna</span><span class="p">(</span> +</span><span id="DataFrame.dropna-580"><a href="#DataFrame.dropna-580"><span class="linenos">580</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame.dropna-581"><a href="#DataFrame.dropna-581"><span class="linenos">581</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"any"</span><span class="p">,</span> +</span><span id="DataFrame.dropna-582"><a href="#DataFrame.dropna-582"><span class="linenos">582</span></a> <span class="n">thresh</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.dropna-583"><a href="#DataFrame.dropna-583"><span class="linenos">583</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.dropna-584"><a href="#DataFrame.dropna-584"><span class="linenos">584</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.dropna-585"><a href="#DataFrame.dropna-585"><span class="linenos">585</span></a> <span class="n">minimum_non_null</span> <span class="o">=</span> <span class="n">thresh</span> <span class="ow">or</span> <span class="mi">0</span> <span class="c1"># will be determined later if thresh is null</span> +</span><span id="DataFrame.dropna-586"><a href="#DataFrame.dropna-586"><span class="linenos">586</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.dropna-587"><a href="#DataFrame.dropna-587"><span class="linenos">587</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame.dropna-588"><a href="#DataFrame.dropna-588"><span class="linenos">588</span></a> <span class="k">if</span> <span class="n">subset</span><span class="p">:</span> +</span><span id="DataFrame.dropna-589"><a href="#DataFrame.dropna-589"><span class="linenos">589</span></a> <span class="n">null_check_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> +</span><span id="DataFrame.dropna-590"><a href="#DataFrame.dropna-590"><span class="linenos">590</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.dropna-591"><a href="#DataFrame.dropna-591"><span class="linenos">591</span></a> <span class="n">null_check_columns</span> <span class="o">=</span> <span class="n">all_columns</span> +</span><span id="DataFrame.dropna-592"><a href="#DataFrame.dropna-592"><span class="linenos">592</span></a> <span class="k">if</span> <span class="n">thresh</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="DataFrame.dropna-593"><a href="#DataFrame.dropna-593"><span class="linenos">593</span></a> <span class="n">minimum_num_nulls</span> <span class="o">=</span> <span class="mi">1</span> <span class="k">if</span> <span class="n">how</span> <span class="o">==</span> <span class="s2">"any"</span> <span class="k">else</span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span> +</span><span id="DataFrame.dropna-594"><a href="#DataFrame.dropna-594"><span class="linenos">594</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.dropna-595"><a href="#DataFrame.dropna-595"><span class="linenos">595</span></a> <span class="n">minimum_num_nulls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span> <span class="o">-</span> <span class="n">minimum_non_null</span> <span class="o">+</span> <span class="mi">1</span> +</span><span id="DataFrame.dropna-596"><a href="#DataFrame.dropna-596"><span class="linenos">596</span></a> <span class="k">if</span> <span class="n">minimum_num_nulls</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">):</span> +</span><span id="DataFrame.dropna-597"><a href="#DataFrame.dropna-597"><span class="linenos">597</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> +</span><span id="DataFrame.dropna-598"><a href="#DataFrame.dropna-598"><span class="linenos">598</span></a> <span class="sa">f</span><span class="s2">"The minimum num nulls for dropna must be less than or equal to the number of columns. "</span> +</span><span id="DataFrame.dropna-599"><a href="#DataFrame.dropna-599"><span class="linenos">599</span></a> <span class="sa">f</span><span class="s2">"Minimum num nulls: </span><span class="si">{</span><span class="n">minimum_num_nulls</span><span class="si">}</span><span class="s2">, Num Columns: </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">null_check_columns</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="DataFrame.dropna-600"><a href="#DataFrame.dropna-600"><span class="linenos">600</span></a> <span class="p">)</span> +</span><span id="DataFrame.dropna-601"><a href="#DataFrame.dropna-601"><span class="linenos">601</span></a> <span class="n">if_null_checks</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.dropna-602"><a href="#DataFrame.dropna-602"><span class="linenos">602</span></a> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">isNull</span><span class="p">(),</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">1</span><span class="p">))</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">null_check_columns</span> +</span><span id="DataFrame.dropna-603"><a href="#DataFrame.dropna-603"><span class="linenos">603</span></a> <span class="p">]</span> +</span><span id="DataFrame.dropna-604"><a href="#DataFrame.dropna-604"><span class="linenos">604</span></a> <span class="n">nulls_added_together</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">x</span> <span class="o">+</span> <span class="n">y</span><span class="p">,</span> <span class="n">if_null_checks</span><span class="p">)</span> +</span><span id="DataFrame.dropna-605"><a href="#DataFrame.dropna-605"><span class="linenos">605</span></a> <span class="n">num_nulls</span> <span class="o">=</span> <span class="n">nulls_added_together</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s2">"num_nulls"</span><span class="p">)</span> +</span><span id="DataFrame.dropna-606"><a href="#DataFrame.dropna-606"><span class="linenos">606</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">num_nulls</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="DataFrame.dropna-607"><a href="#DataFrame.dropna-607"><span class="linenos">607</span></a> <span class="n">filtered_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">F</span><span class="o">.</span><span class="n">col</span><span class="p">(</span><span class="s2">"num_nulls"</span><span class="p">)</span> <span class="o"><</span> <span class="n">F</span><span class="o">.</span><span class="n">lit</span><span class="p">(</span><span class="n">minimum_num_nulls</span><span class="p">))</span> +</span><span id="DataFrame.dropna-608"><a href="#DataFrame.dropna-608"><span class="linenos">608</span></a> <span class="n">final_df</span> <span class="o">=</span> <span class="n">filtered_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">all_columns</span><span class="p">)</span> +</span><span id="DataFrame.dropna-609"><a href="#DataFrame.dropna-609"><span class="linenos">609</span></a> <span class="k">return</span> <span class="n">final_df</span> </span></pre></div> @@ -2238,55 +2214,55 @@ is unlikely to come up.</p> <div class="decorator">@operation(Operation.FROM)</div> <span class="def">def</span> - <span class="name">fillna</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439601424'</span><span class="o">></span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">sqlglot.dataframe.sql.DataFrame</a></span>:</span></span> + <span class="name">fillna</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512213181888'</span><span class="o">></span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">sqlglot.dataframe.sql.DataFrame</a></span>:</span></span> <label class="view-source-button" for="DataFrame.fillna-view-source"><span>View Source</span></label> </div> <a class="headerlink" href="#DataFrame.fillna"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.fillna-612"><a href="#DataFrame.fillna-612"><span class="linenos">612</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.fillna-613"><a href="#DataFrame.fillna-613"><span class="linenos">613</span></a> <span class="k">def</span> <span class="nf">fillna</span><span class="p">(</span> -</span><span id="DataFrame.fillna-614"><a href="#DataFrame.fillna-614"><span class="linenos">614</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame.fillna-615"><a href="#DataFrame.fillna-615"><span class="linenos">615</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">ColumnLiterals</span><span class="p">],</span> -</span><span id="DataFrame.fillna-616"><a href="#DataFrame.fillna-616"><span class="linenos">616</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.fillna-617"><a href="#DataFrame.fillna-617"><span class="linenos">617</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.fillna-618"><a href="#DataFrame.fillna-618"><span class="linenos">618</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataFrame.fillna-619"><a href="#DataFrame.fillna-619"><span class="linenos">619</span></a><span class="sd"> Functionality Difference: If you provide a value to replace a null and that type conflicts</span> -</span><span id="DataFrame.fillna-620"><a href="#DataFrame.fillna-620"><span class="linenos">620</span></a><span class="sd"> with the type of the column then PySpark will just ignore your replacement.</span> -</span><span id="DataFrame.fillna-621"><a href="#DataFrame.fillna-621"><span class="linenos">621</span></a><span class="sd"> This will try to cast them to be the same in some cases. So they won't always match.</span> -</span><span id="DataFrame.fillna-622"><a href="#DataFrame.fillna-622"><span class="linenos">622</span></a><span class="sd"> Best to not mix types so make sure replacement is the same type as the column</span> -</span><span id="DataFrame.fillna-623"><a href="#DataFrame.fillna-623"><span class="linenos">623</span></a> -</span><span id="DataFrame.fillna-624"><a href="#DataFrame.fillna-624"><span class="linenos">624</span></a><span class="sd"> Possibility for improvement: Use `typeof` function to get the type of the column</span> -</span><span id="DataFrame.fillna-625"><a href="#DataFrame.fillna-625"><span class="linenos">625</span></a><span class="sd"> and check if it matches the type of the value provided. If not then make it null.</span> -</span><span id="DataFrame.fillna-626"><a href="#DataFrame.fillna-626"><span class="linenos">626</span></a><span class="sd"> """</span> -</span><span id="DataFrame.fillna-627"><a href="#DataFrame.fillna-627"><span class="linenos">627</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dataframe.sql.functions</span> <span class="kn">import</span> <span class="n">lit</span> -</span><span id="DataFrame.fillna-628"><a href="#DataFrame.fillna-628"><span class="linenos">628</span></a> -</span><span id="DataFrame.fillna-629"><a href="#DataFrame.fillna-629"><span class="linenos">629</span></a> <span class="n">values</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="DataFrame.fillna-630"><a href="#DataFrame.fillna-630"><span class="linenos">630</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="DataFrame.fillna-631"><a href="#DataFrame.fillna-631"><span class="linenos">631</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.fillna-632"><a href="#DataFrame.fillna-632"><span class="linenos">632</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame.fillna-633"><a href="#DataFrame.fillna-633"><span class="linenos">633</span></a> <span class="n">all_column_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">}</span> -</span><span id="DataFrame.fillna-634"><a href="#DataFrame.fillna-634"><span class="linenos">634</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="DataFrame.fillna-635"><a href="#DataFrame.fillna-635"><span class="linenos">635</span></a> <span class="n">values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> -</span><span id="DataFrame.fillna-636"><a href="#DataFrame.fillna-636"><span class="linenos">636</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">value</span><span class="p">))</span> -</span><span id="DataFrame.fillna-637"><a href="#DataFrame.fillna-637"><span class="linenos">637</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="DataFrame.fillna-638"><a href="#DataFrame.fillna-638"><span class="linenos">638</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> <span class="k">if</span> <span class="n">subset</span> <span class="k">else</span> <span class="n">all_columns</span> -</span><span id="DataFrame.fillna-639"><a href="#DataFrame.fillna-639"><span class="linenos">639</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">values</span><span class="p">:</span> -</span><span id="DataFrame.fillna-640"><a href="#DataFrame.fillna-640"><span class="linenos">640</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame.fillna-641"><a href="#DataFrame.fillna-641"><span class="linenos">641</span></a> <span class="n">value_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">]</span> -</span><span id="DataFrame.fillna-642"><a href="#DataFrame.fillna-642"><span class="linenos">642</span></a> -</span><span id="DataFrame.fillna-643"><a href="#DataFrame.fillna-643"><span class="linenos">643</span></a> <span class="n">null_replacement_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataFrame.fillna-644"><a href="#DataFrame.fillna-644"><span class="linenos">644</span></a> <span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="p">(</span> -</span><span id="DataFrame.fillna-645"><a href="#DataFrame.fillna-645"><span class="linenos">645</span></a> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">isNull</span><span class="p">(),</span> <span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">column</span><span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> -</span><span id="DataFrame.fillna-646"><a href="#DataFrame.fillna-646"><span class="linenos">646</span></a> <span class="p">)</span> -</span><span id="DataFrame.fillna-647"><a href="#DataFrame.fillna-647"><span class="linenos">647</span></a> <span class="k">for</span> <span class="n">column</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">value_columns</span><span class="p">)</span> -</span><span id="DataFrame.fillna-648"><a href="#DataFrame.fillna-648"><span class="linenos">648</span></a> <span class="p">}</span> -</span><span id="DataFrame.fillna-649"><a href="#DataFrame.fillna-649"><span class="linenos">649</span></a> <span class="n">null_replacement_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">all_column_mapping</span><span class="p">,</span> <span class="o">**</span><span class="n">null_replacement_mapping</span><span class="p">}</span> -</span><span id="DataFrame.fillna-650"><a href="#DataFrame.fillna-650"><span class="linenos">650</span></a> <span class="n">null_replacement_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.fillna-651"><a href="#DataFrame.fillna-651"><span class="linenos">651</span></a> <span class="n">null_replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span> -</span><span id="DataFrame.fillna-652"><a href="#DataFrame.fillna-652"><span class="linenos">652</span></a> <span class="p">]</span> -</span><span id="DataFrame.fillna-653"><a href="#DataFrame.fillna-653"><span class="linenos">653</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">null_replacement_columns</span><span class="p">)</span> -</span><span id="DataFrame.fillna-654"><a href="#DataFrame.fillna-654"><span class="linenos">654</span></a> <span class="k">return</span> <span class="n">new_df</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.fillna-611"><a href="#DataFrame.fillna-611"><span class="linenos">611</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.fillna-612"><a href="#DataFrame.fillna-612"><span class="linenos">612</span></a> <span class="k">def</span> <span class="nf">fillna</span><span class="p">(</span> +</span><span id="DataFrame.fillna-613"><a href="#DataFrame.fillna-613"><span class="linenos">613</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame.fillna-614"><a href="#DataFrame.fillna-614"><span class="linenos">614</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="n">ColumnLiterals</span><span class="p">],</span> +</span><span id="DataFrame.fillna-615"><a href="#DataFrame.fillna-615"><span class="linenos">615</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.fillna-616"><a href="#DataFrame.fillna-616"><span class="linenos">616</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.fillna-617"><a href="#DataFrame.fillna-617"><span class="linenos">617</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataFrame.fillna-618"><a href="#DataFrame.fillna-618"><span class="linenos">618</span></a><span class="sd"> Functionality Difference: If you provide a value to replace a null and that type conflicts</span> +</span><span id="DataFrame.fillna-619"><a href="#DataFrame.fillna-619"><span class="linenos">619</span></a><span class="sd"> with the type of the column then PySpark will just ignore your replacement.</span> +</span><span id="DataFrame.fillna-620"><a href="#DataFrame.fillna-620"><span class="linenos">620</span></a><span class="sd"> This will try to cast them to be the same in some cases. So they won't always match.</span> +</span><span id="DataFrame.fillna-621"><a href="#DataFrame.fillna-621"><span class="linenos">621</span></a><span class="sd"> Best to not mix types so make sure replacement is the same type as the column</span> +</span><span id="DataFrame.fillna-622"><a href="#DataFrame.fillna-622"><span class="linenos">622</span></a> +</span><span id="DataFrame.fillna-623"><a href="#DataFrame.fillna-623"><span class="linenos">623</span></a><span class="sd"> Possibility for improvement: Use `typeof` function to get the type of the column</span> +</span><span id="DataFrame.fillna-624"><a href="#DataFrame.fillna-624"><span class="linenos">624</span></a><span class="sd"> and check if it matches the type of the value provided. If not then make it null.</span> +</span><span id="DataFrame.fillna-625"><a href="#DataFrame.fillna-625"><span class="linenos">625</span></a><span class="sd"> """</span> +</span><span id="DataFrame.fillna-626"><a href="#DataFrame.fillna-626"><span class="linenos">626</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dataframe.sql.functions</span> <span class="kn">import</span> <span class="n">lit</span> +</span><span id="DataFrame.fillna-627"><a href="#DataFrame.fillna-627"><span class="linenos">627</span></a> +</span><span id="DataFrame.fillna-628"><a href="#DataFrame.fillna-628"><span class="linenos">628</span></a> <span class="n">values</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="DataFrame.fillna-629"><a href="#DataFrame.fillna-629"><span class="linenos">629</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="DataFrame.fillna-630"><a href="#DataFrame.fillna-630"><span class="linenos">630</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.fillna-631"><a href="#DataFrame.fillna-631"><span class="linenos">631</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame.fillna-632"><a href="#DataFrame.fillna-632"><span class="linenos">632</span></a> <span class="n">all_column_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">}</span> +</span><span id="DataFrame.fillna-633"><a href="#DataFrame.fillna-633"><span class="linenos">633</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="DataFrame.fillna-634"><a href="#DataFrame.fillna-634"><span class="linenos">634</span></a> <span class="n">values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="DataFrame.fillna-635"><a href="#DataFrame.fillna-635"><span class="linenos">635</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">value</span><span class="p">))</span> +</span><span id="DataFrame.fillna-636"><a href="#DataFrame.fillna-636"><span class="linenos">636</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="DataFrame.fillna-637"><a href="#DataFrame.fillna-637"><span class="linenos">637</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> <span class="k">if</span> <span class="n">subset</span> <span class="k">else</span> <span class="n">all_columns</span> +</span><span id="DataFrame.fillna-638"><a href="#DataFrame.fillna-638"><span class="linenos">638</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">values</span><span class="p">:</span> +</span><span id="DataFrame.fillna-639"><a href="#DataFrame.fillna-639"><span class="linenos">639</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame.fillna-640"><a href="#DataFrame.fillna-640"><span class="linenos">640</span></a> <span class="n">value_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">]</span> +</span><span id="DataFrame.fillna-641"><a href="#DataFrame.fillna-641"><span class="linenos">641</span></a> +</span><span id="DataFrame.fillna-642"><a href="#DataFrame.fillna-642"><span class="linenos">642</span></a> <span class="n">null_replacement_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataFrame.fillna-643"><a href="#DataFrame.fillna-643"><span class="linenos">643</span></a> <span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="p">(</span> +</span><span id="DataFrame.fillna-644"><a href="#DataFrame.fillna-644"><span class="linenos">644</span></a> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">isNull</span><span class="p">(),</span> <span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">column</span><span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">)</span> +</span><span id="DataFrame.fillna-645"><a href="#DataFrame.fillna-645"><span class="linenos">645</span></a> <span class="p">)</span> +</span><span id="DataFrame.fillna-646"><a href="#DataFrame.fillna-646"><span class="linenos">646</span></a> <span class="k">for</span> <span class="n">column</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="n">value_columns</span><span class="p">)</span> +</span><span id="DataFrame.fillna-647"><a href="#DataFrame.fillna-647"><span class="linenos">647</span></a> <span class="p">}</span> +</span><span id="DataFrame.fillna-648"><a href="#DataFrame.fillna-648"><span class="linenos">648</span></a> <span class="n">null_replacement_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">all_column_mapping</span><span class="p">,</span> <span class="o">**</span><span class="n">null_replacement_mapping</span><span class="p">}</span> +</span><span id="DataFrame.fillna-649"><a href="#DataFrame.fillna-649"><span class="linenos">649</span></a> <span class="n">null_replacement_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.fillna-650"><a href="#DataFrame.fillna-650"><span class="linenos">650</span></a> <span class="n">null_replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span> +</span><span id="DataFrame.fillna-651"><a href="#DataFrame.fillna-651"><span class="linenos">651</span></a> <span class="p">]</span> +</span><span id="DataFrame.fillna-652"><a href="#DataFrame.fillna-652"><span class="linenos">652</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">null_replacement_columns</span><span class="p">)</span> +</span><span id="DataFrame.fillna-653"><a href="#DataFrame.fillna-653"><span class="linenos">653</span></a> <span class="k">return</span> <span class="n">new_df</span> </span></pre></div> @@ -2307,59 +2283,59 @@ and check if it matches the type of the value provided. If not then make it null <div class="decorator">@operation(Operation.FROM)</div> <span class="def">def</span> - <span class="name">replace</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">to_replace</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Collection</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439717408'</span><span class="o">></span><span class="p">],</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439717408'</span><span class="o">></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">sqlglot.dataframe.sql.DataFrame</a></span>:</span></span> + <span class="name">replace</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">to_replace</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Collection</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512213212256'</span><span class="o">></span><span class="p">],</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512213212256'</span><span class="o">></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">sqlglot.dataframe.sql.DataFrame</a></span>:</span></span> <label class="view-source-button" for="DataFrame.replace-view-source"><span>View Source</span></label> </div> <a class="headerlink" href="#DataFrame.replace"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.replace-656"><a href="#DataFrame.replace-656"><span class="linenos">656</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="DataFrame.replace-657"><a href="#DataFrame.replace-657"><span class="linenos">657</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span> -</span><span id="DataFrame.replace-658"><a href="#DataFrame.replace-658"><span class="linenos">658</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrame.replace-659"><a href="#DataFrame.replace-659"><span class="linenos">659</span></a> <span class="n">to_replace</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> -</span><span id="DataFrame.replace-660"><a href="#DataFrame.replace-660"><span class="linenos">660</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.replace-661"><a href="#DataFrame.replace-661"><span class="linenos">661</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">ColumnOrName</span><span class="p">]</span> <span class="o">|</span> <span class="n">ColumnOrName</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrame.replace-662"><a href="#DataFrame.replace-662"><span class="linenos">662</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.replace-663"><a href="#DataFrame.replace-663"><span class="linenos">663</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dataframe.sql.functions</span> <span class="kn">import</span> <span class="n">lit</span> -</span><span id="DataFrame.replace-664"><a href="#DataFrame.replace-664"><span class="linenos">664</span></a> -</span><span id="DataFrame.replace-665"><a href="#DataFrame.replace-665"><span class="linenos">665</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="DataFrame.replace-666"><a href="#DataFrame.replace-666"><span class="linenos">666</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.replace-667"><a href="#DataFrame.replace-667"><span class="linenos">667</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame.replace-668"><a href="#DataFrame.replace-668"><span class="linenos">668</span></a> <span class="n">all_column_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">}</span> -</span><span id="DataFrame.replace-669"><a href="#DataFrame.replace-669"><span class="linenos">669</span></a> -</span><span id="DataFrame.replace-670"><a href="#DataFrame.replace-670"><span class="linenos">670</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> <span class="k">if</span> <span class="n">subset</span> <span class="k">else</span> <span class="n">all_columns</span> -</span><span id="DataFrame.replace-671"><a href="#DataFrame.replace-671"><span class="linenos">671</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to_replace</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="DataFrame.replace-672"><a href="#DataFrame.replace-672"><span class="linenos">672</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">to_replace</span><span class="p">)</span> -</span><span id="DataFrame.replace-673"><a href="#DataFrame.replace-673"><span class="linenos">673</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">to_replace</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> -</span><span id="DataFrame.replace-674"><a href="#DataFrame.replace-674"><span class="linenos">674</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">old_values</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to_replace</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="DataFrame.replace-675"><a href="#DataFrame.replace-675"><span class="linenos">675</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="s2">"value must be a list since the replacements are a list"</span> -</span><span id="DataFrame.replace-676"><a href="#DataFrame.replace-676"><span class="linenos">676</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">to_replace</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> -</span><span id="DataFrame.replace-677"><a href="#DataFrame.replace-677"><span class="linenos">677</span></a> <span class="n">value</span> -</span><span id="DataFrame.replace-678"><a href="#DataFrame.replace-678"><span class="linenos">678</span></a> <span class="p">),</span> <span class="s2">"the replacements and values must be the same length"</span> -</span><span id="DataFrame.replace-679"><a href="#DataFrame.replace-679"><span class="linenos">679</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="n">to_replace</span> -</span><span id="DataFrame.replace-680"><a href="#DataFrame.replace-680"><span class="linenos">680</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="n">value</span> -</span><span id="DataFrame.replace-681"><a href="#DataFrame.replace-681"><span class="linenos">681</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.replace-682"><a href="#DataFrame.replace-682"><span class="linenos">682</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">to_replace</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame.replace-683"><a href="#DataFrame.replace-683"><span class="linenos">683</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="DataFrame.replace-684"><a href="#DataFrame.replace-684"><span class="linenos">684</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">old_values</span><span class="p">]</span> -</span><span id="DataFrame.replace-685"><a href="#DataFrame.replace-685"><span class="linenos">685</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">new_values</span><span class="p">]</span> -</span><span id="DataFrame.replace-686"><a href="#DataFrame.replace-686"><span class="linenos">686</span></a> -</span><span id="DataFrame.replace-687"><a href="#DataFrame.replace-687"><span class="linenos">687</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="DataFrame.replace-688"><a href="#DataFrame.replace-688"><span class="linenos">688</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="DataFrame.replace-689"><a href="#DataFrame.replace-689"><span class="linenos">689</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> -</span><span id="DataFrame.replace-690"><a href="#DataFrame.replace-690"><span class="linenos">690</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">old_values</span><span class="p">,</span> <span class="n">new_values</span><span class="p">)):</span> -</span><span id="DataFrame.replace-691"><a href="#DataFrame.replace-691"><span class="linenos">691</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="DataFrame.replace-692"><a href="#DataFrame.replace-692"><span class="linenos">692</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> -</span><span id="DataFrame.replace-693"><a href="#DataFrame.replace-693"><span class="linenos">693</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.replace-694"><a href="#DataFrame.replace-694"><span class="linenos">694</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="DataFrame.replace-695"><a href="#DataFrame.replace-695"><span class="linenos">695</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">column</span><span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span> -</span><span id="DataFrame.replace-696"><a href="#DataFrame.replace-696"><span class="linenos">696</span></a> <span class="n">column</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="DataFrame.replace-697"><a href="#DataFrame.replace-697"><span class="linenos">697</span></a> <span class="p">)</span> -</span><span id="DataFrame.replace-698"><a href="#DataFrame.replace-698"><span class="linenos">698</span></a> -</span><span id="DataFrame.replace-699"><a href="#DataFrame.replace-699"><span class="linenos">699</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">all_column_mapping</span><span class="p">,</span> <span class="o">**</span><span class="n">replacement_mapping</span><span class="p">}</span> -</span><span id="DataFrame.replace-700"><a href="#DataFrame.replace-700"><span class="linenos">700</span></a> <span class="n">replacement_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">]</span> -</span><span id="DataFrame.replace-701"><a href="#DataFrame.replace-701"><span class="linenos">701</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">replacement_columns</span><span class="p">)</span> -</span><span id="DataFrame.replace-702"><a href="#DataFrame.replace-702"><span class="linenos">702</span></a> <span class="k">return</span> <span class="n">new_df</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.replace-655"><a href="#DataFrame.replace-655"><span class="linenos">655</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="DataFrame.replace-656"><a href="#DataFrame.replace-656"><span class="linenos">656</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span> +</span><span id="DataFrame.replace-657"><a href="#DataFrame.replace-657"><span class="linenos">657</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrame.replace-658"><a href="#DataFrame.replace-658"><span class="linenos">658</span></a> <span class="n">to_replace</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> +</span><span id="DataFrame.replace-659"><a href="#DataFrame.replace-659"><span class="linenos">659</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.replace-660"><a href="#DataFrame.replace-660"><span class="linenos">660</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">ColumnOrName</span><span class="p">]</span> <span class="o">|</span> <span class="n">ColumnOrName</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrame.replace-661"><a href="#DataFrame.replace-661"><span class="linenos">661</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.replace-662"><a href="#DataFrame.replace-662"><span class="linenos">662</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dataframe.sql.functions</span> <span class="kn">import</span> <span class="n">lit</span> +</span><span id="DataFrame.replace-663"><a href="#DataFrame.replace-663"><span class="linenos">663</span></a> +</span><span id="DataFrame.replace-664"><a href="#DataFrame.replace-664"><span class="linenos">664</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="DataFrame.replace-665"><a href="#DataFrame.replace-665"><span class="linenos">665</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.replace-666"><a href="#DataFrame.replace-666"><span class="linenos">666</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="n">new_df</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame.replace-667"><a href="#DataFrame.replace-667"><span class="linenos">667</span></a> <span class="n">all_column_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">column</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">}</span> +</span><span id="DataFrame.replace-668"><a href="#DataFrame.replace-668"><span class="linenos">668</span></a> +</span><span id="DataFrame.replace-669"><a href="#DataFrame.replace-669"><span class="linenos">669</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">subset</span><span class="p">)</span> <span class="k">if</span> <span class="n">subset</span> <span class="k">else</span> <span class="n">all_columns</span> +</span><span id="DataFrame.replace-670"><a href="#DataFrame.replace-670"><span class="linenos">670</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to_replace</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="DataFrame.replace-671"><a href="#DataFrame.replace-671"><span class="linenos">671</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">to_replace</span><span class="p">)</span> +</span><span id="DataFrame.replace-672"><a href="#DataFrame.replace-672"><span class="linenos">672</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">to_replace</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="DataFrame.replace-673"><a href="#DataFrame.replace-673"><span class="linenos">673</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">old_values</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">to_replace</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="DataFrame.replace-674"><a href="#DataFrame.replace-674"><span class="linenos">674</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">),</span> <span class="s2">"value must be a list since the replacements are a list"</span> +</span><span id="DataFrame.replace-675"><a href="#DataFrame.replace-675"><span class="linenos">675</span></a> <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">to_replace</span><span class="p">)</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span> +</span><span id="DataFrame.replace-676"><a href="#DataFrame.replace-676"><span class="linenos">676</span></a> <span class="n">value</span> +</span><span id="DataFrame.replace-677"><a href="#DataFrame.replace-677"><span class="linenos">677</span></a> <span class="p">),</span> <span class="s2">"the replacements and values must be the same length"</span> +</span><span id="DataFrame.replace-678"><a href="#DataFrame.replace-678"><span class="linenos">678</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="n">to_replace</span> +</span><span id="DataFrame.replace-679"><a href="#DataFrame.replace-679"><span class="linenos">679</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="n">value</span> +</span><span id="DataFrame.replace-680"><a href="#DataFrame.replace-680"><span class="linenos">680</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.replace-681"><a href="#DataFrame.replace-681"><span class="linenos">681</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">to_replace</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame.replace-682"><a href="#DataFrame.replace-682"><span class="linenos">682</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">value</span><span class="p">]</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="DataFrame.replace-683"><a href="#DataFrame.replace-683"><span class="linenos">683</span></a> <span class="n">old_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">old_values</span><span class="p">]</span> +</span><span id="DataFrame.replace-684"><a href="#DataFrame.replace-684"><span class="linenos">684</span></a> <span class="n">new_values</span> <span class="o">=</span> <span class="p">[</span><span class="n">lit</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">new_values</span><span class="p">]</span> +</span><span id="DataFrame.replace-685"><a href="#DataFrame.replace-685"><span class="linenos">685</span></a> +</span><span id="DataFrame.replace-686"><a href="#DataFrame.replace-686"><span class="linenos">686</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="DataFrame.replace-687"><a href="#DataFrame.replace-687"><span class="linenos">687</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="DataFrame.replace-688"><a href="#DataFrame.replace-688"><span class="linenos">688</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">Column</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> +</span><span id="DataFrame.replace-689"><a href="#DataFrame.replace-689"><span class="linenos">689</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">old_values</span><span class="p">,</span> <span class="n">new_values</span><span class="p">)):</span> +</span><span id="DataFrame.replace-690"><a href="#DataFrame.replace-690"><span class="linenos">690</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="DataFrame.replace-691"><a href="#DataFrame.replace-691"><span class="linenos">691</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">F</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> +</span><span id="DataFrame.replace-692"><a href="#DataFrame.replace-692"><span class="linenos">692</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.replace-693"><a href="#DataFrame.replace-693"><span class="linenos">693</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">when</span><span class="p">(</span><span class="n">column</span> <span class="o">==</span> <span class="n">old_value</span><span class="p">,</span> <span class="n">new_value</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="DataFrame.replace-694"><a href="#DataFrame.replace-694"><span class="linenos">694</span></a> <span class="n">replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">otherwise</span><span class="p">(</span><span class="n">column</span><span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span> +</span><span id="DataFrame.replace-695"><a href="#DataFrame.replace-695"><span class="linenos">695</span></a> <span class="n">column</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="DataFrame.replace-696"><a href="#DataFrame.replace-696"><span class="linenos">696</span></a> <span class="p">)</span> +</span><span id="DataFrame.replace-697"><a href="#DataFrame.replace-697"><span class="linenos">697</span></a> +</span><span id="DataFrame.replace-698"><a href="#DataFrame.replace-698"><span class="linenos">698</span></a> <span class="n">replacement_mapping</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">all_column_mapping</span><span class="p">,</span> <span class="o">**</span><span class="n">replacement_mapping</span><span class="p">}</span> +</span><span id="DataFrame.replace-699"><a href="#DataFrame.replace-699"><span class="linenos">699</span></a> <span class="n">replacement_columns</span> <span class="o">=</span> <span class="p">[</span><span class="n">replacement_mapping</span><span class="p">[</span><span class="n">column</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">all_columns</span><span class="p">]</span> +</span><span id="DataFrame.replace-700"><a href="#DataFrame.replace-700"><span class="linenos">700</span></a> <span class="n">new_df</span> <span class="o">=</span> <span class="n">new_df</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">replacement_columns</span><span class="p">)</span> +</span><span id="DataFrame.replace-701"><a href="#DataFrame.replace-701"><span class="linenos">701</span></a> <span class="k">return</span> <span class="n">new_df</span> </span></pre></div> @@ -2378,18 +2354,18 @@ and check if it matches the type of the value provided. If not then make it null </div> <a class="headerlink" href="#DataFrame.withColumn"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.withColumn-704"><a href="#DataFrame.withColumn-704"><span class="linenos">704</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame.withColumn-705"><a href="#DataFrame.withColumn-705"><span class="linenos">705</span></a> <span class="k">def</span> <span class="nf">withColumn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">colName</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">col</span><span class="p">:</span> <span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.withColumn-706"><a href="#DataFrame.withColumn-706"><span class="linenos">706</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">col</span><span class="p">)</span> -</span><span id="DataFrame.withColumn-707"><a href="#DataFrame.withColumn-707"><span class="linenos">707</span></a> <span class="n">existing_col_names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> -</span><span id="DataFrame.withColumn-708"><a href="#DataFrame.withColumn-708"><span class="linenos">708</span></a> <span class="n">existing_col_index</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="DataFrame.withColumn-709"><a href="#DataFrame.withColumn-709"><span class="linenos">709</span></a> <span class="n">existing_col_names</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">colName</span><span class="p">)</span> <span class="k">if</span> <span class="n">colName</span> <span class="ow">in</span> <span class="n">existing_col_names</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="DataFrame.withColumn-710"><a href="#DataFrame.withColumn-710"><span class="linenos">710</span></a> <span class="p">)</span> -</span><span id="DataFrame.withColumn-711"><a href="#DataFrame.withColumn-711"><span class="linenos">711</span></a> <span class="k">if</span> <span class="n">existing_col_index</span><span class="p">:</span> -</span><span id="DataFrame.withColumn-712"><a href="#DataFrame.withColumn-712"><span class="linenos">712</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.withColumn-713"><a href="#DataFrame.withColumn-713"><span class="linenos">713</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="n">existing_col_index</span><span class="p">]</span> <span class="o">=</span> <span class="n">col</span><span class="o">.</span><span class="n">expression</span> -</span><span id="DataFrame.withColumn-714"><a href="#DataFrame.withColumn-714"><span class="linenos">714</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</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="DataFrame.withColumn-715"><a href="#DataFrame.withColumn-715"><span class="linenos">715</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="n">colName</span><span class="p">),</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.withColumn-703"><a href="#DataFrame.withColumn-703"><span class="linenos">703</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame.withColumn-704"><a href="#DataFrame.withColumn-704"><span class="linenos">704</span></a> <span class="k">def</span> <span class="nf">withColumn</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">colName</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">col</span><span class="p">:</span> <span class="n">Column</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.withColumn-705"><a href="#DataFrame.withColumn-705"><span class="linenos">705</span></a> <span class="n">col</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_col</span><span class="p">(</span><span class="n">col</span><span class="p">)</span> +</span><span id="DataFrame.withColumn-706"><a href="#DataFrame.withColumn-706"><span class="linenos">706</span></a> <span class="n">existing_col_names</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> +</span><span id="DataFrame.withColumn-707"><a href="#DataFrame.withColumn-707"><span class="linenos">707</span></a> <span class="n">existing_col_index</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="DataFrame.withColumn-708"><a href="#DataFrame.withColumn-708"><span class="linenos">708</span></a> <span class="n">existing_col_names</span><span class="o">.</span><span class="n">index</span><span class="p">(</span><span class="n">colName</span><span class="p">)</span> <span class="k">if</span> <span class="n">colName</span> <span class="ow">in</span> <span class="n">existing_col_names</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="DataFrame.withColumn-709"><a href="#DataFrame.withColumn-709"><span class="linenos">709</span></a> <span class="p">)</span> +</span><span id="DataFrame.withColumn-710"><a href="#DataFrame.withColumn-710"><span class="linenos">710</span></a> <span class="k">if</span> <span class="n">existing_col_index</span><span class="p">:</span> +</span><span id="DataFrame.withColumn-711"><a href="#DataFrame.withColumn-711"><span class="linenos">711</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.withColumn-712"><a href="#DataFrame.withColumn-712"><span class="linenos">712</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="n">existing_col_index</span><span class="p">]</span> <span class="o">=</span> <span class="n">col</span><span class="o">.</span><span class="n">expression</span> +</span><span id="DataFrame.withColumn-713"><a href="#DataFrame.withColumn-713"><span class="linenos">713</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</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="DataFrame.withColumn-714"><a href="#DataFrame.withColumn-714"><span class="linenos">714</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="n">colName</span><span class="p">),</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span></pre></div> @@ -2408,22 +2384,22 @@ and check if it matches the type of the value provided. If not then make it null </div> <a class="headerlink" href="#DataFrame.withColumnRenamed"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.withColumnRenamed-717"><a href="#DataFrame.withColumnRenamed-717"><span class="linenos">717</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame.withColumnRenamed-718"><a href="#DataFrame.withColumnRenamed-718"><span class="linenos">718</span></a> <span class="k">def</span> <span class="nf">withColumnRenamed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">existing</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">new</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="DataFrame.withColumnRenamed-719"><a href="#DataFrame.withColumnRenamed-719"><span class="linenos">719</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="DataFrame.withColumnRenamed-720"><a href="#DataFrame.withColumnRenamed-720"><span class="linenos">720</span></a> <span class="n">existing_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.withColumnRenamed-721"><a href="#DataFrame.withColumnRenamed-721"><span class="linenos">721</span></a> <span class="n">expression</span> -</span><span id="DataFrame.withColumnRenamed-722"><a href="#DataFrame.withColumnRenamed-722"><span class="linenos">722</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="DataFrame.withColumnRenamed-723"><a href="#DataFrame.withColumnRenamed-723"><span class="linenos">723</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="n">existing</span> -</span><span id="DataFrame.withColumnRenamed-724"><a href="#DataFrame.withColumnRenamed-724"><span class="linenos">724</span></a> <span class="p">]</span> -</span><span id="DataFrame.withColumnRenamed-725"><a href="#DataFrame.withColumnRenamed-725"><span class="linenos">725</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">existing_columns</span><span class="p">:</span> -</span><span id="DataFrame.withColumnRenamed-726"><a href="#DataFrame.withColumnRenamed-726"><span class="linenos">726</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Tried to rename a column that doesn't exist"</span><span class="p">)</span> -</span><span id="DataFrame.withColumnRenamed-727"><a href="#DataFrame.withColumnRenamed-727"><span class="linenos">727</span></a> <span class="k">for</span> <span class="n">existing_column</span> <span class="ow">in</span> <span class="n">existing_columns</span><span class="p">:</span> -</span><span id="DataFrame.withColumnRenamed-728"><a href="#DataFrame.withColumnRenamed-728"><span class="linenos">728</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">existing_column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="DataFrame.withColumnRenamed-729"><a href="#DataFrame.withColumnRenamed-729"><span class="linenos">729</span></a> <span class="n">existing_column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">existing_column</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">new</span><span class="p">))</span> -</span><span id="DataFrame.withColumnRenamed-730"><a href="#DataFrame.withColumnRenamed-730"><span class="linenos">730</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataFrame.withColumnRenamed-731"><a href="#DataFrame.withColumnRenamed-731"><span class="linenos">731</span></a> <span class="n">existing_column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">new</span><span class="p">))</span> -</span><span id="DataFrame.withColumnRenamed-732"><a href="#DataFrame.withColumnRenamed-732"><span class="linenos">732</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.withColumnRenamed-716"><a href="#DataFrame.withColumnRenamed-716"><span class="linenos">716</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame.withColumnRenamed-717"><a href="#DataFrame.withColumnRenamed-717"><span class="linenos">717</span></a> <span class="k">def</span> <span class="nf">withColumnRenamed</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">existing</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">new</span><span class="p">:</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="DataFrame.withColumnRenamed-718"><a href="#DataFrame.withColumnRenamed-718"><span class="linenos">718</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="DataFrame.withColumnRenamed-719"><a href="#DataFrame.withColumnRenamed-719"><span class="linenos">719</span></a> <span class="n">existing_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.withColumnRenamed-720"><a href="#DataFrame.withColumnRenamed-720"><span class="linenos">720</span></a> <span class="n">expression</span> +</span><span id="DataFrame.withColumnRenamed-721"><a href="#DataFrame.withColumnRenamed-721"><span class="linenos">721</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="DataFrame.withColumnRenamed-722"><a href="#DataFrame.withColumnRenamed-722"><span class="linenos">722</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="o">==</span> <span class="n">existing</span> +</span><span id="DataFrame.withColumnRenamed-723"><a href="#DataFrame.withColumnRenamed-723"><span class="linenos">723</span></a> <span class="p">]</span> +</span><span id="DataFrame.withColumnRenamed-724"><a href="#DataFrame.withColumnRenamed-724"><span class="linenos">724</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">existing_columns</span><span class="p">:</span> +</span><span id="DataFrame.withColumnRenamed-725"><a href="#DataFrame.withColumnRenamed-725"><span class="linenos">725</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Tried to rename a column that doesn't exist"</span><span class="p">)</span> +</span><span id="DataFrame.withColumnRenamed-726"><a href="#DataFrame.withColumnRenamed-726"><span class="linenos">726</span></a> <span class="k">for</span> <span class="n">existing_column</span> <span class="ow">in</span> <span class="n">existing_columns</span><span class="p">:</span> +</span><span id="DataFrame.withColumnRenamed-727"><a href="#DataFrame.withColumnRenamed-727"><span class="linenos">727</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">existing_column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="DataFrame.withColumnRenamed-728"><a href="#DataFrame.withColumnRenamed-728"><span class="linenos">728</span></a> <span class="n">existing_column</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">existing_column</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">new</span><span class="p">))</span> +</span><span id="DataFrame.withColumnRenamed-729"><a href="#DataFrame.withColumnRenamed-729"><span class="linenos">729</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataFrame.withColumnRenamed-730"><a href="#DataFrame.withColumnRenamed-730"><span class="linenos">730</span></a> <span class="n">existing_column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">new</span><span class="p">))</span> +</span><span id="DataFrame.withColumnRenamed-731"><a href="#DataFrame.withColumnRenamed-731"><span class="linenos">731</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -2442,16 +2418,16 @@ and check if it matches the type of the value provided. If not then make it null </div> <a class="headerlink" href="#DataFrame.drop"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.drop-734"><a href="#DataFrame.drop-734"><span class="linenos">734</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> -</span><span id="DataFrame.drop-735"><a href="#DataFrame.drop-735"><span class="linenos">735</span></a> <span class="k">def</span> <span class="nf">drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.drop-736"><a href="#DataFrame.drop-736"><span class="linenos">736</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> -</span><span id="DataFrame.drop-737"><a href="#DataFrame.drop-737"><span class="linenos">737</span></a> <span class="n">drop_cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame.drop-738"><a href="#DataFrame.drop-738"><span class="linenos">738</span></a> <span class="n">new_columns</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="DataFrame.drop-739"><a href="#DataFrame.drop-739"><span class="linenos">739</span></a> <span class="n">col</span> -</span><span id="DataFrame.drop-740"><a href="#DataFrame.drop-740"><span class="linenos">740</span></a> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">all_columns</span> -</span><span id="DataFrame.drop-741"><a href="#DataFrame.drop-741"><span class="linenos">741</span></a> <span class="k">if</span> <span class="n">col</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="n">drop_column</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="k">for</span> <span class="n">drop_column</span> <span class="ow">in</span> <span class="n">drop_cols</span><span class="p">]</span> -</span><span id="DataFrame.drop-742"><a href="#DataFrame.drop-742"><span class="linenos">742</span></a> <span class="p">]</span> -</span><span id="DataFrame.drop-743"><a href="#DataFrame.drop-743"><span class="linenos">743</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">new_columns</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.drop-733"><a href="#DataFrame.drop-733"><span class="linenos">733</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">SELECT</span><span class="p">)</span> +</span><span id="DataFrame.drop-734"><a href="#DataFrame.drop-734"><span class="linenos">734</span></a> <span class="k">def</span> <span class="nf">drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Column</span><span class="p">])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.drop-735"><a href="#DataFrame.drop-735"><span class="linenos">735</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_outer_select_columns</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> +</span><span id="DataFrame.drop-736"><a href="#DataFrame.drop-736"><span class="linenos">736</span></a> <span class="n">drop_cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame.drop-737"><a href="#DataFrame.drop-737"><span class="linenos">737</span></a> <span class="n">new_columns</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="DataFrame.drop-738"><a href="#DataFrame.drop-738"><span class="linenos">738</span></a> <span class="n">col</span> +</span><span id="DataFrame.drop-739"><a href="#DataFrame.drop-739"><span class="linenos">739</span></a> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="n">all_columns</span> +</span><span id="DataFrame.drop-740"><a href="#DataFrame.drop-740"><span class="linenos">740</span></a> <span class="k">if</span> <span class="n">col</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="n">drop_column</span><span class="o">.</span><span class="n">alias_or_name</span> <span class="k">for</span> <span class="n">drop_column</span> <span class="ow">in</span> <span class="n">drop_cols</span><span class="p">]</span> +</span><span id="DataFrame.drop-741"><a href="#DataFrame.drop-741"><span class="linenos">741</span></a> <span class="p">]</span> +</span><span id="DataFrame.drop-742"><a href="#DataFrame.drop-742"><span class="linenos">742</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">new_columns</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> </span></pre></div> @@ -2470,9 +2446,9 @@ and check if it matches the type of the value provided. If not then make it null </div> <a class="headerlink" href="#DataFrame.limit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.limit-745"><a href="#DataFrame.limit-745"><span class="linenos">745</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">)</span> -</span><span id="DataFrame.limit-746"><a href="#DataFrame.limit-746"><span class="linenos">746</span></a> <span class="k">def</span> <span class="nf">limit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.limit-747"><a href="#DataFrame.limit-747"><span class="linenos">747</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">limit</span><span class="p">(</span><span class="n">num</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.limit-744"><a href="#DataFrame.limit-744"><span class="linenos">744</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">)</span> +</span><span id="DataFrame.limit-745"><a href="#DataFrame.limit-745"><span class="linenos">745</span></a> <span class="k">def</span> <span class="nf">limit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">num</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.limit-746"><a href="#DataFrame.limit-746"><span class="linenos">746</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">(</span><span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">limit</span><span class="p">(</span><span class="n">num</span><span class="p">))</span> </span></pre></div> @@ -2491,15 +2467,15 @@ and check if it matches the type of the value provided. If not then make it null </div> <a class="headerlink" href="#DataFrame.hint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.hint-749"><a href="#DataFrame.hint-749"><span class="linenos">749</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame.hint-750"><a href="#DataFrame.hint-750"><span class="linenos">750</span></a> <span class="k">def</span> <span class="nf">hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">parameters</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.hint-751"><a href="#DataFrame.hint-751"><span class="linenos">751</span></a> <span class="n">parameter_list</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> -</span><span id="DataFrame.hint-752"><a href="#DataFrame.hint-752"><span class="linenos">752</span></a> <span class="n">parameter_columns</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="DataFrame.hint-753"><a href="#DataFrame.hint-753"><span class="linenos">753</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">parameter_list</span><span class="p">)</span> -</span><span id="DataFrame.hint-754"><a href="#DataFrame.hint-754"><span class="linenos">754</span></a> <span class="k">if</span> <span class="n">parameters</span> -</span><span id="DataFrame.hint-755"><a href="#DataFrame.hint-755"><span class="linenos">755</span></a> <span class="k">else</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">])</span> -</span><span id="DataFrame.hint-756"><a href="#DataFrame.hint-756"><span class="linenos">756</span></a> <span class="p">)</span> -</span><span id="DataFrame.hint-757"><a href="#DataFrame.hint-757"><span class="linenos">757</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">parameter_columns</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.hint-748"><a href="#DataFrame.hint-748"><span class="linenos">748</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame.hint-749"><a href="#DataFrame.hint-749"><span class="linenos">749</span></a> <span class="k">def</span> <span class="nf">hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">parameters</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.hint-750"><a href="#DataFrame.hint-750"><span class="linenos">750</span></a> <span class="n">parameter_list</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">parameters</span><span class="p">)</span> +</span><span id="DataFrame.hint-751"><a href="#DataFrame.hint-751"><span class="linenos">751</span></a> <span class="n">parameter_columns</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="DataFrame.hint-752"><a href="#DataFrame.hint-752"><span class="linenos">752</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">parameter_list</span><span class="p">)</span> +</span><span id="DataFrame.hint-753"><a href="#DataFrame.hint-753"><span class="linenos">753</span></a> <span class="k">if</span> <span class="n">parameters</span> +</span><span id="DataFrame.hint-754"><a href="#DataFrame.hint-754"><span class="linenos">754</span></a> <span class="k">else</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">([</span><span class="bp">self</span><span class="o">.</span><span class="n">sequence_id</span><span class="p">])</span> +</span><span id="DataFrame.hint-755"><a href="#DataFrame.hint-755"><span class="linenos">755</span></a> <span class="p">)</span> +</span><span id="DataFrame.hint-756"><a href="#DataFrame.hint-756"><span class="linenos">756</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">parameter_columns</span><span class="p">)</span> </span></pre></div> @@ -2512,20 +2488,20 @@ and check if it matches the type of the value provided. If not then make it null <div class="decorator">@operation(Operation.NO_OP)</div> <span class="def">def</span> - <span class="name">repartition</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439886592'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439948896'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">sqlglot.dataframe.sql.DataFrame</a></span>:</span></span> + <span class="name">repartition</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512211332416'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512211476032'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">sqlglot.dataframe.sql.DataFrame</a></span>:</span></span> <label class="view-source-button" for="DataFrame.repartition-view-source"><span>View Source</span></label> </div> <a class="headerlink" href="#DataFrame.repartition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.repartition-759"><a href="#DataFrame.repartition-759"><span class="linenos">759</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame.repartition-760"><a href="#DataFrame.repartition-760"><span class="linenos">760</span></a> <span class="k">def</span> <span class="nf">repartition</span><span class="p">(</span> -</span><span id="DataFrame.repartition-761"><a href="#DataFrame.repartition-761"><span class="linenos">761</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">ColumnOrName</span><span class="p">],</span> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">ColumnOrName</span> -</span><span id="DataFrame.repartition-762"><a href="#DataFrame.repartition-762"><span class="linenos">762</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.repartition-763"><a href="#DataFrame.repartition-763"><span class="linenos">763</span></a> <span class="n">num_partition_cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">numPartitions</span><span class="p">)</span> -</span><span id="DataFrame.repartition-764"><a href="#DataFrame.repartition-764"><span class="linenos">764</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> -</span><span id="DataFrame.repartition-765"><a href="#DataFrame.repartition-765"><span class="linenos">765</span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">num_partition_cols</span> <span class="o">+</span> <span class="n">columns</span> -</span><span id="DataFrame.repartition-766"><a href="#DataFrame.repartition-766"><span class="linenos">766</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="s2">"repartition"</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.repartition-758"><a href="#DataFrame.repartition-758"><span class="linenos">758</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame.repartition-759"><a href="#DataFrame.repartition-759"><span class="linenos">759</span></a> <span class="k">def</span> <span class="nf">repartition</span><span class="p">(</span> +</span><span id="DataFrame.repartition-760"><a href="#DataFrame.repartition-760"><span class="linenos">760</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">ColumnOrName</span><span class="p">],</span> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">ColumnOrName</span> +</span><span id="DataFrame.repartition-761"><a href="#DataFrame.repartition-761"><span class="linenos">761</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.repartition-762"><a href="#DataFrame.repartition-762"><span class="linenos">762</span></a> <span class="n">num_partition_cols</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_list_of_columns</span><span class="p">(</span><span class="n">numPartitions</span><span class="p">)</span> +</span><span id="DataFrame.repartition-763"><a href="#DataFrame.repartition-763"><span class="linenos">763</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ensure_and_normalize_cols</span><span class="p">(</span><span class="n">cols</span><span class="p">)</span> +</span><span id="DataFrame.repartition-764"><a href="#DataFrame.repartition-764"><span class="linenos">764</span></a> <span class="n">args</span> <span class="o">=</span> <span class="n">num_partition_cols</span> <span class="o">+</span> <span class="n">columns</span> +</span><span id="DataFrame.repartition-765"><a href="#DataFrame.repartition-765"><span class="linenos">765</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="s2">"repartition"</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> </span></pre></div> @@ -2544,10 +2520,10 @@ and check if it matches the type of the value provided. If not then make it null </div> <a class="headerlink" href="#DataFrame.coalesce"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.coalesce-768"><a href="#DataFrame.coalesce-768"><span class="linenos">768</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame.coalesce-769"><a href="#DataFrame.coalesce-769"><span class="linenos">769</span></a> <span class="k">def</span> <span class="nf">coalesce</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">numPartitions</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.coalesce-770"><a href="#DataFrame.coalesce-770"><span class="linenos">770</span></a> <span class="n">num_partitions</span> <span class="o">=</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">([</span><span class="n">numPartitions</span><span class="p">])</span> -</span><span id="DataFrame.coalesce-771"><a href="#DataFrame.coalesce-771"><span class="linenos">771</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="s2">"coalesce"</span><span class="p">,</span> <span class="n">num_partitions</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.coalesce-767"><a href="#DataFrame.coalesce-767"><span class="linenos">767</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame.coalesce-768"><a href="#DataFrame.coalesce-768"><span class="linenos">768</span></a> <span class="k">def</span> <span class="nf">coalesce</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">numPartitions</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.coalesce-769"><a href="#DataFrame.coalesce-769"><span class="linenos">769</span></a> <span class="n">num_partitions</span> <span class="o">=</span> <span class="n">Column</span><span class="o">.</span><span class="n">ensure_cols</span><span class="p">([</span><span class="n">numPartitions</span><span class="p">])</span> +</span><span id="DataFrame.coalesce-770"><a href="#DataFrame.coalesce-770"><span class="linenos">770</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_hint</span><span class="p">(</span><span class="s2">"coalesce"</span><span class="p">,</span> <span class="n">num_partitions</span><span class="p">)</span> </span></pre></div> @@ -2566,9 +2542,9 @@ and check if it matches the type of the value provided. If not then make it null </div> <a class="headerlink" href="#DataFrame.cache"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.cache-773"><a href="#DataFrame.cache-773"><span class="linenos">773</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame.cache-774"><a href="#DataFrame.cache-774"><span class="linenos">774</span></a> <span class="k">def</span> <span class="nf">cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.cache-775"><a href="#DataFrame.cache-775"><span class="linenos">775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">(</span><span class="n">storage_level</span><span class="o">=</span><span class="s2">"MEMORY_AND_DISK"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.cache-772"><a href="#DataFrame.cache-772"><span class="linenos">772</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame.cache-773"><a href="#DataFrame.cache-773"><span class="linenos">773</span></a> <span class="k">def</span> <span class="nf">cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.cache-774"><a href="#DataFrame.cache-774"><span class="linenos">774</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">(</span><span class="n">storage_level</span><span class="o">=</span><span class="s2">"MEMORY_AND_DISK"</span><span class="p">)</span> </span></pre></div> @@ -2587,12 +2563,12 @@ and check if it matches the type of the value provided. If not then make it null </div> <a class="headerlink" href="#DataFrame.persist"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.persist-777"><a href="#DataFrame.persist-777"><span class="linenos">777</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> -</span><span id="DataFrame.persist-778"><a href="#DataFrame.persist-778"><span class="linenos">778</span></a> <span class="k">def</span> <span class="nf">persist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">storageLevel</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"MEMORY_AND_DISK_SER"</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrame.persist-779"><a href="#DataFrame.persist-779"><span class="linenos">779</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="DataFrame.persist-780"><a href="#DataFrame.persist-780"><span class="linenos">780</span></a><span class="sd"> Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html</span> -</span><span id="DataFrame.persist-781"><a href="#DataFrame.persist-781"><span class="linenos">781</span></a><span class="sd"> """</span> -</span><span id="DataFrame.persist-782"><a href="#DataFrame.persist-782"><span class="linenos">782</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">(</span><span class="n">storageLevel</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrame.persist-776"><a href="#DataFrame.persist-776"><span class="linenos">776</span></a> <span class="nd">@operation</span><span class="p">(</span><span class="n">Operation</span><span class="o">.</span><span class="n">NO_OP</span><span class="p">)</span> +</span><span id="DataFrame.persist-777"><a href="#DataFrame.persist-777"><span class="linenos">777</span></a> <span class="k">def</span> <span class="nf">persist</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">storageLevel</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"MEMORY_AND_DISK_SER"</span><span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrame.persist-778"><a href="#DataFrame.persist-778"><span class="linenos">778</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="DataFrame.persist-779"><a href="#DataFrame.persist-779"><span class="linenos">779</span></a><span class="sd"> Storage Level Options: https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-aux-cache-cache-table.html</span> +</span><span id="DataFrame.persist-780"><a href="#DataFrame.persist-780"><span class="linenos">780</span></a><span class="sd"> """</span> +</span><span id="DataFrame.persist-781"><a href="#DataFrame.persist-781"><span class="linenos">781</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cache</span><span class="p">(</span><span class="n">storageLevel</span><span class="p">)</span> </span></pre></div> @@ -3180,7 +3156,7 @@ and check if it matches the type of the value provided. If not then make it null <input id="Column.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr function"> - <span class="name">Column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439967056'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span>)</span> + <span class="name">Column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512213723520'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span>)</span> <label class="view-source-button" for="Column.__init__-view-source"><span>View Source</span></label> @@ -3208,7 +3184,7 @@ and check if it matches the type of the value provided. If not then make it null <div class="decorator">@classmethod</div> <span class="def">def</span> - <span class="name">ensure_col</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483440277968'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span><span class="return-annotation">):</span></span> + <span class="name">ensure_col</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512211539456'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span><span class="return-annotation">):</span></span> <label class="view-source-button" for="Column.ensure_col-view-source"><span>View Source</span></label> @@ -3229,7 +3205,7 @@ and check if it matches the type of the value provided. If not then make it null <div class="decorator">@classmethod</div> <span class="def">def</span> - <span class="name">ensure_cols</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">args</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438527104'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span><span class="p">]</span>:</span></span> + <span class="name">ensure_cols</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">args</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512211530224'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span><span class="p">]</span>:</span></span> <label class="view-source-button" for="Column.ensure_cols-view-source"><span>View Source</span></label> @@ -3250,7 +3226,7 @@ and check if it matches the type of the value provided. If not then make it null <div class="decorator">@classmethod</div> <span class="def">def</span> - <span class="name">invoke_anonymous_function</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438591760'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438648176'</span><span class="o">></span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> + <span class="name">invoke_anonymous_function</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512211656352'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512211702864'</span><span class="o">></span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> <label class="view-source-button" for="Column.invoke_anonymous_function-view-source"><span>View Source</span></label> @@ -3277,7 +3253,7 @@ and check if it matches the type of the value provided. If not then make it null <div class="decorator">@classmethod</div> <span class="def">def</span> - <span class="name">invoke_expression_over_column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438730096'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">callable_expression</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> + <span class="name">invoke_expression_over_column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512211833936'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">callable_expression</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> <label class="view-source-button" for="Column.invoke_expression_over_column-view-source"><span>View Source</span></label> @@ -3314,7 +3290,7 @@ and check if it matches the type of the value provided. If not then make it null <div class="attr function"> <span class="def">def</span> - <span class="name">binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438706640'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> + <span class="name">binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512211366576'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> <label class="view-source-button" for="Column.binary_op-view-source"><span>View Source</span></label> @@ -3335,7 +3311,7 @@ and check if it matches the type of the value provided. If not then make it null <div class="attr function"> <span class="def">def</span> - <span class="name">inverse_binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438814656'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> + <span class="name">inverse_binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512211984032'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> <label class="view-source-button" for="Column.inverse_binary_op-view-source"><span>View Source</span></label> @@ -3845,7 +3821,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> <div class="attr function"> <span class="def">def</span> - <span class="name">isin</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438973072'</span><span class="o">></span><span class="p">,</span> <span class="n">Iterable</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438973072'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">):</span></span> + <span class="name">isin</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512212096848'</span><span class="o">></span><span class="p">,</span> <span class="n">Iterable</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512212096848'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">):</span></span> <label class="view-source-button" for="Column.isin-view-source"><span>View Source</span></label> @@ -3866,7 +3842,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> <div class="attr function"> <span class="def">def</span> - <span class="name">between</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">lowerBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439030096'</span><span class="o">></span>,</span><span class="param"> <span class="n">upperBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439074304'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> + <span class="name">between</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">lowerBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512212218784'</span><span class="o">></span>,</span><span class="param"> <span class="n">upperBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512212292832'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> <label class="view-source-button" for="Column.between-view-source"><span>View Source</span></label> @@ -3901,7 +3877,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> <div class="attr function"> <span class="def">def</span> - <span class="name">over</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">window</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439149984'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> + <span class="name">over</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">window</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512212334048'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">sqlglot.dataframe.sql.Column</a></span>:</span></span> <label class="view-source-button" for="Column.over-view-source"><span>View Source</span></label> @@ -3929,32 +3905,32 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> </div> <a class="headerlink" href="#DataFrameNaFunctions"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions-785"><a href="#DataFrameNaFunctions-785"><span class="linenos">785</span></a><span class="k">class</span> <span class="nc">DataFrameNaFunctions</span><span class="p">:</span> -</span><span id="DataFrameNaFunctions-786"><a href="#DataFrameNaFunctions-786"><span class="linenos">786</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">df</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">):</span> -</span><span id="DataFrameNaFunctions-787"><a href="#DataFrameNaFunctions-787"><span class="linenos">787</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">df</span> <span class="o">=</span> <span class="n">df</span> -</span><span id="DataFrameNaFunctions-788"><a href="#DataFrameNaFunctions-788"><span class="linenos">788</span></a> -</span><span id="DataFrameNaFunctions-789"><a href="#DataFrameNaFunctions-789"><span class="linenos">789</span></a> <span class="k">def</span> <span class="nf">drop</span><span class="p">(</span> -</span><span id="DataFrameNaFunctions-790"><a href="#DataFrameNaFunctions-790"><span class="linenos">790</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions-791"><a href="#DataFrameNaFunctions-791"><span class="linenos">791</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"any"</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions-792"><a href="#DataFrameNaFunctions-792"><span class="linenos">792</span></a> <span class="n">thresh</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions-793"><a href="#DataFrameNaFunctions-793"><span class="linenos">793</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions-794"><a href="#DataFrameNaFunctions-794"><span class="linenos">794</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrameNaFunctions-795"><a href="#DataFrameNaFunctions-795"><span class="linenos">795</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">how</span><span class="o">=</span><span class="n">how</span><span class="p">,</span> <span class="n">thresh</span><span class="o">=</span><span class="n">thresh</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> -</span><span id="DataFrameNaFunctions-796"><a href="#DataFrameNaFunctions-796"><span class="linenos">796</span></a> -</span><span id="DataFrameNaFunctions-797"><a href="#DataFrameNaFunctions-797"><span class="linenos">797</span></a> <span class="k">def</span> <span class="nf">fill</span><span class="p">(</span> -</span><span id="DataFrameNaFunctions-798"><a href="#DataFrameNaFunctions-798"><span class="linenos">798</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions-799"><a href="#DataFrameNaFunctions-799"><span class="linenos">799</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]],</span> -</span><span id="DataFrameNaFunctions-800"><a href="#DataFrameNaFunctions-800"><span class="linenos">800</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions-801"><a href="#DataFrameNaFunctions-801"><span class="linenos">801</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrameNaFunctions-802"><a href="#DataFrameNaFunctions-802"><span class="linenos">802</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> -</span><span id="DataFrameNaFunctions-803"><a href="#DataFrameNaFunctions-803"><span class="linenos">803</span></a> -</span><span id="DataFrameNaFunctions-804"><a href="#DataFrameNaFunctions-804"><span class="linenos">804</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span> -</span><span id="DataFrameNaFunctions-805"><a href="#DataFrameNaFunctions-805"><span class="linenos">805</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions-806"><a href="#DataFrameNaFunctions-806"><span class="linenos">806</span></a> <span class="n">to_replace</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> -</span><span id="DataFrameNaFunctions-807"><a href="#DataFrameNaFunctions-807"><span class="linenos">807</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions-808"><a href="#DataFrameNaFunctions-808"><span class="linenos">808</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions-809"><a href="#DataFrameNaFunctions-809"><span class="linenos">809</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrameNaFunctions-810"><a href="#DataFrameNaFunctions-810"><span class="linenos">810</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">to_replace</span><span class="o">=</span><span class="n">to_replace</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions-784"><a href="#DataFrameNaFunctions-784"><span class="linenos">784</span></a><span class="k">class</span> <span class="nc">DataFrameNaFunctions</span><span class="p">:</span> +</span><span id="DataFrameNaFunctions-785"><a href="#DataFrameNaFunctions-785"><span class="linenos">785</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">df</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">):</span> +</span><span id="DataFrameNaFunctions-786"><a href="#DataFrameNaFunctions-786"><span class="linenos">786</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">df</span> <span class="o">=</span> <span class="n">df</span> +</span><span id="DataFrameNaFunctions-787"><a href="#DataFrameNaFunctions-787"><span class="linenos">787</span></a> +</span><span id="DataFrameNaFunctions-788"><a href="#DataFrameNaFunctions-788"><span class="linenos">788</span></a> <span class="k">def</span> <span class="nf">drop</span><span class="p">(</span> +</span><span id="DataFrameNaFunctions-789"><a href="#DataFrameNaFunctions-789"><span class="linenos">789</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions-790"><a href="#DataFrameNaFunctions-790"><span class="linenos">790</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"any"</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions-791"><a href="#DataFrameNaFunctions-791"><span class="linenos">791</span></a> <span class="n">thresh</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions-792"><a href="#DataFrameNaFunctions-792"><span class="linenos">792</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions-793"><a href="#DataFrameNaFunctions-793"><span class="linenos">793</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrameNaFunctions-794"><a href="#DataFrameNaFunctions-794"><span class="linenos">794</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">how</span><span class="o">=</span><span class="n">how</span><span class="p">,</span> <span class="n">thresh</span><span class="o">=</span><span class="n">thresh</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> +</span><span id="DataFrameNaFunctions-795"><a href="#DataFrameNaFunctions-795"><span class="linenos">795</span></a> +</span><span id="DataFrameNaFunctions-796"><a href="#DataFrameNaFunctions-796"><span class="linenos">796</span></a> <span class="k">def</span> <span class="nf">fill</span><span class="p">(</span> +</span><span id="DataFrameNaFunctions-797"><a href="#DataFrameNaFunctions-797"><span class="linenos">797</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions-798"><a href="#DataFrameNaFunctions-798"><span class="linenos">798</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]],</span> +</span><span id="DataFrameNaFunctions-799"><a href="#DataFrameNaFunctions-799"><span class="linenos">799</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions-800"><a href="#DataFrameNaFunctions-800"><span class="linenos">800</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrameNaFunctions-801"><a href="#DataFrameNaFunctions-801"><span class="linenos">801</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> +</span><span id="DataFrameNaFunctions-802"><a href="#DataFrameNaFunctions-802"><span class="linenos">802</span></a> +</span><span id="DataFrameNaFunctions-803"><a href="#DataFrameNaFunctions-803"><span class="linenos">803</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span> +</span><span id="DataFrameNaFunctions-804"><a href="#DataFrameNaFunctions-804"><span class="linenos">804</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions-805"><a href="#DataFrameNaFunctions-805"><span class="linenos">805</span></a> <span class="n">to_replace</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> +</span><span id="DataFrameNaFunctions-806"><a href="#DataFrameNaFunctions-806"><span class="linenos">806</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions-807"><a href="#DataFrameNaFunctions-807"><span class="linenos">807</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions-808"><a href="#DataFrameNaFunctions-808"><span class="linenos">808</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrameNaFunctions-809"><a href="#DataFrameNaFunctions-809"><span class="linenos">809</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">to_replace</span><span class="o">=</span><span class="n">to_replace</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> </span></pre></div> @@ -3970,8 +3946,8 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> </div> <a class="headerlink" href="#DataFrameNaFunctions.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions.__init__-786"><a href="#DataFrameNaFunctions.__init__-786"><span class="linenos">786</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">df</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">):</span> -</span><span id="DataFrameNaFunctions.__init__-787"><a href="#DataFrameNaFunctions.__init__-787"><span class="linenos">787</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">df</span> <span class="o">=</span> <span class="n">df</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions.__init__-785"><a href="#DataFrameNaFunctions.__init__-785"><span class="linenos">785</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">df</span><span class="p">:</span> <span class="n">DataFrame</span><span class="p">):</span> +</span><span id="DataFrameNaFunctions.__init__-786"><a href="#DataFrameNaFunctions.__init__-786"><span class="linenos">786</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">df</span> <span class="o">=</span> <span class="n">df</span> </span></pre></div> @@ -3989,13 +3965,13 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> </div> <a class="headerlink" href="#DataFrameNaFunctions.drop"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions.drop-789"><a href="#DataFrameNaFunctions.drop-789"><span class="linenos">789</span></a> <span class="k">def</span> <span class="nf">drop</span><span class="p">(</span> -</span><span id="DataFrameNaFunctions.drop-790"><a href="#DataFrameNaFunctions.drop-790"><span class="linenos">790</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions.drop-791"><a href="#DataFrameNaFunctions.drop-791"><span class="linenos">791</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"any"</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions.drop-792"><a href="#DataFrameNaFunctions.drop-792"><span class="linenos">792</span></a> <span class="n">thresh</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions.drop-793"><a href="#DataFrameNaFunctions.drop-793"><span class="linenos">793</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions.drop-794"><a href="#DataFrameNaFunctions.drop-794"><span class="linenos">794</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrameNaFunctions.drop-795"><a href="#DataFrameNaFunctions.drop-795"><span class="linenos">795</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">how</span><span class="o">=</span><span class="n">how</span><span class="p">,</span> <span class="n">thresh</span><span class="o">=</span><span class="n">thresh</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions.drop-788"><a href="#DataFrameNaFunctions.drop-788"><span class="linenos">788</span></a> <span class="k">def</span> <span class="nf">drop</span><span class="p">(</span> +</span><span id="DataFrameNaFunctions.drop-789"><a href="#DataFrameNaFunctions.drop-789"><span class="linenos">789</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions.drop-790"><a href="#DataFrameNaFunctions.drop-790"><span class="linenos">790</span></a> <span class="n">how</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"any"</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions.drop-791"><a href="#DataFrameNaFunctions.drop-791"><span class="linenos">791</span></a> <span class="n">thresh</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions.drop-792"><a href="#DataFrameNaFunctions.drop-792"><span class="linenos">792</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions.drop-793"><a href="#DataFrameNaFunctions.drop-793"><span class="linenos">793</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrameNaFunctions.drop-794"><a href="#DataFrameNaFunctions.drop-794"><span class="linenos">794</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">dropna</span><span class="p">(</span><span class="n">how</span><span class="o">=</span><span class="n">how</span><span class="p">,</span> <span class="n">thresh</span><span class="o">=</span><span class="n">thresh</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> </span></pre></div> @@ -4013,12 +3989,12 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> </div> <a class="headerlink" href="#DataFrameNaFunctions.fill"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions.fill-797"><a href="#DataFrameNaFunctions.fill-797"><span class="linenos">797</span></a> <span class="k">def</span> <span class="nf">fill</span><span class="p">(</span> -</span><span id="DataFrameNaFunctions.fill-798"><a href="#DataFrameNaFunctions.fill-798"><span class="linenos">798</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions.fill-799"><a href="#DataFrameNaFunctions.fill-799"><span class="linenos">799</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]],</span> -</span><span id="DataFrameNaFunctions.fill-800"><a href="#DataFrameNaFunctions.fill-800"><span class="linenos">800</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions.fill-801"><a href="#DataFrameNaFunctions.fill-801"><span class="linenos">801</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrameNaFunctions.fill-802"><a href="#DataFrameNaFunctions.fill-802"><span class="linenos">802</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions.fill-796"><a href="#DataFrameNaFunctions.fill-796"><span class="linenos">796</span></a> <span class="k">def</span> <span class="nf">fill</span><span class="p">(</span> +</span><span id="DataFrameNaFunctions.fill-797"><a href="#DataFrameNaFunctions.fill-797"><span class="linenos">797</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions.fill-798"><a href="#DataFrameNaFunctions.fill-798"><span class="linenos">798</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">bool</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]],</span> +</span><span id="DataFrameNaFunctions.fill-799"><a href="#DataFrameNaFunctions.fill-799"><span class="linenos">799</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</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="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions.fill-800"><a href="#DataFrameNaFunctions.fill-800"><span class="linenos">800</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrameNaFunctions.fill-801"><a href="#DataFrameNaFunctions.fill-801"><span class="linenos">801</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> </span></pre></div> @@ -4036,13 +4012,13 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> </div> <a class="headerlink" href="#DataFrameNaFunctions.replace"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions.replace-804"><a href="#DataFrameNaFunctions.replace-804"><span class="linenos">804</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span> -</span><span id="DataFrameNaFunctions.replace-805"><a href="#DataFrameNaFunctions.replace-805"><span class="linenos">805</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions.replace-806"><a href="#DataFrameNaFunctions.replace-806"><span class="linenos">806</span></a> <span class="n">to_replace</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> -</span><span id="DataFrameNaFunctions.replace-807"><a href="#DataFrameNaFunctions.replace-807"><span class="linenos">807</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions.replace-808"><a href="#DataFrameNaFunctions.replace-808"><span class="linenos">808</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="DataFrameNaFunctions.replace-809"><a href="#DataFrameNaFunctions.replace-809"><span class="linenos">809</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> -</span><span id="DataFrameNaFunctions.replace-810"><a href="#DataFrameNaFunctions.replace-810"><span class="linenos">810</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">to_replace</span><span class="o">=</span><span class="n">to_replace</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataFrameNaFunctions.replace-803"><a href="#DataFrameNaFunctions.replace-803"><span class="linenos">803</span></a> <span class="k">def</span> <span class="nf">replace</span><span class="p">(</span> +</span><span id="DataFrameNaFunctions.replace-804"><a href="#DataFrameNaFunctions.replace-804"><span class="linenos">804</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions.replace-805"><a href="#DataFrameNaFunctions.replace-805"><span class="linenos">805</span></a> <span class="n">to_replace</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> +</span><span id="DataFrameNaFunctions.replace-806"><a href="#DataFrameNaFunctions.replace-806"><span class="linenos">806</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions.replace-807"><a href="#DataFrameNaFunctions.replace-807"><span class="linenos">807</span></a> <span class="n">subset</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="DataFrameNaFunctions.replace-808"><a href="#DataFrameNaFunctions.replace-808"><span class="linenos">808</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataFrame</span><span class="p">:</span> +</span><span id="DataFrameNaFunctions.replace-809"><a href="#DataFrameNaFunctions.replace-809"><span class="linenos">809</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">to_replace</span><span class="o">=</span><span class="n">to_replace</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">subset</span><span class="o">=</span><span class="n">subset</span><span class="p">)</span> </span></pre></div> @@ -4093,25 +4069,13 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> - <div id="Window.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Window</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Window.__init__"></a> - - - - </div> <div id="Window.partitionBy" class="classattr"> <input id="Window.partitionBy-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr function"> <div class="decorator">@classmethod</div> <span class="def">def</span> - <span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439288784'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439288784'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">sqlglot.dataframe.sql.WindowSpec</a></span>:</span></span> + <span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512209413808'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512209413808'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">sqlglot.dataframe.sql.WindowSpec</a></span>:</span></span> <label class="view-source-button" for="Window.partitionBy-view-source"><span>View Source</span></label> @@ -4132,7 +4096,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> <div class="decorator">@classmethod</div> <span class="def">def</span> - <span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439363408'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483439363408'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">sqlglot.dataframe.sql.WindowSpec</a></span>:</span></span> + <span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512209283600'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512209283600'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">sqlglot.dataframe.sql.WindowSpec</a></span>:</span></span> <label class="view-source-button" for="Window.orderBy-view-source"><span>View Source</span></label> @@ -4357,7 +4321,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> <div class="attr function"> <span class="def">def</span> - <span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483437616032'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483437616032'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">sqlglot.dataframe.sql.WindowSpec</a></span>:</span></span> + <span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512209559296'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512209559296'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">sqlglot.dataframe.sql.WindowSpec</a></span>:</span></span> <label class="view-source-button" for="WindowSpec.partitionBy-view-source"><span>View Source</span></label> @@ -4384,7 +4348,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> <div class="attr function"> <span class="def">def</span> - <span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438173232'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140483438173232'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">sqlglot.dataframe.sql.WindowSpec</a></span>:</span></span> + <span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512209618832'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140512209618832'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">sqlglot.dataframe.sql.WindowSpec</a></span>:</span></span> <label class="view-source-button" for="WindowSpec.orderBy-view-source"><span>View Source</span></label> @@ -4889,7 +4853,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects.html b/docs/sqlglot/dialects.html index 7a6c455..d7b6f6c 100644 --- a/docs/sqlglot/dialects.html +++ b/docs/sqlglot/dialects.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -334,7 +334,7 @@ logic for some expressions; this is usually done by adding new entries to the <c if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/bigquery.html b/docs/sqlglot/dialects/bigquery.html index 2fa8ee4..2d180a8 100644 --- a/docs/sqlglot/dialects/bigquery.html +++ b/docs/sqlglot/dialects/bigquery.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.bigquery 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#BigQuery">BigQuery</a> <ul class="memberlist"> <li> - <a class="function" href="#BigQuery.__init__">BigQuery</a> - </li> - <li> <a class="class" href="#BigQuery.Tokenizer">BigQuery.Tokenizer</a> <ul class="memberlist"> </ul> @@ -116,287 +113,289 @@ </span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a> <span class="n">no_ilike_sql</span><span class="p">,</span> </span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a> <span class="n">rename_func</span><span class="p">,</span> </span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a> <span class="n">timestrtotime_sql</span><span class="p">,</span> -</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a><span class="p">)</span> -</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">seq_get</span> -</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</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-19"><a href="#L-19"><span class="linenos"> 19</span></a> -</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a><span class="n">E</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">TypeVar</span><span class="p">(</span><span class="s2">"E"</span><span class="p">,</span> <span class="n">bound</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> -</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> +</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="n">ts_or_ds_to_date_sql</span><span class="p">,</span> +</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a><span class="p">)</span> +</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">seq_get</span> +</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</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-20"><a href="#L-20"><span class="linenos"> 20</span></a> +</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a><span class="n">E</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">TypeVar</span><span class="p">(</span><span class="s2">"E"</span><span class="p">,</span> <span class="n">bound</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> </span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> -</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a><span class="k">def</span> <span class="nf">_date_add</span><span class="p">(</span><span class="n">expression_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> -</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> <span class="n">interval</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-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="k">return</span> <span class="n">expression_class</span><span class="p">(</span> -</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</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-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">interval</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">interval</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">"unit"</span><span class="p">),</span> -</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="p">)</span> -</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> -</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="k">return</span> <span class="n">func</span> -</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> +</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> +</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a><span class="k">def</span> <span class="nf">_date_add</span><span class="p">(</span><span class="n">expression_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">E</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">],</span> <span class="n">E</span><span class="p">]:</span> +</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="n">interval</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-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="k">return</span> <span class="n">expression_class</span><span class="p">(</span> +</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</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-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">interval</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">interval</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">"unit"</span><span class="p">),</span> +</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="p">)</span> +</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> +</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="k">return</span> <span class="n">func</span> </span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> -</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a><span class="k">def</span> <span class="nf">_date_add_sql</span><span class="p">(</span> -</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="n">data_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="nb">str</span> -</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</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="nb">str</span><span class="p">]:</span> -</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="k">def</span> <span class="nf">func</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-39"><a href="#L-39"><span class="linenos"> 39</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">"this"</span><span class="p">)</span> -</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">data_type</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">this</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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</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="s1">'unit'</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </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="s1">'day'</span><span class="p">)))</span><span class="si">}</span><span class="s2">)"</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 class="k">return</span> <span class="n">func</span> -</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> +</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> +</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a><span class="k">def</span> <span class="nf">_date_add_sql</span><span class="p">(</span> +</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="n">data_type</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="nb">str</span> +</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</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="nb">str</span><span class="p">]:</span> +</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="k">def</span> <span class="nf">func</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-40"><a href="#L-40"><span class="linenos"> 40</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">"this"</span><span class="p">)</span> +</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">data_type</span><span class="si">}</span><span class="s2">_</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">this</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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</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="s1">'unit'</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </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="s1">'day'</span><span class="p">)))</span><span class="si">}</span><span class="s2">)"</span> +</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">return</span> <span class="n">func</span> </span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> -</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a><span class="k">def</span> <span class="nf">_derived_table_values_to_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</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">From</span><span class="p">):</span> -</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</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">Values</span><span class="p">,</span> <span class="n">transforms</span><span class="o">.</span><span class="n">remove_precision_parameterized_types</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="p">[</span><span class="n">tuple_exp</span><span class="o">.</span><span class="n">expressions</span> <span class="k">for</span> <span class="n">tuple_exp</span> <span class="ow">in</span> <span class="n">expression</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">Tuple</span><span class="p">)]</span> -</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="n">structs</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span> -</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">column_name</span><span class="p">)</span> -</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="k">for</span> <span class="n">value</span><span class="p">,</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"columns"</span><span class="p">])</span> -</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="p">]</span> -</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="n">structs</span><span class="o">.</span><span class="n">append</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="n">expressions</span><span class="o">=</span><span class="n">aliases</span><span class="p">))</span> -</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="n">unnest_exp</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">structs</span><span class="p">)])</span> -</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">unnest_exp</span><span class="p">)</span> -</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> +</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> +</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a><span class="k">def</span> <span class="nf">_derived_table_values_to_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</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">From</span><span class="p">):</span> +</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</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">Values</span><span class="p">,</span> <span class="n">transforms</span><span class="o">.</span><span class="n">remove_precision_parameterized_types</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="p">[</span><span class="n">tuple_exp</span><span class="o">.</span><span class="n">expressions</span> <span class="k">for</span> <span class="n">tuple_exp</span> <span class="ow">in</span> <span class="n">expression</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">Tuple</span><span class="p">)]</span> +</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="n">structs</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span> +</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">column_name</span><span class="p">)</span> +</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="k">for</span> <span class="n">value</span><span class="p">,</span> <span class="n">column_name</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">row</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"columns"</span><span class="p">])</span> +</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="p">]</span> +</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="n">structs</span><span class="o">.</span><span class="n">append</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="n">expressions</span><span class="o">=</span><span class="n">aliases</span><span class="p">))</span> +</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="n">unnest_exp</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">structs</span><span class="p">)])</span> +</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_sql</span><span class="p">(</span><span class="n">unnest_exp</span><span class="p">)</span> </span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> -</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a><span class="k">def</span> <span class="nf">_returnsproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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">ReturnsProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</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-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">):</span> -</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">this</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">expressions</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">>"</span> -</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</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">this</span><span class="p">)</span> -</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RETURNS </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> +</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 class="k">def</span> <span class="nf">_returnsproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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">ReturnsProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</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-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">):</span> +</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">this</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">expressions</span><span class="p">(</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">>"</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">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">this</span><span class="p">)</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RETURNS </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</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 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">generator</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">Create</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</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">"kind"</span><span class="p">]</span> -</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="n">returns</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">)</span> -</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"FUNCTION"</span> <span class="ow">and</span> <span class="n">returns</span> <span class="ow">and</span> <span class="n">returns</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">"is_table"</span><span class="p">):</span> -</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="s2">"TABLE FUNCTION"</span><span class="p">)</span> -</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span> -</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="p">(</span> -</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> -</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> -</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="p">),</span> -</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="p">):</span> -</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> -</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="k">return</span> <span class="bp">self</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-86"><a href="#L-86"><span class="linenos"> 86</span></a> -</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="k">return</span> <span class="bp">self</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-88"><a href="#L-88"><span class="linenos"> 88</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">_create_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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">Create</span><span class="p">)</span> <span class="o">-></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="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">"kind"</span><span class="p">]</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="n">returns</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">)</span> +</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"FUNCTION"</span> <span class="ow">and</span> <span class="n">returns</span> <span class="ow">and</span> <span class="n">returns</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">"is_table"</span><span class="p">):</span> +</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="s2">"TABLE FUNCTION"</span><span class="p">)</span> +</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span> +</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="p">(</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> +</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="p">),</span> +</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="p">):</span> +</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> +</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="k">return</span> <span class="bp">self</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-87"><a href="#L-87"><span class="linenos"> 87</span></a> +</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="k">return</span> <span class="bp">self</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-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">_unqualify_unnest</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">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a><span class="w"> </span><span class="sd">"""Remove references to unnest table aliases since bigquery doesn't allow them.</span> -</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a><span class="sd"> These are added by the optimizer's qualify_column step.</span> -</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a><span class="sd"> """</span> -</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> -</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="n">unnests</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="n">unnest</span><span class="o">.</span><span class="n">alias</span> -</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="k">for</span> <span class="n">unnest</span> <span class="ow">in</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">"from"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[]))</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="ow">and</span> <span class="n">unnest</span><span class="o">.</span><span class="n">alias</span> -</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="p">}</span> -</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> -</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="k">if</span> <span class="n">unnests</span><span class="p">:</span> -</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</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">for</span> <span class="n">select</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-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">select</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">Column</span><span class="p">):</span> -</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="ow">in</span> <span class="n">unnests</span><span class="p">:</span> -</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="kc">None</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 class="k">return</span> <span class="n">expression</span> -</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> +</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> +</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a><span class="k">def</span> <span class="nf">_unqualify_unnest</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">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a><span class="w"> </span><span class="sd">"""Remove references to unnest table aliases since bigquery doesn't allow them.</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> +</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a><span class="sd"> These are added by the optimizer's qualify_column step.</span> +</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a><span class="sd"> """</span> +</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="n">unnests</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="n">unnest</span><span class="o">.</span><span class="n">alias</span> +</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="k">for</span> <span class="n">unnest</span> <span class="ow">in</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">"from"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[]))</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unnest</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="ow">and</span> <span class="n">unnest</span><span class="o">.</span><span class="n">alias</span> +</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="p">}</span> +</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> +</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="k">if</span> <span class="n">unnests</span><span class="p">:</span> +</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> +</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="k">for</span> <span class="n">select</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-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">select</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">Column</span><span class="p">):</span> +</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="k">if</span> <span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="ow">in</span> <span class="n">unnests</span><span class="p">:</span> +</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</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">return</span> <span class="n">expression</span> </span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> -</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a><span class="k">class</span> <span class="nc">BigQuery</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="n">unnest_column_only</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="s2">"%M"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> -</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="s2">"%m"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="s2">"%y"</span><span class="p">:</span> <span class="s2">"%-y"</span><span class="p">,</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="s2">"%H"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="s2">"%I"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="s2">"%S"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="s2">"%j"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="p">}</span> -</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> -</span><span id="L-126"><a href="#L-126"><span class="linenos">126</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-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">quote</span><span class="p">,</span> <span class="n">quote</span><span class="p">)</span> <span class="k">if</span> <span class="n">prefix</span> <span class="k">else</span> <span class="n">quote</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="k">for</span> <span class="n">quote</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s1">'"'</span><span class="p">,</span> <span class="s1">'"""'</span><span class="p">,</span> <span class="s2">"'''"</span><span class="p">]</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">,</span> <span class="s2">"R"</span><span class="p">]</span> -</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="p">]</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"0x"</span><span class="p">,</span> <span class="s2">""</span><span class="p">),</span> <span class="p">(</span><span class="s2">"0X"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)]</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> -</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos">138</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-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="s2">"BEGIN TRANSACTION"</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-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="s2">"CURRENT_DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> -</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> -</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="s2">"FLOAT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="p">}</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">)</span> -</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> -</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="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-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos">154</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 class="c1"># type: ignore</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="s2">"DATE_TRUNC"</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">DateTrunc</span><span class="p">(</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">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="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># type: ignore</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos">157</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-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="p">),</span> -</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="s2">"DATE_ADD"</span><span class="p">:</span> <span class="n">_date_add</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-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="s2">"DATETIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">),</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="s2">"DIV"</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">IntDiv</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">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-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="s2">"REGEXP_CONTAINS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="s2">"REGEXP_EXTRACT"</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">RegexpExtract</span><span class="p">(</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos">164</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-165"><a href="#L-165"><span class="linenos">165</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-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">position</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-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="n">occurrence</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-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="n">group</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">1</span><span class="p">)</span> -</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="nb">str</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="o">.</span><span class="n">groups</span> <span class="o">==</span> <span class="mi">1</span> -</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="p">),</span> -</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="s2">"TIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">),</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="s2">"TIMESTAMP_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">),</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="s2">"DATE_SUB"</span><span class="p">:</span> <span class="n">_date_add</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-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="s2">"DATETIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">),</span> -</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="s2">"TIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">),</span> -</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="s2">"TIMESTAMP_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">),</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="s2">"PARSE_TIMESTAMP"</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">StrToTime</span><span class="p">(</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos">179</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">1</span><span class="p">),</span> <span class="nb">format</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-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="p">),</span> -</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="p">}</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> -</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()]),</span> -</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="p">}</span> -</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</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 class="n">NO_PAREN_FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-190"><a href="#L-190"><span class="linenos">190</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">NO_PAREN_FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDatetime</span><span class="p">,</span> -</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">,</span> -</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="p">}</span> -</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> -</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="n">NESTED_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos">196</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">NESTED_TYPE_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="p">}</span> -</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> -</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> -</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="p">}</span> -</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="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-206"><a href="#L-206"><span class="linenos">206</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">PROPERTY_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> -</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="p">),</span> -</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="p">}</span> -</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> -</span><span id="L-212"><a href="#L-212"><span class="linenos">212</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-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-214"><a href="#L-214"><span class="linenos">214</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 class="c1"># type: ignore</span> -</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="o">**</span><span class="n">transforms</span><span class="o">.</span><span class="n">REMOVE_PRECISION_PARAMETERIZED_TYPES</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-216"><a href="#L-216"><span class="linenos">216</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">"ARRAY_LENGTH"</span><span class="p">),</span> -</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="L-221"><a href="#L-221"><span class="linenos">221</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="sa">f</span><span class="s2">"DATE_DIFF(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</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">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'unit'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DAY'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-222"><a href="#L-222"><span class="linenos">222</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-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"DATE_TRUNC"</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">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STRING_AGG"</span><span class="p">),</span> -</span><span id="L-225"><a href="#L-225"><span class="linenos">225</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-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DIV"</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">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-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="p">[</span><span class="n">_unqualify_unnest</span><span class="p">],</span> <span class="n">transforms</span><span class="o">.</span><span class="n">delegate</span><span class="p">(</span><span class="s2">"select_sql"</span><span class="p">)</span> -</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <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">StrToTime</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">"PARSE_TIMESTAMP(</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">, </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</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">TimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ADD"</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">TimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="L-235"><a href="#L-235"><span class="linenos">235</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-236"><a href="#L-236"><span class="linenos">236</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-237"><a href="#L-237"><span class="linenos">237</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">"VAR_POP"</span><span class="p">),</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">:</span> <span class="n">_derived_table_values_to_unnest</span><span class="p">,</span> -</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">_returnsproperty_sql</span><span class="p">,</span> -</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="sa">f</span><span class="s2">"TRIM"</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-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">"DETERMINISTIC"</span> -</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"IMMUTABLE"</span> -</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="k">else</span> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">,</span> -</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_CONTAINS"</span><span class="p">),</span> -</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="p">}</span> -</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> -</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-249"><a href="#L-249"><span class="linenos">249</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 class="c1"># type: ignore</span> -</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> -</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> -</span><span id="L-252"><a href="#L-252"><span class="linenos">252</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">"INT64"</span><span class="p">,</span> -</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> -</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="s2">"NUMERIC"</span><span class="p">,</span> -</span><span id="L-255"><a href="#L-255"><span class="linenos">255</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">"FLOAT64"</span><span class="p">,</span> -</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"FLOAT64"</span><span class="p">,</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">:</span> <span class="s2">"BOOL"</span><span class="p">,</span> -</span><span id="L-258"><a href="#L-258"><span class="linenos">258</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">"STRING"</span><span class="p">,</span> -</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> -</span><span id="L-260"><a href="#L-260"><span class="linenos">260</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> -</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="p">}</span> -</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-263"><a href="#L-263"><span class="linenos">263</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 class="c1"># type: ignore</span> -</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="p">}</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> -</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> +</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a><span class="k">class</span> <span class="nc">BigQuery</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="n">unnest_column_only</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="s2">"%M"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> +</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="s2">"%m"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> +</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="s2">"%y"</span><span class="p">:</span> <span class="s2">"%-y"</span><span class="p">,</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="s2">"%H"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="s2">"%I"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="s2">"%S"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="s2">"%j"</span><span class="p">:</span> <span class="s2">"%-j"</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><span id="L-127"><a href="#L-127"><span class="linenos">127</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-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="n">QUOTES</span> <span class="o">=</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 class="n">prefix</span> <span class="o">+</span> <span class="n">quote</span><span class="p">,</span> <span class="n">quote</span><span class="p">)</span> <span class="k">if</span> <span class="n">prefix</span> <span class="k">else</span> <span class="n">quote</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="k">for</span> <span class="n">quote</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s1">'"'</span><span class="p">,</span> <span class="s1">'"""'</span><span class="p">,</span> <span class="s2">"'''"</span><span class="p">]</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">,</span> <span class="s2">"R"</span><span class="p">]</span> +</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="p">]</span> +</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"0x"</span><span class="p">,</span> <span class="s2">""</span><span class="p">),</span> <span class="p">(</span><span class="s2">"0X"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)]</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> +</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos">139</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-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="s2">"BEGIN TRANSACTION"</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-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="s2">"CURRENT_DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> +</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="s2">"FLOAT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="p">}</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">)</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> +</span><span id="L-153"><a href="#L-153"><span class="linenos">153</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-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos">155</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 class="c1"># type: ignore</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="s2">"DATE_TRUNC"</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">DateTrunc</span><span class="p">(</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">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="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># type: ignore</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos">158</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-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="p">),</span> +</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="s2">"DATE_ADD"</span><span class="p">:</span> <span class="n">_date_add</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-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="s2">"DATETIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">),</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="s2">"DIV"</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">IntDiv</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">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-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="s2">"REGEXP_CONTAINS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="s2">"REGEXP_EXTRACT"</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">RegexpExtract</span><span class="p">(</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos">165</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-166"><a href="#L-166"><span class="linenos">166</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-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="n">position</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-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="n">occurrence</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-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="n">group</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">1</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="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="nb">str</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="o">.</span><span class="n">groups</span> <span class="o">==</span> <span class="mi">1</span> +</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="p">),</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="s2">"TIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">),</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="s2">"TIMESTAMP_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">),</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="s2">"DATE_SUB"</span><span class="p">:</span> <span class="n">_date_add</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-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="s2">"DATETIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">),</span> +</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="s2">"TIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">),</span> +</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="s2">"TIMESTAMP_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">),</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="s2">"PARSE_TIMESTAMP"</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">StrToTime</span><span class="p">(</span> +</span><span id="L-180"><a href="#L-180"><span class="linenos">180</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">1</span><span class="p">),</span> <span class="nb">format</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-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="p">),</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="p">}</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> +</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()]),</span> +</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="p">}</span> +</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> +</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="n">NO_PAREN_FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-191"><a href="#L-191"><span class="linenos">191</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">NO_PAREN_FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDatetime</span><span class="p">,</span> +</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">,</span> +</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="p">}</span> +</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> +</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="n">NESTED_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-197"><a href="#L-197"><span class="linenos">197</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">NESTED_TYPE_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="p">}</span> +</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> +</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="p">}</span> +</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> +</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos">207</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">PROPERTY_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="p">),</span> +</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="p">}</span> +</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> +</span><span id="L-213"><a href="#L-213"><span class="linenos">213</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-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-215"><a href="#L-215"><span class="linenos">215</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 class="c1"># type: ignore</span> +</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="o">**</span><span class="n">transforms</span><span class="o">.</span><span class="n">REMOVE_PRECISION_PARAMETERIZED_TYPES</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-217"><a href="#L-217"><span class="linenos">217</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">"ARRAY_LENGTH"</span><span class="p">),</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="L-222"><a href="#L-222"><span class="linenos">222</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="sa">f</span><span class="s2">"DATE_DIFF(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</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">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'unit'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DAY'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-223"><a href="#L-223"><span class="linenos">223</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-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"DATE_TRUNC"</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">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> +</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STRING_AGG"</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">ILike</span><span class="p">:</span> <span class="n">no_ilike_sql</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">IntDiv</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DIV"</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">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-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="p">[</span><span class="n">_unqualify_unnest</span><span class="p">],</span> <span class="n">transforms</span><span class="o">.</span><span class="n">delegate</span><span class="p">(</span><span class="s2">"select_sql"</span><span class="p">)</span> +</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <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">StrToTime</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">"PARSE_TIMESTAMP(</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">, </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</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">TimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="L-236"><a href="#L-236"><span class="linenos">236</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-237"><a href="#L-237"><span class="linenos">237</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 class="s2">"bigquery"</span><span class="p">),</span> +</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-239"><a href="#L-239"><span class="linenos">239</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">"VAR_POP"</span><span class="p">),</span> +</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">:</span> <span class="n">_derived_table_values_to_unnest</span><span class="p">,</span> +</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">_returnsproperty_sql</span><span class="p">,</span> +</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> +</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="sa">f</span><span class="s2">"TRIM"</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-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">"DETERMINISTIC"</span> +</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"IMMUTABLE"</span> +</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="k">else</span> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">,</span> +</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_CONTAINS"</span><span class="p">),</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="p">}</span> +</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a> +</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-251"><a href="#L-251"><span class="linenos">251</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 class="c1"># type: ignore</span> +</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> +</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> +</span><span id="L-254"><a href="#L-254"><span class="linenos">254</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">"INT64"</span><span class="p">,</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> +</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="s2">"NUMERIC"</span><span class="p">,</span> +</span><span id="L-257"><a href="#L-257"><span class="linenos">257</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">"FLOAT64"</span><span class="p">,</span> +</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"FLOAT64"</span><span class="p">,</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">:</span> <span class="s2">"BOOL"</span><span class="p">,</span> +</span><span id="L-260"><a href="#L-260"><span class="linenos">260</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">"STRING"</span><span class="p">,</span> +</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos">262</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> +</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="p">}</span> +</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos">265</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 class="c1"># type: ignore</span> +</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="p">}</span> </span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> -</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="k">def</span> <span class="nf">array_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">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="n">first_arg</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">first_arg</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> -</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> +</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="k">def</span> <span class="nf">array_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">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="n">first_arg</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">first_arg</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a> -</span><span id="L-276"><a href="#L-276"><span class="linenos">276</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="k">return</span> <span class="s2">"BEGIN TRANSACTION"</span> -</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> -</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="k">def</span> <span class="nf">commit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> <span class="k">return</span> <span class="s2">"COMMIT TRANSACTION"</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> -</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> <span class="k">def</span> <span class="nf">rollback_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="k">return</span> <span class="s2">"ROLLBACK TRANSACTION"</span> -</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> -</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> -</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos">289</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> -</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-294"><a href="#L-294"><span class="linenos">294</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> +</span><span id="L-278"><a href="#L-278"><span class="linenos">278</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="s2">"BEGIN TRANSACTION"</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> +</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="k">def</span> <span class="nf">commit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> <span class="k">return</span> <span class="s2">"COMMIT TRANSACTION"</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> +</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> <span class="k">def</span> <span class="nf">rollback_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> <span class="k">return</span> <span class="s2">"ROLLBACK TRANSACTION"</span> +</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> +</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a> +</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos">291</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a> +</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-296"><a href="#L-296"><span class="linenos">296</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -412,207 +411,196 @@ </div> <a class="headerlink" href="#BigQuery"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery-114"><a href="#BigQuery-114"><span class="linenos">114</span></a><span class="k">class</span> <span class="nc">BigQuery</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="BigQuery-115"><a href="#BigQuery-115"><span class="linenos">115</span></a> <span class="n">unnest_column_only</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="BigQuery-116"><a href="#BigQuery-116"><span class="linenos">116</span></a> <span class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-117"><a href="#BigQuery-117"><span class="linenos">117</span></a> <span class="s2">"%M"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> -</span><span id="BigQuery-118"><a href="#BigQuery-118"><span class="linenos">118</span></a> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="BigQuery-119"><a href="#BigQuery-119"><span class="linenos">119</span></a> <span class="s2">"%m"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> -</span><span id="BigQuery-120"><a href="#BigQuery-120"><span class="linenos">120</span></a> <span class="s2">"%y"</span><span class="p">:</span> <span class="s2">"%-y"</span><span class="p">,</span> -</span><span id="BigQuery-121"><a href="#BigQuery-121"><span class="linenos">121</span></a> <span class="s2">"%H"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> -</span><span id="BigQuery-122"><a href="#BigQuery-122"><span class="linenos">122</span></a> <span class="s2">"%I"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> -</span><span id="BigQuery-123"><a href="#BigQuery-123"><span class="linenos">123</span></a> <span class="s2">"%S"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> -</span><span id="BigQuery-124"><a href="#BigQuery-124"><span class="linenos">124</span></a> <span class="s2">"%j"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> -</span><span id="BigQuery-125"><a href="#BigQuery-125"><span class="linenos">125</span></a> <span class="p">}</span> -</span><span id="BigQuery-126"><a href="#BigQuery-126"><span class="linenos">126</span></a> -</span><span id="BigQuery-127"><a href="#BigQuery-127"><span class="linenos">127</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="BigQuery-128"><a href="#BigQuery-128"><span class="linenos">128</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="BigQuery-129"><a href="#BigQuery-129"><span class="linenos">129</span></a> <span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">quote</span><span class="p">,</span> <span class="n">quote</span><span class="p">)</span> <span class="k">if</span> <span class="n">prefix</span> <span class="k">else</span> <span class="n">quote</span> -</span><span id="BigQuery-130"><a href="#BigQuery-130"><span class="linenos">130</span></a> <span class="k">for</span> <span class="n">quote</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s1">'"'</span><span class="p">,</span> <span class="s1">'"""'</span><span class="p">,</span> <span class="s2">"'''"</span><span class="p">]</span> -</span><span id="BigQuery-131"><a href="#BigQuery-131"><span class="linenos">131</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">,</span> <span class="s2">"R"</span><span class="p">]</span> -</span><span id="BigQuery-132"><a href="#BigQuery-132"><span class="linenos">132</span></a> <span class="p">]</span> -</span><span id="BigQuery-133"><a href="#BigQuery-133"><span class="linenos">133</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> -</span><span id="BigQuery-134"><a href="#BigQuery-134"><span class="linenos">134</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> -</span><span id="BigQuery-135"><a href="#BigQuery-135"><span class="linenos">135</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> -</span><span id="BigQuery-136"><a href="#BigQuery-136"><span class="linenos">136</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"0x"</span><span class="p">,</span> <span class="s2">""</span><span class="p">),</span> <span class="p">(</span><span class="s2">"0X"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)]</span> -</span><span id="BigQuery-137"><a href="#BigQuery-137"><span class="linenos">137</span></a> -</span><span id="BigQuery-138"><a href="#BigQuery-138"><span class="linenos">138</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-139"><a href="#BigQuery-139"><span class="linenos">139</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="BigQuery-140"><a href="#BigQuery-140"><span class="linenos">140</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="BigQuery-141"><a href="#BigQuery-141"><span class="linenos">141</span></a> <span class="s2">"BEGIN TRANSACTION"</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="BigQuery-142"><a href="#BigQuery-142"><span class="linenos">142</span></a> <span class="s2">"CURRENT_DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> -</span><span id="BigQuery-143"><a href="#BigQuery-143"><span class="linenos">143</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="BigQuery-144"><a href="#BigQuery-144"><span class="linenos">144</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="BigQuery-145"><a href="#BigQuery-145"><span class="linenos">145</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> -</span><span id="BigQuery-146"><a href="#BigQuery-146"><span class="linenos">146</span></a> <span class="s2">"FLOAT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="BigQuery-147"><a href="#BigQuery-147"><span class="linenos">147</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="BigQuery-148"><a href="#BigQuery-148"><span class="linenos">148</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="BigQuery-149"><a href="#BigQuery-149"><span class="linenos">149</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> -</span><span id="BigQuery-150"><a href="#BigQuery-150"><span class="linenos">150</span></a> <span class="p">}</span> -</span><span id="BigQuery-151"><a href="#BigQuery-151"><span class="linenos">151</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">)</span> -</span><span id="BigQuery-152"><a href="#BigQuery-152"><span class="linenos">152</span></a> -</span><span id="BigQuery-153"><a href="#BigQuery-153"><span class="linenos">153</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="BigQuery-154"><a href="#BigQuery-154"><span class="linenos">154</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-155"><a href="#BigQuery-155"><span class="linenos">155</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 class="c1"># type: ignore</span> -</span><span id="BigQuery-156"><a href="#BigQuery-156"><span class="linenos">156</span></a> <span class="s2">"DATE_TRUNC"</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">DateTrunc</span><span class="p">(</span> -</span><span id="BigQuery-157"><a href="#BigQuery-157"><span class="linenos">157</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">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="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery-158"><a href="#BigQuery-158"><span class="linenos">158</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="BigQuery-159"><a href="#BigQuery-159"><span class="linenos">159</span></a> <span class="p">),</span> -</span><span id="BigQuery-160"><a href="#BigQuery-160"><span class="linenos">160</span></a> <span class="s2">"DATE_ADD"</span><span class="p">:</span> <span class="n">_date_add</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="BigQuery-161"><a href="#BigQuery-161"><span class="linenos">161</span></a> <span class="s2">"DATETIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">),</span> -</span><span id="BigQuery-162"><a href="#BigQuery-162"><span class="linenos">162</span></a> <span class="s2">"DIV"</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">IntDiv</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">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="BigQuery-163"><a href="#BigQuery-163"><span class="linenos">163</span></a> <span class="s2">"REGEXP_CONTAINS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="BigQuery-164"><a href="#BigQuery-164"><span class="linenos">164</span></a> <span class="s2">"REGEXP_EXTRACT"</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">RegexpExtract</span><span class="p">(</span> -</span><span id="BigQuery-165"><a href="#BigQuery-165"><span class="linenos">165</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="BigQuery-166"><a href="#BigQuery-166"><span class="linenos">166</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="BigQuery-167"><a href="#BigQuery-167"><span class="linenos">167</span></a> <span class="n">position</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="BigQuery-168"><a href="#BigQuery-168"><span class="linenos">168</span></a> <span class="n">occurrence</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="BigQuery-169"><a href="#BigQuery-169"><span class="linenos">169</span></a> <span class="n">group</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">1</span><span class="p">)</span> -</span><span id="BigQuery-170"><a href="#BigQuery-170"><span class="linenos">170</span></a> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="nb">str</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="o">.</span><span class="n">groups</span> <span class="o">==</span> <span class="mi">1</span> -</span><span id="BigQuery-171"><a href="#BigQuery-171"><span class="linenos">171</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="BigQuery-172"><a href="#BigQuery-172"><span class="linenos">172</span></a> <span class="p">),</span> -</span><span id="BigQuery-173"><a href="#BigQuery-173"><span class="linenos">173</span></a> <span class="s2">"TIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">),</span> -</span><span id="BigQuery-174"><a href="#BigQuery-174"><span class="linenos">174</span></a> <span class="s2">"TIMESTAMP_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">),</span> -</span><span id="BigQuery-175"><a href="#BigQuery-175"><span class="linenos">175</span></a> <span class="s2">"DATE_SUB"</span><span class="p">:</span> <span class="n">_date_add</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="BigQuery-176"><a href="#BigQuery-176"><span class="linenos">176</span></a> <span class="s2">"DATETIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">),</span> -</span><span id="BigQuery-177"><a href="#BigQuery-177"><span class="linenos">177</span></a> <span class="s2">"TIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">),</span> -</span><span id="BigQuery-178"><a href="#BigQuery-178"><span class="linenos">178</span></a> <span class="s2">"TIMESTAMP_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">),</span> -</span><span id="BigQuery-179"><a href="#BigQuery-179"><span class="linenos">179</span></a> <span class="s2">"PARSE_TIMESTAMP"</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">StrToTime</span><span class="p">(</span> -</span><span id="BigQuery-180"><a href="#BigQuery-180"><span class="linenos">180</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">1</span><span class="p">),</span> <span class="nb">format</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="BigQuery-181"><a href="#BigQuery-181"><span class="linenos">181</span></a> <span class="p">),</span> -</span><span id="BigQuery-182"><a href="#BigQuery-182"><span class="linenos">182</span></a> <span class="p">}</span> -</span><span id="BigQuery-183"><a href="#BigQuery-183"><span class="linenos">183</span></a> -</span><span id="BigQuery-184"><a href="#BigQuery-184"><span class="linenos">184</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-185"><a href="#BigQuery-185"><span class="linenos">185</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery-186"><a href="#BigQuery-186"><span class="linenos">186</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()]),</span> -</span><span id="BigQuery-187"><a href="#BigQuery-187"><span class="linenos">187</span></a> <span class="p">}</span> -</span><span id="BigQuery-188"><a href="#BigQuery-188"><span class="linenos">188</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> -</span><span id="BigQuery-189"><a href="#BigQuery-189"><span class="linenos">189</span></a> -</span><span id="BigQuery-190"><a href="#BigQuery-190"><span class="linenos">190</span></a> <span class="n">NO_PAREN_FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-191"><a href="#BigQuery-191"><span class="linenos">191</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">NO_PAREN_FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery-192"><a href="#BigQuery-192"><span class="linenos">192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDatetime</span><span class="p">,</span> -</span><span id="BigQuery-193"><a href="#BigQuery-193"><span class="linenos">193</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">,</span> -</span><span id="BigQuery-194"><a href="#BigQuery-194"><span class="linenos">194</span></a> <span class="p">}</span> -</span><span id="BigQuery-195"><a href="#BigQuery-195"><span class="linenos">195</span></a> -</span><span id="BigQuery-196"><a href="#BigQuery-196"><span class="linenos">196</span></a> <span class="n">NESTED_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-197"><a href="#BigQuery-197"><span class="linenos">197</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">NESTED_TYPE_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery-198"><a href="#BigQuery-198"><span class="linenos">198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="BigQuery-199"><a href="#BigQuery-199"><span class="linenos">199</span></a> <span class="p">}</span> -</span><span id="BigQuery-200"><a href="#BigQuery-200"><span class="linenos">200</span></a> -</span><span id="BigQuery-201"><a href="#BigQuery-201"><span class="linenos">201</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-202"><a href="#BigQuery-202"><span class="linenos">202</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery-203"><a href="#BigQuery-203"><span class="linenos">203</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> -</span><span id="BigQuery-204"><a href="#BigQuery-204"><span class="linenos">204</span></a> <span class="p">}</span> -</span><span id="BigQuery-205"><a href="#BigQuery-205"><span class="linenos">205</span></a> -</span><span id="BigQuery-206"><a href="#BigQuery-206"><span class="linenos">206</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-207"><a href="#BigQuery-207"><span class="linenos">207</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">PROPERTY_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery-208"><a href="#BigQuery-208"><span class="linenos">208</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="BigQuery-209"><a href="#BigQuery-209"><span class="linenos">209</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> -</span><span id="BigQuery-210"><a href="#BigQuery-210"><span class="linenos">210</span></a> <span class="p">),</span> -</span><span id="BigQuery-211"><a href="#BigQuery-211"><span class="linenos">211</span></a> <span class="p">}</span> -</span><span id="BigQuery-212"><a href="#BigQuery-212"><span class="linenos">212</span></a> -</span><span id="BigQuery-213"><a href="#BigQuery-213"><span class="linenos">213</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="BigQuery-214"><a href="#BigQuery-214"><span class="linenos">214</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-215"><a href="#BigQuery-215"><span class="linenos">215</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 class="c1"># type: ignore</span> -</span><span id="BigQuery-216"><a href="#BigQuery-216"><span class="linenos">216</span></a> <span class="o">**</span><span class="n">transforms</span><span class="o">.</span><span class="n">REMOVE_PRECISION_PARAMETERIZED_TYPES</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery-217"><a href="#BigQuery-217"><span class="linenos">217</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">"ARRAY_LENGTH"</span><span class="p">),</span> -</span><span id="BigQuery-218"><a href="#BigQuery-218"><span class="linenos">218</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="BigQuery-219"><a href="#BigQuery-219"><span class="linenos">219</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="BigQuery-220"><a href="#BigQuery-220"><span class="linenos">220</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="BigQuery-221"><a href="#BigQuery-221"><span class="linenos">221</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="BigQuery-222"><a href="#BigQuery-222"><span class="linenos">222</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="sa">f</span><span class="s2">"DATE_DIFF(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</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">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'unit'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DAY'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="BigQuery-223"><a href="#BigQuery-223"><span class="linenos">223</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="BigQuery-224"><a href="#BigQuery-224"><span class="linenos">224</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"DATE_TRUNC"</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">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> -</span><span id="BigQuery-225"><a href="#BigQuery-225"><span class="linenos">225</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STRING_AGG"</span><span class="p">),</span> -</span><span id="BigQuery-226"><a href="#BigQuery-226"><span class="linenos">226</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="BigQuery-227"><a href="#BigQuery-227"><span class="linenos">227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">),</span> -</span><span id="BigQuery-228"><a href="#BigQuery-228"><span class="linenos">228</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="BigQuery-229"><a href="#BigQuery-229"><span class="linenos">229</span></a> <span class="p">[</span><span class="n">_unqualify_unnest</span><span class="p">],</span> <span class="n">transforms</span><span class="o">.</span><span class="n">delegate</span><span class="p">(</span><span class="s2">"select_sql"</span><span class="p">)</span> -</span><span id="BigQuery-230"><a href="#BigQuery-230"><span class="linenos">230</span></a> <span class="p">),</span> -</span><span id="BigQuery-231"><a href="#BigQuery-231"><span class="linenos">231</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"PARSE_TIMESTAMP(</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">, </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="BigQuery-232"><a href="#BigQuery-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="BigQuery-233"><a href="#BigQuery-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="BigQuery-234"><a href="#BigQuery-234"><span class="linenos">234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="BigQuery-235"><a href="#BigQuery-235"><span class="linenos">235</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="BigQuery-236"><a href="#BigQuery-236"><span class="linenos">236</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="BigQuery-237"><a href="#BigQuery-237"><span class="linenos">237</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="BigQuery-238"><a href="#BigQuery-238"><span class="linenos">238</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">"VAR_POP"</span><span class="p">),</span> -</span><span id="BigQuery-239"><a href="#BigQuery-239"><span class="linenos">239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">:</span> <span class="n">_derived_table_values_to_unnest</span><span class="p">,</span> -</span><span id="BigQuery-240"><a href="#BigQuery-240"><span class="linenos">240</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">_returnsproperty_sql</span><span class="p">,</span> -</span><span id="BigQuery-241"><a href="#BigQuery-241"><span class="linenos">241</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> -</span><span id="BigQuery-242"><a href="#BigQuery-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="sa">f</span><span class="s2">"TRIM"</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="BigQuery-243"><a href="#BigQuery-243"><span class="linenos">243</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">"DETERMINISTIC"</span> -</span><span id="BigQuery-244"><a href="#BigQuery-244"><span class="linenos">244</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"IMMUTABLE"</span> -</span><span id="BigQuery-245"><a href="#BigQuery-245"><span class="linenos">245</span></a> <span class="k">else</span> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">,</span> -</span><span id="BigQuery-246"><a href="#BigQuery-246"><span class="linenos">246</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_CONTAINS"</span><span class="p">),</span> -</span><span id="BigQuery-247"><a href="#BigQuery-247"><span class="linenos">247</span></a> <span class="p">}</span> -</span><span id="BigQuery-248"><a href="#BigQuery-248"><span class="linenos">248</span></a> -</span><span id="BigQuery-249"><a href="#BigQuery-249"><span class="linenos">249</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-250"><a href="#BigQuery-250"><span class="linenos">250</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 class="c1"># type: ignore</span> -</span><span id="BigQuery-251"><a href="#BigQuery-251"><span class="linenos">251</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> -</span><span id="BigQuery-252"><a href="#BigQuery-252"><span class="linenos">252</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> -</span><span id="BigQuery-253"><a href="#BigQuery-253"><span class="linenos">253</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">"INT64"</span><span class="p">,</span> -</span><span id="BigQuery-254"><a href="#BigQuery-254"><span class="linenos">254</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> -</span><span id="BigQuery-255"><a href="#BigQuery-255"><span class="linenos">255</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="s2">"NUMERIC"</span><span class="p">,</span> -</span><span id="BigQuery-256"><a href="#BigQuery-256"><span class="linenos">256</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">"FLOAT64"</span><span class="p">,</span> -</span><span id="BigQuery-257"><a href="#BigQuery-257"><span class="linenos">257</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"FLOAT64"</span><span class="p">,</span> -</span><span id="BigQuery-258"><a href="#BigQuery-258"><span class="linenos">258</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">:</span> <span class="s2">"BOOL"</span><span class="p">,</span> -</span><span id="BigQuery-259"><a href="#BigQuery-259"><span class="linenos">259</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">"STRING"</span><span class="p">,</span> -</span><span id="BigQuery-260"><a href="#BigQuery-260"><span class="linenos">260</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> -</span><span id="BigQuery-261"><a href="#BigQuery-261"><span class="linenos">261</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> -</span><span id="BigQuery-262"><a href="#BigQuery-262"><span class="linenos">262</span></a> <span class="p">}</span> -</span><span id="BigQuery-263"><a href="#BigQuery-263"><span class="linenos">263</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery-264"><a href="#BigQuery-264"><span class="linenos">264</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 class="c1"># type: ignore</span> -</span><span id="BigQuery-265"><a href="#BigQuery-265"><span class="linenos">265</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="BigQuery-266"><a href="#BigQuery-266"><span class="linenos">266</span></a> <span class="p">}</span> -</span><span id="BigQuery-267"><a href="#BigQuery-267"><span class="linenos">267</span></a> -</span><span id="BigQuery-268"><a href="#BigQuery-268"><span class="linenos">268</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery-115"><a href="#BigQuery-115"><span class="linenos">115</span></a><span class="k">class</span> <span class="nc">BigQuery</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="BigQuery-116"><a href="#BigQuery-116"><span class="linenos">116</span></a> <span class="n">unnest_column_only</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="BigQuery-117"><a href="#BigQuery-117"><span class="linenos">117</span></a> <span class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-118"><a href="#BigQuery-118"><span class="linenos">118</span></a> <span class="s2">"%M"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> +</span><span id="BigQuery-119"><a href="#BigQuery-119"><span class="linenos">119</span></a> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="BigQuery-120"><a href="#BigQuery-120"><span class="linenos">120</span></a> <span class="s2">"%m"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> +</span><span id="BigQuery-121"><a href="#BigQuery-121"><span class="linenos">121</span></a> <span class="s2">"%y"</span><span class="p">:</span> <span class="s2">"%-y"</span><span class="p">,</span> +</span><span id="BigQuery-122"><a href="#BigQuery-122"><span class="linenos">122</span></a> <span class="s2">"%H"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> +</span><span id="BigQuery-123"><a href="#BigQuery-123"><span class="linenos">123</span></a> <span class="s2">"%I"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> +</span><span id="BigQuery-124"><a href="#BigQuery-124"><span class="linenos">124</span></a> <span class="s2">"%S"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> +</span><span id="BigQuery-125"><a href="#BigQuery-125"><span class="linenos">125</span></a> <span class="s2">"%j"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> +</span><span id="BigQuery-126"><a href="#BigQuery-126"><span class="linenos">126</span></a> <span class="p">}</span> +</span><span id="BigQuery-127"><a href="#BigQuery-127"><span class="linenos">127</span></a> +</span><span id="BigQuery-128"><a href="#BigQuery-128"><span class="linenos">128</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="BigQuery-129"><a href="#BigQuery-129"><span class="linenos">129</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="BigQuery-130"><a href="#BigQuery-130"><span class="linenos">130</span></a> <span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">quote</span><span class="p">,</span> <span class="n">quote</span><span class="p">)</span> <span class="k">if</span> <span class="n">prefix</span> <span class="k">else</span> <span class="n">quote</span> +</span><span id="BigQuery-131"><a href="#BigQuery-131"><span class="linenos">131</span></a> <span class="k">for</span> <span class="n">quote</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s1">'"'</span><span class="p">,</span> <span class="s1">'"""'</span><span class="p">,</span> <span class="s2">"'''"</span><span class="p">]</span> +</span><span id="BigQuery-132"><a href="#BigQuery-132"><span class="linenos">132</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">,</span> <span class="s2">"R"</span><span class="p">]</span> +</span><span id="BigQuery-133"><a href="#BigQuery-133"><span class="linenos">133</span></a> <span class="p">]</span> +</span><span id="BigQuery-134"><a href="#BigQuery-134"><span class="linenos">134</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> +</span><span id="BigQuery-135"><a href="#BigQuery-135"><span class="linenos">135</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> +</span><span id="BigQuery-136"><a href="#BigQuery-136"><span class="linenos">136</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> +</span><span id="BigQuery-137"><a href="#BigQuery-137"><span class="linenos">137</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"0x"</span><span class="p">,</span> <span class="s2">""</span><span class="p">),</span> <span class="p">(</span><span class="s2">"0X"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)]</span> +</span><span id="BigQuery-138"><a href="#BigQuery-138"><span class="linenos">138</span></a> +</span><span id="BigQuery-139"><a href="#BigQuery-139"><span class="linenos">139</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-140"><a href="#BigQuery-140"><span class="linenos">140</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="BigQuery-141"><a href="#BigQuery-141"><span class="linenos">141</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="BigQuery-142"><a href="#BigQuery-142"><span class="linenos">142</span></a> <span class="s2">"BEGIN TRANSACTION"</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="BigQuery-143"><a href="#BigQuery-143"><span class="linenos">143</span></a> <span class="s2">"CURRENT_DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> +</span><span id="BigQuery-144"><a href="#BigQuery-144"><span class="linenos">144</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="BigQuery-145"><a href="#BigQuery-145"><span class="linenos">145</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="BigQuery-146"><a href="#BigQuery-146"><span class="linenos">146</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> +</span><span id="BigQuery-147"><a href="#BigQuery-147"><span class="linenos">147</span></a> <span class="s2">"FLOAT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="BigQuery-148"><a href="#BigQuery-148"><span class="linenos">148</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="BigQuery-149"><a href="#BigQuery-149"><span class="linenos">149</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="BigQuery-150"><a href="#BigQuery-150"><span class="linenos">150</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> +</span><span id="BigQuery-151"><a href="#BigQuery-151"><span class="linenos">151</span></a> <span class="p">}</span> +</span><span id="BigQuery-152"><a href="#BigQuery-152"><span class="linenos">152</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">)</span> +</span><span id="BigQuery-153"><a href="#BigQuery-153"><span class="linenos">153</span></a> +</span><span id="BigQuery-154"><a href="#BigQuery-154"><span class="linenos">154</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="BigQuery-155"><a href="#BigQuery-155"><span class="linenos">155</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-156"><a href="#BigQuery-156"><span class="linenos">156</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 class="c1"># type: ignore</span> +</span><span id="BigQuery-157"><a href="#BigQuery-157"><span class="linenos">157</span></a> <span class="s2">"DATE_TRUNC"</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">DateTrunc</span><span class="p">(</span> +</span><span id="BigQuery-158"><a href="#BigQuery-158"><span class="linenos">158</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">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="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery-159"><a href="#BigQuery-159"><span class="linenos">159</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="BigQuery-160"><a href="#BigQuery-160"><span class="linenos">160</span></a> <span class="p">),</span> +</span><span id="BigQuery-161"><a href="#BigQuery-161"><span class="linenos">161</span></a> <span class="s2">"DATE_ADD"</span><span class="p">:</span> <span class="n">_date_add</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="BigQuery-162"><a href="#BigQuery-162"><span class="linenos">162</span></a> <span class="s2">"DATETIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">),</span> +</span><span id="BigQuery-163"><a href="#BigQuery-163"><span class="linenos">163</span></a> <span class="s2">"DIV"</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">IntDiv</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">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="BigQuery-164"><a href="#BigQuery-164"><span class="linenos">164</span></a> <span class="s2">"REGEXP_CONTAINS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="BigQuery-165"><a href="#BigQuery-165"><span class="linenos">165</span></a> <span class="s2">"REGEXP_EXTRACT"</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">RegexpExtract</span><span class="p">(</span> +</span><span id="BigQuery-166"><a href="#BigQuery-166"><span class="linenos">166</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="BigQuery-167"><a href="#BigQuery-167"><span class="linenos">167</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="BigQuery-168"><a href="#BigQuery-168"><span class="linenos">168</span></a> <span class="n">position</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="BigQuery-169"><a href="#BigQuery-169"><span class="linenos">169</span></a> <span class="n">occurrence</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="BigQuery-170"><a href="#BigQuery-170"><span class="linenos">170</span></a> <span class="n">group</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">1</span><span class="p">)</span> +</span><span id="BigQuery-171"><a href="#BigQuery-171"><span class="linenos">171</span></a> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="nb">str</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="o">.</span><span class="n">groups</span> <span class="o">==</span> <span class="mi">1</span> +</span><span id="BigQuery-172"><a href="#BigQuery-172"><span class="linenos">172</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="BigQuery-173"><a href="#BigQuery-173"><span class="linenos">173</span></a> <span class="p">),</span> +</span><span id="BigQuery-174"><a href="#BigQuery-174"><span class="linenos">174</span></a> <span class="s2">"TIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">),</span> +</span><span id="BigQuery-175"><a href="#BigQuery-175"><span class="linenos">175</span></a> <span class="s2">"TIMESTAMP_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">),</span> +</span><span id="BigQuery-176"><a href="#BigQuery-176"><span class="linenos">176</span></a> <span class="s2">"DATE_SUB"</span><span class="p">:</span> <span class="n">_date_add</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="BigQuery-177"><a href="#BigQuery-177"><span class="linenos">177</span></a> <span class="s2">"DATETIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">),</span> +</span><span id="BigQuery-178"><a href="#BigQuery-178"><span class="linenos">178</span></a> <span class="s2">"TIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">),</span> +</span><span id="BigQuery-179"><a href="#BigQuery-179"><span class="linenos">179</span></a> <span class="s2">"TIMESTAMP_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">),</span> +</span><span id="BigQuery-180"><a href="#BigQuery-180"><span class="linenos">180</span></a> <span class="s2">"PARSE_TIMESTAMP"</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">StrToTime</span><span class="p">(</span> +</span><span id="BigQuery-181"><a href="#BigQuery-181"><span class="linenos">181</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">1</span><span class="p">),</span> <span class="nb">format</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="BigQuery-182"><a href="#BigQuery-182"><span class="linenos">182</span></a> <span class="p">),</span> +</span><span id="BigQuery-183"><a href="#BigQuery-183"><span class="linenos">183</span></a> <span class="p">}</span> +</span><span id="BigQuery-184"><a href="#BigQuery-184"><span class="linenos">184</span></a> +</span><span id="BigQuery-185"><a href="#BigQuery-185"><span class="linenos">185</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-186"><a href="#BigQuery-186"><span class="linenos">186</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery-187"><a href="#BigQuery-187"><span class="linenos">187</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()]),</span> +</span><span id="BigQuery-188"><a href="#BigQuery-188"><span class="linenos">188</span></a> <span class="p">}</span> +</span><span id="BigQuery-189"><a href="#BigQuery-189"><span class="linenos">189</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> +</span><span id="BigQuery-190"><a href="#BigQuery-190"><span class="linenos">190</span></a> +</span><span id="BigQuery-191"><a href="#BigQuery-191"><span class="linenos">191</span></a> <span class="n">NO_PAREN_FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-192"><a href="#BigQuery-192"><span class="linenos">192</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">NO_PAREN_FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery-193"><a href="#BigQuery-193"><span class="linenos">193</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDatetime</span><span class="p">,</span> +</span><span id="BigQuery-194"><a href="#BigQuery-194"><span class="linenos">194</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">,</span> +</span><span id="BigQuery-195"><a href="#BigQuery-195"><span class="linenos">195</span></a> <span class="p">}</span> +</span><span id="BigQuery-196"><a href="#BigQuery-196"><span class="linenos">196</span></a> +</span><span id="BigQuery-197"><a href="#BigQuery-197"><span class="linenos">197</span></a> <span class="n">NESTED_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-198"><a href="#BigQuery-198"><span class="linenos">198</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">NESTED_TYPE_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery-199"><a href="#BigQuery-199"><span class="linenos">199</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="BigQuery-200"><a href="#BigQuery-200"><span class="linenos">200</span></a> <span class="p">}</span> +</span><span id="BigQuery-201"><a href="#BigQuery-201"><span class="linenos">201</span></a> +</span><span id="BigQuery-202"><a href="#BigQuery-202"><span class="linenos">202</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-203"><a href="#BigQuery-203"><span class="linenos">203</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery-204"><a href="#BigQuery-204"><span class="linenos">204</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> +</span><span id="BigQuery-205"><a href="#BigQuery-205"><span class="linenos">205</span></a> <span class="p">}</span> +</span><span id="BigQuery-206"><a href="#BigQuery-206"><span class="linenos">206</span></a> +</span><span id="BigQuery-207"><a href="#BigQuery-207"><span class="linenos">207</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-208"><a href="#BigQuery-208"><span class="linenos">208</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">PROPERTY_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery-209"><a href="#BigQuery-209"><span class="linenos">209</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="BigQuery-210"><a href="#BigQuery-210"><span class="linenos">210</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> +</span><span id="BigQuery-211"><a href="#BigQuery-211"><span class="linenos">211</span></a> <span class="p">),</span> +</span><span id="BigQuery-212"><a href="#BigQuery-212"><span class="linenos">212</span></a> <span class="p">}</span> +</span><span id="BigQuery-213"><a href="#BigQuery-213"><span class="linenos">213</span></a> +</span><span id="BigQuery-214"><a href="#BigQuery-214"><span class="linenos">214</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="BigQuery-215"><a href="#BigQuery-215"><span class="linenos">215</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-216"><a href="#BigQuery-216"><span class="linenos">216</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 class="c1"># type: ignore</span> +</span><span id="BigQuery-217"><a href="#BigQuery-217"><span class="linenos">217</span></a> <span class="o">**</span><span class="n">transforms</span><span class="o">.</span><span class="n">REMOVE_PRECISION_PARAMETERIZED_TYPES</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery-218"><a href="#BigQuery-218"><span class="linenos">218</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">"ARRAY_LENGTH"</span><span class="p">),</span> +</span><span id="BigQuery-219"><a href="#BigQuery-219"><span class="linenos">219</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="BigQuery-220"><a href="#BigQuery-220"><span class="linenos">220</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="BigQuery-221"><a href="#BigQuery-221"><span class="linenos">221</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="BigQuery-222"><a href="#BigQuery-222"><span class="linenos">222</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="BigQuery-223"><a href="#BigQuery-223"><span class="linenos">223</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="sa">f</span><span class="s2">"DATE_DIFF(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</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">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'unit'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DAY'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="BigQuery-224"><a href="#BigQuery-224"><span class="linenos">224</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="BigQuery-225"><a href="#BigQuery-225"><span class="linenos">225</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"DATE_TRUNC"</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">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> +</span><span id="BigQuery-226"><a href="#BigQuery-226"><span class="linenos">226</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STRING_AGG"</span><span class="p">),</span> +</span><span id="BigQuery-227"><a href="#BigQuery-227"><span class="linenos">227</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="BigQuery-228"><a href="#BigQuery-228"><span class="linenos">228</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">),</span> +</span><span id="BigQuery-229"><a href="#BigQuery-229"><span class="linenos">229</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="BigQuery-230"><a href="#BigQuery-230"><span class="linenos">230</span></a> <span class="p">[</span><span class="n">_unqualify_unnest</span><span class="p">],</span> <span class="n">transforms</span><span class="o">.</span><span class="n">delegate</span><span class="p">(</span><span class="s2">"select_sql"</span><span class="p">)</span> +</span><span id="BigQuery-231"><a href="#BigQuery-231"><span class="linenos">231</span></a> <span class="p">),</span> +</span><span id="BigQuery-232"><a href="#BigQuery-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"PARSE_TIMESTAMP(</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">, </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="BigQuery-233"><a href="#BigQuery-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="BigQuery-234"><a href="#BigQuery-234"><span class="linenos">234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="BigQuery-235"><a href="#BigQuery-235"><span class="linenos">235</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="BigQuery-236"><a href="#BigQuery-236"><span class="linenos">236</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="BigQuery-237"><a href="#BigQuery-237"><span class="linenos">237</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="BigQuery-238"><a href="#BigQuery-238"><span class="linenos">238</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 class="s2">"bigquery"</span><span class="p">),</span> +</span><span id="BigQuery-239"><a href="#BigQuery-239"><span class="linenos">239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="BigQuery-240"><a href="#BigQuery-240"><span class="linenos">240</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">"VAR_POP"</span><span class="p">),</span> +</span><span id="BigQuery-241"><a href="#BigQuery-241"><span class="linenos">241</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">:</span> <span class="n">_derived_table_values_to_unnest</span><span class="p">,</span> +</span><span id="BigQuery-242"><a href="#BigQuery-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">_returnsproperty_sql</span><span class="p">,</span> +</span><span id="BigQuery-243"><a href="#BigQuery-243"><span class="linenos">243</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> +</span><span id="BigQuery-244"><a href="#BigQuery-244"><span class="linenos">244</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="sa">f</span><span class="s2">"TRIM"</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="BigQuery-245"><a href="#BigQuery-245"><span class="linenos">245</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">"DETERMINISTIC"</span> +</span><span id="BigQuery-246"><a href="#BigQuery-246"><span class="linenos">246</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"IMMUTABLE"</span> +</span><span id="BigQuery-247"><a href="#BigQuery-247"><span class="linenos">247</span></a> <span class="k">else</span> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">,</span> +</span><span id="BigQuery-248"><a href="#BigQuery-248"><span class="linenos">248</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_CONTAINS"</span><span class="p">),</span> +</span><span id="BigQuery-249"><a href="#BigQuery-249"><span class="linenos">249</span></a> <span class="p">}</span> +</span><span id="BigQuery-250"><a href="#BigQuery-250"><span class="linenos">250</span></a> +</span><span id="BigQuery-251"><a href="#BigQuery-251"><span class="linenos">251</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-252"><a href="#BigQuery-252"><span class="linenos">252</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 class="c1"># type: ignore</span> +</span><span id="BigQuery-253"><a href="#BigQuery-253"><span class="linenos">253</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> +</span><span id="BigQuery-254"><a href="#BigQuery-254"><span class="linenos">254</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> +</span><span id="BigQuery-255"><a href="#BigQuery-255"><span class="linenos">255</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">"INT64"</span><span class="p">,</span> +</span><span id="BigQuery-256"><a href="#BigQuery-256"><span class="linenos">256</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> +</span><span id="BigQuery-257"><a href="#BigQuery-257"><span class="linenos">257</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="s2">"NUMERIC"</span><span class="p">,</span> +</span><span id="BigQuery-258"><a href="#BigQuery-258"><span class="linenos">258</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">"FLOAT64"</span><span class="p">,</span> +</span><span id="BigQuery-259"><a href="#BigQuery-259"><span class="linenos">259</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"FLOAT64"</span><span class="p">,</span> +</span><span id="BigQuery-260"><a href="#BigQuery-260"><span class="linenos">260</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">:</span> <span class="s2">"BOOL"</span><span class="p">,</span> +</span><span id="BigQuery-261"><a href="#BigQuery-261"><span class="linenos">261</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">"STRING"</span><span class="p">,</span> +</span><span id="BigQuery-262"><a href="#BigQuery-262"><span class="linenos">262</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> +</span><span id="BigQuery-263"><a href="#BigQuery-263"><span class="linenos">263</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> +</span><span id="BigQuery-264"><a href="#BigQuery-264"><span class="linenos">264</span></a> <span class="p">}</span> +</span><span id="BigQuery-265"><a href="#BigQuery-265"><span class="linenos">265</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery-266"><a href="#BigQuery-266"><span class="linenos">266</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 class="c1"># type: ignore</span> +</span><span id="BigQuery-267"><a href="#BigQuery-267"><span class="linenos">267</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="BigQuery-268"><a href="#BigQuery-268"><span class="linenos">268</span></a> <span class="p">}</span> </span><span id="BigQuery-269"><a href="#BigQuery-269"><span class="linenos">269</span></a> -</span><span id="BigQuery-270"><a href="#BigQuery-270"><span class="linenos">270</span></a> <span class="k">def</span> <span class="nf">array_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">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-271"><a href="#BigQuery-271"><span class="linenos">271</span></a> <span class="n">first_arg</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="BigQuery-272"><a href="#BigQuery-272"><span class="linenos">272</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="BigQuery-273"><a href="#BigQuery-273"><span class="linenos">273</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">first_arg</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery-274"><a href="#BigQuery-274"><span class="linenos">274</span></a> -</span><span id="BigQuery-275"><a href="#BigQuery-275"><span class="linenos">275</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery-270"><a href="#BigQuery-270"><span class="linenos">270</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="BigQuery-271"><a href="#BigQuery-271"><span class="linenos">271</span></a> +</span><span id="BigQuery-272"><a href="#BigQuery-272"><span class="linenos">272</span></a> <span class="k">def</span> <span class="nf">array_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">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-273"><a href="#BigQuery-273"><span class="linenos">273</span></a> <span class="n">first_arg</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="BigQuery-274"><a href="#BigQuery-274"><span class="linenos">274</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="BigQuery-275"><a href="#BigQuery-275"><span class="linenos">275</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">first_arg</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> </span><span id="BigQuery-276"><a href="#BigQuery-276"><span class="linenos">276</span></a> -</span><span id="BigQuery-277"><a href="#BigQuery-277"><span class="linenos">277</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-278"><a href="#BigQuery-278"><span class="linenos">278</span></a> <span class="k">return</span> <span class="s2">"BEGIN TRANSACTION"</span> -</span><span id="BigQuery-279"><a href="#BigQuery-279"><span class="linenos">279</span></a> -</span><span id="BigQuery-280"><a href="#BigQuery-280"><span class="linenos">280</span></a> <span class="k">def</span> <span class="nf">commit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-281"><a href="#BigQuery-281"><span class="linenos">281</span></a> <span class="k">return</span> <span class="s2">"COMMIT TRANSACTION"</span> -</span><span id="BigQuery-282"><a href="#BigQuery-282"><span class="linenos">282</span></a> -</span><span id="BigQuery-283"><a href="#BigQuery-283"><span class="linenos">283</span></a> <span class="k">def</span> <span class="nf">rollback_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-284"><a href="#BigQuery-284"><span class="linenos">284</span></a> <span class="k">return</span> <span class="s2">"ROLLBACK TRANSACTION"</span> -</span><span id="BigQuery-285"><a href="#BigQuery-285"><span class="linenos">285</span></a> -</span><span id="BigQuery-286"><a href="#BigQuery-286"><span class="linenos">286</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-287"><a href="#BigQuery-287"><span class="linenos">287</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery-288"><a href="#BigQuery-288"><span class="linenos">288</span></a> -</span><span id="BigQuery-289"><a href="#BigQuery-289"><span class="linenos">289</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-290"><a href="#BigQuery-290"><span class="linenos">290</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="BigQuery-291"><a href="#BigQuery-291"><span class="linenos">291</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery-292"><a href="#BigQuery-292"><span class="linenos">292</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery-293"><a href="#BigQuery-293"><span class="linenos">293</span></a> -</span><span id="BigQuery-294"><a href="#BigQuery-294"><span class="linenos">294</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery-295"><a href="#BigQuery-295"><span class="linenos">295</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="BigQuery-296"><a href="#BigQuery-296"><span class="linenos">296</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery-297"><a href="#BigQuery-297"><span class="linenos">297</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery-277"><a href="#BigQuery-277"><span class="linenos">277</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery-278"><a href="#BigQuery-278"><span class="linenos">278</span></a> +</span><span id="BigQuery-279"><a href="#BigQuery-279"><span class="linenos">279</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-280"><a href="#BigQuery-280"><span class="linenos">280</span></a> <span class="k">return</span> <span class="s2">"BEGIN TRANSACTION"</span> +</span><span id="BigQuery-281"><a href="#BigQuery-281"><span class="linenos">281</span></a> +</span><span id="BigQuery-282"><a href="#BigQuery-282"><span class="linenos">282</span></a> <span class="k">def</span> <span class="nf">commit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-283"><a href="#BigQuery-283"><span class="linenos">283</span></a> <span class="k">return</span> <span class="s2">"COMMIT TRANSACTION"</span> +</span><span id="BigQuery-284"><a href="#BigQuery-284"><span class="linenos">284</span></a> +</span><span id="BigQuery-285"><a href="#BigQuery-285"><span class="linenos">285</span></a> <span class="k">def</span> <span class="nf">rollback_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-286"><a href="#BigQuery-286"><span class="linenos">286</span></a> <span class="k">return</span> <span class="s2">"ROLLBACK TRANSACTION"</span> +</span><span id="BigQuery-287"><a href="#BigQuery-287"><span class="linenos">287</span></a> +</span><span id="BigQuery-288"><a href="#BigQuery-288"><span class="linenos">288</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-289"><a href="#BigQuery-289"><span class="linenos">289</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery-290"><a href="#BigQuery-290"><span class="linenos">290</span></a> +</span><span id="BigQuery-291"><a href="#BigQuery-291"><span class="linenos">291</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-292"><a href="#BigQuery-292"><span class="linenos">292</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="BigQuery-293"><a href="#BigQuery-293"><span class="linenos">293</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery-294"><a href="#BigQuery-294"><span class="linenos">294</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery-295"><a href="#BigQuery-295"><span class="linenos">295</span></a> +</span><span id="BigQuery-296"><a href="#BigQuery-296"><span class="linenos">296</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery-297"><a href="#BigQuery-297"><span class="linenos">297</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="BigQuery-298"><a href="#BigQuery-298"><span class="linenos">298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery-299"><a href="#BigQuery-299"><span class="linenos">299</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> - <div id="BigQuery.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">BigQuery</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#BigQuery.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -641,31 +629,31 @@ </div> <a class="headerlink" href="#BigQuery.Tokenizer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Tokenizer-127"><a href="#BigQuery.Tokenizer-127"><span class="linenos">127</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="BigQuery.Tokenizer-128"><a href="#BigQuery.Tokenizer-128"><span class="linenos">128</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="BigQuery.Tokenizer-129"><a href="#BigQuery.Tokenizer-129"><span class="linenos">129</span></a> <span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">quote</span><span class="p">,</span> <span class="n">quote</span><span class="p">)</span> <span class="k">if</span> <span class="n">prefix</span> <span class="k">else</span> <span class="n">quote</span> -</span><span id="BigQuery.Tokenizer-130"><a href="#BigQuery.Tokenizer-130"><span class="linenos">130</span></a> <span class="k">for</span> <span class="n">quote</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s1">'"'</span><span class="p">,</span> <span class="s1">'"""'</span><span class="p">,</span> <span class="s2">"'''"</span><span class="p">]</span> -</span><span id="BigQuery.Tokenizer-131"><a href="#BigQuery.Tokenizer-131"><span class="linenos">131</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">,</span> <span class="s2">"R"</span><span class="p">]</span> -</span><span id="BigQuery.Tokenizer-132"><a href="#BigQuery.Tokenizer-132"><span class="linenos">132</span></a> <span class="p">]</span> -</span><span id="BigQuery.Tokenizer-133"><a href="#BigQuery.Tokenizer-133"><span class="linenos">133</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> -</span><span id="BigQuery.Tokenizer-134"><a href="#BigQuery.Tokenizer-134"><span class="linenos">134</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> -</span><span id="BigQuery.Tokenizer-135"><a href="#BigQuery.Tokenizer-135"><span class="linenos">135</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> -</span><span id="BigQuery.Tokenizer-136"><a href="#BigQuery.Tokenizer-136"><span class="linenos">136</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"0x"</span><span class="p">,</span> <span class="s2">""</span><span class="p">),</span> <span class="p">(</span><span class="s2">"0X"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)]</span> -</span><span id="BigQuery.Tokenizer-137"><a href="#BigQuery.Tokenizer-137"><span class="linenos">137</span></a> -</span><span id="BigQuery.Tokenizer-138"><a href="#BigQuery.Tokenizer-138"><span class="linenos">138</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Tokenizer-139"><a href="#BigQuery.Tokenizer-139"><span class="linenos">139</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="BigQuery.Tokenizer-140"><a href="#BigQuery.Tokenizer-140"><span class="linenos">140</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="BigQuery.Tokenizer-141"><a href="#BigQuery.Tokenizer-141"><span class="linenos">141</span></a> <span class="s2">"BEGIN TRANSACTION"</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="BigQuery.Tokenizer-142"><a href="#BigQuery.Tokenizer-142"><span class="linenos">142</span></a> <span class="s2">"CURRENT_DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> -</span><span id="BigQuery.Tokenizer-143"><a href="#BigQuery.Tokenizer-143"><span class="linenos">143</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="BigQuery.Tokenizer-144"><a href="#BigQuery.Tokenizer-144"><span class="linenos">144</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="BigQuery.Tokenizer-145"><a href="#BigQuery.Tokenizer-145"><span class="linenos">145</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> -</span><span id="BigQuery.Tokenizer-146"><a href="#BigQuery.Tokenizer-146"><span class="linenos">146</span></a> <span class="s2">"FLOAT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="BigQuery.Tokenizer-147"><a href="#BigQuery.Tokenizer-147"><span class="linenos">147</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="BigQuery.Tokenizer-148"><a href="#BigQuery.Tokenizer-148"><span class="linenos">148</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="BigQuery.Tokenizer-149"><a href="#BigQuery.Tokenizer-149"><span class="linenos">149</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> -</span><span id="BigQuery.Tokenizer-150"><a href="#BigQuery.Tokenizer-150"><span class="linenos">150</span></a> <span class="p">}</span> -</span><span id="BigQuery.Tokenizer-151"><a href="#BigQuery.Tokenizer-151"><span class="linenos">151</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Tokenizer-128"><a href="#BigQuery.Tokenizer-128"><span class="linenos">128</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="BigQuery.Tokenizer-129"><a href="#BigQuery.Tokenizer-129"><span class="linenos">129</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="BigQuery.Tokenizer-130"><a href="#BigQuery.Tokenizer-130"><span class="linenos">130</span></a> <span class="p">(</span><span class="n">prefix</span> <span class="o">+</span> <span class="n">quote</span><span class="p">,</span> <span class="n">quote</span><span class="p">)</span> <span class="k">if</span> <span class="n">prefix</span> <span class="k">else</span> <span class="n">quote</span> +</span><span id="BigQuery.Tokenizer-131"><a href="#BigQuery.Tokenizer-131"><span class="linenos">131</span></a> <span class="k">for</span> <span class="n">quote</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s1">'"'</span><span class="p">,</span> <span class="s1">'"""'</span><span class="p">,</span> <span class="s2">"'''"</span><span class="p">]</span> +</span><span id="BigQuery.Tokenizer-132"><a href="#BigQuery.Tokenizer-132"><span class="linenos">132</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"r"</span><span class="p">,</span> <span class="s2">"R"</span><span class="p">]</span> +</span><span id="BigQuery.Tokenizer-133"><a href="#BigQuery.Tokenizer-133"><span class="linenos">133</span></a> <span class="p">]</span> +</span><span id="BigQuery.Tokenizer-134"><a href="#BigQuery.Tokenizer-134"><span class="linenos">134</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="s2">"#"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> +</span><span id="BigQuery.Tokenizer-135"><a href="#BigQuery.Tokenizer-135"><span class="linenos">135</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> +</span><span id="BigQuery.Tokenizer-136"><a href="#BigQuery.Tokenizer-136"><span class="linenos">136</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> +</span><span id="BigQuery.Tokenizer-137"><a href="#BigQuery.Tokenizer-137"><span class="linenos">137</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"0x"</span><span class="p">,</span> <span class="s2">""</span><span class="p">),</span> <span class="p">(</span><span class="s2">"0X"</span><span class="p">,</span> <span class="s2">""</span><span class="p">)]</span> +</span><span id="BigQuery.Tokenizer-138"><a href="#BigQuery.Tokenizer-138"><span class="linenos">138</span></a> +</span><span id="BigQuery.Tokenizer-139"><a href="#BigQuery.Tokenizer-139"><span class="linenos">139</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Tokenizer-140"><a href="#BigQuery.Tokenizer-140"><span class="linenos">140</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="BigQuery.Tokenizer-141"><a href="#BigQuery.Tokenizer-141"><span class="linenos">141</span></a> <span class="s2">"BEGIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="BigQuery.Tokenizer-142"><a href="#BigQuery.Tokenizer-142"><span class="linenos">142</span></a> <span class="s2">"BEGIN TRANSACTION"</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="BigQuery.Tokenizer-143"><a href="#BigQuery.Tokenizer-143"><span class="linenos">143</span></a> <span class="s2">"CURRENT_DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> +</span><span id="BigQuery.Tokenizer-144"><a href="#BigQuery.Tokenizer-144"><span class="linenos">144</span></a> <span class="s2">"CURRENT_TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="BigQuery.Tokenizer-145"><a href="#BigQuery.Tokenizer-145"><span class="linenos">145</span></a> <span class="s2">"DECLARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="BigQuery.Tokenizer-146"><a href="#BigQuery.Tokenizer-146"><span class="linenos">146</span></a> <span class="s2">"GEOGRAPHY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GEOGRAPHY</span><span class="p">,</span> +</span><span id="BigQuery.Tokenizer-147"><a href="#BigQuery.Tokenizer-147"><span class="linenos">147</span></a> <span class="s2">"FLOAT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="BigQuery.Tokenizer-148"><a href="#BigQuery.Tokenizer-148"><span class="linenos">148</span></a> <span class="s2">"INT64"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="BigQuery.Tokenizer-149"><a href="#BigQuery.Tokenizer-149"><span class="linenos">149</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="BigQuery.Tokenizer-150"><a href="#BigQuery.Tokenizer-150"><span class="linenos">150</span></a> <span class="s2">"UNKNOWN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> +</span><span id="BigQuery.Tokenizer-151"><a href="#BigQuery.Tokenizer-151"><span class="linenos">151</span></a> <span class="p">}</span> +</span><span id="BigQuery.Tokenizer-152"><a href="#BigQuery.Tokenizer-152"><span class="linenos">152</span></a> <span class="n">KEYWORDS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">)</span> </span></pre></div> @@ -675,8 +663,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="BigQuery.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="BigQuery.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="BigQuery.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="BigQuery.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -694,65 +681,65 @@ </div> <a class="headerlink" href="#BigQuery.Parser"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Parser-153"><a href="#BigQuery.Parser-153"><span class="linenos">153</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="BigQuery.Parser-154"><a href="#BigQuery.Parser-154"><span class="linenos">154</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Parser-155"><a href="#BigQuery.Parser-155"><span class="linenos">155</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 class="c1"># type: ignore</span> -</span><span id="BigQuery.Parser-156"><a href="#BigQuery.Parser-156"><span class="linenos">156</span></a> <span class="s2">"DATE_TRUNC"</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">DateTrunc</span><span class="p">(</span> -</span><span id="BigQuery.Parser-157"><a href="#BigQuery.Parser-157"><span class="linenos">157</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">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="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery.Parser-158"><a href="#BigQuery.Parser-158"><span class="linenos">158</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="BigQuery.Parser-159"><a href="#BigQuery.Parser-159"><span class="linenos">159</span></a> <span class="p">),</span> -</span><span id="BigQuery.Parser-160"><a href="#BigQuery.Parser-160"><span class="linenos">160</span></a> <span class="s2">"DATE_ADD"</span><span class="p">:</span> <span class="n">_date_add</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="BigQuery.Parser-161"><a href="#BigQuery.Parser-161"><span class="linenos">161</span></a> <span class="s2">"DATETIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">),</span> -</span><span id="BigQuery.Parser-162"><a href="#BigQuery.Parser-162"><span class="linenos">162</span></a> <span class="s2">"DIV"</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">IntDiv</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">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="BigQuery.Parser-163"><a href="#BigQuery.Parser-163"><span class="linenos">163</span></a> <span class="s2">"REGEXP_CONTAINS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="BigQuery.Parser-164"><a href="#BigQuery.Parser-164"><span class="linenos">164</span></a> <span class="s2">"REGEXP_EXTRACT"</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">RegexpExtract</span><span class="p">(</span> -</span><span id="BigQuery.Parser-165"><a href="#BigQuery.Parser-165"><span class="linenos">165</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="BigQuery.Parser-166"><a href="#BigQuery.Parser-166"><span class="linenos">166</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="BigQuery.Parser-167"><a href="#BigQuery.Parser-167"><span class="linenos">167</span></a> <span class="n">position</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="BigQuery.Parser-168"><a href="#BigQuery.Parser-168"><span class="linenos">168</span></a> <span class="n">occurrence</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="BigQuery.Parser-169"><a href="#BigQuery.Parser-169"><span class="linenos">169</span></a> <span class="n">group</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">1</span><span class="p">)</span> -</span><span id="BigQuery.Parser-170"><a href="#BigQuery.Parser-170"><span class="linenos">170</span></a> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="nb">str</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="o">.</span><span class="n">groups</span> <span class="o">==</span> <span class="mi">1</span> -</span><span id="BigQuery.Parser-171"><a href="#BigQuery.Parser-171"><span class="linenos">171</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="BigQuery.Parser-172"><a href="#BigQuery.Parser-172"><span class="linenos">172</span></a> <span class="p">),</span> -</span><span id="BigQuery.Parser-173"><a href="#BigQuery.Parser-173"><span class="linenos">173</span></a> <span class="s2">"TIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">),</span> -</span><span id="BigQuery.Parser-174"><a href="#BigQuery.Parser-174"><span class="linenos">174</span></a> <span class="s2">"TIMESTAMP_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">),</span> -</span><span id="BigQuery.Parser-175"><a href="#BigQuery.Parser-175"><span class="linenos">175</span></a> <span class="s2">"DATE_SUB"</span><span class="p">:</span> <span class="n">_date_add</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="BigQuery.Parser-176"><a href="#BigQuery.Parser-176"><span class="linenos">176</span></a> <span class="s2">"DATETIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">),</span> -</span><span id="BigQuery.Parser-177"><a href="#BigQuery.Parser-177"><span class="linenos">177</span></a> <span class="s2">"TIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">),</span> -</span><span id="BigQuery.Parser-178"><a href="#BigQuery.Parser-178"><span class="linenos">178</span></a> <span class="s2">"TIMESTAMP_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">),</span> -</span><span id="BigQuery.Parser-179"><a href="#BigQuery.Parser-179"><span class="linenos">179</span></a> <span class="s2">"PARSE_TIMESTAMP"</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">StrToTime</span><span class="p">(</span> -</span><span id="BigQuery.Parser-180"><a href="#BigQuery.Parser-180"><span class="linenos">180</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">1</span><span class="p">),</span> <span class="nb">format</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="BigQuery.Parser-181"><a href="#BigQuery.Parser-181"><span class="linenos">181</span></a> <span class="p">),</span> -</span><span id="BigQuery.Parser-182"><a href="#BigQuery.Parser-182"><span class="linenos">182</span></a> <span class="p">}</span> -</span><span id="BigQuery.Parser-183"><a href="#BigQuery.Parser-183"><span class="linenos">183</span></a> -</span><span id="BigQuery.Parser-184"><a href="#BigQuery.Parser-184"><span class="linenos">184</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Parser-185"><a href="#BigQuery.Parser-185"><span class="linenos">185</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery.Parser-186"><a href="#BigQuery.Parser-186"><span class="linenos">186</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()]),</span> -</span><span id="BigQuery.Parser-187"><a href="#BigQuery.Parser-187"><span class="linenos">187</span></a> <span class="p">}</span> -</span><span id="BigQuery.Parser-188"><a href="#BigQuery.Parser-188"><span class="linenos">188</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> -</span><span id="BigQuery.Parser-189"><a href="#BigQuery.Parser-189"><span class="linenos">189</span></a> -</span><span id="BigQuery.Parser-190"><a href="#BigQuery.Parser-190"><span class="linenos">190</span></a> <span class="n">NO_PAREN_FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Parser-191"><a href="#BigQuery.Parser-191"><span class="linenos">191</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">NO_PAREN_FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery.Parser-192"><a href="#BigQuery.Parser-192"><span class="linenos">192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDatetime</span><span class="p">,</span> -</span><span id="BigQuery.Parser-193"><a href="#BigQuery.Parser-193"><span class="linenos">193</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">,</span> -</span><span id="BigQuery.Parser-194"><a href="#BigQuery.Parser-194"><span class="linenos">194</span></a> <span class="p">}</span> -</span><span id="BigQuery.Parser-195"><a href="#BigQuery.Parser-195"><span class="linenos">195</span></a> -</span><span id="BigQuery.Parser-196"><a href="#BigQuery.Parser-196"><span class="linenos">196</span></a> <span class="n">NESTED_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Parser-197"><a href="#BigQuery.Parser-197"><span class="linenos">197</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">NESTED_TYPE_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery.Parser-198"><a href="#BigQuery.Parser-198"><span class="linenos">198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="BigQuery.Parser-199"><a href="#BigQuery.Parser-199"><span class="linenos">199</span></a> <span class="p">}</span> -</span><span id="BigQuery.Parser-200"><a href="#BigQuery.Parser-200"><span class="linenos">200</span></a> -</span><span id="BigQuery.Parser-201"><a href="#BigQuery.Parser-201"><span class="linenos">201</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Parser-202"><a href="#BigQuery.Parser-202"><span class="linenos">202</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery.Parser-203"><a href="#BigQuery.Parser-203"><span class="linenos">203</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> -</span><span id="BigQuery.Parser-204"><a href="#BigQuery.Parser-204"><span class="linenos">204</span></a> <span class="p">}</span> -</span><span id="BigQuery.Parser-205"><a href="#BigQuery.Parser-205"><span class="linenos">205</span></a> -</span><span id="BigQuery.Parser-206"><a href="#BigQuery.Parser-206"><span class="linenos">206</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Parser-207"><a href="#BigQuery.Parser-207"><span class="linenos">207</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">PROPERTY_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery.Parser-208"><a href="#BigQuery.Parser-208"><span class="linenos">208</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="BigQuery.Parser-209"><a href="#BigQuery.Parser-209"><span class="linenos">209</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> -</span><span id="BigQuery.Parser-210"><a href="#BigQuery.Parser-210"><span class="linenos">210</span></a> <span class="p">),</span> -</span><span id="BigQuery.Parser-211"><a href="#BigQuery.Parser-211"><span class="linenos">211</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Parser-154"><a href="#BigQuery.Parser-154"><span class="linenos">154</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="BigQuery.Parser-155"><a href="#BigQuery.Parser-155"><span class="linenos">155</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Parser-156"><a href="#BigQuery.Parser-156"><span class="linenos">156</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 class="c1"># type: ignore</span> +</span><span id="BigQuery.Parser-157"><a href="#BigQuery.Parser-157"><span class="linenos">157</span></a> <span class="s2">"DATE_TRUNC"</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">DateTrunc</span><span class="p">(</span> +</span><span id="BigQuery.Parser-158"><a href="#BigQuery.Parser-158"><span class="linenos">158</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">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="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery.Parser-159"><a href="#BigQuery.Parser-159"><span class="linenos">159</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="BigQuery.Parser-160"><a href="#BigQuery.Parser-160"><span class="linenos">160</span></a> <span class="p">),</span> +</span><span id="BigQuery.Parser-161"><a href="#BigQuery.Parser-161"><span class="linenos">161</span></a> <span class="s2">"DATE_ADD"</span><span class="p">:</span> <span class="n">_date_add</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="BigQuery.Parser-162"><a href="#BigQuery.Parser-162"><span class="linenos">162</span></a> <span class="s2">"DATETIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">),</span> +</span><span id="BigQuery.Parser-163"><a href="#BigQuery.Parser-163"><span class="linenos">163</span></a> <span class="s2">"DIV"</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">IntDiv</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">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="BigQuery.Parser-164"><a href="#BigQuery.Parser-164"><span class="linenos">164</span></a> <span class="s2">"REGEXP_CONTAINS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="BigQuery.Parser-165"><a href="#BigQuery.Parser-165"><span class="linenos">165</span></a> <span class="s2">"REGEXP_EXTRACT"</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">RegexpExtract</span><span class="p">(</span> +</span><span id="BigQuery.Parser-166"><a href="#BigQuery.Parser-166"><span class="linenos">166</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="BigQuery.Parser-167"><a href="#BigQuery.Parser-167"><span class="linenos">167</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="BigQuery.Parser-168"><a href="#BigQuery.Parser-168"><span class="linenos">168</span></a> <span class="n">position</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="BigQuery.Parser-169"><a href="#BigQuery.Parser-169"><span class="linenos">169</span></a> <span class="n">occurrence</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="BigQuery.Parser-170"><a href="#BigQuery.Parser-170"><span class="linenos">170</span></a> <span class="n">group</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">1</span><span class="p">)</span> +</span><span id="BigQuery.Parser-171"><a href="#BigQuery.Parser-171"><span class="linenos">171</span></a> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="nb">str</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="o">.</span><span class="n">groups</span> <span class="o">==</span> <span class="mi">1</span> +</span><span id="BigQuery.Parser-172"><a href="#BigQuery.Parser-172"><span class="linenos">172</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="BigQuery.Parser-173"><a href="#BigQuery.Parser-173"><span class="linenos">173</span></a> <span class="p">),</span> +</span><span id="BigQuery.Parser-174"><a href="#BigQuery.Parser-174"><span class="linenos">174</span></a> <span class="s2">"TIME_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">),</span> +</span><span id="BigQuery.Parser-175"><a href="#BigQuery.Parser-175"><span class="linenos">175</span></a> <span class="s2">"TIMESTAMP_ADD"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">),</span> +</span><span id="BigQuery.Parser-176"><a href="#BigQuery.Parser-176"><span class="linenos">176</span></a> <span class="s2">"DATE_SUB"</span><span class="p">:</span> <span class="n">_date_add</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="BigQuery.Parser-177"><a href="#BigQuery.Parser-177"><span class="linenos">177</span></a> <span class="s2">"DATETIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">),</span> +</span><span id="BigQuery.Parser-178"><a href="#BigQuery.Parser-178"><span class="linenos">178</span></a> <span class="s2">"TIME_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">),</span> +</span><span id="BigQuery.Parser-179"><a href="#BigQuery.Parser-179"><span class="linenos">179</span></a> <span class="s2">"TIMESTAMP_SUB"</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">),</span> +</span><span id="BigQuery.Parser-180"><a href="#BigQuery.Parser-180"><span class="linenos">180</span></a> <span class="s2">"PARSE_TIMESTAMP"</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">StrToTime</span><span class="p">(</span> +</span><span id="BigQuery.Parser-181"><a href="#BigQuery.Parser-181"><span class="linenos">181</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">1</span><span class="p">),</span> <span class="nb">format</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="BigQuery.Parser-182"><a href="#BigQuery.Parser-182"><span class="linenos">182</span></a> <span class="p">),</span> +</span><span id="BigQuery.Parser-183"><a href="#BigQuery.Parser-183"><span class="linenos">183</span></a> <span class="p">}</span> +</span><span id="BigQuery.Parser-184"><a href="#BigQuery.Parser-184"><span class="linenos">184</span></a> +</span><span id="BigQuery.Parser-185"><a href="#BigQuery.Parser-185"><span class="linenos">185</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Parser-186"><a href="#BigQuery.Parser-186"><span class="linenos">186</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery.Parser-187"><a href="#BigQuery.Parser-187"><span class="linenos">187</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()]),</span> +</span><span id="BigQuery.Parser-188"><a href="#BigQuery.Parser-188"><span class="linenos">188</span></a> <span class="p">}</span> +</span><span id="BigQuery.Parser-189"><a href="#BigQuery.Parser-189"><span class="linenos">189</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> +</span><span id="BigQuery.Parser-190"><a href="#BigQuery.Parser-190"><span class="linenos">190</span></a> +</span><span id="BigQuery.Parser-191"><a href="#BigQuery.Parser-191"><span class="linenos">191</span></a> <span class="n">NO_PAREN_FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Parser-192"><a href="#BigQuery.Parser-192"><span class="linenos">192</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">NO_PAREN_FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery.Parser-193"><a href="#BigQuery.Parser-193"><span class="linenos">193</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDatetime</span><span class="p">,</span> +</span><span id="BigQuery.Parser-194"><a href="#BigQuery.Parser-194"><span class="linenos">194</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">,</span> +</span><span id="BigQuery.Parser-195"><a href="#BigQuery.Parser-195"><span class="linenos">195</span></a> <span class="p">}</span> +</span><span id="BigQuery.Parser-196"><a href="#BigQuery.Parser-196"><span class="linenos">196</span></a> +</span><span id="BigQuery.Parser-197"><a href="#BigQuery.Parser-197"><span class="linenos">197</span></a> <span class="n">NESTED_TYPE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Parser-198"><a href="#BigQuery.Parser-198"><span class="linenos">198</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">NESTED_TYPE_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery.Parser-199"><a href="#BigQuery.Parser-199"><span class="linenos">199</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="BigQuery.Parser-200"><a href="#BigQuery.Parser-200"><span class="linenos">200</span></a> <span class="p">}</span> +</span><span id="BigQuery.Parser-201"><a href="#BigQuery.Parser-201"><span class="linenos">201</span></a> +</span><span id="BigQuery.Parser-202"><a href="#BigQuery.Parser-202"><span class="linenos">202</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Parser-203"><a href="#BigQuery.Parser-203"><span class="linenos">203</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery.Parser-204"><a href="#BigQuery.Parser-204"><span class="linenos">204</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> +</span><span id="BigQuery.Parser-205"><a href="#BigQuery.Parser-205"><span class="linenos">205</span></a> <span class="p">}</span> +</span><span id="BigQuery.Parser-206"><a href="#BigQuery.Parser-206"><span class="linenos">206</span></a> +</span><span id="BigQuery.Parser-207"><a href="#BigQuery.Parser-207"><span class="linenos">207</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Parser-208"><a href="#BigQuery.Parser-208"><span class="linenos">208</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">PROPERTY_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery.Parser-209"><a href="#BigQuery.Parser-209"><span class="linenos">209</span></a> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="BigQuery.Parser-210"><a href="#BigQuery.Parser-210"><span class="linenos">210</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> +</span><span id="BigQuery.Parser-211"><a href="#BigQuery.Parser-211"><span class="linenos">211</span></a> <span class="p">),</span> +</span><span id="BigQuery.Parser-212"><a href="#BigQuery.Parser-212"><span class="linenos">212</span></a> <span class="p">}</span> </span></pre></div> @@ -809,91 +796,92 @@ Default: "nulls_are_small"</li> </div> <a class="headerlink" href="#BigQuery.Generator"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator-213"><a href="#BigQuery.Generator-213"><span class="linenos">213</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="BigQuery.Generator-214"><a href="#BigQuery.Generator-214"><span class="linenos">214</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Generator-215"><a href="#BigQuery.Generator-215"><span class="linenos">215</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 class="c1"># type: ignore</span> -</span><span id="BigQuery.Generator-216"><a href="#BigQuery.Generator-216"><span class="linenos">216</span></a> <span class="o">**</span><span class="n">transforms</span><span class="o">.</span><span class="n">REMOVE_PRECISION_PARAMETERIZED_TYPES</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="BigQuery.Generator-217"><a href="#BigQuery.Generator-217"><span class="linenos">217</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">"ARRAY_LENGTH"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-218"><a href="#BigQuery.Generator-218"><span class="linenos">218</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-219"><a href="#BigQuery.Generator-219"><span class="linenos">219</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-220"><a href="#BigQuery.Generator-220"><span class="linenos">220</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-221"><a href="#BigQuery.Generator-221"><span class="linenos">221</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-222"><a href="#BigQuery.Generator-222"><span class="linenos">222</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="sa">f</span><span class="s2">"DATE_DIFF(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</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">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'unit'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DAY'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-223"><a href="#BigQuery.Generator-223"><span class="linenos">223</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="BigQuery.Generator-224"><a href="#BigQuery.Generator-224"><span class="linenos">224</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"DATE_TRUNC"</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">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> -</span><span id="BigQuery.Generator-225"><a href="#BigQuery.Generator-225"><span class="linenos">225</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STRING_AGG"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-226"><a href="#BigQuery.Generator-226"><span class="linenos">226</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="BigQuery.Generator-227"><a href="#BigQuery.Generator-227"><span class="linenos">227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-228"><a href="#BigQuery.Generator-228"><span class="linenos">228</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="BigQuery.Generator-229"><a href="#BigQuery.Generator-229"><span class="linenos">229</span></a> <span class="p">[</span><span class="n">_unqualify_unnest</span><span class="p">],</span> <span class="n">transforms</span><span class="o">.</span><span class="n">delegate</span><span class="p">(</span><span class="s2">"select_sql"</span><span class="p">)</span> -</span><span id="BigQuery.Generator-230"><a href="#BigQuery.Generator-230"><span class="linenos">230</span></a> <span class="p">),</span> -</span><span id="BigQuery.Generator-231"><a href="#BigQuery.Generator-231"><span class="linenos">231</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"PARSE_TIMESTAMP(</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">, </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-232"><a href="#BigQuery.Generator-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-233"><a href="#BigQuery.Generator-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-234"><a href="#BigQuery.Generator-234"><span class="linenos">234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-235"><a href="#BigQuery.Generator-235"><span class="linenos">235</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-236"><a href="#BigQuery.Generator-236"><span class="linenos">236</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="BigQuery.Generator-237"><a href="#BigQuery.Generator-237"><span class="linenos">237</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-238"><a href="#BigQuery.Generator-238"><span class="linenos">238</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">"VAR_POP"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-239"><a href="#BigQuery.Generator-239"><span class="linenos">239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">:</span> <span class="n">_derived_table_values_to_unnest</span><span class="p">,</span> -</span><span id="BigQuery.Generator-240"><a href="#BigQuery.Generator-240"><span class="linenos">240</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">_returnsproperty_sql</span><span class="p">,</span> -</span><span id="BigQuery.Generator-241"><a href="#BigQuery.Generator-241"><span class="linenos">241</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> -</span><span id="BigQuery.Generator-242"><a href="#BigQuery.Generator-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="sa">f</span><span class="s2">"TRIM"</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="BigQuery.Generator-243"><a href="#BigQuery.Generator-243"><span class="linenos">243</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">"DETERMINISTIC"</span> -</span><span id="BigQuery.Generator-244"><a href="#BigQuery.Generator-244"><span class="linenos">244</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"IMMUTABLE"</span> -</span><span id="BigQuery.Generator-245"><a href="#BigQuery.Generator-245"><span class="linenos">245</span></a> <span class="k">else</span> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-246"><a href="#BigQuery.Generator-246"><span class="linenos">246</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_CONTAINS"</span><span class="p">),</span> -</span><span id="BigQuery.Generator-247"><a href="#BigQuery.Generator-247"><span class="linenos">247</span></a> <span class="p">}</span> -</span><span id="BigQuery.Generator-248"><a href="#BigQuery.Generator-248"><span class="linenos">248</span></a> -</span><span id="BigQuery.Generator-249"><a href="#BigQuery.Generator-249"><span class="linenos">249</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Generator-250"><a href="#BigQuery.Generator-250"><span class="linenos">250</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 class="c1"># type: ignore</span> -</span><span id="BigQuery.Generator-251"><a href="#BigQuery.Generator-251"><span class="linenos">251</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-252"><a href="#BigQuery.Generator-252"><span class="linenos">252</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-253"><a href="#BigQuery.Generator-253"><span class="linenos">253</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">"INT64"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-254"><a href="#BigQuery.Generator-254"><span class="linenos">254</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-255"><a href="#BigQuery.Generator-255"><span class="linenos">255</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="s2">"NUMERIC"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-256"><a href="#BigQuery.Generator-256"><span class="linenos">256</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">"FLOAT64"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-257"><a href="#BigQuery.Generator-257"><span class="linenos">257</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"FLOAT64"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-258"><a href="#BigQuery.Generator-258"><span class="linenos">258</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">:</span> <span class="s2">"BOOL"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-259"><a href="#BigQuery.Generator-259"><span class="linenos">259</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">"STRING"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-260"><a href="#BigQuery.Generator-260"><span class="linenos">260</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-261"><a href="#BigQuery.Generator-261"><span class="linenos">261</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> -</span><span id="BigQuery.Generator-262"><a href="#BigQuery.Generator-262"><span class="linenos">262</span></a> <span class="p">}</span> -</span><span id="BigQuery.Generator-263"><a href="#BigQuery.Generator-263"><span class="linenos">263</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="BigQuery.Generator-264"><a href="#BigQuery.Generator-264"><span class="linenos">264</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 class="c1"># type: ignore</span> -</span><span id="BigQuery.Generator-265"><a href="#BigQuery.Generator-265"><span class="linenos">265</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="BigQuery.Generator-266"><a href="#BigQuery.Generator-266"><span class="linenos">266</span></a> <span class="p">}</span> -</span><span id="BigQuery.Generator-267"><a href="#BigQuery.Generator-267"><span class="linenos">267</span></a> -</span><span id="BigQuery.Generator-268"><a href="#BigQuery.Generator-268"><span class="linenos">268</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator-214"><a href="#BigQuery.Generator-214"><span class="linenos">214</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="BigQuery.Generator-215"><a href="#BigQuery.Generator-215"><span class="linenos">215</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Generator-216"><a href="#BigQuery.Generator-216"><span class="linenos">216</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 class="c1"># type: ignore</span> +</span><span id="BigQuery.Generator-217"><a href="#BigQuery.Generator-217"><span class="linenos">217</span></a> <span class="o">**</span><span class="n">transforms</span><span class="o">.</span><span class="n">REMOVE_PRECISION_PARAMETERIZED_TYPES</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="BigQuery.Generator-218"><a href="#BigQuery.Generator-218"><span class="linenos">218</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">"ARRAY_LENGTH"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-219"><a href="#BigQuery.Generator-219"><span class="linenos">219</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-220"><a href="#BigQuery.Generator-220"><span class="linenos">220</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATE"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-221"><a href="#BigQuery.Generator-221"><span class="linenos">221</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-222"><a href="#BigQuery.Generator-222"><span class="linenos">222</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DatetimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"DATETIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-223"><a href="#BigQuery.Generator-223"><span class="linenos">223</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="sa">f</span><span class="s2">"DATE_DIFF(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</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">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'unit'</span><span class="p">,</span><span class="w"> </span><span class="s1">'DAY'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-224"><a href="#BigQuery.Generator-224"><span class="linenos">224</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="BigQuery.Generator-225"><a href="#BigQuery.Generator-225"><span class="linenos">225</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"DATE_TRUNC"</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">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> +</span><span id="BigQuery.Generator-226"><a href="#BigQuery.Generator-226"><span class="linenos">226</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STRING_AGG"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-227"><a href="#BigQuery.Generator-227"><span class="linenos">227</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="BigQuery.Generator-228"><a href="#BigQuery.Generator-228"><span class="linenos">228</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DIV"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-229"><a href="#BigQuery.Generator-229"><span class="linenos">229</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="BigQuery.Generator-230"><a href="#BigQuery.Generator-230"><span class="linenos">230</span></a> <span class="p">[</span><span class="n">_unqualify_unnest</span><span class="p">],</span> <span class="n">transforms</span><span class="o">.</span><span class="n">delegate</span><span class="p">(</span><span class="s2">"select_sql"</span><span class="p">)</span> +</span><span id="BigQuery.Generator-231"><a href="#BigQuery.Generator-231"><span class="linenos">231</span></a> <span class="p">),</span> +</span><span id="BigQuery.Generator-232"><a href="#BigQuery.Generator-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"PARSE_TIMESTAMP(</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">, </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-233"><a href="#BigQuery.Generator-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-234"><a href="#BigQuery.Generator-234"><span class="linenos">234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIME"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-235"><a href="#BigQuery.Generator-235"><span class="linenos">235</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-236"><a href="#BigQuery.Generator-236"><span class="linenos">236</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">,</span> <span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-237"><a href="#BigQuery.Generator-237"><span class="linenos">237</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="BigQuery.Generator-238"><a href="#BigQuery.Generator-238"><span class="linenos">238</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 class="s2">"bigquery"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-239"><a href="#BigQuery.Generator-239"><span class="linenos">239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-240"><a href="#BigQuery.Generator-240"><span class="linenos">240</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">"VAR_POP"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-241"><a href="#BigQuery.Generator-241"><span class="linenos">241</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">:</span> <span class="n">_derived_table_values_to_unnest</span><span class="p">,</span> +</span><span id="BigQuery.Generator-242"><a href="#BigQuery.Generator-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">_returnsproperty_sql</span><span class="p">,</span> +</span><span id="BigQuery.Generator-243"><a href="#BigQuery.Generator-243"><span class="linenos">243</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> +</span><span id="BigQuery.Generator-244"><a href="#BigQuery.Generator-244"><span class="linenos">244</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="sa">f</span><span class="s2">"TRIM"</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="BigQuery.Generator-245"><a href="#BigQuery.Generator-245"><span class="linenos">245</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">"DETERMINISTIC"</span> +</span><span id="BigQuery.Generator-246"><a href="#BigQuery.Generator-246"><span class="linenos">246</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"IMMUTABLE"</span> +</span><span id="BigQuery.Generator-247"><a href="#BigQuery.Generator-247"><span class="linenos">247</span></a> <span class="k">else</span> <span class="s2">"NOT DETERMINISTIC"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-248"><a href="#BigQuery.Generator-248"><span class="linenos">248</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_CONTAINS"</span><span class="p">),</span> +</span><span id="BigQuery.Generator-249"><a href="#BigQuery.Generator-249"><span class="linenos">249</span></a> <span class="p">}</span> +</span><span id="BigQuery.Generator-250"><a href="#BigQuery.Generator-250"><span class="linenos">250</span></a> +</span><span id="BigQuery.Generator-251"><a href="#BigQuery.Generator-251"><span class="linenos">251</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Generator-252"><a href="#BigQuery.Generator-252"><span class="linenos">252</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 class="c1"># type: ignore</span> +</span><span id="BigQuery.Generator-253"><a href="#BigQuery.Generator-253"><span class="linenos">253</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-254"><a href="#BigQuery.Generator-254"><span class="linenos">254</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-255"><a href="#BigQuery.Generator-255"><span class="linenos">255</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">"INT64"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-256"><a href="#BigQuery.Generator-256"><span class="linenos">256</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"INT64"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-257"><a href="#BigQuery.Generator-257"><span class="linenos">257</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">:</span> <span class="s2">"NUMERIC"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-258"><a href="#BigQuery.Generator-258"><span class="linenos">258</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">"FLOAT64"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-259"><a href="#BigQuery.Generator-259"><span class="linenos">259</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">:</span> <span class="s2">"FLOAT64"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-260"><a href="#BigQuery.Generator-260"><span class="linenos">260</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">:</span> <span class="s2">"BOOL"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-261"><a href="#BigQuery.Generator-261"><span class="linenos">261</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">"STRING"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-262"><a href="#BigQuery.Generator-262"><span class="linenos">262</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-263"><a href="#BigQuery.Generator-263"><span class="linenos">263</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"STRING"</span><span class="p">,</span> +</span><span id="BigQuery.Generator-264"><a href="#BigQuery.Generator-264"><span class="linenos">264</span></a> <span class="p">}</span> +</span><span id="BigQuery.Generator-265"><a href="#BigQuery.Generator-265"><span class="linenos">265</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="BigQuery.Generator-266"><a href="#BigQuery.Generator-266"><span class="linenos">266</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 class="c1"># type: ignore</span> +</span><span id="BigQuery.Generator-267"><a href="#BigQuery.Generator-267"><span class="linenos">267</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="BigQuery.Generator-268"><a href="#BigQuery.Generator-268"><span class="linenos">268</span></a> <span class="p">}</span> </span><span id="BigQuery.Generator-269"><a href="#BigQuery.Generator-269"><span class="linenos">269</span></a> -</span><span id="BigQuery.Generator-270"><a href="#BigQuery.Generator-270"><span class="linenos">270</span></a> <span class="k">def</span> <span class="nf">array_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">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-271"><a href="#BigQuery.Generator-271"><span class="linenos">271</span></a> <span class="n">first_arg</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="BigQuery.Generator-272"><a href="#BigQuery.Generator-272"><span class="linenos">272</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="BigQuery.Generator-273"><a href="#BigQuery.Generator-273"><span class="linenos">273</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">first_arg</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator-274"><a href="#BigQuery.Generator-274"><span class="linenos">274</span></a> -</span><span id="BigQuery.Generator-275"><a href="#BigQuery.Generator-275"><span class="linenos">275</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery.Generator-270"><a href="#BigQuery.Generator-270"><span class="linenos">270</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="BigQuery.Generator-271"><a href="#BigQuery.Generator-271"><span class="linenos">271</span></a> +</span><span id="BigQuery.Generator-272"><a href="#BigQuery.Generator-272"><span class="linenos">272</span></a> <span class="k">def</span> <span class="nf">array_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">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-273"><a href="#BigQuery.Generator-273"><span class="linenos">273</span></a> <span class="n">first_arg</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="BigQuery.Generator-274"><a href="#BigQuery.Generator-274"><span class="linenos">274</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="BigQuery.Generator-275"><a href="#BigQuery.Generator-275"><span class="linenos">275</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">first_arg</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> </span><span id="BigQuery.Generator-276"><a href="#BigQuery.Generator-276"><span class="linenos">276</span></a> -</span><span id="BigQuery.Generator-277"><a href="#BigQuery.Generator-277"><span class="linenos">277</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-278"><a href="#BigQuery.Generator-278"><span class="linenos">278</span></a> <span class="k">return</span> <span class="s2">"BEGIN TRANSACTION"</span> -</span><span id="BigQuery.Generator-279"><a href="#BigQuery.Generator-279"><span class="linenos">279</span></a> -</span><span id="BigQuery.Generator-280"><a href="#BigQuery.Generator-280"><span class="linenos">280</span></a> <span class="k">def</span> <span class="nf">commit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-281"><a href="#BigQuery.Generator-281"><span class="linenos">281</span></a> <span class="k">return</span> <span class="s2">"COMMIT TRANSACTION"</span> -</span><span id="BigQuery.Generator-282"><a href="#BigQuery.Generator-282"><span class="linenos">282</span></a> -</span><span id="BigQuery.Generator-283"><a href="#BigQuery.Generator-283"><span class="linenos">283</span></a> <span class="k">def</span> <span class="nf">rollback_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-284"><a href="#BigQuery.Generator-284"><span class="linenos">284</span></a> <span class="k">return</span> <span class="s2">"ROLLBACK TRANSACTION"</span> -</span><span id="BigQuery.Generator-285"><a href="#BigQuery.Generator-285"><span class="linenos">285</span></a> -</span><span id="BigQuery.Generator-286"><a href="#BigQuery.Generator-286"><span class="linenos">286</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-287"><a href="#BigQuery.Generator-287"><span class="linenos">287</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="BigQuery.Generator-288"><a href="#BigQuery.Generator-288"><span class="linenos">288</span></a> -</span><span id="BigQuery.Generator-289"><a href="#BigQuery.Generator-289"><span class="linenos">289</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-290"><a href="#BigQuery.Generator-290"><span class="linenos">290</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="BigQuery.Generator-291"><a href="#BigQuery.Generator-291"><span class="linenos">291</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery.Generator-292"><a href="#BigQuery.Generator-292"><span class="linenos">292</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator-293"><a href="#BigQuery.Generator-293"><span class="linenos">293</span></a> -</span><span id="BigQuery.Generator-294"><a href="#BigQuery.Generator-294"><span class="linenos">294</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator-295"><a href="#BigQuery.Generator-295"><span class="linenos">295</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="BigQuery.Generator-296"><a href="#BigQuery.Generator-296"><span class="linenos">296</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery.Generator-297"><a href="#BigQuery.Generator-297"><span class="linenos">297</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator-277"><a href="#BigQuery.Generator-277"><span class="linenos">277</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery.Generator-278"><a href="#BigQuery.Generator-278"><span class="linenos">278</span></a> +</span><span id="BigQuery.Generator-279"><a href="#BigQuery.Generator-279"><span class="linenos">279</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-280"><a href="#BigQuery.Generator-280"><span class="linenos">280</span></a> <span class="k">return</span> <span class="s2">"BEGIN TRANSACTION"</span> +</span><span id="BigQuery.Generator-281"><a href="#BigQuery.Generator-281"><span class="linenos">281</span></a> +</span><span id="BigQuery.Generator-282"><a href="#BigQuery.Generator-282"><span class="linenos">282</span></a> <span class="k">def</span> <span class="nf">commit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-283"><a href="#BigQuery.Generator-283"><span class="linenos">283</span></a> <span class="k">return</span> <span class="s2">"COMMIT TRANSACTION"</span> +</span><span id="BigQuery.Generator-284"><a href="#BigQuery.Generator-284"><span class="linenos">284</span></a> +</span><span id="BigQuery.Generator-285"><a href="#BigQuery.Generator-285"><span class="linenos">285</span></a> <span class="k">def</span> <span class="nf">rollback_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-286"><a href="#BigQuery.Generator-286"><span class="linenos">286</span></a> <span class="k">return</span> <span class="s2">"ROLLBACK TRANSACTION"</span> +</span><span id="BigQuery.Generator-287"><a href="#BigQuery.Generator-287"><span class="linenos">287</span></a> +</span><span id="BigQuery.Generator-288"><a href="#BigQuery.Generator-288"><span class="linenos">288</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-289"><a href="#BigQuery.Generator-289"><span class="linenos">289</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="BigQuery.Generator-290"><a href="#BigQuery.Generator-290"><span class="linenos">290</span></a> +</span><span id="BigQuery.Generator-291"><a href="#BigQuery.Generator-291"><span class="linenos">291</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-292"><a href="#BigQuery.Generator-292"><span class="linenos">292</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="BigQuery.Generator-293"><a href="#BigQuery.Generator-293"><span class="linenos">293</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery.Generator-294"><a href="#BigQuery.Generator-294"><span class="linenos">294</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator-295"><a href="#BigQuery.Generator-295"><span class="linenos">295</span></a> +</span><span id="BigQuery.Generator-296"><a href="#BigQuery.Generator-296"><span class="linenos">296</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator-297"><a href="#BigQuery.Generator-297"><span class="linenos">297</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="BigQuery.Generator-298"><a href="#BigQuery.Generator-298"><span class="linenos">298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery.Generator-299"><a href="#BigQuery.Generator-299"><span class="linenos">299</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -953,12 +941,12 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.array_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.array_sql-270"><a href="#BigQuery.Generator.array_sql-270"><span class="linenos">270</span></a> <span class="k">def</span> <span class="nf">array_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">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.array_sql-271"><a href="#BigQuery.Generator.array_sql-271"><span class="linenos">271</span></a> <span class="n">first_arg</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="BigQuery.Generator.array_sql-272"><a href="#BigQuery.Generator.array_sql-272"><span class="linenos">272</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="BigQuery.Generator.array_sql-273"><a href="#BigQuery.Generator.array_sql-273"><span class="linenos">273</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">first_arg</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> -</span><span id="BigQuery.Generator.array_sql-274"><a href="#BigQuery.Generator.array_sql-274"><span class="linenos">274</span></a> -</span><span id="BigQuery.Generator.array_sql-275"><a href="#BigQuery.Generator.array_sql-275"><span class="linenos">275</span></a> <span class="k">return</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.array_sql-272"><a href="#BigQuery.Generator.array_sql-272"><span class="linenos">272</span></a> <span class="k">def</span> <span class="nf">array_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">Array</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.array_sql-273"><a href="#BigQuery.Generator.array_sql-273"><span class="linenos">273</span></a> <span class="n">first_arg</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="BigQuery.Generator.array_sql-274"><a href="#BigQuery.Generator.array_sql-274"><span class="linenos">274</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="BigQuery.Generator.array_sql-275"><a href="#BigQuery.Generator.array_sql-275"><span class="linenos">275</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">first_arg</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> +</span><span id="BigQuery.Generator.array_sql-276"><a href="#BigQuery.Generator.array_sql-276"><span class="linenos">276</span></a> +</span><span id="BigQuery.Generator.array_sql-277"><a href="#BigQuery.Generator.array_sql-277"><span class="linenos">277</span></a> <span class="k">return</span> <span class="n">inline_array_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></pre></div> @@ -976,8 +964,8 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.transaction_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.transaction_sql-277"><a href="#BigQuery.Generator.transaction_sql-277"><span class="linenos">277</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.transaction_sql-278"><a href="#BigQuery.Generator.transaction_sql-278"><span class="linenos">278</span></a> <span class="k">return</span> <span class="s2">"BEGIN TRANSACTION"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.transaction_sql-279"><a href="#BigQuery.Generator.transaction_sql-279"><span class="linenos">279</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.transaction_sql-280"><a href="#BigQuery.Generator.transaction_sql-280"><span class="linenos">280</span></a> <span class="k">return</span> <span class="s2">"BEGIN TRANSACTION"</span> </span></pre></div> @@ -995,8 +983,8 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.commit_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.commit_sql-280"><a href="#BigQuery.Generator.commit_sql-280"><span class="linenos">280</span></a> <span class="k">def</span> <span class="nf">commit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.commit_sql-281"><a href="#BigQuery.Generator.commit_sql-281"><span class="linenos">281</span></a> <span class="k">return</span> <span class="s2">"COMMIT TRANSACTION"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.commit_sql-282"><a href="#BigQuery.Generator.commit_sql-282"><span class="linenos">282</span></a> <span class="k">def</span> <span class="nf">commit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.commit_sql-283"><a href="#BigQuery.Generator.commit_sql-283"><span class="linenos">283</span></a> <span class="k">return</span> <span class="s2">"COMMIT TRANSACTION"</span> </span></pre></div> @@ -1014,8 +1002,8 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.rollback_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.rollback_sql-283"><a href="#BigQuery.Generator.rollback_sql-283"><span class="linenos">283</span></a> <span class="k">def</span> <span class="nf">rollback_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.rollback_sql-284"><a href="#BigQuery.Generator.rollback_sql-284"><span class="linenos">284</span></a> <span class="k">return</span> <span class="s2">"ROLLBACK TRANSACTION"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.rollback_sql-285"><a href="#BigQuery.Generator.rollback_sql-285"><span class="linenos">285</span></a> <span class="k">def</span> <span class="nf">rollback_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.rollback_sql-286"><a href="#BigQuery.Generator.rollback_sql-286"><span class="linenos">286</span></a> <span class="k">return</span> <span class="s2">"ROLLBACK TRANSACTION"</span> </span></pre></div> @@ -1033,8 +1021,8 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.in_unnest_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.in_unnest_op-286"><a href="#BigQuery.Generator.in_unnest_op-286"><span class="linenos">286</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.in_unnest_op-287"><a href="#BigQuery.Generator.in_unnest_op-287"><span class="linenos">287</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.in_unnest_op-288"><a href="#BigQuery.Generator.in_unnest_op-288"><span class="linenos">288</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.in_unnest_op-289"><a href="#BigQuery.Generator.in_unnest_op-289"><span class="linenos">289</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -1052,10 +1040,10 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.except_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.except_op-289"><a href="#BigQuery.Generator.except_op-289"><span class="linenos">289</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.except_op-290"><a href="#BigQuery.Generator.except_op-290"><span class="linenos">290</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="BigQuery.Generator.except_op-291"><a href="#BigQuery.Generator.except_op-291"><span class="linenos">291</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery.Generator.except_op-292"><a href="#BigQuery.Generator.except_op-292"><span class="linenos">292</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.except_op-291"><a href="#BigQuery.Generator.except_op-291"><span class="linenos">291</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.except_op-292"><a href="#BigQuery.Generator.except_op-292"><span class="linenos">292</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="BigQuery.Generator.except_op-293"><a href="#BigQuery.Generator.except_op-293"><span class="linenos">293</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery.Generator.except_op-294"><a href="#BigQuery.Generator.except_op-294"><span class="linenos">294</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1073,10 +1061,10 @@ Default: True</li> </div> <a class="headerlink" href="#BigQuery.Generator.intersect_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.intersect_op-294"><a href="#BigQuery.Generator.intersect_op-294"><span class="linenos">294</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="BigQuery.Generator.intersect_op-295"><a href="#BigQuery.Generator.intersect_op-295"><span class="linenos">295</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="BigQuery.Generator.intersect_op-296"><a href="#BigQuery.Generator.intersect_op-296"><span class="linenos">296</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> -</span><span id="BigQuery.Generator.intersect_op-297"><a href="#BigQuery.Generator.intersect_op-297"><span class="linenos">297</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BigQuery.Generator.intersect_op-296"><a href="#BigQuery.Generator.intersect_op-296"><span class="linenos">296</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="BigQuery.Generator.intersect_op-297"><a href="#BigQuery.Generator.intersect_op-297"><span class="linenos">297</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="BigQuery.Generator.intersect_op-298"><a href="#BigQuery.Generator.intersect_op-298"><span class="linenos">298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT without DISTINCT is not supported in BigQuery"</span><span class="p">)</span> +</span><span id="BigQuery.Generator.intersect_op-299"><a href="#BigQuery.Generator.intersect_op-299"><span class="linenos">299</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">' DISTINCT'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1106,6 +1094,7 @@ Default: True</li> <dd id="BigQuery.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="BigQuery.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="BigQuery.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="BigQuery.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="BigQuery.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="BigQuery.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="BigQuery.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -1147,6 +1136,7 @@ Default: True</li> <dd id="BigQuery.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="BigQuery.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="BigQuery.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="BigQuery.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="BigQuery.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="BigQuery.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="BigQuery.Generator.introducer_sql" class="function"><a href="../generator.html#Generator.introducer_sql">introducer_sql</a></dd> @@ -1412,7 +1402,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/clickhouse.html b/docs/sqlglot/dialects/clickhouse.html index 4b01cef..6dde874 100644 --- a/docs/sqlglot/dialects/clickhouse.html +++ b/docs/sqlglot/dialects/clickhouse.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.clickhouse API documentation</title> <style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style> <style>/*! syntax-highlighting.css */pre{line-height:125%;}span.linenos{color:inherit; background-color:transparent; padding-left:5px; padding-right:20px;}.pdoc-code .hll{background-color:#ffffcc}.pdoc-code{background:#f8f8f8;}.pdoc-code .c{color:#3D7B7B; font-style:italic}.pdoc-code .err{border:1px solid #FF0000}.pdoc-code .k{color:#008000; font-weight:bold}.pdoc-code .o{color:#666666}.pdoc-code .ch{color:#3D7B7B; font-style:italic}.pdoc-code .cm{color:#3D7B7B; font-style:italic}.pdoc-code .cp{color:#9C6500}.pdoc-code .cpf{color:#3D7B7B; font-style:italic}.pdoc-code .c1{color:#3D7B7B; font-style:italic}.pdoc-code .cs{color:#3D7B7B; font-style:italic}.pdoc-code .gd{color:#A00000}.pdoc-code .ge{font-style:italic}.pdoc-code .gr{color:#E40000}.pdoc-code .gh{color:#000080; font-weight:bold}.pdoc-code .gi{color:#008400}.pdoc-code .go{color:#717171}.pdoc-code .gp{color:#000080; font-weight:bold}.pdoc-code .gs{font-weight:bold}.pdoc-code .gu{color:#800080; font-weight:bold}.pdoc-code .gt{color:#0044DD}.pdoc-code .kc{color:#008000; font-weight:bold}.pdoc-code .kd{color:#008000; font-weight:bold}.pdoc-code .kn{color:#008000; font-weight:bold}.pdoc-code .kp{color:#008000}.pdoc-code .kr{color:#008000; font-weight:bold}.pdoc-code .kt{color:#B00040}.pdoc-code .m{color:#666666}.pdoc-code .s{color:#BA2121}.pdoc-code .na{color:#687822}.pdoc-code .nb{color:#008000}.pdoc-code .nc{color:#0000FF; font-weight:bold}.pdoc-code .no{color:#880000}.pdoc-code .nd{color:#AA22FF}.pdoc-code .ni{color:#717171; font-weight:bold}.pdoc-code .ne{color:#CB3F38; font-weight:bold}.pdoc-code .nf{color:#0000FF}.pdoc-code .nl{color:#767600}.pdoc-code .nn{color:#0000FF; font-weight:bold}.pdoc-code .nt{color:#008000; font-weight:bold}.pdoc-code .nv{color:#19177C}.pdoc-code .ow{color:#AA22FF; font-weight:bold}.pdoc-code .w{color:#bbbbbb}.pdoc-code .mb{color:#666666}.pdoc-code .mf{color:#666666}.pdoc-code .mh{color:#666666}.pdoc-code .mi{color:#666666}.pdoc-code .mo{color:#666666}.pdoc-code .sa{color:#BA2121}.pdoc-code .sb{color:#BA2121}.pdoc-code .sc{color:#BA2121}.pdoc-code .dl{color:#BA2121}.pdoc-code .sd{color:#BA2121; font-style:italic}.pdoc-code .s2{color:#BA2121}.pdoc-code .se{color:#AA5D1F; font-weight:bold}.pdoc-code .sh{color:#BA2121}.pdoc-code .si{color:#A45A77; font-weight:bold}.pdoc-code .sx{color:#008000}.pdoc-code .sr{color:#A45A77}.pdoc-code .s1{color:#BA2121}.pdoc-code .ss{color:#19177C}.pdoc-code .bp{color:#008000}.pdoc-code .fm{color:#0000FF}.pdoc-code .vc{color:#19177C}.pdoc-code .vg{color:#19177C}.pdoc-code .vi{color:#19177C}.pdoc-code .vm{color:#19177C}.pdoc-code .il{color:#666666}</style> <style>/*! theme.css */:root{--pdoc-background:#fff;}.pdoc{--text:#212529;--muted:#6c757d;--link:#3660a5;--link-hover:#1659c5;--code:#f8f8f8;--active:#fff598;--accent:#eee;--accent2:#c1c1c1;--nav-hover:rgba(255, 255, 255, 0.5);--name:#0066BB;--def:#008800;--annotation:#007020;}</style> - <style>/*! layout.css */html, body{width:100%;height:100%;}html, main{scroll-behavior:smooth;}body{background-color:var(--pdoc-background);}@media (max-width:769px){#navtoggle{cursor:pointer;position:absolute;width:50px;height:40px;top:1rem;right:1rem;border-color:var(--text);color:var(--text);display:flex;opacity:0.8;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#ClickHouse">ClickHouse</a> <ul class="memberlist"> <li> - <a class="function" href="#ClickHouse.__init__">ClickHouse</a> - </li> - <li> <a class="class" href="#ClickHouse.Tokenizer">ClickHouse.Tokenizer</a> <ul class="memberlist"> </ul> @@ -363,18 +360,6 @@ - <div id="ClickHouse.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">ClickHouse</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#ClickHouse.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -430,8 +415,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="ClickHouse.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="ClickHouse.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="ClickHouse.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="ClickHouse.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -696,6 +680,7 @@ Default: True</li> <dd id="ClickHouse.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="ClickHouse.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="ClickHouse.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="ClickHouse.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="ClickHouse.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="ClickHouse.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="ClickHouse.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -737,6 +722,7 @@ Default: True</li> <dd id="ClickHouse.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="ClickHouse.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="ClickHouse.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="ClickHouse.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="ClickHouse.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="ClickHouse.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="ClickHouse.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -1007,7 +993,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/databricks.html b/docs/sqlglot/dialects/databricks.html index 2ad8268..417c652 100644 --- a/docs/sqlglot/dialects/databricks.html +++ b/docs/sqlglot/dialects/databricks.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.databricks 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Databricks">Databricks</a> <ul class="memberlist"> <li> - <a class="function" href="#Databricks.__init__">Databricks</a> - </li> - <li> <a class="class" href="#Databricks.Parser">Databricks.Parser</a> <ul class="memberlist"> </ul> @@ -155,18 +152,6 @@ - <div id="Databricks.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Databricks</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Databricks.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -337,6 +322,7 @@ Default: True</li> <dd id="Databricks.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Databricks.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Databricks.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Databricks.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Databricks.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Databricks.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Databricks.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -377,6 +363,7 @@ Default: True</li> <dd id="Databricks.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Databricks.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Databricks.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Databricks.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Databricks.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Databricks.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Databricks.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -560,8 +547,7 @@ Default: True</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Databricks.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Databricks.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Databricks.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Databricks.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -688,7 +674,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/dialect.html b/docs/sqlglot/dialects/dialect.html index a7a1ec8..87441ba 100644 --- a/docs/sqlglot/dialects/dialect.html +++ b/docs/sqlglot/dialects/dialect.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.dialect 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -100,9 +100,6 @@ <a class="class" href="#Dialect">Dialect</a> <ul class="memberlist"> <li> - <a class="function" href="#Dialect.__init__">Dialect</a> - </li> - <li> <a class="function" href="#Dialect.get_or_raise">get_or_raise</a> </li> <li> @@ -204,6 +201,12 @@ <li> <a class="function" href="#trim_sql">trim_sql</a> </li> + <li> + <a class="function" href="#str_to_time_sql">str_to_time_sql</a> + </li> + <li> + <a class="function" href="#ts_or_ds_to_date_sql">ts_or_ds_to_date_sql</a> + </li> </ul> @@ -652,6 +655,21 @@ </span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">from_part</span> <span class="o">=</span> <span class="s2">"FROM "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="ow">or</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span> </span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collation</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collation</span> <span class="k">else</span> <span class="s2">""</span> </span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRIM(</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}{</span><span class="n">remove_chars</span><span class="si">}{</span><span class="n">from_part</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">collation</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> +</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> +</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a><span class="k">def</span> <span class="nf">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">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-429"><a href="#L-429"><span class="linenos">429</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">"STRPTIME"</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-430"><a href="#L-430"><span class="linenos">430</span></a> +</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> +</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a><span class="k">def</span> <span class="nf">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="n">dialect</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">:</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos">433</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">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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="n">_dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="L-435"><a href="#L-435"><span class="linenos">435</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-436"><a href="#L-436"><span class="linenos">436</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">_dialect</span><span class="o">.</span><span class="n">time_format</span><span class="p">,</span> <span class="n">_dialect</span><span class="o">.</span><span class="n">date_format</span><span class="p">):</span> +</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> +</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> +</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="k">return</span> <span class="n">_ts_or_ds_to_date_sql</span> </span></pre></div> @@ -698,7 +716,8 @@ <div id="Dialects.DIALECT" class="classattr"> <div class="attr variable"> - <span class="name">DIALECT</span><span class="default_value"> = <<a href="#Dialects.DIALECT">Dialects.DIALECT</a>: ''></span> + <span class="name">DIALECT</span> = +<span class="default_value"><<a href="#Dialects.DIALECT">Dialects.DIALECT</a>: ''></span> </div> @@ -709,7 +728,8 @@ </div> <div id="Dialects.BIGQUERY" class="classattr"> <div class="attr variable"> - <span class="name">BIGQUERY</span><span class="default_value"> = <<a href="#Dialects.BIGQUERY">Dialects.BIGQUERY</a>: 'bigquery'></span> + <span class="name">BIGQUERY</span> = +<span class="default_value"><<a href="#Dialects.BIGQUERY">Dialects.BIGQUERY</a>: 'bigquery'></span> </div> @@ -720,7 +740,8 @@ </div> <div id="Dialects.CLICKHOUSE" class="classattr"> <div class="attr variable"> - <span class="name">CLICKHOUSE</span><span class="default_value"> = <<a href="#Dialects.CLICKHOUSE">Dialects.CLICKHOUSE</a>: 'clickhouse'></span> + <span class="name">CLICKHOUSE</span> = +<span class="default_value"><<a href="#Dialects.CLICKHOUSE">Dialects.CLICKHOUSE</a>: 'clickhouse'></span> </div> @@ -731,7 +752,8 @@ </div> <div id="Dialects.DUCKDB" class="classattr"> <div class="attr variable"> - <span class="name">DUCKDB</span><span class="default_value"> = <<a href="#Dialects.DUCKDB">Dialects.DUCKDB</a>: 'duckdb'></span> + <span class="name">DUCKDB</span> = +<span class="default_value"><<a href="#Dialects.DUCKDB">Dialects.DUCKDB</a>: 'duckdb'></span> </div> @@ -742,7 +764,8 @@ </div> <div id="Dialects.HIVE" class="classattr"> <div class="attr variable"> - <span class="name">HIVE</span><span class="default_value"> = <<a href="#Dialects.HIVE">Dialects.HIVE</a>: 'hive'></span> + <span class="name">HIVE</span> = +<span class="default_value"><<a href="#Dialects.HIVE">Dialects.HIVE</a>: 'hive'></span> </div> @@ -753,7 +776,8 @@ </div> <div id="Dialects.MYSQL" class="classattr"> <div class="attr variable"> - <span class="name">MYSQL</span><span class="default_value"> = <<a href="#Dialects.MYSQL">Dialects.MYSQL</a>: 'mysql'></span> + <span class="name">MYSQL</span> = +<span class="default_value"><<a href="#Dialects.MYSQL">Dialects.MYSQL</a>: 'mysql'></span> </div> @@ -764,7 +788,8 @@ </div> <div id="Dialects.ORACLE" class="classattr"> <div class="attr variable"> - <span class="name">ORACLE</span><span class="default_value"> = <<a href="#Dialects.ORACLE">Dialects.ORACLE</a>: 'oracle'></span> + <span class="name">ORACLE</span> = +<span class="default_value"><<a href="#Dialects.ORACLE">Dialects.ORACLE</a>: 'oracle'></span> </div> @@ -775,7 +800,8 @@ </div> <div id="Dialects.POSTGRES" class="classattr"> <div class="attr variable"> - <span class="name">POSTGRES</span><span class="default_value"> = <<a href="#Dialects.POSTGRES">Dialects.POSTGRES</a>: 'postgres'></span> + <span class="name">POSTGRES</span> = +<span class="default_value"><<a href="#Dialects.POSTGRES">Dialects.POSTGRES</a>: 'postgres'></span> </div> @@ -786,7 +812,8 @@ </div> <div id="Dialects.PRESTO" class="classattr"> <div class="attr variable"> - <span class="name">PRESTO</span><span class="default_value"> = <<a href="#Dialects.PRESTO">Dialects.PRESTO</a>: 'presto'></span> + <span class="name">PRESTO</span> = +<span class="default_value"><<a href="#Dialects.PRESTO">Dialects.PRESTO</a>: 'presto'></span> </div> @@ -797,7 +824,8 @@ </div> <div id="Dialects.REDSHIFT" class="classattr"> <div class="attr variable"> - <span class="name">REDSHIFT</span><span class="default_value"> = <<a href="#Dialects.REDSHIFT">Dialects.REDSHIFT</a>: 'redshift'></span> + <span class="name">REDSHIFT</span> = +<span class="default_value"><<a href="#Dialects.REDSHIFT">Dialects.REDSHIFT</a>: 'redshift'></span> </div> @@ -808,7 +836,8 @@ </div> <div id="Dialects.SNOWFLAKE" class="classattr"> <div class="attr variable"> - <span class="name">SNOWFLAKE</span><span class="default_value"> = <<a href="#Dialects.SNOWFLAKE">Dialects.SNOWFLAKE</a>: 'snowflake'></span> + <span class="name">SNOWFLAKE</span> = +<span class="default_value"><<a href="#Dialects.SNOWFLAKE">Dialects.SNOWFLAKE</a>: 'snowflake'></span> </div> @@ -819,7 +848,8 @@ </div> <div id="Dialects.SPARK" class="classattr"> <div class="attr variable"> - <span class="name">SPARK</span><span class="default_value"> = <<a href="#Dialects.SPARK">Dialects.SPARK</a>: 'spark'></span> + <span class="name">SPARK</span> = +<span class="default_value"><<a href="#Dialects.SPARK">Dialects.SPARK</a>: 'spark'></span> </div> @@ -830,7 +860,8 @@ </div> <div id="Dialects.SQLITE" class="classattr"> <div class="attr variable"> - <span class="name">SQLITE</span><span class="default_value"> = <<a href="#Dialects.SQLITE">Dialects.SQLITE</a>: 'sqlite'></span> + <span class="name">SQLITE</span> = +<span class="default_value"><<a href="#Dialects.SQLITE">Dialects.SQLITE</a>: 'sqlite'></span> </div> @@ -841,7 +872,8 @@ </div> <div id="Dialects.STARROCKS" class="classattr"> <div class="attr variable"> - <span class="name">STARROCKS</span><span class="default_value"> = <<a href="#Dialects.STARROCKS">Dialects.STARROCKS</a>: 'starrocks'></span> + <span class="name">STARROCKS</span> = +<span class="default_value"><<a href="#Dialects.STARROCKS">Dialects.STARROCKS</a>: 'starrocks'></span> </div> @@ -852,7 +884,8 @@ </div> <div id="Dialects.TABLEAU" class="classattr"> <div class="attr variable"> - <span class="name">TABLEAU</span><span class="default_value"> = <<a href="#Dialects.TABLEAU">Dialects.TABLEAU</a>: 'tableau'></span> + <span class="name">TABLEAU</span> = +<span class="default_value"><<a href="#Dialects.TABLEAU">Dialects.TABLEAU</a>: 'tableau'></span> </div> @@ -863,7 +896,8 @@ </div> <div id="Dialects.TRINO" class="classattr"> <div class="attr variable"> - <span class="name">TRINO</span><span class="default_value"> = <<a href="#Dialects.TRINO">Dialects.TRINO</a>: 'trino'></span> + <span class="name">TRINO</span> = +<span class="default_value"><<a href="#Dialects.TRINO">Dialects.TRINO</a>: 'trino'></span> </div> @@ -874,7 +908,8 @@ </div> <div id="Dialects.TSQL" class="classattr"> <div class="attr variable"> - <span class="name">TSQL</span><span class="default_value"> = <<a href="#Dialects.TSQL">Dialects.TSQL</a>: 'tsql'></span> + <span class="name">TSQL</span> = +<span class="default_value"><<a href="#Dialects.TSQL">Dialects.TSQL</a>: 'tsql'></span> </div> @@ -885,7 +920,8 @@ </div> <div id="Dialects.DATABRICKS" class="classattr"> <div class="attr variable"> - <span class="name">DATABRICKS</span><span class="default_value"> = <<a href="#Dialects.DATABRICKS">Dialects.DATABRICKS</a>: 'databricks'></span> + <span class="name">DATABRICKS</span> = +<span class="default_value"><<a href="#Dialects.DATABRICKS">Dialects.DATABRICKS</a>: 'databricks'></span> </div> @@ -896,7 +932,8 @@ </div> <div id="Dialects.DRILL" class="classattr"> <div class="attr variable"> - <span class="name">DRILL</span><span class="default_value"> = <<a href="#Dialects.DRILL">Dialects.DRILL</a>: 'drill'></span> + <span class="name">DRILL</span> = +<span class="default_value"><<a href="#Dialects.DRILL">Dialects.DRILL</a>: 'drill'></span> </div> @@ -907,7 +944,8 @@ </div> <div id="Dialects.TERADATA" class="classattr"> <div class="attr variable"> - <span class="name">TERADATA</span><span class="default_value"> = <<a href="#Dialects.TERADATA">Dialects.TERADATA</a>: 'teradata'></span> + <span class="name">TERADATA</span> = +<span class="default_value"><<a href="#Dialects.TERADATA">Dialects.TERADATA</a>: 'teradata'></span> </div> @@ -1105,18 +1143,6 @@ - <div id="Dialect.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Dialect</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Dialect.__init__"></a> - - - - </div> <div id="Dialect.get_or_raise" class="classattr"> <input id="Dialect.get_or_raise-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr function"> @@ -1936,6 +1962,51 @@ columns are removed from the create statement.</p> </section> + <section id="str_to_time_sql"> + <input id="str_to_time_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">str_to_time_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#Expression">sqlglot.expressions.Expression</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span> + + <label class="view-source-button" for="str_to_time_sql-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#str_to_time_sql"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="str_to_time_sql-429"><a href="#str_to_time_sql-429"><span class="linenos">429</span></a><span class="k">def</span> <span class="nf">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">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="str_to_time_sql-430"><a href="#str_to_time_sql-430"><span class="linenos">430</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">"STRPTIME"</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></pre></div> + + + + + </section> + <section id="ts_or_ds_to_date_sql"> + <input id="ts_or_ds_to_date_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">ts_or_ds_to_date_sql</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">dialect</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="n">Callable</span>:</span></span> + + <label class="view-source-button" for="ts_or_ds_to_date_sql-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#ts_or_ds_to_date_sql"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="ts_or_ds_to_date_sql-433"><a href="#ts_or_ds_to_date_sql-433"><span class="linenos">433</span></a><span class="k">def</span> <span class="nf">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="n">dialect</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">:</span> +</span><span id="ts_or_ds_to_date_sql-434"><a href="#ts_or_ds_to_date_sql-434"><span class="linenos">434</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">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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="ts_or_ds_to_date_sql-435"><a href="#ts_or_ds_to_date_sql-435"><span class="linenos">435</span></a> <span class="n">_dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span> +</span><span id="ts_or_ds_to_date_sql-436"><a href="#ts_or_ds_to_date_sql-436"><span class="linenos">436</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="ts_or_ds_to_date_sql-437"><a href="#ts_or_ds_to_date_sql-437"><span class="linenos">437</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">_dialect</span><span class="o">.</span><span class="n">time_format</span><span class="p">,</span> <span class="n">_dialect</span><span class="o">.</span><span class="n">date_format</span><span class="p">):</span> +</span><span id="ts_or_ds_to_date_sql-438"><a href="#ts_or_ds_to_date_sql-438"><span class="linenos">438</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> +</span><span id="ts_or_ds_to_date_sql-439"><a href="#ts_or_ds_to_date_sql-439"><span class="linenos">439</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> +</span><span id="ts_or_ds_to_date_sql-440"><a href="#ts_or_ds_to_date_sql-440"><span class="linenos">440</span></a> +</span><span id="ts_or_ds_to_date_sql-441"><a href="#ts_or_ds_to_date_sql-441"><span class="linenos">441</span></a> <span class="k">return</span> <span class="n">_ts_or_ds_to_date_sql</span> +</span></pre></div> + + + + + </section> </main> <script> function escapeHTML(html) { @@ -2056,7 +2127,7 @@ columns are removed from the create statement.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/drill.html b/docs/sqlglot/dialects/drill.html index aed8a51..1d61622 100644 --- a/docs/sqlglot/dialects/drill.html +++ b/docs/sqlglot/dialects/drill.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.drill 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Drill">Drill</a> <ul class="memberlist"> <li> - <a class="function" href="#Drill.__init__">Drill</a> - </li> - <li> <a class="class" href="#Drill.Tokenizer">Drill.Tokenizer</a> <ul class="memberlist"> </ul> @@ -99,145 +96,146 @@ </span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a> <span class="n">rename_func</span><span class="p">,</span> </span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a> <span class="n">str_position_sql</span><span class="p">,</span> </span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="n">timestrtotime_sql</span><span class="p">,</span> -</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a><span class="p">)</span> -</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> +</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> <span class="n">ts_or_ds_to_date_sql</span><span class="p">,</span> +</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="p">)</span> </span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> -</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a><span class="k">def</span> <span class="nf">_str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"STRPTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> +</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> +</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a><span class="k">def</span> <span class="nf">_str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"STRPTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> </span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> -</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</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">generator</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</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-26"><a href="#L-26"><span class="linenos"> 26</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">Drill</span><span class="o">.</span><span class="n">time_format</span><span class="p">,</span> <span class="n">Drill</span><span class="o">.</span><span class="n">date_format</span><span class="p">):</span> -</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> -</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> -</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> +</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> +</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</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">generator</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</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-27"><a href="#L-27"><span class="linenos"> 27</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">Drill</span><span class="o">.</span><span class="n">time_format</span><span class="p">,</span> <span class="n">Drill</span><span class="o">.</span><span class="n">date_format</span><span class="p">):</span> +</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> +</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> </span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> -</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a><span class="k">def</span> <span class="nf">_date_add_sql</span><span class="p">(</span><span class="n">kind</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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">DateAdd</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</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">"this"</span><span class="p">)</span> -</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">or</span> <span class="s2">"DAY"</span><span class="p">)</span> -</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="sa">f</span><span class="s2">"DATE_</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">this</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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="p">)</span> -</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> -</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="k">return</span> <span class="n">func</span> -</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> +</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> +</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a><span class="k">def</span> <span class="nf">_date_add_sql</span><span class="p">(</span><span class="n">kind</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">],</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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">DateAdd</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</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">"this"</span><span class="p">)</span> +</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">or</span> <span class="s2">"DAY"</span><span class="p">)</span> +</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="sa">f</span><span class="s2">"DATE_</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">this</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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="p">)</span> +</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> +</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="k">return</span> <span class="n">func</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 class="k">def</span> <span class="nf">_str_to_date</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</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">"this"</span><span class="p">)</span> -</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</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-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="k">if</span> <span class="n">time_format</span> <span class="o">==</span> <span class="n">Drill</span><span class="o">.</span><span class="n">date_format</span><span class="p">:</span> -</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CAST(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AS DATE)"</span> -</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_DATE(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">time_format</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</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">_str_to_date</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">generator</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="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">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">"this"</span><span class="p">)</span> +</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</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-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="k">if</span> <span class="n">time_format</span> <span class="o">==</span> <span class="n">Drill</span><span class="o">.</span><span class="n">date_format</span><span class="p">:</span> +</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CAST(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AS DATE)"</span> +</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_DATE(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">time_format</span><span class="si">}</span><span class="s2">)"</span> </span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> -</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a><span class="k">class</span> <span class="nc">Drill</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="n">normalize_functions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">null_ordering</span> <span class="o">=</span> <span class="s2">"nulls_are_last"</span> -</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">date_format</span> <span class="o">=</span> <span class="s2">"'yyyy-MM-dd'"</span> -</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">dateint_format</span> <span class="o">=</span> <span class="s2">"'yyyyMMdd'"</span> -</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="s2">"'yyyy-MM-dd HH:mm:ss'"</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 class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="s2">"y"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="s2">"Y"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="s2">"yyyy"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> -</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="s2">"yy"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> -</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="s2">"MMMM"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> -</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="s2">"MMM"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> -</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> -</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="s2">"M"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> -</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="s2">"dd"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="s2">"d"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="s2">"HH"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> -</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="s2">"H"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> -</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="s2">"hh"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> -</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="s2">"h"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> -</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="s2">"mm"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> -</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="s2">"m"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> -</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="s2">"ss"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> -</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="s2">"s"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> -</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="s2">"SSSSSS"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="s2">"a"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> -</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"%j"</span><span class="p">,</span> -</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> -</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="s2">"E"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="s2">"EE"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="s2">"EEE"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="s2">"EEEE"</span><span class="p">:</span> <span class="s2">"%A"</span><span class="p">,</span> -</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="s2">"''T''"</span><span class="p">:</span> <span class="s2">"T"</span><span class="p">,</span> -</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <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 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-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> -</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">"utf-8"</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 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-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> -</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</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 class="c1"># type: ignore</span> -</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"drill"</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 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-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-106"><a href="#L-106"><span class="linenos">106</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 class="c1"># type: ignore</span> -</span><span id="L-107"><a href="#L-107"><span class="linenos">107</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">"INTEGER"</span><span class="p">,</span> -</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> -</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> -</span><span id="L-110"><a href="#L-110"><span class="linenos">110</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">"VARBINARY"</span><span class="p">,</span> -</span><span id="L-111"><a href="#L-111"><span class="linenos">111</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">"VARCHAR"</span><span class="p">,</span> -</span><span id="L-112"><a href="#L-112"><span class="linenos">112</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">NCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> -</span><span id="L-113"><a href="#L-113"><span class="linenos">113</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">TIMESTAMPLTZ</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="L-114"><a href="#L-114"><span class="linenos">114</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">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="L-115"><a href="#L-115"><span class="linenos">115</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">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="p">}</span> -</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="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos">119</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 class="c1"># type: ignore</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="p">}</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> -</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos">124</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 class="c1"># type: ignore</span> -</span><span id="L-125"><a href="#L-125"><span class="linenos">125</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">"CURRENT_TIMESTAMP"</span><span class="p">,</span> -</span><span id="L-126"><a href="#L-126"><span class="linenos">126</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">"REPEATED_CONTAINS"</span><span class="p">),</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos">127</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">"REPEATED_COUNT"</span><span class="p">),</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">create_with_partitions_sql</span><span class="p">,</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos">130</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-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos">132</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_DATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos">133</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"TO_DATE(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</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">"`IF`(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_args</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="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'true'</span><span class="p">),</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'false'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</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">" </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> `ILIKE` </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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos">136</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">"LEVENSHTEIN_DISTANCE"</span><span class="p">),</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos">138</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-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> -</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos">144</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-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNIX_TIMESTAMP"</span><span class="p">),</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos">146</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="sa">f</span><span class="s2">"TO_CHAR(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos">147</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">"UNIX_TIMESTAMP"</span><span class="p">),</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</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">"DATE_ADD(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE), </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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s1">'DAY'</span><span class="p">)))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos">150</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-151"><a href="#L-151"><span class="linenos">151</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="p">}</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> -</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</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="n">name</span> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"`</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">`"</span> +</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> +</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a><span class="k">class</span> <span class="nc">Drill</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">normalize_functions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">null_ordering</span> <span class="o">=</span> <span class="s2">"nulls_are_last"</span> +</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="n">date_format</span> <span class="o">=</span> <span class="s2">"'yyyy-MM-dd'"</span> +</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="n">dateint_format</span> <span class="o">=</span> <span class="s2">"'yyyyMMdd'"</span> +</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="s2">"'yyyy-MM-dd HH:mm:ss'"</span> +</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="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="s2">"y"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="s2">"Y"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="s2">"yyyy"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> +</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="s2">"yy"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> +</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="s2">"MMMM"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> +</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="s2">"MMM"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> +</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="s2">"M"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> +</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="s2">"dd"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="s2">"d"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="s2">"HH"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> +</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="s2">"H"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="s2">"hh"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> +</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="s2">"h"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> +</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="s2">"mm"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> +</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="s2">"m"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> +</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="s2">"ss"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> +</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="s2">"s"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> +</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="s2">"SSSSSS"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="s2">"a"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> +</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"%j"</span><span class="p">,</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> +</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="s2">"E"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="s2">"EE"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="s2">"EEE"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="s2">"EEEE"</span><span class="p">:</span> <span class="s2">"%A"</span><span class="p">,</span> +</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="s2">"''T''"</span><span class="p">:</span> <span class="s2">"T"</span><span class="p">,</span> +</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="p">}</span> +</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">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-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> +</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">"utf-8"</span> +</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">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-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> +</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-100"><a href="#L-100"><span class="linenos">100</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 class="c1"># type: ignore</span> +</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"drill"</span><span class="p">),</span> +</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="p">}</span> +</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">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-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-107"><a href="#L-107"><span class="linenos">107</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 class="c1"># type: ignore</span> +</span><span id="L-108"><a href="#L-108"><span class="linenos">108</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">"INTEGER"</span><span class="p">,</span> +</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> +</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> +</span><span id="L-111"><a href="#L-111"><span class="linenos">111</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">"VARBINARY"</span><span class="p">,</span> +</span><span id="L-112"><a href="#L-112"><span class="linenos">112</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">"VARCHAR"</span><span class="p">,</span> +</span><span id="L-113"><a href="#L-113"><span class="linenos">113</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">NCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> +</span><span id="L-114"><a href="#L-114"><span class="linenos">114</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">TIMESTAMPLTZ</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="L-115"><a href="#L-115"><span class="linenos">115</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">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos">116</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">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="p">}</span> +</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> +</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-120"><a href="#L-120"><span class="linenos">120</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 class="c1"># type: ignore</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="p">}</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> +</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos">125</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 class="c1"># type: ignore</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos">126</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">"CURRENT_TIMESTAMP"</span><span class="p">,</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos">127</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">"REPEATED_CONTAINS"</span><span class="p">),</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos">128</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">"REPEATED_COUNT"</span><span class="p">),</span> +</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">create_with_partitions_sql</span><span class="p">,</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos">131</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-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="L-133"><a href="#L-133"><span class="linenos">133</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_DATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos">134</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"TO_DATE(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</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">"`IF`(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_args</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="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'true'</span><span class="p">),</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'false'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</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">" </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> `ILIKE` </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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos">137</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">"LEVENSHTEIN_DISTANCE"</span><span class="p">),</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos">139</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-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> +</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos">145</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-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNIX_TIMESTAMP"</span><span class="p">),</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos">147</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="sa">f</span><span class="s2">"TO_CHAR(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos">148</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">"UNIX_TIMESTAMP"</span><span class="p">),</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</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">"DATE_ADD(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE), </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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s1">'DAY'</span><span class="p">)))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos">151</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 class="s2">"drill"</span><span class="p">),</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos">152</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="p">}</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> +</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"`</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">`"</span> </span></pre></div> @@ -253,129 +251,117 @@ </div> <a class="headerlink" href="#Drill"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Drill-51"><a href="#Drill-51"><span class="linenos"> 51</span></a><span class="k">class</span> <span class="nc">Drill</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="Drill-52"><a href="#Drill-52"><span class="linenos"> 52</span></a> <span class="n">normalize_functions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Drill-53"><a href="#Drill-53"><span class="linenos"> 53</span></a> <span class="n">null_ordering</span> <span class="o">=</span> <span class="s2">"nulls_are_last"</span> -</span><span id="Drill-54"><a href="#Drill-54"><span class="linenos"> 54</span></a> <span class="n">date_format</span> <span class="o">=</span> <span class="s2">"'yyyy-MM-dd'"</span> -</span><span id="Drill-55"><a href="#Drill-55"><span class="linenos"> 55</span></a> <span class="n">dateint_format</span> <span class="o">=</span> <span class="s2">"'yyyyMMdd'"</span> -</span><span id="Drill-56"><a href="#Drill-56"><span class="linenos"> 56</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="s2">"'yyyy-MM-dd HH:mm:ss'"</span> -</span><span id="Drill-57"><a href="#Drill-57"><span class="linenos"> 57</span></a> -</span><span id="Drill-58"><a href="#Drill-58"><span class="linenos"> 58</span></a> <span class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drill-59"><a href="#Drill-59"><span class="linenos"> 59</span></a> <span class="s2">"y"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="Drill-60"><a href="#Drill-60"><span class="linenos"> 60</span></a> <span class="s2">"Y"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="Drill-61"><a href="#Drill-61"><span class="linenos"> 61</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="Drill-62"><a href="#Drill-62"><span class="linenos"> 62</span></a> <span class="s2">"yyyy"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="Drill-63"><a href="#Drill-63"><span class="linenos"> 63</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> -</span><span id="Drill-64"><a href="#Drill-64"><span class="linenos"> 64</span></a> <span class="s2">"yy"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> -</span><span id="Drill-65"><a href="#Drill-65"><span class="linenos"> 65</span></a> <span class="s2">"MMMM"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> -</span><span id="Drill-66"><a href="#Drill-66"><span class="linenos"> 66</span></a> <span class="s2">"MMM"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> -</span><span id="Drill-67"><a href="#Drill-67"><span class="linenos"> 67</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> -</span><span id="Drill-68"><a href="#Drill-68"><span class="linenos"> 68</span></a> <span class="s2">"M"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> -</span><span id="Drill-69"><a href="#Drill-69"><span class="linenos"> 69</span></a> <span class="s2">"dd"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill-70"><a href="#Drill-70"><span class="linenos"> 70</span></a> <span class="s2">"d"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill-71"><a href="#Drill-71"><span class="linenos"> 71</span></a> <span class="s2">"HH"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> -</span><span id="Drill-72"><a href="#Drill-72"><span class="linenos"> 72</span></a> <span class="s2">"H"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> -</span><span id="Drill-73"><a href="#Drill-73"><span class="linenos"> 73</span></a> <span class="s2">"hh"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> -</span><span id="Drill-74"><a href="#Drill-74"><span class="linenos"> 74</span></a> <span class="s2">"h"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> -</span><span id="Drill-75"><a href="#Drill-75"><span class="linenos"> 75</span></a> <span class="s2">"mm"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> -</span><span id="Drill-76"><a href="#Drill-76"><span class="linenos"> 76</span></a> <span class="s2">"m"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> -</span><span id="Drill-77"><a href="#Drill-77"><span class="linenos"> 77</span></a> <span class="s2">"ss"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> -</span><span id="Drill-78"><a href="#Drill-78"><span class="linenos"> 78</span></a> <span class="s2">"s"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> -</span><span id="Drill-79"><a href="#Drill-79"><span class="linenos"> 79</span></a> <span class="s2">"SSSSSS"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill-80"><a href="#Drill-80"><span class="linenos"> 80</span></a> <span class="s2">"a"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> -</span><span id="Drill-81"><a href="#Drill-81"><span class="linenos"> 81</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"%j"</span><span class="p">,</span> -</span><span id="Drill-82"><a href="#Drill-82"><span class="linenos"> 82</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> -</span><span id="Drill-83"><a href="#Drill-83"><span class="linenos"> 83</span></a> <span class="s2">"E"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill-84"><a href="#Drill-84"><span class="linenos"> 84</span></a> <span class="s2">"EE"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill-85"><a href="#Drill-85"><span class="linenos"> 85</span></a> <span class="s2">"EEE"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill-86"><a href="#Drill-86"><span class="linenos"> 86</span></a> <span class="s2">"EEEE"</span><span class="p">:</span> <span class="s2">"%A"</span><span class="p">,</span> -</span><span id="Drill-87"><a href="#Drill-87"><span class="linenos"> 87</span></a> <span class="s2">"''T''"</span><span class="p">:</span> <span class="s2">"T"</span><span class="p">,</span> -</span><span id="Drill-88"><a href="#Drill-88"><span class="linenos"> 88</span></a> <span class="p">}</span> -</span><span id="Drill-89"><a href="#Drill-89"><span class="linenos"> 89</span></a> -</span><span id="Drill-90"><a href="#Drill-90"><span class="linenos"> 90</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="Drill-91"><a href="#Drill-91"><span class="linenos"> 91</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="Drill-92"><a href="#Drill-92"><span class="linenos"> 92</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> -</span><span id="Drill-93"><a href="#Drill-93"><span class="linenos"> 93</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> -</span><span id="Drill-94"><a href="#Drill-94"><span class="linenos"> 94</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">"utf-8"</span> -</span><span id="Drill-95"><a href="#Drill-95"><span class="linenos"> 95</span></a> -</span><span id="Drill-96"><a href="#Drill-96"><span class="linenos"> 96</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="Drill-97"><a href="#Drill-97"><span class="linenos"> 97</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Drill-98"><a href="#Drill-98"><span class="linenos"> 98</span></a> -</span><span id="Drill-99"><a href="#Drill-99"><span class="linenos"> 99</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drill-100"><a href="#Drill-100"><span class="linenos">100</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 class="c1"># type: ignore</span> -</span><span id="Drill-101"><a href="#Drill-101"><span class="linenos">101</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Drill-102"><a href="#Drill-102"><span class="linenos">102</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"drill"</span><span class="p">),</span> -</span><span id="Drill-103"><a href="#Drill-103"><span class="linenos">103</span></a> <span class="p">}</span> -</span><span id="Drill-104"><a href="#Drill-104"><span class="linenos">104</span></a> -</span><span id="Drill-105"><a href="#Drill-105"><span class="linenos">105</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="Drill-106"><a href="#Drill-106"><span class="linenos">106</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drill-107"><a href="#Drill-107"><span class="linenos">107</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 class="c1"># type: ignore</span> -</span><span id="Drill-108"><a href="#Drill-108"><span class="linenos">108</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">"INTEGER"</span><span class="p">,</span> -</span><span id="Drill-109"><a href="#Drill-109"><span class="linenos">109</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> -</span><span id="Drill-110"><a href="#Drill-110"><span class="linenos">110</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> -</span><span id="Drill-111"><a href="#Drill-111"><span class="linenos">111</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">"VARBINARY"</span><span class="p">,</span> -</span><span id="Drill-112"><a href="#Drill-112"><span class="linenos">112</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">"VARCHAR"</span><span class="p">,</span> -</span><span id="Drill-113"><a href="#Drill-113"><span class="linenos">113</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">NCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> -</span><span id="Drill-114"><a href="#Drill-114"><span class="linenos">114</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">TIMESTAMPLTZ</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="Drill-115"><a href="#Drill-115"><span class="linenos">115</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">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="Drill-116"><a href="#Drill-116"><span class="linenos">116</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">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="Drill-117"><a href="#Drill-117"><span class="linenos">117</span></a> <span class="p">}</span> -</span><span id="Drill-118"><a href="#Drill-118"><span class="linenos">118</span></a> -</span><span id="Drill-119"><a href="#Drill-119"><span class="linenos">119</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drill-120"><a href="#Drill-120"><span class="linenos">120</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 class="c1"># type: ignore</span> -</span><span id="Drill-121"><a href="#Drill-121"><span class="linenos">121</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Drill-122"><a href="#Drill-122"><span class="linenos">122</span></a> <span class="p">}</span> -</span><span id="Drill-123"><a href="#Drill-123"><span class="linenos">123</span></a> -</span><span id="Drill-124"><a href="#Drill-124"><span class="linenos">124</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drill-125"><a href="#Drill-125"><span class="linenos">125</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 class="c1"># type: ignore</span> -</span><span id="Drill-126"><a href="#Drill-126"><span class="linenos">126</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">"CURRENT_TIMESTAMP"</span><span class="p">,</span> -</span><span id="Drill-127"><a href="#Drill-127"><span class="linenos">127</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">"REPEATED_CONTAINS"</span><span class="p">),</span> -</span><span id="Drill-128"><a href="#Drill-128"><span class="linenos">128</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">"REPEATED_COUNT"</span><span class="p">),</span> -</span><span id="Drill-129"><a href="#Drill-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">create_with_partitions_sql</span><span class="p">,</span> -</span><span id="Drill-130"><a href="#Drill-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="Drill-131"><a href="#Drill-131"><span class="linenos">131</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="Drill-132"><a href="#Drill-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="Drill-133"><a href="#Drill-133"><span class="linenos">133</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_DATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> -</span><span id="Drill-134"><a href="#Drill-134"><span class="linenos">134</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"TO_DATE(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill-135"><a href="#Drill-135"><span class="linenos">135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</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">"`IF`(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_args</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="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'true'</span><span class="p">),</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'false'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill-136"><a href="#Drill-136"><span class="linenos">136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</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">" </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> `ILIKE` </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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill-137"><a href="#Drill-137"><span class="linenos">137</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">"LEVENSHTEIN_DISTANCE"</span><span class="p">),</span> -</span><span id="Drill-138"><a href="#Drill-138"><span class="linenos">138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill-139"><a href="#Drill-139"><span class="linenos">139</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="Drill-140"><a href="#Drill-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> -</span><span id="Drill-141"><a href="#Drill-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="Drill-142"><a href="#Drill-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> -</span><span id="Drill-143"><a href="#Drill-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill-144"><a href="#Drill-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> -</span><span id="Drill-145"><a href="#Drill-145"><span class="linenos">145</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="Drill-146"><a href="#Drill-146"><span class="linenos">146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNIX_TIMESTAMP"</span><span class="p">),</span> -</span><span id="Drill-147"><a href="#Drill-147"><span class="linenos">147</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="sa">f</span><span class="s2">"TO_CHAR(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill-148"><a href="#Drill-148"><span class="linenos">148</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">"UNIX_TIMESTAMP"</span><span class="p">),</span> -</span><span id="Drill-149"><a href="#Drill-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> -</span><span id="Drill-150"><a href="#Drill-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</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">"DATE_ADD(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE), </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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s1">'DAY'</span><span class="p">)))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill-151"><a href="#Drill-151"><span class="linenos">151</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="Drill-152"><a href="#Drill-152"><span class="linenos">152</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> -</span><span id="Drill-153"><a href="#Drill-153"><span class="linenos">153</span></a> <span class="p">}</span> -</span><span id="Drill-154"><a href="#Drill-154"><span class="linenos">154</span></a> -</span><span id="Drill-155"><a href="#Drill-155"><span class="linenos">155</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Drill-156"><a href="#Drill-156"><span class="linenos">156</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"`</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">`"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Drill-52"><a href="#Drill-52"><span class="linenos"> 52</span></a><span class="k">class</span> <span class="nc">Drill</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="Drill-53"><a href="#Drill-53"><span class="linenos"> 53</span></a> <span class="n">normalize_functions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Drill-54"><a href="#Drill-54"><span class="linenos"> 54</span></a> <span class="n">null_ordering</span> <span class="o">=</span> <span class="s2">"nulls_are_last"</span> +</span><span id="Drill-55"><a href="#Drill-55"><span class="linenos"> 55</span></a> <span class="n">date_format</span> <span class="o">=</span> <span class="s2">"'yyyy-MM-dd'"</span> +</span><span id="Drill-56"><a href="#Drill-56"><span class="linenos"> 56</span></a> <span class="n">dateint_format</span> <span class="o">=</span> <span class="s2">"'yyyyMMdd'"</span> +</span><span id="Drill-57"><a href="#Drill-57"><span class="linenos"> 57</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="s2">"'yyyy-MM-dd HH:mm:ss'"</span> +</span><span id="Drill-58"><a href="#Drill-58"><span class="linenos"> 58</span></a> +</span><span id="Drill-59"><a href="#Drill-59"><span class="linenos"> 59</span></a> <span class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drill-60"><a href="#Drill-60"><span class="linenos"> 60</span></a> <span class="s2">"y"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="Drill-61"><a href="#Drill-61"><span class="linenos"> 61</span></a> <span class="s2">"Y"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="Drill-62"><a href="#Drill-62"><span class="linenos"> 62</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="Drill-63"><a href="#Drill-63"><span class="linenos"> 63</span></a> <span class="s2">"yyyy"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="Drill-64"><a href="#Drill-64"><span class="linenos"> 64</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> +</span><span id="Drill-65"><a href="#Drill-65"><span class="linenos"> 65</span></a> <span class="s2">"yy"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> +</span><span id="Drill-66"><a href="#Drill-66"><span class="linenos"> 66</span></a> <span class="s2">"MMMM"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> +</span><span id="Drill-67"><a href="#Drill-67"><span class="linenos"> 67</span></a> <span class="s2">"MMM"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> +</span><span id="Drill-68"><a href="#Drill-68"><span class="linenos"> 68</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> +</span><span id="Drill-69"><a href="#Drill-69"><span class="linenos"> 69</span></a> <span class="s2">"M"</span><span class="p">:</span> <span class="s2">"%-m"</span><span class="p">,</span> +</span><span id="Drill-70"><a href="#Drill-70"><span class="linenos"> 70</span></a> <span class="s2">"dd"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill-71"><a href="#Drill-71"><span class="linenos"> 71</span></a> <span class="s2">"d"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill-72"><a href="#Drill-72"><span class="linenos"> 72</span></a> <span class="s2">"HH"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> +</span><span id="Drill-73"><a href="#Drill-73"><span class="linenos"> 73</span></a> <span class="s2">"H"</span><span class="p">:</span> <span class="s2">"%-H"</span><span class="p">,</span> +</span><span id="Drill-74"><a href="#Drill-74"><span class="linenos"> 74</span></a> <span class="s2">"hh"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> +</span><span id="Drill-75"><a href="#Drill-75"><span class="linenos"> 75</span></a> <span class="s2">"h"</span><span class="p">:</span> <span class="s2">"%-I"</span><span class="p">,</span> +</span><span id="Drill-76"><a href="#Drill-76"><span class="linenos"> 76</span></a> <span class="s2">"mm"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> +</span><span id="Drill-77"><a href="#Drill-77"><span class="linenos"> 77</span></a> <span class="s2">"m"</span><span class="p">:</span> <span class="s2">"%-M"</span><span class="p">,</span> +</span><span id="Drill-78"><a href="#Drill-78"><span class="linenos"> 78</span></a> <span class="s2">"ss"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> +</span><span id="Drill-79"><a href="#Drill-79"><span class="linenos"> 79</span></a> <span class="s2">"s"</span><span class="p">:</span> <span class="s2">"%-S"</span><span class="p">,</span> +</span><span id="Drill-80"><a href="#Drill-80"><span class="linenos"> 80</span></a> <span class="s2">"SSSSSS"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill-81"><a href="#Drill-81"><span class="linenos"> 81</span></a> <span class="s2">"a"</span><span class="p">:</span> <span class="s2">"%p"</span><span class="p">,</span> +</span><span id="Drill-82"><a href="#Drill-82"><span class="linenos"> 82</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"%j"</span><span class="p">,</span> +</span><span id="Drill-83"><a href="#Drill-83"><span class="linenos"> 83</span></a> <span class="s2">"D"</span><span class="p">:</span> <span class="s2">"%-j"</span><span class="p">,</span> +</span><span id="Drill-84"><a href="#Drill-84"><span class="linenos"> 84</span></a> <span class="s2">"E"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill-85"><a href="#Drill-85"><span class="linenos"> 85</span></a> <span class="s2">"EE"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill-86"><a href="#Drill-86"><span class="linenos"> 86</span></a> <span class="s2">"EEE"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%a</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill-87"><a href="#Drill-87"><span class="linenos"> 87</span></a> <span class="s2">"EEEE"</span><span class="p">:</span> <span class="s2">"%A"</span><span class="p">,</span> +</span><span id="Drill-88"><a href="#Drill-88"><span class="linenos"> 88</span></a> <span class="s2">"''T''"</span><span class="p">:</span> <span class="s2">"T"</span><span class="p">,</span> +</span><span id="Drill-89"><a href="#Drill-89"><span class="linenos"> 89</span></a> <span class="p">}</span> +</span><span id="Drill-90"><a href="#Drill-90"><span class="linenos"> 90</span></a> +</span><span id="Drill-91"><a href="#Drill-91"><span class="linenos"> 91</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="Drill-92"><a href="#Drill-92"><span class="linenos"> 92</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="Drill-93"><a href="#Drill-93"><span class="linenos"> 93</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> +</span><span id="Drill-94"><a href="#Drill-94"><span class="linenos"> 94</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> +</span><span id="Drill-95"><a href="#Drill-95"><span class="linenos"> 95</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">"utf-8"</span> +</span><span id="Drill-96"><a href="#Drill-96"><span class="linenos"> 96</span></a> +</span><span id="Drill-97"><a href="#Drill-97"><span class="linenos"> 97</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="Drill-98"><a href="#Drill-98"><span class="linenos"> 98</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Drill-99"><a href="#Drill-99"><span class="linenos"> 99</span></a> +</span><span id="Drill-100"><a href="#Drill-100"><span class="linenos">100</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drill-101"><a href="#Drill-101"><span class="linenos">101</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 class="c1"># type: ignore</span> +</span><span id="Drill-102"><a href="#Drill-102"><span class="linenos">102</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Drill-103"><a href="#Drill-103"><span class="linenos">103</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"drill"</span><span class="p">),</span> +</span><span id="Drill-104"><a href="#Drill-104"><span class="linenos">104</span></a> <span class="p">}</span> +</span><span id="Drill-105"><a href="#Drill-105"><span class="linenos">105</span></a> +</span><span id="Drill-106"><a href="#Drill-106"><span class="linenos">106</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="Drill-107"><a href="#Drill-107"><span class="linenos">107</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drill-108"><a href="#Drill-108"><span class="linenos">108</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 class="c1"># type: ignore</span> +</span><span id="Drill-109"><a href="#Drill-109"><span class="linenos">109</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">"INTEGER"</span><span class="p">,</span> +</span><span id="Drill-110"><a href="#Drill-110"><span class="linenos">110</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> +</span><span id="Drill-111"><a href="#Drill-111"><span class="linenos">111</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> +</span><span id="Drill-112"><a href="#Drill-112"><span class="linenos">112</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">"VARBINARY"</span><span class="p">,</span> +</span><span id="Drill-113"><a href="#Drill-113"><span class="linenos">113</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">"VARCHAR"</span><span class="p">,</span> +</span><span id="Drill-114"><a href="#Drill-114"><span class="linenos">114</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">NCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> +</span><span id="Drill-115"><a href="#Drill-115"><span class="linenos">115</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">TIMESTAMPLTZ</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="Drill-116"><a href="#Drill-116"><span class="linenos">116</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">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="Drill-117"><a href="#Drill-117"><span class="linenos">117</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">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="Drill-118"><a href="#Drill-118"><span class="linenos">118</span></a> <span class="p">}</span> +</span><span id="Drill-119"><a href="#Drill-119"><span class="linenos">119</span></a> +</span><span id="Drill-120"><a href="#Drill-120"><span class="linenos">120</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drill-121"><a href="#Drill-121"><span class="linenos">121</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 class="c1"># type: ignore</span> +</span><span id="Drill-122"><a href="#Drill-122"><span class="linenos">122</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Drill-123"><a href="#Drill-123"><span class="linenos">123</span></a> <span class="p">}</span> +</span><span id="Drill-124"><a href="#Drill-124"><span class="linenos">124</span></a> +</span><span id="Drill-125"><a href="#Drill-125"><span class="linenos">125</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drill-126"><a href="#Drill-126"><span class="linenos">126</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 class="c1"># type: ignore</span> +</span><span id="Drill-127"><a href="#Drill-127"><span class="linenos">127</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">"CURRENT_TIMESTAMP"</span><span class="p">,</span> +</span><span id="Drill-128"><a href="#Drill-128"><span class="linenos">128</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">"REPEATED_CONTAINS"</span><span class="p">),</span> +</span><span id="Drill-129"><a href="#Drill-129"><span class="linenos">129</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">"REPEATED_COUNT"</span><span class="p">),</span> +</span><span id="Drill-130"><a href="#Drill-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">create_with_partitions_sql</span><span class="p">,</span> +</span><span id="Drill-131"><a href="#Drill-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="Drill-132"><a href="#Drill-132"><span class="linenos">132</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="Drill-133"><a href="#Drill-133"><span class="linenos">133</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="Drill-134"><a href="#Drill-134"><span class="linenos">134</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_DATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> +</span><span id="Drill-135"><a href="#Drill-135"><span class="linenos">135</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"TO_DATE(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill-136"><a href="#Drill-136"><span class="linenos">136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</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">"`IF`(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_args</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="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'true'</span><span class="p">),</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'false'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill-137"><a href="#Drill-137"><span class="linenos">137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</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">" </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> `ILIKE` </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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill-138"><a href="#Drill-138"><span class="linenos">138</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">"LEVENSHTEIN_DISTANCE"</span><span class="p">),</span> +</span><span id="Drill-139"><a href="#Drill-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill-140"><a href="#Drill-140"><span class="linenos">140</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="Drill-141"><a href="#Drill-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> +</span><span id="Drill-142"><a href="#Drill-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> +</span><span id="Drill-143"><a href="#Drill-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> +</span><span id="Drill-144"><a href="#Drill-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill-145"><a href="#Drill-145"><span class="linenos">145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> +</span><span id="Drill-146"><a href="#Drill-146"><span class="linenos">146</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="Drill-147"><a href="#Drill-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNIX_TIMESTAMP"</span><span class="p">),</span> +</span><span id="Drill-148"><a href="#Drill-148"><span class="linenos">148</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="sa">f</span><span class="s2">"TO_CHAR(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill-149"><a href="#Drill-149"><span class="linenos">149</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">"UNIX_TIMESTAMP"</span><span class="p">),</span> +</span><span id="Drill-150"><a href="#Drill-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> +</span><span id="Drill-151"><a href="#Drill-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</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">"DATE_ADD(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE), </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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s1">'DAY'</span><span class="p">)))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill-152"><a href="#Drill-152"><span class="linenos">152</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 class="s2">"drill"</span><span class="p">),</span> +</span><span id="Drill-153"><a href="#Drill-153"><span class="linenos">153</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> +</span><span id="Drill-154"><a href="#Drill-154"><span class="linenos">154</span></a> <span class="p">}</span> +</span><span id="Drill-155"><a href="#Drill-155"><span class="linenos">155</span></a> +</span><span id="Drill-156"><a href="#Drill-156"><span class="linenos">156</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Drill-157"><a href="#Drill-157"><span class="linenos">157</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"`</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">`"</span> </span></pre></div> - <div id="Drill.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Drill</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Drill.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -404,11 +390,11 @@ </div> <a class="headerlink" href="#Drill.Tokenizer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Tokenizer-90"><a href="#Drill.Tokenizer-90"><span class="linenos">90</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="Drill.Tokenizer-91"><a href="#Drill.Tokenizer-91"><span class="linenos">91</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="Drill.Tokenizer-92"><a href="#Drill.Tokenizer-92"><span class="linenos">92</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> -</span><span id="Drill.Tokenizer-93"><a href="#Drill.Tokenizer-93"><span class="linenos">93</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> -</span><span id="Drill.Tokenizer-94"><a href="#Drill.Tokenizer-94"><span class="linenos">94</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">"utf-8"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Tokenizer-91"><a href="#Drill.Tokenizer-91"><span class="linenos">91</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="Drill.Tokenizer-92"><a href="#Drill.Tokenizer-92"><span class="linenos">92</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="Drill.Tokenizer-93"><a href="#Drill.Tokenizer-93"><span class="linenos">93</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"`"</span><span class="p">]</span> +</span><span id="Drill.Tokenizer-94"><a href="#Drill.Tokenizer-94"><span class="linenos">94</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">]</span> +</span><span id="Drill.Tokenizer-95"><a href="#Drill.Tokenizer-95"><span class="linenos">95</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">"utf-8"</span> </span></pre></div> @@ -418,8 +404,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Drill.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Drill.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Drill.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Drill.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -437,14 +422,14 @@ </div> <a class="headerlink" href="#Drill.Parser"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Parser-96"><a href="#Drill.Parser-96"><span class="linenos"> 96</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="Drill.Parser-97"><a href="#Drill.Parser-97"><span class="linenos"> 97</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Drill.Parser-98"><a href="#Drill.Parser-98"><span class="linenos"> 98</span></a> -</span><span id="Drill.Parser-99"><a href="#Drill.Parser-99"><span class="linenos"> 99</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drill.Parser-100"><a href="#Drill.Parser-100"><span class="linenos">100</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 class="c1"># type: ignore</span> -</span><span id="Drill.Parser-101"><a href="#Drill.Parser-101"><span class="linenos">101</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Drill.Parser-102"><a href="#Drill.Parser-102"><span class="linenos">102</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"drill"</span><span class="p">),</span> -</span><span id="Drill.Parser-103"><a href="#Drill.Parser-103"><span class="linenos">103</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Parser-97"><a href="#Drill.Parser-97"><span class="linenos"> 97</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="Drill.Parser-98"><a href="#Drill.Parser-98"><span class="linenos"> 98</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Drill.Parser-99"><a href="#Drill.Parser-99"><span class="linenos"> 99</span></a> +</span><span id="Drill.Parser-100"><a href="#Drill.Parser-100"><span class="linenos">100</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drill.Parser-101"><a href="#Drill.Parser-101"><span class="linenos">101</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 class="c1"># type: ignore</span> +</span><span id="Drill.Parser-102"><a href="#Drill.Parser-102"><span class="linenos">102</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Drill.Parser-103"><a href="#Drill.Parser-103"><span class="linenos">103</span></a> <span class="s2">"TO_CHAR"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"drill"</span><span class="p">),</span> +</span><span id="Drill.Parser-104"><a href="#Drill.Parser-104"><span class="linenos">104</span></a> <span class="p">}</span> </span></pre></div> @@ -501,58 +486,58 @@ Default: "nulls_are_small"</li> </div> <a class="headerlink" href="#Drill.Generator"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Generator-105"><a href="#Drill.Generator-105"><span class="linenos">105</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="Drill.Generator-106"><a href="#Drill.Generator-106"><span class="linenos">106</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drill.Generator-107"><a href="#Drill.Generator-107"><span class="linenos">107</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 class="c1"># type: ignore</span> -</span><span id="Drill.Generator-108"><a href="#Drill.Generator-108"><span class="linenos">108</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">"INTEGER"</span><span class="p">,</span> -</span><span id="Drill.Generator-109"><a href="#Drill.Generator-109"><span class="linenos">109</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> -</span><span id="Drill.Generator-110"><a href="#Drill.Generator-110"><span class="linenos">110</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> -</span><span id="Drill.Generator-111"><a href="#Drill.Generator-111"><span class="linenos">111</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">"VARBINARY"</span><span class="p">,</span> -</span><span id="Drill.Generator-112"><a href="#Drill.Generator-112"><span class="linenos">112</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">"VARCHAR"</span><span class="p">,</span> -</span><span id="Drill.Generator-113"><a href="#Drill.Generator-113"><span class="linenos">113</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">NCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> -</span><span id="Drill.Generator-114"><a href="#Drill.Generator-114"><span class="linenos">114</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">TIMESTAMPLTZ</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="Drill.Generator-115"><a href="#Drill.Generator-115"><span class="linenos">115</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">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="Drill.Generator-116"><a href="#Drill.Generator-116"><span class="linenos">116</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">"TIMESTAMP"</span><span class="p">,</span> -</span><span id="Drill.Generator-117"><a href="#Drill.Generator-117"><span class="linenos">117</span></a> <span class="p">}</span> -</span><span id="Drill.Generator-118"><a href="#Drill.Generator-118"><span class="linenos">118</span></a> -</span><span id="Drill.Generator-119"><a href="#Drill.Generator-119"><span class="linenos">119</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drill.Generator-120"><a href="#Drill.Generator-120"><span class="linenos">120</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 class="c1"># type: ignore</span> -</span><span id="Drill.Generator-121"><a href="#Drill.Generator-121"><span class="linenos">121</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Drill.Generator-122"><a href="#Drill.Generator-122"><span class="linenos">122</span></a> <span class="p">}</span> -</span><span id="Drill.Generator-123"><a href="#Drill.Generator-123"><span class="linenos">123</span></a> -</span><span id="Drill.Generator-124"><a href="#Drill.Generator-124"><span class="linenos">124</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drill.Generator-125"><a href="#Drill.Generator-125"><span class="linenos">125</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 class="c1"># type: ignore</span> -</span><span id="Drill.Generator-126"><a href="#Drill.Generator-126"><span class="linenos">126</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">"CURRENT_TIMESTAMP"</span><span class="p">,</span> -</span><span id="Drill.Generator-127"><a href="#Drill.Generator-127"><span class="linenos">127</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">"REPEATED_CONTAINS"</span><span class="p">),</span> -</span><span id="Drill.Generator-128"><a href="#Drill.Generator-128"><span class="linenos">128</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">"REPEATED_COUNT"</span><span class="p">),</span> -</span><span id="Drill.Generator-129"><a href="#Drill.Generator-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">create_with_partitions_sql</span><span class="p">,</span> -</span><span id="Drill.Generator-130"><a href="#Drill.Generator-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">),</span> -</span><span id="Drill.Generator-131"><a href="#Drill.Generator-131"><span class="linenos">131</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="Drill.Generator-132"><a href="#Drill.Generator-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"SUB"</span><span class="p">),</span> -</span><span id="Drill.Generator-133"><a href="#Drill.Generator-133"><span class="linenos">133</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_DATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> -</span><span id="Drill.Generator-134"><a href="#Drill.Generator-134"><span class="linenos">134</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"TO_DATE(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill.Generator-135"><a href="#Drill.Generator-135"><span class="linenos">135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</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">"`IF`(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_args</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="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'true'</span><span class="p">),</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'false'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill.Generator-136"><a href="#Drill.Generator-136"><span class="linenos">136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</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">" </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> `ILIKE` </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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill.Generator-137"><a href="#Drill.Generator-137"><span class="linenos">137</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">"LEVENSHTEIN_DISTANCE"</span><span class="p">),</span> -</span><span id="Drill.Generator-138"><a href="#Drill.Generator-138"><span class="linenos">138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Drill.Generator-139"><a href="#Drill.Generator-139"><span class="linenos">139</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="Drill.Generator-140"><a href="#Drill.Generator-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> -</span><span id="Drill.Generator-141"><a href="#Drill.Generator-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="Drill.Generator-142"><a href="#Drill.Generator-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> -</span><span id="Drill.Generator-143"><a href="#Drill.Generator-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill.Generator-144"><a href="#Drill.Generator-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> -</span><span id="Drill.Generator-145"><a href="#Drill.Generator-145"><span class="linenos">145</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="Drill.Generator-146"><a href="#Drill.Generator-146"><span class="linenos">146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNIX_TIMESTAMP"</span><span class="p">),</span> -</span><span id="Drill.Generator-147"><a href="#Drill.Generator-147"><span class="linenos">147</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="sa">f</span><span class="s2">"TO_CHAR(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill.Generator-148"><a href="#Drill.Generator-148"><span class="linenos">148</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">"UNIX_TIMESTAMP"</span><span class="p">),</span> -</span><span id="Drill.Generator-149"><a href="#Drill.Generator-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> -</span><span id="Drill.Generator-150"><a href="#Drill.Generator-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</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">"DATE_ADD(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE), </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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s1">'DAY'</span><span class="p">)))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Drill.Generator-151"><a href="#Drill.Generator-151"><span class="linenos">151</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="Drill.Generator-152"><a href="#Drill.Generator-152"><span class="linenos">152</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> -</span><span id="Drill.Generator-153"><a href="#Drill.Generator-153"><span class="linenos">153</span></a> <span class="p">}</span> -</span><span id="Drill.Generator-154"><a href="#Drill.Generator-154"><span class="linenos">154</span></a> -</span><span id="Drill.Generator-155"><a href="#Drill.Generator-155"><span class="linenos">155</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Drill.Generator-156"><a href="#Drill.Generator-156"><span class="linenos">156</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"`</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">`"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Generator-106"><a href="#Drill.Generator-106"><span class="linenos">106</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="Drill.Generator-107"><a href="#Drill.Generator-107"><span class="linenos">107</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drill.Generator-108"><a href="#Drill.Generator-108"><span class="linenos">108</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 class="c1"># type: ignore</span> +</span><span id="Drill.Generator-109"><a href="#Drill.Generator-109"><span class="linenos">109</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">"INTEGER"</span><span class="p">,</span> +</span><span id="Drill.Generator-110"><a href="#Drill.Generator-110"><span class="linenos">110</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> +</span><span id="Drill.Generator-111"><a href="#Drill.Generator-111"><span class="linenos">111</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"INTEGER"</span><span class="p">,</span> +</span><span id="Drill.Generator-112"><a href="#Drill.Generator-112"><span class="linenos">112</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">"VARBINARY"</span><span class="p">,</span> +</span><span id="Drill.Generator-113"><a href="#Drill.Generator-113"><span class="linenos">113</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">"VARCHAR"</span><span class="p">,</span> +</span><span id="Drill.Generator-114"><a href="#Drill.Generator-114"><span class="linenos">114</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">NCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> +</span><span id="Drill.Generator-115"><a href="#Drill.Generator-115"><span class="linenos">115</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">TIMESTAMPLTZ</span><span class="p">:</span> <span class="s2">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="Drill.Generator-116"><a href="#Drill.Generator-116"><span class="linenos">116</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">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="Drill.Generator-117"><a href="#Drill.Generator-117"><span class="linenos">117</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">"TIMESTAMP"</span><span class="p">,</span> +</span><span id="Drill.Generator-118"><a href="#Drill.Generator-118"><span class="linenos">118</span></a> <span class="p">}</span> +</span><span id="Drill.Generator-119"><a href="#Drill.Generator-119"><span class="linenos">119</span></a> +</span><span id="Drill.Generator-120"><a href="#Drill.Generator-120"><span class="linenos">120</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drill.Generator-121"><a href="#Drill.Generator-121"><span class="linenos">121</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 class="c1"># type: ignore</span> +</span><span id="Drill.Generator-122"><a href="#Drill.Generator-122"><span class="linenos">122</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Drill.Generator-123"><a href="#Drill.Generator-123"><span class="linenos">123</span></a> <span class="p">}</span> +</span><span id="Drill.Generator-124"><a href="#Drill.Generator-124"><span class="linenos">124</span></a> +</span><span id="Drill.Generator-125"><a href="#Drill.Generator-125"><span class="linenos">125</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drill.Generator-126"><a href="#Drill.Generator-126"><span class="linenos">126</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 class="c1"># type: ignore</span> +</span><span id="Drill.Generator-127"><a href="#Drill.Generator-127"><span class="linenos">127</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">"CURRENT_TIMESTAMP"</span><span class="p">,</span> +</span><span id="Drill.Generator-128"><a href="#Drill.Generator-128"><span class="linenos">128</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">"REPEATED_CONTAINS"</span><span class="p">),</span> +</span><span id="Drill.Generator-129"><a href="#Drill.Generator-129"><span class="linenos">129</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">"REPEATED_COUNT"</span><span class="p">),</span> +</span><span id="Drill.Generator-130"><a href="#Drill.Generator-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">create_with_partitions_sql</span><span class="p">,</span> +</span><span id="Drill.Generator-131"><a href="#Drill.Generator-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">),</span> +</span><span id="Drill.Generator-132"><a href="#Drill.Generator-132"><span class="linenos">132</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="Drill.Generator-133"><a href="#Drill.Generator-133"><span class="linenos">133</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">"SUB"</span><span class="p">),</span> +</span><span id="Drill.Generator-134"><a href="#Drill.Generator-134"><span class="linenos">134</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_DATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> +</span><span id="Drill.Generator-135"><a href="#Drill.Generator-135"><span class="linenos">135</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"TO_DATE(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), </span><span class="si">{</span><span class="n">Drill</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill.Generator-136"><a href="#Drill.Generator-136"><span class="linenos">136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</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">"`IF`(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_args</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="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'true'</span><span class="p">),</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'false'</span><span class="p">))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill.Generator-137"><a href="#Drill.Generator-137"><span class="linenos">137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ILike</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">" </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> `ILIKE` </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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill.Generator-138"><a href="#Drill.Generator-138"><span class="linenos">138</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">"LEVENSHTEIN_DISTANCE"</span><span class="p">),</span> +</span><span id="Drill.Generator-139"><a href="#Drill.Generator-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Drill.Generator-140"><a href="#Drill.Generator-140"><span class="linenos">140</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="Drill.Generator-141"><a href="#Drill.Generator-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> +</span><span id="Drill.Generator-142"><a href="#Drill.Generator-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> +</span><span id="Drill.Generator-143"><a href="#Drill.Generator-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> +</span><span id="Drill.Generator-144"><a href="#Drill.Generator-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill.Generator-145"><a href="#Drill.Generator-145"><span class="linenos">145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> +</span><span id="Drill.Generator-146"><a href="#Drill.Generator-146"><span class="linenos">146</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="Drill.Generator-147"><a href="#Drill.Generator-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNIX_TIMESTAMP"</span><span class="p">),</span> +</span><span id="Drill.Generator-148"><a href="#Drill.Generator-148"><span class="linenos">148</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="sa">f</span><span class="s2">"TO_CHAR(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill.Generator-149"><a href="#Drill.Generator-149"><span class="linenos">149</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">"UNIX_TIMESTAMP"</span><span class="p">),</span> +</span><span id="Drill.Generator-150"><a href="#Drill.Generator-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span> +</span><span id="Drill.Generator-151"><a href="#Drill.Generator-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</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">"DATE_ADD(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE), </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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s1">'DAY'</span><span class="p">)))</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Drill.Generator-152"><a href="#Drill.Generator-152"><span class="linenos">152</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 class="s2">"drill"</span><span class="p">),</span> +</span><span id="Drill.Generator-153"><a href="#Drill.Generator-153"><span class="linenos">153</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS VARCHAR), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> +</span><span id="Drill.Generator-154"><a href="#Drill.Generator-154"><span class="linenos">154</span></a> <span class="p">}</span> +</span><span id="Drill.Generator-155"><a href="#Drill.Generator-155"><span class="linenos">155</span></a> +</span><span id="Drill.Generator-156"><a href="#Drill.Generator-156"><span class="linenos">156</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Drill.Generator-157"><a href="#Drill.Generator-157"><span class="linenos">157</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"`</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">`"</span> </span></pre></div> @@ -612,8 +597,8 @@ Default: True</li> </div> <a class="headerlink" href="#Drill.Generator.normalize_func"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Generator.normalize_func-155"><a href="#Drill.Generator.normalize_func-155"><span class="linenos">155</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Drill.Generator.normalize_func-156"><a href="#Drill.Generator.normalize_func-156"><span class="linenos">156</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"`</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">`"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Generator.normalize_func-156"><a href="#Drill.Generator.normalize_func-156"><span class="linenos">156</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Drill.Generator.normalize_func-157"><a href="#Drill.Generator.normalize_func-157"><span class="linenos">157</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"`</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">`"</span> </span></pre></div> @@ -642,6 +627,7 @@ Default: True</li> <dd id="Drill.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Drill.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Drill.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Drill.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Drill.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Drill.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Drill.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -684,6 +670,7 @@ Default: True</li> <dd id="Drill.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Drill.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Drill.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Drill.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Drill.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Drill.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Drill.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -954,7 +941,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/duckdb.html b/docs/sqlglot/dialects/duckdb.html index 4a00b32..16953f1 100644 --- a/docs/sqlglot/dialects/duckdb.html +++ b/docs/sqlglot/dialects/duckdb.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.duckdb 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#DuckDB">DuckDB</a> <ul class="memberlist"> <li> - <a class="function" href="#DuckDB.__init__">DuckDB</a> - </li> - <li> <a class="class" href="#DuckDB.Tokenizer">DuckDB.Tokenizer</a> <ul class="memberlist"> </ul> @@ -96,174 +93,165 @@ </span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a> <span class="n">no_tablesample_sql</span><span class="p">,</span> </span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a> <span class="n">rename_func</span><span class="p">,</span> </span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> <span class="n">timestrtotime_sql</span><span class="p">,</span> -</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="p">)</span> -</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">seq_get</span> -</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</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-21"><a href="#L-21"><span class="linenos"> 21</span></a> -</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> -</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a><span class="k">def</span> <span class="nf">_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><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"STRPTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> -</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> -</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="k">def</span> <span class="nf">_ts_or_ds_add</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-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="n">this</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">"this"</span><span class="p">)</span> -</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"'"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"DAY"</span> -</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CAST(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AS DATE) + </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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> -</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> -</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a><span class="k">def</span> <span class="nf">_ts_or_ds_to_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</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-35"><a href="#L-35"><span class="linenos"> 35</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">DuckDB</span><span class="o">.</span><span class="n">time_format</span><span class="p">,</span> <span class="n">DuckDB</span><span class="o">.</span><span class="n">date_format</span><span class="p">):</span> -</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> -</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span> -</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> -</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> -</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a><span class="k">def</span> <span class="nf">_date_add</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-41"><a href="#L-41"><span class="linenos"> 41</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">"this"</span><span class="p">)</span> -</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"'"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"DAY"</span> -</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> -</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> -</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a><span class="k">def</span> <span class="nf">_array_sort_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span> -</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DUCKDB ARRAY_SORT does not support a comparator"</span><span class="p">)</span> -</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY_SORT(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> -</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> -</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a><span class="k">def</span> <span class="nf">_sort_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</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">"this"</span><span class="p">)</span> -</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</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">"asc"</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-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY_REVERSE_SORT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY_SORT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> -</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><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a><span class="k">def</span> <span class="nf">_sort_array_reverse</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</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">asc</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-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">_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><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">e</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">': </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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <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><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="p">]</span> -</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span> -</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> -</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> -</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="k">def</span> <span class="nf">_datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</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">ARRAY</span><span class="p">:</span> -</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">[]"</span> -</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> -</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">def</span> <span class="nf">_regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</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="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">)))</span> -</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> -</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support arg(s) </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</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-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> -</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <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">"this"</span><span class="p">),</span> -</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <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">"expression"</span><span class="p">),</span> -</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <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">"group"</span><span class="p">),</span> -</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="p">)</span> -</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> +</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> <span class="n">str_to_time_sql</span><span class="p">,</span> +</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> <span class="n">timestrtotime_sql</span><span class="p">,</span> +</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="n">ts_or_ds_to_date_sql</span><span class="p">,</span> +</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a><span class="p">)</span> +</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">seq_get</span> +</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</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-23"><a href="#L-23"><span class="linenos"> 23</span></a> +</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> +</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a><span class="k">def</span> <span class="nf">_ts_or_ds_add</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-26"><a href="#L-26"><span class="linenos"> 26</span></a> <span class="n">this</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">"this"</span><span class="p">)</span> +</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"'"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"DAY"</span> +</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CAST(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AS DATE) + </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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> +</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> +</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a><span class="k">def</span> <span class="nf">_date_add</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-32"><a href="#L-32"><span class="linenos"> 32</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">"this"</span><span class="p">)</span> +</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">(</span><span class="s2">"'"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"DAY"</span> +</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</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">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">unit</span><span class="p">))</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> +</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> +</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a><span class="k">def</span> <span class="nf">_array_sort_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span> +</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DUCKDB ARRAY_SORT does not support a comparator"</span><span class="p">)</span> +</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY_SORT(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</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">_sort_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</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">"this"</span><span class="p">)</span> +</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</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">"asc"</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-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY_REVERSE_SORT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ARRAY_SORT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> +</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> +</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a><span class="k">def</span> <span class="nf">_sort_array_reverse</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</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">asc</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-52"><a href="#L-52"><span class="linenos"> 52</span></a> +</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> +</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</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><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">e</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">': </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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <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><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="p">]</span> +</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="si">{</span><span class="s1">', '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span> +</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> +</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> +</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a><span class="k">def</span> <span class="nf">_datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</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">ARRAY</span><span class="p">:</span> +</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">[]"</span> +</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> +</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> +</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a><span class="k">def</span> <span class="nf">_regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</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="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">)))</span> +</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span> +</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support arg(s) </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</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-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <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">"this"</span><span class="p">),</span> +</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <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">"expression"</span><span class="p">),</span> +</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <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">"group"</span><span class="p">),</span> +</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="p">)</span> +</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> +</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> +</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="k">class</span> <span class="nc">DuckDB</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</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-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</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-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="s2">"ATTACH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="p">}</span> </span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> -</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a><span class="k">class</span> <span class="nc">DuckDB</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</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-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</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-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="s2">"ATTACH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="p">}</span> -</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</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-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</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 class="c1"># type: ignore</span> -</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="s2">"APPROX_COUNT_DISTINCT"</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-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="s2">"ARRAY_LENGTH"</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-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="s2">"ARRAY_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="s2">"ARRAY_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> -</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="s2">"EPOCH"</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-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="s2">"EPOCH_MS"</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">UnixToTime</span><span class="p">(</span> -</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span> -</span><span id="L-107"><a href="#L-107"><span class="linenos">107</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-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="n">expression</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">1000</span><span class="p">),</span> -</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="p">)</span> -</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="p">),</span> -</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="s2">"LIST_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="s2">"LIST_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> -</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="s2">"LIST_VALUE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="s2">"REGEXP_MATCHES"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="s2">"STRFTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> -</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="s2">"STRPTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> -</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="s2">"STR_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="s2">"STRING_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="s2">"STRING_TO_ARRAY"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="s2">"STR_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="s2">"STRING_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="s2">"STRUCT_PACK"</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-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="s2">"TO_TIMESTAMP"</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">from_arg_list</span><span class="p">,</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</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><span id="L-127"><a href="#L-127"><span class="linenos">127</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-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> -</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-131"><a href="#L-131"><span class="linenos">131</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 class="c1"># type: ignore</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos">133</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</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">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">else</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_VALUE"</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">),</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos">136</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">"ARRAY_LENGTH"</span><span class="p">),</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_SUM"</span><span class="p">),</span> -</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">,</span> -</span><span id="L-141"><a href="#L-141"><span class="linenos">141</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-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="s2">"DATE_DIFF"</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">"unit"</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">"day"</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-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="p">),</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos">144</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-145"><a href="#L-145"><span class="linenos">145</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos">146</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRPTIME(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS DATE)"</span><span class="p">,</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> -</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos">152</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">"BOOL_OR"</span><span class="p">),</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos">153</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-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="n">no_properties_sql</span><span class="p">,</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">_regexp_extract_sql</span><span class="p">,</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT_REGEX"</span><span class="p">),</span> -</span><span id="L-158"><a href="#L-158"><span class="linenos">158</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-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT"</span><span class="p">),</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="L-162"><a href="#L-162"><span class="linenos">162</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">"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)"</span><span class="p">,</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos">163</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-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</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">"EPOCH(STRPTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))"</span><span class="p">,</span> -</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span> -</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> -</span><span id="L-168"><a href="#L-168"><span class="linenos">168</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-169"><a href="#L-169"><span class="linenos">169</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="sa">f</span><span class="s2">"EPOCH(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))"</span><span class="p">,</span> -</span><span id="L-170"><a href="#L-170"><span class="linenos">170</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="sa">f</span><span class="s2">"STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-171"><a href="#L-171"><span class="linenos">171</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">"EPOCH"</span><span class="p">),</span> -</span><span id="L-172"><a href="#L-172"><span class="linenos">172</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos">173</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</span><span class="p">,</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos">174</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-175"><a href="#L-175"><span class="linenos">175</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"STRFTIME(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">),</span> -</span><span id="L-177"><a href="#L-177"><span class="linenos">177</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)"</span><span class="p">,</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="p">}</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> -</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-181"><a href="#L-181"><span class="linenos">181</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 class="c1"># type: ignore</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="L-183"><a href="#L-183"><span class="linenos">183</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="p">}</span> +</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</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-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</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 class="c1"># type: ignore</span> +</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="s2">"APPROX_COUNT_DISTINCT"</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-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="s2">"ARRAY_LENGTH"</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-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="s2">"ARRAY_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="s2">"ARRAY_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> +</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="s2">"EPOCH"</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-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="s2">"EPOCH_MS"</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">UnixToTime</span><span class="p">(</span> +</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span> +</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</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-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="n">expression</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">1000</span><span class="p">),</span> +</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="p">)</span> +</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="p">),</span> +</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="s2">"LIST_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="s2">"LIST_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> +</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="s2">"LIST_VALUE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="s2">"REGEXP_MATCHES"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="s2">"STRFTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> +</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="s2">"STRPTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> +</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="s2">"STR_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="s2">"STRING_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="s2">"STRING_TO_ARRAY"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="s2">"STR_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="s2">"STRING_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="s2">"STRUCT_PACK"</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-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="s2">"TO_TIMESTAMP"</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">from_arg_list</span><span class="p">,</span> +</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="p">}</span> +</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">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-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> +</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> +</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos">122</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 class="c1"># type: ignore</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos">124</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="k">else</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_VALUE"</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">),</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos">127</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">"ARRAY_LENGTH"</span><span class="p">),</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span> +</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_SUM"</span><span class="p">),</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">,</span> +</span><span id="L-132"><a href="#L-132"><span class="linenos">132</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-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="s2">"DATE_DIFF"</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">"unit"</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">"day"</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-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="p">),</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos">135</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-136"><a href="#L-136"><span class="linenos">136</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos">137</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRPTIME(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS DATE)"</span><span class="p">,</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> +</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> +</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos">143</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">"BOOL_OR"</span><span class="p">),</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos">144</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-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="n">no_properties_sql</span><span class="p">,</span> +</span><span id="L-146"><a href="#L-146"><span class="linenos">146</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-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT_REGEX"</span><span class="p">),</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos">149</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-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT"</span><span class="p">),</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos">153</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">"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)"</span><span class="p">,</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos">154</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-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</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">"EPOCH(STRPTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))"</span><span class="p">,</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> +</span><span id="L-159"><a href="#L-159"><span class="linenos">159</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-160"><a href="#L-160"><span class="linenos">160</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="sa">f</span><span class="s2">"EPOCH(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))"</span><span class="p">,</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos">161</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="sa">f</span><span class="s2">"STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos">162</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">"EPOCH"</span><span class="p">),</span> +</span><span id="L-163"><a href="#L-163"><span class="linenos">163</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos">164</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</span><span class="p">,</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos">165</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 class="s2">"duckdb"</span><span class="p">),</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos">166</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"STRFTIME(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">),</span> +</span><span id="L-168"><a href="#L-168"><span class="linenos">168</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)"</span><span class="p">,</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="p">}</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> +</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos">172</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 class="c1"># type: ignore</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos">174</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="p">}</span> </span></pre></div> @@ -279,120 +267,108 @@ </div> <a class="headerlink" href="#DuckDB"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB-89"><a href="#DuckDB-89"><span class="linenos"> 89</span></a><span class="k">class</span> <span class="nc">DuckDB</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="DuckDB-90"><a href="#DuckDB-90"><span class="linenos"> 90</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="DuckDB-91"><a href="#DuckDB-91"><span class="linenos"> 91</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DuckDB-92"><a href="#DuckDB-92"><span class="linenos"> 92</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="DuckDB-93"><a href="#DuckDB-93"><span class="linenos"> 93</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="DuckDB-94"><a href="#DuckDB-94"><span class="linenos"> 94</span></a> <span class="s2">"ATTACH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="DuckDB-95"><a href="#DuckDB-95"><span class="linenos"> 95</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="DuckDB-96"><a href="#DuckDB-96"><span class="linenos"> 96</span></a> <span class="p">}</span> -</span><span id="DuckDB-97"><a href="#DuckDB-97"><span class="linenos"> 97</span></a> -</span><span id="DuckDB-98"><a href="#DuckDB-98"><span class="linenos"> 98</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="DuckDB-99"><a href="#DuckDB-99"><span class="linenos"> 99</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DuckDB-100"><a href="#DuckDB-100"><span class="linenos">100</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 class="c1"># type: ignore</span> -</span><span id="DuckDB-101"><a href="#DuckDB-101"><span class="linenos">101</span></a> <span class="s2">"APPROX_COUNT_DISTINCT"</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="DuckDB-102"><a href="#DuckDB-102"><span class="linenos">102</span></a> <span class="s2">"ARRAY_LENGTH"</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="DuckDB-103"><a href="#DuckDB-103"><span class="linenos">103</span></a> <span class="s2">"ARRAY_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-104"><a href="#DuckDB-104"><span class="linenos">104</span></a> <span class="s2">"ARRAY_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> -</span><span id="DuckDB-105"><a href="#DuckDB-105"><span class="linenos">105</span></a> <span class="s2">"EPOCH"</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="DuckDB-106"><a href="#DuckDB-106"><span class="linenos">106</span></a> <span class="s2">"EPOCH_MS"</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">UnixToTime</span><span class="p">(</span> -</span><span id="DuckDB-107"><a href="#DuckDB-107"><span class="linenos">107</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span> -</span><span id="DuckDB-108"><a href="#DuckDB-108"><span class="linenos">108</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="DuckDB-109"><a href="#DuckDB-109"><span class="linenos">109</span></a> <span class="n">expression</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">1000</span><span class="p">),</span> -</span><span id="DuckDB-110"><a href="#DuckDB-110"><span class="linenos">110</span></a> <span class="p">)</span> -</span><span id="DuckDB-111"><a href="#DuckDB-111"><span class="linenos">111</span></a> <span class="p">),</span> -</span><span id="DuckDB-112"><a href="#DuckDB-112"><span class="linenos">112</span></a> <span class="s2">"LIST_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-113"><a href="#DuckDB-113"><span class="linenos">113</span></a> <span class="s2">"LIST_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> -</span><span id="DuckDB-114"><a href="#DuckDB-114"><span class="linenos">114</span></a> <span class="s2">"LIST_VALUE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-115"><a href="#DuckDB-115"><span class="linenos">115</span></a> <span class="s2">"REGEXP_MATCHES"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-116"><a href="#DuckDB-116"><span class="linenos">116</span></a> <span class="s2">"STRFTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> -</span><span id="DuckDB-117"><a href="#DuckDB-117"><span class="linenos">117</span></a> <span class="s2">"STRPTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> -</span><span id="DuckDB-118"><a href="#DuckDB-118"><span class="linenos">118</span></a> <span class="s2">"STR_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-119"><a href="#DuckDB-119"><span class="linenos">119</span></a> <span class="s2">"STRING_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-120"><a href="#DuckDB-120"><span class="linenos">120</span></a> <span class="s2">"STRING_TO_ARRAY"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-121"><a href="#DuckDB-121"><span class="linenos">121</span></a> <span class="s2">"STR_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-122"><a href="#DuckDB-122"><span class="linenos">122</span></a> <span class="s2">"STRING_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-123"><a href="#DuckDB-123"><span class="linenos">123</span></a> <span class="s2">"STRUCT_PACK"</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="DuckDB-124"><a href="#DuckDB-124"><span class="linenos">124</span></a> <span class="s2">"TO_TIMESTAMP"</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">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-125"><a href="#DuckDB-125"><span class="linenos">125</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB-126"><a href="#DuckDB-126"><span class="linenos">126</span></a> <span class="p">}</span> -</span><span id="DuckDB-127"><a href="#DuckDB-127"><span class="linenos">127</span></a> -</span><span id="DuckDB-128"><a href="#DuckDB-128"><span class="linenos">128</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="DuckDB-129"><a href="#DuckDB-129"><span class="linenos">129</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> -</span><span id="DuckDB-130"><a href="#DuckDB-130"><span class="linenos">130</span></a> -</span><span id="DuckDB-131"><a href="#DuckDB-131"><span class="linenos">131</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DuckDB-132"><a href="#DuckDB-132"><span class="linenos">132</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 class="c1"># type: ignore</span> -</span><span id="DuckDB-133"><a href="#DuckDB-133"><span class="linenos">133</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span> -</span><span id="DuckDB-134"><a href="#DuckDB-134"><span class="linenos">134</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="DuckDB-135"><a href="#DuckDB-135"><span class="linenos">135</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> -</span><span id="DuckDB-136"><a href="#DuckDB-136"><span class="linenos">136</span></a> <span class="k">else</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_VALUE"</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">),</span> -</span><span id="DuckDB-137"><a href="#DuckDB-137"><span class="linenos">137</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">"ARRAY_LENGTH"</span><span class="p">),</span> -</span><span id="DuckDB-138"><a href="#DuckDB-138"><span class="linenos">138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span> -</span><span id="DuckDB-139"><a href="#DuckDB-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_SUM"</span><span class="p">),</span> -</span><span id="DuckDB-140"><a href="#DuckDB-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> -</span><span id="DuckDB-141"><a href="#DuckDB-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">,</span> -</span><span id="DuckDB-142"><a href="#DuckDB-142"><span class="linenos">142</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="DuckDB-143"><a href="#DuckDB-143"><span class="linenos">143</span></a> <span class="s2">"DATE_DIFF"</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">"unit"</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">"day"</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="DuckDB-144"><a href="#DuckDB-144"><span class="linenos">144</span></a> <span class="p">),</span> -</span><span id="DuckDB-145"><a href="#DuckDB-145"><span class="linenos">145</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="DuckDB-146"><a href="#DuckDB-146"><span class="linenos">146</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> -</span><span id="DuckDB-147"><a href="#DuckDB-147"><span class="linenos">147</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRPTIME(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS DATE)"</span><span class="p">,</span> -</span><span id="DuckDB-148"><a href="#DuckDB-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> -</span><span id="DuckDB-149"><a href="#DuckDB-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> -</span><span id="DuckDB-150"><a href="#DuckDB-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> -</span><span id="DuckDB-151"><a href="#DuckDB-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> -</span><span id="DuckDB-152"><a href="#DuckDB-152"><span class="linenos">152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> -</span><span id="DuckDB-153"><a href="#DuckDB-153"><span class="linenos">153</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">"BOOL_OR"</span><span class="p">),</span> -</span><span id="DuckDB-154"><a href="#DuckDB-154"><span class="linenos">154</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="DuckDB-155"><a href="#DuckDB-155"><span class="linenos">155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="n">no_properties_sql</span><span class="p">,</span> -</span><span id="DuckDB-156"><a href="#DuckDB-156"><span class="linenos">156</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="DuckDB-157"><a href="#DuckDB-157"><span class="linenos">157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> -</span><span id="DuckDB-158"><a href="#DuckDB-158"><span class="linenos">158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT_REGEX"</span><span class="p">),</span> -</span><span id="DuckDB-159"><a href="#DuckDB-159"><span class="linenos">159</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="DuckDB-160"><a href="#DuckDB-160"><span class="linenos">160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT"</span><span class="p">),</span> -</span><span id="DuckDB-161"><a href="#DuckDB-161"><span class="linenos">161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span> -</span><span id="DuckDB-162"><a href="#DuckDB-162"><span class="linenos">162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="DuckDB-163"><a href="#DuckDB-163"><span class="linenos">163</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">"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)"</span><span class="p">,</span> -</span><span id="DuckDB-164"><a href="#DuckDB-164"><span class="linenos">164</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="DuckDB-165"><a href="#DuckDB-165"><span class="linenos">165</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</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">"EPOCH(STRPTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))"</span><span class="p">,</span> -</span><span id="DuckDB-166"><a href="#DuckDB-166"><span class="linenos">166</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span> -</span><span id="DuckDB-167"><a href="#DuckDB-167"><span class="linenos">167</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span> -</span><span id="DuckDB-168"><a href="#DuckDB-168"><span class="linenos">168</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> -</span><span id="DuckDB-169"><a href="#DuckDB-169"><span class="linenos">169</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="DuckDB-170"><a href="#DuckDB-170"><span class="linenos">170</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="sa">f</span><span class="s2">"EPOCH(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))"</span><span class="p">,</span> -</span><span id="DuckDB-171"><a href="#DuckDB-171"><span class="linenos">171</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="sa">f</span><span class="s2">"STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="DuckDB-172"><a href="#DuckDB-172"><span class="linenos">172</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">"EPOCH"</span><span class="p">),</span> -</span><span id="DuckDB-173"><a href="#DuckDB-173"><span class="linenos">173</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> -</span><span id="DuckDB-174"><a href="#DuckDB-174"><span class="linenos">174</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</span><span class="p">,</span> -</span><span id="DuckDB-175"><a href="#DuckDB-175"><span class="linenos">175</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="DuckDB-176"><a href="#DuckDB-176"><span class="linenos">176</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"STRFTIME(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="DuckDB-177"><a href="#DuckDB-177"><span class="linenos">177</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">),</span> -</span><span id="DuckDB-178"><a href="#DuckDB-178"><span class="linenos">178</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)"</span><span class="p">,</span> -</span><span id="DuckDB-179"><a href="#DuckDB-179"><span class="linenos">179</span></a> <span class="p">}</span> -</span><span id="DuckDB-180"><a href="#DuckDB-180"><span class="linenos">180</span></a> -</span><span id="DuckDB-181"><a href="#DuckDB-181"><span class="linenos">181</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DuckDB-182"><a href="#DuckDB-182"><span class="linenos">182</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 class="c1"># type: ignore</span> -</span><span id="DuckDB-183"><a href="#DuckDB-183"><span class="linenos">183</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="DuckDB-184"><a href="#DuckDB-184"><span class="linenos">184</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="DuckDB-185"><a href="#DuckDB-185"><span class="linenos">185</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB-80"><a href="#DuckDB-80"><span class="linenos"> 80</span></a><span class="k">class</span> <span class="nc">DuckDB</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="DuckDB-81"><a href="#DuckDB-81"><span class="linenos"> 81</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="DuckDB-82"><a href="#DuckDB-82"><span class="linenos"> 82</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DuckDB-83"><a href="#DuckDB-83"><span class="linenos"> 83</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="DuckDB-84"><a href="#DuckDB-84"><span class="linenos"> 84</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="DuckDB-85"><a href="#DuckDB-85"><span class="linenos"> 85</span></a> <span class="s2">"ATTACH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="DuckDB-86"><a href="#DuckDB-86"><span class="linenos"> 86</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="DuckDB-87"><a href="#DuckDB-87"><span class="linenos"> 87</span></a> <span class="p">}</span> +</span><span id="DuckDB-88"><a href="#DuckDB-88"><span class="linenos"> 88</span></a> +</span><span id="DuckDB-89"><a href="#DuckDB-89"><span class="linenos"> 89</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="DuckDB-90"><a href="#DuckDB-90"><span class="linenos"> 90</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DuckDB-91"><a href="#DuckDB-91"><span class="linenos"> 91</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 class="c1"># type: ignore</span> +</span><span id="DuckDB-92"><a href="#DuckDB-92"><span class="linenos"> 92</span></a> <span class="s2">"APPROX_COUNT_DISTINCT"</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="DuckDB-93"><a href="#DuckDB-93"><span class="linenos"> 93</span></a> <span class="s2">"ARRAY_LENGTH"</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="DuckDB-94"><a href="#DuckDB-94"><span class="linenos"> 94</span></a> <span class="s2">"ARRAY_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-95"><a href="#DuckDB-95"><span class="linenos"> 95</span></a> <span class="s2">"ARRAY_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> +</span><span id="DuckDB-96"><a href="#DuckDB-96"><span class="linenos"> 96</span></a> <span class="s2">"EPOCH"</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="DuckDB-97"><a href="#DuckDB-97"><span class="linenos"> 97</span></a> <span class="s2">"EPOCH_MS"</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">UnixToTime</span><span class="p">(</span> +</span><span id="DuckDB-98"><a href="#DuckDB-98"><span class="linenos"> 98</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span> +</span><span id="DuckDB-99"><a href="#DuckDB-99"><span class="linenos"> 99</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="DuckDB-100"><a href="#DuckDB-100"><span class="linenos">100</span></a> <span class="n">expression</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">1000</span><span class="p">),</span> +</span><span id="DuckDB-101"><a href="#DuckDB-101"><span class="linenos">101</span></a> <span class="p">)</span> +</span><span id="DuckDB-102"><a href="#DuckDB-102"><span class="linenos">102</span></a> <span class="p">),</span> +</span><span id="DuckDB-103"><a href="#DuckDB-103"><span class="linenos">103</span></a> <span class="s2">"LIST_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-104"><a href="#DuckDB-104"><span class="linenos">104</span></a> <span class="s2">"LIST_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> +</span><span id="DuckDB-105"><a href="#DuckDB-105"><span class="linenos">105</span></a> <span class="s2">"LIST_VALUE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-106"><a href="#DuckDB-106"><span class="linenos">106</span></a> <span class="s2">"REGEXP_MATCHES"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-107"><a href="#DuckDB-107"><span class="linenos">107</span></a> <span class="s2">"STRFTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> +</span><span id="DuckDB-108"><a href="#DuckDB-108"><span class="linenos">108</span></a> <span class="s2">"STRPTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> +</span><span id="DuckDB-109"><a href="#DuckDB-109"><span class="linenos">109</span></a> <span class="s2">"STR_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-110"><a href="#DuckDB-110"><span class="linenos">110</span></a> <span class="s2">"STRING_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-111"><a href="#DuckDB-111"><span class="linenos">111</span></a> <span class="s2">"STRING_TO_ARRAY"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-112"><a href="#DuckDB-112"><span class="linenos">112</span></a> <span class="s2">"STR_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-113"><a href="#DuckDB-113"><span class="linenos">113</span></a> <span class="s2">"STRING_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-114"><a href="#DuckDB-114"><span class="linenos">114</span></a> <span class="s2">"STRUCT_PACK"</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="DuckDB-115"><a href="#DuckDB-115"><span class="linenos">115</span></a> <span class="s2">"TO_TIMESTAMP"</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">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-116"><a href="#DuckDB-116"><span class="linenos">116</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB-117"><a href="#DuckDB-117"><span class="linenos">117</span></a> <span class="p">}</span> +</span><span id="DuckDB-118"><a href="#DuckDB-118"><span class="linenos">118</span></a> +</span><span id="DuckDB-119"><a href="#DuckDB-119"><span class="linenos">119</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="DuckDB-120"><a href="#DuckDB-120"><span class="linenos">120</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> +</span><span id="DuckDB-121"><a href="#DuckDB-121"><span class="linenos">121</span></a> +</span><span id="DuckDB-122"><a href="#DuckDB-122"><span class="linenos">122</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DuckDB-123"><a href="#DuckDB-123"><span class="linenos">123</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 class="c1"># type: ignore</span> +</span><span id="DuckDB-124"><a href="#DuckDB-124"><span class="linenos">124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span> +</span><span id="DuckDB-125"><a href="#DuckDB-125"><span class="linenos">125</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="DuckDB-126"><a href="#DuckDB-126"><span class="linenos">126</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> +</span><span id="DuckDB-127"><a href="#DuckDB-127"><span class="linenos">127</span></a> <span class="k">else</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_VALUE"</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">),</span> +</span><span id="DuckDB-128"><a href="#DuckDB-128"><span class="linenos">128</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">"ARRAY_LENGTH"</span><span class="p">),</span> +</span><span id="DuckDB-129"><a href="#DuckDB-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span> +</span><span id="DuckDB-130"><a href="#DuckDB-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_SUM"</span><span class="p">),</span> +</span><span id="DuckDB-131"><a href="#DuckDB-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> +</span><span id="DuckDB-132"><a href="#DuckDB-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">,</span> +</span><span id="DuckDB-133"><a href="#DuckDB-133"><span class="linenos">133</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="DuckDB-134"><a href="#DuckDB-134"><span class="linenos">134</span></a> <span class="s2">"DATE_DIFF"</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">"unit"</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">"day"</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="DuckDB-135"><a href="#DuckDB-135"><span class="linenos">135</span></a> <span class="p">),</span> +</span><span id="DuckDB-136"><a href="#DuckDB-136"><span class="linenos">136</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="DuckDB-137"><a href="#DuckDB-137"><span class="linenos">137</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> +</span><span id="DuckDB-138"><a href="#DuckDB-138"><span class="linenos">138</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRPTIME(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS DATE)"</span><span class="p">,</span> +</span><span id="DuckDB-139"><a href="#DuckDB-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> +</span><span id="DuckDB-140"><a href="#DuckDB-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> +</span><span id="DuckDB-141"><a href="#DuckDB-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> +</span><span id="DuckDB-142"><a href="#DuckDB-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> +</span><span id="DuckDB-143"><a href="#DuckDB-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> +</span><span id="DuckDB-144"><a href="#DuckDB-144"><span class="linenos">144</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">"BOOL_OR"</span><span class="p">),</span> +</span><span id="DuckDB-145"><a href="#DuckDB-145"><span class="linenos">145</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="DuckDB-146"><a href="#DuckDB-146"><span class="linenos">146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="n">no_properties_sql</span><span class="p">,</span> +</span><span id="DuckDB-147"><a href="#DuckDB-147"><span class="linenos">147</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="DuckDB-148"><a href="#DuckDB-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> +</span><span id="DuckDB-149"><a href="#DuckDB-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT_REGEX"</span><span class="p">),</span> +</span><span id="DuckDB-150"><a href="#DuckDB-150"><span class="linenos">150</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="DuckDB-151"><a href="#DuckDB-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT"</span><span class="p">),</span> +</span><span id="DuckDB-152"><a href="#DuckDB-152"><span class="linenos">152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span> +</span><span id="DuckDB-153"><a href="#DuckDB-153"><span class="linenos">153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> +</span><span id="DuckDB-154"><a href="#DuckDB-154"><span class="linenos">154</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">"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)"</span><span class="p">,</span> +</span><span id="DuckDB-155"><a href="#DuckDB-155"><span class="linenos">155</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="DuckDB-156"><a href="#DuckDB-156"><span class="linenos">156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</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">"EPOCH(STRPTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))"</span><span class="p">,</span> +</span><span id="DuckDB-157"><a href="#DuckDB-157"><span class="linenos">157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span> +</span><span id="DuckDB-158"><a href="#DuckDB-158"><span class="linenos">158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span> +</span><span id="DuckDB-159"><a href="#DuckDB-159"><span class="linenos">159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> +</span><span id="DuckDB-160"><a href="#DuckDB-160"><span class="linenos">160</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="DuckDB-161"><a href="#DuckDB-161"><span class="linenos">161</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="sa">f</span><span class="s2">"EPOCH(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))"</span><span class="p">,</span> +</span><span id="DuckDB-162"><a href="#DuckDB-162"><span class="linenos">162</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="sa">f</span><span class="s2">"STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="DuckDB-163"><a href="#DuckDB-163"><span class="linenos">163</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">"EPOCH"</span><span class="p">),</span> +</span><span id="DuckDB-164"><a href="#DuckDB-164"><span class="linenos">164</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> +</span><span id="DuckDB-165"><a href="#DuckDB-165"><span class="linenos">165</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</span><span class="p">,</span> +</span><span id="DuckDB-166"><a href="#DuckDB-166"><span class="linenos">166</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 class="s2">"duckdb"</span><span class="p">),</span> +</span><span id="DuckDB-167"><a href="#DuckDB-167"><span class="linenos">167</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"STRFTIME(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="DuckDB-168"><a href="#DuckDB-168"><span class="linenos">168</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">),</span> +</span><span id="DuckDB-169"><a href="#DuckDB-169"><span class="linenos">169</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)"</span><span class="p">,</span> +</span><span id="DuckDB-170"><a href="#DuckDB-170"><span class="linenos">170</span></a> <span class="p">}</span> +</span><span id="DuckDB-171"><a href="#DuckDB-171"><span class="linenos">171</span></a> +</span><span id="DuckDB-172"><a href="#DuckDB-172"><span class="linenos">172</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DuckDB-173"><a href="#DuckDB-173"><span class="linenos">173</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 class="c1"># type: ignore</span> +</span><span id="DuckDB-174"><a href="#DuckDB-174"><span class="linenos">174</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="DuckDB-175"><a href="#DuckDB-175"><span class="linenos">175</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="DuckDB-176"><a href="#DuckDB-176"><span class="linenos">176</span></a> <span class="p">}</span> </span></pre></div> - <div id="DuckDB.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">DuckDB</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#DuckDB.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -421,13 +397,13 @@ </div> <a class="headerlink" href="#DuckDB.Tokenizer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Tokenizer-90"><a href="#DuckDB.Tokenizer-90"><span class="linenos">90</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="DuckDB.Tokenizer-91"><a href="#DuckDB.Tokenizer-91"><span class="linenos">91</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DuckDB.Tokenizer-92"><a href="#DuckDB.Tokenizer-92"><span class="linenos">92</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="DuckDB.Tokenizer-93"><a href="#DuckDB.Tokenizer-93"><span class="linenos">93</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="DuckDB.Tokenizer-94"><a href="#DuckDB.Tokenizer-94"><span class="linenos">94</span></a> <span class="s2">"ATTACH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="DuckDB.Tokenizer-95"><a href="#DuckDB.Tokenizer-95"><span class="linenos">95</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="DuckDB.Tokenizer-96"><a href="#DuckDB.Tokenizer-96"><span class="linenos">96</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Tokenizer-81"><a href="#DuckDB.Tokenizer-81"><span class="linenos">81</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="DuckDB.Tokenizer-82"><a href="#DuckDB.Tokenizer-82"><span class="linenos">82</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DuckDB.Tokenizer-83"><a href="#DuckDB.Tokenizer-83"><span class="linenos">83</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="DuckDB.Tokenizer-84"><a href="#DuckDB.Tokenizer-84"><span class="linenos">84</span></a> <span class="s2">":="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="DuckDB.Tokenizer-85"><a href="#DuckDB.Tokenizer-85"><span class="linenos">85</span></a> <span class="s2">"ATTACH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="DuckDB.Tokenizer-86"><a href="#DuckDB.Tokenizer-86"><span class="linenos">86</span></a> <span class="s2">"CHARACTER VARYING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="DuckDB.Tokenizer-87"><a href="#DuckDB.Tokenizer-87"><span class="linenos">87</span></a> <span class="p">}</span> </span></pre></div> @@ -437,8 +413,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="DuckDB.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="DuckDB.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="DuckDB.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="DuckDB.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -456,35 +431,35 @@ </div> <a class="headerlink" href="#DuckDB.Parser"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Parser-98"><a href="#DuckDB.Parser-98"><span class="linenos"> 98</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="DuckDB.Parser-99"><a href="#DuckDB.Parser-99"><span class="linenos"> 99</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DuckDB.Parser-100"><a href="#DuckDB.Parser-100"><span class="linenos">100</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 class="c1"># type: ignore</span> -</span><span id="DuckDB.Parser-101"><a href="#DuckDB.Parser-101"><span class="linenos">101</span></a> <span class="s2">"APPROX_COUNT_DISTINCT"</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="DuckDB.Parser-102"><a href="#DuckDB.Parser-102"><span class="linenos">102</span></a> <span class="s2">"ARRAY_LENGTH"</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="DuckDB.Parser-103"><a href="#DuckDB.Parser-103"><span class="linenos">103</span></a> <span class="s2">"ARRAY_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-104"><a href="#DuckDB.Parser-104"><span class="linenos">104</span></a> <span class="s2">"ARRAY_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> -</span><span id="DuckDB.Parser-105"><a href="#DuckDB.Parser-105"><span class="linenos">105</span></a> <span class="s2">"EPOCH"</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="DuckDB.Parser-106"><a href="#DuckDB.Parser-106"><span class="linenos">106</span></a> <span class="s2">"EPOCH_MS"</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">UnixToTime</span><span class="p">(</span> -</span><span id="DuckDB.Parser-107"><a href="#DuckDB.Parser-107"><span class="linenos">107</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span> -</span><span id="DuckDB.Parser-108"><a href="#DuckDB.Parser-108"><span class="linenos">108</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="DuckDB.Parser-109"><a href="#DuckDB.Parser-109"><span class="linenos">109</span></a> <span class="n">expression</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">1000</span><span class="p">),</span> -</span><span id="DuckDB.Parser-110"><a href="#DuckDB.Parser-110"><span class="linenos">110</span></a> <span class="p">)</span> -</span><span id="DuckDB.Parser-111"><a href="#DuckDB.Parser-111"><span class="linenos">111</span></a> <span class="p">),</span> -</span><span id="DuckDB.Parser-112"><a href="#DuckDB.Parser-112"><span class="linenos">112</span></a> <span class="s2">"LIST_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-113"><a href="#DuckDB.Parser-113"><span class="linenos">113</span></a> <span class="s2">"LIST_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> -</span><span id="DuckDB.Parser-114"><a href="#DuckDB.Parser-114"><span class="linenos">114</span></a> <span class="s2">"LIST_VALUE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-115"><a href="#DuckDB.Parser-115"><span class="linenos">115</span></a> <span class="s2">"REGEXP_MATCHES"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-116"><a href="#DuckDB.Parser-116"><span class="linenos">116</span></a> <span class="s2">"STRFTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> -</span><span id="DuckDB.Parser-117"><a href="#DuckDB.Parser-117"><span class="linenos">117</span></a> <span class="s2">"STRPTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> -</span><span id="DuckDB.Parser-118"><a href="#DuckDB.Parser-118"><span class="linenos">118</span></a> <span class="s2">"STR_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-119"><a href="#DuckDB.Parser-119"><span class="linenos">119</span></a> <span class="s2">"STRING_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-120"><a href="#DuckDB.Parser-120"><span class="linenos">120</span></a> <span class="s2">"STRING_TO_ARRAY"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-121"><a href="#DuckDB.Parser-121"><span class="linenos">121</span></a> <span class="s2">"STR_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-122"><a href="#DuckDB.Parser-122"><span class="linenos">122</span></a> <span class="s2">"STRING_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-123"><a href="#DuckDB.Parser-123"><span class="linenos">123</span></a> <span class="s2">"STRUCT_PACK"</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="DuckDB.Parser-124"><a href="#DuckDB.Parser-124"><span class="linenos">124</span></a> <span class="s2">"TO_TIMESTAMP"</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">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-125"><a href="#DuckDB.Parser-125"><span class="linenos">125</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="DuckDB.Parser-126"><a href="#DuckDB.Parser-126"><span class="linenos">126</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Parser-89"><a href="#DuckDB.Parser-89"><span class="linenos"> 89</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="DuckDB.Parser-90"><a href="#DuckDB.Parser-90"><span class="linenos"> 90</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DuckDB.Parser-91"><a href="#DuckDB.Parser-91"><span class="linenos"> 91</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 class="c1"># type: ignore</span> +</span><span id="DuckDB.Parser-92"><a href="#DuckDB.Parser-92"><span class="linenos"> 92</span></a> <span class="s2">"APPROX_COUNT_DISTINCT"</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="DuckDB.Parser-93"><a href="#DuckDB.Parser-93"><span class="linenos"> 93</span></a> <span class="s2">"ARRAY_LENGTH"</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="DuckDB.Parser-94"><a href="#DuckDB.Parser-94"><span class="linenos"> 94</span></a> <span class="s2">"ARRAY_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-95"><a href="#DuckDB.Parser-95"><span class="linenos"> 95</span></a> <span class="s2">"ARRAY_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> +</span><span id="DuckDB.Parser-96"><a href="#DuckDB.Parser-96"><span class="linenos"> 96</span></a> <span class="s2">"EPOCH"</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="DuckDB.Parser-97"><a href="#DuckDB.Parser-97"><span class="linenos"> 97</span></a> <span class="s2">"EPOCH_MS"</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">UnixToTime</span><span class="p">(</span> +</span><span id="DuckDB.Parser-98"><a href="#DuckDB.Parser-98"><span class="linenos"> 98</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span> +</span><span id="DuckDB.Parser-99"><a href="#DuckDB.Parser-99"><span class="linenos"> 99</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="DuckDB.Parser-100"><a href="#DuckDB.Parser-100"><span class="linenos">100</span></a> <span class="n">expression</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">1000</span><span class="p">),</span> +</span><span id="DuckDB.Parser-101"><a href="#DuckDB.Parser-101"><span class="linenos">101</span></a> <span class="p">)</span> +</span><span id="DuckDB.Parser-102"><a href="#DuckDB.Parser-102"><span class="linenos">102</span></a> <span class="p">),</span> +</span><span id="DuckDB.Parser-103"><a href="#DuckDB.Parser-103"><span class="linenos">103</span></a> <span class="s2">"LIST_SORT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-104"><a href="#DuckDB.Parser-104"><span class="linenos">104</span></a> <span class="s2">"LIST_REVERSE_SORT"</span><span class="p">:</span> <span class="n">_sort_array_reverse</span><span class="p">,</span> +</span><span id="DuckDB.Parser-105"><a href="#DuckDB.Parser-105"><span class="linenos">105</span></a> <span class="s2">"LIST_VALUE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-106"><a href="#DuckDB.Parser-106"><span class="linenos">106</span></a> <span class="s2">"REGEXP_MATCHES"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-107"><a href="#DuckDB.Parser-107"><span class="linenos">107</span></a> <span class="s2">"STRFTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> +</span><span id="DuckDB.Parser-108"><a href="#DuckDB.Parser-108"><span class="linenos">108</span></a> <span class="s2">"STRPTIME"</span><span class="p">:</span> <span class="n">format_time_lambda</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">"duckdb"</span><span class="p">),</span> +</span><span id="DuckDB.Parser-109"><a href="#DuckDB.Parser-109"><span class="linenos">109</span></a> <span class="s2">"STR_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-110"><a href="#DuckDB.Parser-110"><span class="linenos">110</span></a> <span class="s2">"STRING_SPLIT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-111"><a href="#DuckDB.Parser-111"><span class="linenos">111</span></a> <span class="s2">"STRING_TO_ARRAY"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-112"><a href="#DuckDB.Parser-112"><span class="linenos">112</span></a> <span class="s2">"STR_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-113"><a href="#DuckDB.Parser-113"><span class="linenos">113</span></a> <span class="s2">"STRING_SPLIT_REGEX"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-114"><a href="#DuckDB.Parser-114"><span class="linenos">114</span></a> <span class="s2">"STRUCT_PACK"</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="DuckDB.Parser-115"><a href="#DuckDB.Parser-115"><span class="linenos">115</span></a> <span class="s2">"TO_TIMESTAMP"</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">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-116"><a href="#DuckDB.Parser-116"><span class="linenos">116</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="DuckDB.Parser-117"><a href="#DuckDB.Parser-117"><span class="linenos">117</span></a> <span class="p">}</span> </span></pre></div> @@ -541,64 +516,64 @@ Default: "nulls_are_small"</li> </div> <a class="headerlink" href="#DuckDB.Generator"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator-128"><a href="#DuckDB.Generator-128"><span class="linenos">128</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="DuckDB.Generator-129"><a href="#DuckDB.Generator-129"><span class="linenos">129</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> -</span><span id="DuckDB.Generator-130"><a href="#DuckDB.Generator-130"><span class="linenos">130</span></a> -</span><span id="DuckDB.Generator-131"><a href="#DuckDB.Generator-131"><span class="linenos">131</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DuckDB.Generator-132"><a href="#DuckDB.Generator-132"><span class="linenos">132</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 class="c1"># type: ignore</span> -</span><span id="DuckDB.Generator-133"><a href="#DuckDB.Generator-133"><span class="linenos">133</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-134"><a href="#DuckDB.Generator-134"><span class="linenos">134</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="DuckDB.Generator-135"><a href="#DuckDB.Generator-135"><span class="linenos">135</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> -</span><span id="DuckDB.Generator-136"><a href="#DuckDB.Generator-136"><span class="linenos">136</span></a> <span class="k">else</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_VALUE"</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">),</span> -</span><span id="DuckDB.Generator-137"><a href="#DuckDB.Generator-137"><span class="linenos">137</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">"ARRAY_LENGTH"</span><span class="p">),</span> -</span><span id="DuckDB.Generator-138"><a href="#DuckDB.Generator-138"><span class="linenos">138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-139"><a href="#DuckDB.Generator-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_SUM"</span><span class="p">),</span> -</span><span id="DuckDB.Generator-140"><a href="#DuckDB.Generator-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-141"><a href="#DuckDB.Generator-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">,</span> -</span><span id="DuckDB.Generator-142"><a href="#DuckDB.Generator-142"><span class="linenos">142</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="DuckDB.Generator-143"><a href="#DuckDB.Generator-143"><span class="linenos">143</span></a> <span class="s2">"DATE_DIFF"</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">"unit"</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">"day"</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="DuckDB.Generator-144"><a href="#DuckDB.Generator-144"><span class="linenos">144</span></a> <span class="p">),</span> -</span><span id="DuckDB.Generator-145"><a href="#DuckDB.Generator-145"><span class="linenos">145</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="DuckDB.Generator-146"><a href="#DuckDB.Generator-146"><span class="linenos">146</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-147"><a href="#DuckDB.Generator-147"><span class="linenos">147</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRPTIME(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS DATE)"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-148"><a href="#DuckDB.Generator-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> -</span><span id="DuckDB.Generator-149"><a href="#DuckDB.Generator-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-150"><a href="#DuckDB.Generator-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-151"><a href="#DuckDB.Generator-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-152"><a href="#DuckDB.Generator-152"><span class="linenos">152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-153"><a href="#DuckDB.Generator-153"><span class="linenos">153</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">"BOOL_OR"</span><span class="p">),</span> -</span><span id="DuckDB.Generator-154"><a href="#DuckDB.Generator-154"><span class="linenos">154</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="DuckDB.Generator-155"><a href="#DuckDB.Generator-155"><span class="linenos">155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="n">no_properties_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-156"><a href="#DuckDB.Generator-156"><span class="linenos">156</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="DuckDB.Generator-157"><a href="#DuckDB.Generator-157"><span class="linenos">157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> -</span><span id="DuckDB.Generator-158"><a href="#DuckDB.Generator-158"><span class="linenos">158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT_REGEX"</span><span class="p">),</span> -</span><span id="DuckDB.Generator-159"><a href="#DuckDB.Generator-159"><span class="linenos">159</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="DuckDB.Generator-160"><a href="#DuckDB.Generator-160"><span class="linenos">160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT"</span><span class="p">),</span> -</span><span id="DuckDB.Generator-161"><a href="#DuckDB.Generator-161"><span class="linenos">161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-162"><a href="#DuckDB.Generator-162"><span class="linenos">162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-163"><a href="#DuckDB.Generator-163"><span class="linenos">163</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">"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)"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-164"><a href="#DuckDB.Generator-164"><span class="linenos">164</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="DuckDB.Generator-165"><a href="#DuckDB.Generator-165"><span class="linenos">165</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</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">"EPOCH(STRPTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-166"><a href="#DuckDB.Generator-166"><span class="linenos">166</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-167"><a href="#DuckDB.Generator-167"><span class="linenos">167</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span> -</span><span id="DuckDB.Generator-168"><a href="#DuckDB.Generator-168"><span class="linenos">168</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-169"><a href="#DuckDB.Generator-169"><span class="linenos">169</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="DuckDB.Generator-170"><a href="#DuckDB.Generator-170"><span class="linenos">170</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="sa">f</span><span class="s2">"EPOCH(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-171"><a href="#DuckDB.Generator-171"><span class="linenos">171</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="sa">f</span><span class="s2">"STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-172"><a href="#DuckDB.Generator-172"><span class="linenos">172</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">"EPOCH"</span><span class="p">),</span> -</span><span id="DuckDB.Generator-173"><a href="#DuckDB.Generator-173"><span class="linenos">173</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-174"><a href="#DuckDB.Generator-174"><span class="linenos">174</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</span><span class="p">,</span> -</span><span id="DuckDB.Generator-175"><a href="#DuckDB.Generator-175"><span class="linenos">175</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="DuckDB.Generator-176"><a href="#DuckDB.Generator-176"><span class="linenos">176</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"STRFTIME(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-177"><a href="#DuckDB.Generator-177"><span class="linenos">177</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">),</span> -</span><span id="DuckDB.Generator-178"><a href="#DuckDB.Generator-178"><span class="linenos">178</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-179"><a href="#DuckDB.Generator-179"><span class="linenos">179</span></a> <span class="p">}</span> -</span><span id="DuckDB.Generator-180"><a href="#DuckDB.Generator-180"><span class="linenos">180</span></a> -</span><span id="DuckDB.Generator-181"><a href="#DuckDB.Generator-181"><span class="linenos">181</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DuckDB.Generator-182"><a href="#DuckDB.Generator-182"><span class="linenos">182</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 class="c1"># type: ignore</span> -</span><span id="DuckDB.Generator-183"><a href="#DuckDB.Generator-183"><span class="linenos">183</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-184"><a href="#DuckDB.Generator-184"><span class="linenos">184</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="DuckDB.Generator-185"><a href="#DuckDB.Generator-185"><span class="linenos">185</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator-119"><a href="#DuckDB.Generator-119"><span class="linenos">119</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="DuckDB.Generator-120"><a href="#DuckDB.Generator-120"><span class="linenos">120</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> +</span><span id="DuckDB.Generator-121"><a href="#DuckDB.Generator-121"><span class="linenos">121</span></a> +</span><span id="DuckDB.Generator-122"><a href="#DuckDB.Generator-122"><span class="linenos">122</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DuckDB.Generator-123"><a href="#DuckDB.Generator-123"><span class="linenos">123</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 class="c1"># type: ignore</span> +</span><span id="DuckDB.Generator-124"><a href="#DuckDB.Generator-124"><span class="linenos">124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-125"><a href="#DuckDB.Generator-125"><span class="linenos">125</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"ARRAY"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="DuckDB.Generator-126"><a href="#DuckDB.Generator-126"><span class="linenos">126</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> +</span><span id="DuckDB.Generator-127"><a href="#DuckDB.Generator-127"><span class="linenos">127</span></a> <span class="k">else</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_VALUE"</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">),</span> +</span><span id="DuckDB.Generator-128"><a href="#DuckDB.Generator-128"><span class="linenos">128</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">"ARRAY_LENGTH"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-129"><a href="#DuckDB.Generator-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-130"><a href="#DuckDB.Generator-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"LIST_SUM"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-131"><a href="#DuckDB.Generator-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-132"><a href="#DuckDB.Generator-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add</span><span class="p">,</span> +</span><span id="DuckDB.Generator-133"><a href="#DuckDB.Generator-133"><span class="linenos">133</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="DuckDB.Generator-134"><a href="#DuckDB.Generator-134"><span class="linenos">134</span></a> <span class="s2">"DATE_DIFF"</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">"unit"</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">"day"</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="DuckDB.Generator-135"><a href="#DuckDB.Generator-135"><span class="linenos">135</span></a> <span class="p">),</span> +</span><span id="DuckDB.Generator-136"><a href="#DuckDB.Generator-136"><span class="linenos">136</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="DuckDB.Generator-137"><a href="#DuckDB.Generator-137"><span class="linenos">137</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS INT)"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-138"><a href="#DuckDB.Generator-138"><span class="linenos">138</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(STRPTIME(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">dateint_format</span><span class="si">}</span><span class="s2">) AS DATE)"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-139"><a href="#DuckDB.Generator-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"UNNEST"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-140"><a href="#DuckDB.Generator-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-141"><a href="#DuckDB.Generator-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-142"><a href="#DuckDB.Generator-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-143"><a href="#DuckDB.Generator-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_scalar_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-144"><a href="#DuckDB.Generator-144"><span class="linenos">144</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">"BOOL_OR"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-145"><a href="#DuckDB.Generator-145"><span class="linenos">145</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="DuckDB.Generator-146"><a href="#DuckDB.Generator-146"><span class="linenos">146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="n">no_properties_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-147"><a href="#DuckDB.Generator-147"><span class="linenos">147</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="DuckDB.Generator-148"><a href="#DuckDB.Generator-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"REGEXP_MATCHES"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-149"><a href="#DuckDB.Generator-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT_REGEX"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-150"><a href="#DuckDB.Generator-150"><span class="linenos">150</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="DuckDB.Generator-151"><a href="#DuckDB.Generator-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"STR_SPLIT"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-152"><a href="#DuckDB.Generator-152"><span class="linenos">152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-153"><a href="#DuckDB.Generator-153"><span class="linenos">153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-154"><a href="#DuckDB.Generator-154"><span class="linenos">154</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">"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)"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-155"><a href="#DuckDB.Generator-155"><span class="linenos">155</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="DuckDB.Generator-156"><a href="#DuckDB.Generator-156"><span class="linenos">156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</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">"EPOCH(STRPTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-157"><a href="#DuckDB.Generator-157"><span class="linenos">157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-158"><a href="#DuckDB.Generator-158"><span class="linenos">158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span> +</span><span id="DuckDB.Generator-159"><a href="#DuckDB.Generator-159"><span class="linenos">159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-160"><a href="#DuckDB.Generator-160"><span class="linenos">160</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="DuckDB.Generator-161"><a href="#DuckDB.Generator-161"><span class="linenos">161</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="sa">f</span><span class="s2">"EPOCH(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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-162"><a href="#DuckDB.Generator-162"><span class="linenos">162</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="sa">f</span><span class="s2">"STRFTIME(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-163"><a href="#DuckDB.Generator-163"><span class="linenos">163</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">"EPOCH"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-164"><a href="#DuckDB.Generator-164"><span class="linenos">164</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), '-', ''), 1, 8) AS INT)"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-165"><a href="#DuckDB.Generator-165"><span class="linenos">165</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</span><span class="p">,</span> +</span><span id="DuckDB.Generator-166"><a href="#DuckDB.Generator-166"><span class="linenos">166</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 class="s2">"duckdb"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-167"><a href="#DuckDB.Generator-167"><span class="linenos">167</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"STRFTIME(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-168"><a href="#DuckDB.Generator-168"><span class="linenos">168</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"TO_TIMESTAMP"</span><span class="p">),</span> +</span><span id="DuckDB.Generator-169"><a href="#DuckDB.Generator-169"><span class="linenos">169</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"CAST(TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-170"><a href="#DuckDB.Generator-170"><span class="linenos">170</span></a> <span class="p">}</span> +</span><span id="DuckDB.Generator-171"><a href="#DuckDB.Generator-171"><span class="linenos">171</span></a> +</span><span id="DuckDB.Generator-172"><a href="#DuckDB.Generator-172"><span class="linenos">172</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DuckDB.Generator-173"><a href="#DuckDB.Generator-173"><span class="linenos">173</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 class="c1"># type: ignore</span> +</span><span id="DuckDB.Generator-174"><a href="#DuckDB.Generator-174"><span class="linenos">174</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-175"><a href="#DuckDB.Generator-175"><span class="linenos">175</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="DuckDB.Generator-176"><a href="#DuckDB.Generator-176"><span class="linenos">176</span></a> <span class="p">}</span> </span></pre></div> @@ -670,6 +645,7 @@ Default: True</li> <dd id="DuckDB.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="DuckDB.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="DuckDB.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="DuckDB.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="DuckDB.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="DuckDB.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="DuckDB.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -712,6 +688,7 @@ Default: True</li> <dd id="DuckDB.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="DuckDB.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="DuckDB.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="DuckDB.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="DuckDB.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="DuckDB.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="DuckDB.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -982,7 +959,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/hive.html b/docs/sqlglot/dialects/hive.html index e9a5530..143c696 100644 --- a/docs/sqlglot/dialects/hive.html +++ b/docs/sqlglot/dialects/hive.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.hive 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Hive">Hive</a> <ul class="memberlist"> <li> - <a class="function" href="#Hive.__init__">Hive</a> - </li> - <li> <a class="class" href="#Hive.Tokenizer">Hive.Tokenizer</a> <ul class="memberlist"> </ul> @@ -669,18 +666,6 @@ - <div id="Hive.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Hive</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Hive.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -746,8 +731,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Hive.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Hive.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Hive.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Hive.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -1087,6 +1071,7 @@ Default: True</li> <dd id="Hive.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Hive.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Hive.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Hive.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Hive.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Hive.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Hive.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -1127,6 +1112,7 @@ Default: True</li> <dd id="Hive.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Hive.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Hive.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Hive.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Hive.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Hive.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Hive.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -1397,7 +1383,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/mysql.html b/docs/sqlglot/dialects/mysql.html index ee9e9ad..84be7a3 100644 --- a/docs/sqlglot/dialects/mysql.html +++ b/docs/sqlglot/dialects/mysql.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.mysql 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#MySQL">MySQL</a> <ul class="memberlist"> <li> - <a class="function" href="#MySQL.__init__">MySQL</a> - </li> - <li> <a class="class" href="#MySQL.Tokenizer">MySQL.Tokenizer</a> <ul class="memberlist"> </ul> @@ -553,72 +550,77 @@ </span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a> <span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">pop</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">MEDIUMBLOB</span><span class="p">)</span> </span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">pop</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">LONGBLOB</span><span class="p">)</span> </span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a> -</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a> <span class="k">def</span> <span class="nf">show_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="n">full</span> <span class="o">=</span> <span class="s2">" FULL"</span> <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">"full"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-466"><a href="#L-466"><span class="linenos">466</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 class="c1"># type: ignore</span> +</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="p">}</span> </span><span id="L-469"><a href="#L-469"><span class="linenos">469</span></a> -</span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> <span class="n">target</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">"target"</span><span class="p">)</span> -</span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">target</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">"COLUMNS"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">}:</span> -</span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"GRANTS"</span><span class="p">:</span> -</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FOR</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a> -</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <span class="n">db</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">)</span> -</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a> -</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="n">like</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIKE"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"like"</span><span class="p">)</span> -</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a> <span class="n">where</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">"where"</span><span class="p">)</span> +</span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> <span class="k">def</span> <span class="nf">show_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a> <span class="n">full</span> <span class="o">=</span> <span class="s2">" FULL"</span> <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">"full"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a> +</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a> <span class="n">target</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">"target"</span><span class="p">)</span> +</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">target</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">"COLUMNS"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">}:</span> +</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"GRANTS"</span><span class="p">:</span> +</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FOR</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a> -</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a> <span class="n">types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"types"</span><span class="p">)</span> -</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a> <span class="n">types</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">types</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">types</span> <span class="k">else</span> <span class="n">types</span> -</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR QUERY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"query"</span><span class="p">)</span> -</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> -</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"PROFILE"</span><span class="p">:</span> -</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"OFFSET"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">)</span> -</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIMIT"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">)</span> -</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_oldstyle_limit_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> -</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="n">log</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">)</span> -</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> -</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a> <span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR CHANNEL"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">)</span> +</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a> <span class="n">db</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">)</span> +</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a> +</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a> <span class="n">like</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIKE"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"like"</span><span class="p">)</span> +</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> <span class="n">where</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">"where"</span><span class="p">)</span> +</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a> +</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a> <span class="n">types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"types"</span><span class="p">)</span> +</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a> <span class="n">types</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">types</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">types</span> <span class="k">else</span> <span class="n">types</span> +</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR QUERY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"query"</span><span class="p">)</span> +</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a> +</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"PROFILE"</span><span class="p">:</span> +</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"OFFSET"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">)</span> +</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIMIT"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">)</span> +</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_oldstyle_limit_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a> -</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"ENGINE"</span><span class="p">:</span> -</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">" MUTEX"</span> <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">"mutex"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" STATUS"</span> -</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> <span class="n">log</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">)</span> +</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a> +</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a> <span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR CHANNEL"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">)</span> </span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a> -</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SHOW</span><span class="si">{</span><span class="n">full</span><span class="si">}{</span><span class="n">global_</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">types</span><span class="si">}{</span><span class="n">db</span><span class="si">}{</span><span class="n">query</span><span class="si">}{</span><span class="n">log</span><span class="si">}{</span><span class="n">position</span><span class="si">}{</span><span class="n">channel</span><span class="si">}{</span><span class="n">mutex_or_status</span><span class="si">}{</span><span class="n">like</span><span class="si">}{</span><span class="n">where</span><span class="si">}{</span><span class="n">offset</span><span class="si">}{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a> -</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a> <span class="k">def</span> <span class="nf">_prefixed_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span> -</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">)</span> -</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">sql</span><span class="p">:</span> -</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a> -</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a> <span class="k">def</span> <span class="nf">_oldstyle_limit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a> <span class="n">limit</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">"limit"</span><span class="p">)</span> -</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> -</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a> <span class="k">if</span> <span class="n">limit</span><span class="p">:</span> -</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a> <span class="n">limit_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="n">limit</span> -</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" LIMIT </span><span class="si">{</span><span class="n">limit_offset</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a> -</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a> <span class="k">def</span> <span class="nf">setitem_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-522"><a href="#L-522"><span class="linenos">522</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">"this"</span><span class="p">)</span> -</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> -</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">"GLOBAL "</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">global_</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a> -</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a> <span class="k">def</span> <span class="nf">set_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"ENGINE"</span><span class="p">:</span> +</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">" MUTEX"</span> <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">"mutex"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" STATUS"</span> +</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> +</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SHOW</span><span class="si">{</span><span class="n">full</span><span class="si">}{</span><span class="n">global_</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">types</span><span class="si">}{</span><span class="n">db</span><span class="si">}{</span><span class="n">query</span><span class="si">}{</span><span class="n">log</span><span class="si">}{</span><span class="n">position</span><span class="si">}{</span><span class="n">channel</span><span class="si">}{</span><span class="n">mutex_or_status</span><span class="si">}{</span><span class="n">like</span><span class="si">}{</span><span class="n">where</span><span class="si">}{</span><span class="n">offset</span><span class="si">}{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a> +</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a> <span class="k">def</span> <span class="nf">_prefixed_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span> +</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">)</span> +</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">sql</span><span class="p">:</span> +</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a> +</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a> <span class="k">def</span> <span class="nf">_oldstyle_limit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a> <span class="n">limit</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">"limit"</span><span class="p">)</span> +</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> +</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a> <span class="k">if</span> <span class="n">limit</span><span class="p">:</span> +</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="n">limit_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="n">limit</span> +</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" LIMIT </span><span class="si">{</span><span class="n">limit_offset</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> +</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="k">def</span> <span class="nf">setitem_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-527"><a href="#L-527"><span class="linenos">527</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">"this"</span><span class="p">)</span> +</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> +</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">"GLOBAL "</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">global_</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a> +</span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a> <span class="k">def</span> <span class="nf">set_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1000,89 +1002,82 @@ </span><span id="MySQL-463"><a href="#MySQL-463"><span class="linenos">463</span></a> <span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">pop</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">MEDIUMBLOB</span><span class="p">)</span> </span><span id="MySQL-464"><a href="#MySQL-464"><span class="linenos">464</span></a> <span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">pop</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">LONGBLOB</span><span class="p">)</span> </span><span id="MySQL-465"><a href="#MySQL-465"><span class="linenos">465</span></a> -</span><span id="MySQL-466"><a href="#MySQL-466"><span class="linenos">466</span></a> <span class="k">def</span> <span class="nf">show_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL-467"><a href="#MySQL-467"><span class="linenos">467</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL-468"><a href="#MySQL-468"><span class="linenos">468</span></a> <span class="n">full</span> <span class="o">=</span> <span class="s2">" FULL"</span> <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">"full"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL-469"><a href="#MySQL-469"><span class="linenos">469</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL-466"><a href="#MySQL-466"><span class="linenos">466</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="MySQL-467"><a href="#MySQL-467"><span class="linenos">467</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 class="c1"># type: ignore</span> +</span><span id="MySQL-468"><a href="#MySQL-468"><span class="linenos">468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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="MySQL-469"><a href="#MySQL-469"><span class="linenos">469</span></a> <span class="p">}</span> </span><span id="MySQL-470"><a href="#MySQL-470"><span class="linenos">470</span></a> -</span><span id="MySQL-471"><a href="#MySQL-471"><span class="linenos">471</span></a> <span class="n">target</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">"target"</span><span class="p">)</span> -</span><span id="MySQL-472"><a href="#MySQL-472"><span class="linenos">472</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">target</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL-473"><a href="#MySQL-473"><span class="linenos">473</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">"COLUMNS"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">}:</span> -</span><span id="MySQL-474"><a href="#MySQL-474"><span class="linenos">474</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL-475"><a href="#MySQL-475"><span class="linenos">475</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"GRANTS"</span><span class="p">:</span> -</span><span id="MySQL-476"><a href="#MySQL-476"><span class="linenos">476</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FOR</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL-477"><a href="#MySQL-477"><span class="linenos">477</span></a> -</span><span id="MySQL-478"><a href="#MySQL-478"><span class="linenos">478</span></a> <span class="n">db</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">)</span> -</span><span id="MySQL-479"><a href="#MySQL-479"><span class="linenos">479</span></a> -</span><span id="MySQL-480"><a href="#MySQL-480"><span class="linenos">480</span></a> <span class="n">like</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIKE"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"like"</span><span class="p">)</span> -</span><span id="MySQL-481"><a href="#MySQL-481"><span class="linenos">481</span></a> <span class="n">where</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">"where"</span><span class="p">)</span> +</span><span id="MySQL-471"><a href="#MySQL-471"><span class="linenos">471</span></a> <span class="k">def</span> <span class="nf">show_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL-472"><a href="#MySQL-472"><span class="linenos">472</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL-473"><a href="#MySQL-473"><span class="linenos">473</span></a> <span class="n">full</span> <span class="o">=</span> <span class="s2">" FULL"</span> <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">"full"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL-474"><a href="#MySQL-474"><span class="linenos">474</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL-475"><a href="#MySQL-475"><span class="linenos">475</span></a> +</span><span id="MySQL-476"><a href="#MySQL-476"><span class="linenos">476</span></a> <span class="n">target</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">"target"</span><span class="p">)</span> +</span><span id="MySQL-477"><a href="#MySQL-477"><span class="linenos">477</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">target</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL-478"><a href="#MySQL-478"><span class="linenos">478</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">"COLUMNS"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">}:</span> +</span><span id="MySQL-479"><a href="#MySQL-479"><span class="linenos">479</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL-480"><a href="#MySQL-480"><span class="linenos">480</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"GRANTS"</span><span class="p">:</span> +</span><span id="MySQL-481"><a href="#MySQL-481"><span class="linenos">481</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FOR</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> </span><span id="MySQL-482"><a href="#MySQL-482"><span class="linenos">482</span></a> -</span><span id="MySQL-483"><a href="#MySQL-483"><span class="linenos">483</span></a> <span class="n">types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"types"</span><span class="p">)</span> -</span><span id="MySQL-484"><a href="#MySQL-484"><span class="linenos">484</span></a> <span class="n">types</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">types</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">types</span> <span class="k">else</span> <span class="n">types</span> -</span><span id="MySQL-485"><a href="#MySQL-485"><span class="linenos">485</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR QUERY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"query"</span><span class="p">)</span> -</span><span id="MySQL-486"><a href="#MySQL-486"><span class="linenos">486</span></a> -</span><span id="MySQL-487"><a href="#MySQL-487"><span class="linenos">487</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"PROFILE"</span><span class="p">:</span> -</span><span id="MySQL-488"><a href="#MySQL-488"><span class="linenos">488</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"OFFSET"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">)</span> -</span><span id="MySQL-489"><a href="#MySQL-489"><span class="linenos">489</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIMIT"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">)</span> -</span><span id="MySQL-490"><a href="#MySQL-490"><span class="linenos">490</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="MySQL-491"><a href="#MySQL-491"><span class="linenos">491</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="MySQL-492"><a href="#MySQL-492"><span class="linenos">492</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_oldstyle_limit_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="MySQL-493"><a href="#MySQL-493"><span class="linenos">493</span></a> -</span><span id="MySQL-494"><a href="#MySQL-494"><span class="linenos">494</span></a> <span class="n">log</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">)</span> -</span><span id="MySQL-495"><a href="#MySQL-495"><span class="linenos">495</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="MySQL-496"><a href="#MySQL-496"><span class="linenos">496</span></a> -</span><span id="MySQL-497"><a href="#MySQL-497"><span class="linenos">497</span></a> <span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR CHANNEL"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">)</span> +</span><span id="MySQL-483"><a href="#MySQL-483"><span class="linenos">483</span></a> <span class="n">db</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">)</span> +</span><span id="MySQL-484"><a href="#MySQL-484"><span class="linenos">484</span></a> +</span><span id="MySQL-485"><a href="#MySQL-485"><span class="linenos">485</span></a> <span class="n">like</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIKE"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"like"</span><span class="p">)</span> +</span><span id="MySQL-486"><a href="#MySQL-486"><span class="linenos">486</span></a> <span class="n">where</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">"where"</span><span class="p">)</span> +</span><span id="MySQL-487"><a href="#MySQL-487"><span class="linenos">487</span></a> +</span><span id="MySQL-488"><a href="#MySQL-488"><span class="linenos">488</span></a> <span class="n">types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"types"</span><span class="p">)</span> +</span><span id="MySQL-489"><a href="#MySQL-489"><span class="linenos">489</span></a> <span class="n">types</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">types</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">types</span> <span class="k">else</span> <span class="n">types</span> +</span><span id="MySQL-490"><a href="#MySQL-490"><span class="linenos">490</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR QUERY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"query"</span><span class="p">)</span> +</span><span id="MySQL-491"><a href="#MySQL-491"><span class="linenos">491</span></a> +</span><span id="MySQL-492"><a href="#MySQL-492"><span class="linenos">492</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"PROFILE"</span><span class="p">:</span> +</span><span id="MySQL-493"><a href="#MySQL-493"><span class="linenos">493</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"OFFSET"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">)</span> +</span><span id="MySQL-494"><a href="#MySQL-494"><span class="linenos">494</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIMIT"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">)</span> +</span><span id="MySQL-495"><a href="#MySQL-495"><span class="linenos">495</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="MySQL-496"><a href="#MySQL-496"><span class="linenos">496</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="MySQL-497"><a href="#MySQL-497"><span class="linenos">497</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_oldstyle_limit_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span><span id="MySQL-498"><a href="#MySQL-498"><span class="linenos">498</span></a> -</span><span id="MySQL-499"><a href="#MySQL-499"><span class="linenos">499</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"ENGINE"</span><span class="p">:</span> -</span><span id="MySQL-500"><a href="#MySQL-500"><span class="linenos">500</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">" MUTEX"</span> <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">"mutex"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" STATUS"</span> -</span><span id="MySQL-501"><a href="#MySQL-501"><span class="linenos">501</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="MySQL-502"><a href="#MySQL-502"><span class="linenos">502</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="MySQL-499"><a href="#MySQL-499"><span class="linenos">499</span></a> <span class="n">log</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">)</span> +</span><span id="MySQL-500"><a href="#MySQL-500"><span class="linenos">500</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="MySQL-501"><a href="#MySQL-501"><span class="linenos">501</span></a> +</span><span id="MySQL-502"><a href="#MySQL-502"><span class="linenos">502</span></a> <span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR CHANNEL"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">)</span> </span><span id="MySQL-503"><a href="#MySQL-503"><span class="linenos">503</span></a> -</span><span id="MySQL-504"><a href="#MySQL-504"><span class="linenos">504</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SHOW</span><span class="si">{</span><span class="n">full</span><span class="si">}{</span><span class="n">global_</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">types</span><span class="si">}{</span><span class="n">db</span><span class="si">}{</span><span class="n">query</span><span class="si">}{</span><span class="n">log</span><span class="si">}{</span><span class="n">position</span><span class="si">}{</span><span class="n">channel</span><span class="si">}{</span><span class="n">mutex_or_status</span><span class="si">}{</span><span class="n">like</span><span class="si">}{</span><span class="n">where</span><span class="si">}{</span><span class="n">offset</span><span class="si">}{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL-505"><a href="#MySQL-505"><span class="linenos">505</span></a> -</span><span id="MySQL-506"><a href="#MySQL-506"><span class="linenos">506</span></a> <span class="k">def</span> <span class="nf">_prefixed_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span> -</span><span id="MySQL-507"><a href="#MySQL-507"><span class="linenos">507</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">)</span> -</span><span id="MySQL-508"><a href="#MySQL-508"><span class="linenos">508</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">sql</span><span class="p">:</span> -</span><span id="MySQL-509"><a href="#MySQL-509"><span class="linenos">509</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="MySQL-510"><a href="#MySQL-510"><span class="linenos">510</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL-511"><a href="#MySQL-511"><span class="linenos">511</span></a> -</span><span id="MySQL-512"><a href="#MySQL-512"><span class="linenos">512</span></a> <span class="k">def</span> <span class="nf">_oldstyle_limit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL-513"><a href="#MySQL-513"><span class="linenos">513</span></a> <span class="n">limit</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">"limit"</span><span class="p">)</span> -</span><span id="MySQL-514"><a href="#MySQL-514"><span class="linenos">514</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> -</span><span id="MySQL-515"><a href="#MySQL-515"><span class="linenos">515</span></a> <span class="k">if</span> <span class="n">limit</span><span class="p">:</span> -</span><span id="MySQL-516"><a href="#MySQL-516"><span class="linenos">516</span></a> <span class="n">limit_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="n">limit</span> -</span><span id="MySQL-517"><a href="#MySQL-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" LIMIT </span><span class="si">{</span><span class="n">limit_offset</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL-518"><a href="#MySQL-518"><span class="linenos">518</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="MySQL-519"><a href="#MySQL-519"><span class="linenos">519</span></a> -</span><span id="MySQL-520"><a href="#MySQL-520"><span class="linenos">520</span></a> <span class="k">def</span> <span class="nf">setitem_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL-521"><a href="#MySQL-521"><span class="linenos">521</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="MySQL-522"><a href="#MySQL-522"><span class="linenos">522</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL-523"><a href="#MySQL-523"><span class="linenos">523</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">"this"</span><span class="p">)</span> -</span><span id="MySQL-524"><a href="#MySQL-524"><span class="linenos">524</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="MySQL-525"><a href="#MySQL-525"><span class="linenos">525</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> -</span><span id="MySQL-526"><a href="#MySQL-526"><span class="linenos">526</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL-527"><a href="#MySQL-527"><span class="linenos">527</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">"GLOBAL "</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL-528"><a href="#MySQL-528"><span class="linenos">528</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">global_</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL-529"><a href="#MySQL-529"><span class="linenos">529</span></a> -</span><span id="MySQL-530"><a href="#MySQL-530"><span class="linenos">530</span></a> <span class="k">def</span> <span class="nf">set_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL-531"><a href="#MySQL-531"><span class="linenos">531</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL-504"><a href="#MySQL-504"><span class="linenos">504</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"ENGINE"</span><span class="p">:</span> +</span><span id="MySQL-505"><a href="#MySQL-505"><span class="linenos">505</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">" MUTEX"</span> <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">"mutex"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" STATUS"</span> +</span><span id="MySQL-506"><a href="#MySQL-506"><span class="linenos">506</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="MySQL-507"><a href="#MySQL-507"><span class="linenos">507</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="MySQL-508"><a href="#MySQL-508"><span class="linenos">508</span></a> +</span><span id="MySQL-509"><a href="#MySQL-509"><span class="linenos">509</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SHOW</span><span class="si">{</span><span class="n">full</span><span class="si">}{</span><span class="n">global_</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">types</span><span class="si">}{</span><span class="n">db</span><span class="si">}{</span><span class="n">query</span><span class="si">}{</span><span class="n">log</span><span class="si">}{</span><span class="n">position</span><span class="si">}{</span><span class="n">channel</span><span class="si">}{</span><span class="n">mutex_or_status</span><span class="si">}{</span><span class="n">like</span><span class="si">}{</span><span class="n">where</span><span class="si">}{</span><span class="n">offset</span><span class="si">}{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL-510"><a href="#MySQL-510"><span class="linenos">510</span></a> +</span><span id="MySQL-511"><a href="#MySQL-511"><span class="linenos">511</span></a> <span class="k">def</span> <span class="nf">_prefixed_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span> +</span><span id="MySQL-512"><a href="#MySQL-512"><span class="linenos">512</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">)</span> +</span><span id="MySQL-513"><a href="#MySQL-513"><span class="linenos">513</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">sql</span><span class="p">:</span> +</span><span id="MySQL-514"><a href="#MySQL-514"><span class="linenos">514</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="MySQL-515"><a href="#MySQL-515"><span class="linenos">515</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL-516"><a href="#MySQL-516"><span class="linenos">516</span></a> +</span><span id="MySQL-517"><a href="#MySQL-517"><span class="linenos">517</span></a> <span class="k">def</span> <span class="nf">_oldstyle_limit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL-518"><a href="#MySQL-518"><span class="linenos">518</span></a> <span class="n">limit</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">"limit"</span><span class="p">)</span> +</span><span id="MySQL-519"><a href="#MySQL-519"><span class="linenos">519</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> +</span><span id="MySQL-520"><a href="#MySQL-520"><span class="linenos">520</span></a> <span class="k">if</span> <span class="n">limit</span><span class="p">:</span> +</span><span id="MySQL-521"><a href="#MySQL-521"><span class="linenos">521</span></a> <span class="n">limit_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="n">limit</span> +</span><span id="MySQL-522"><a href="#MySQL-522"><span class="linenos">522</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" LIMIT </span><span class="si">{</span><span class="n">limit_offset</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL-523"><a href="#MySQL-523"><span class="linenos">523</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="MySQL-524"><a href="#MySQL-524"><span class="linenos">524</span></a> +</span><span id="MySQL-525"><a href="#MySQL-525"><span class="linenos">525</span></a> <span class="k">def</span> <span class="nf">setitem_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL-526"><a href="#MySQL-526"><span class="linenos">526</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="MySQL-527"><a href="#MySQL-527"><span class="linenos">527</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL-528"><a href="#MySQL-528"><span class="linenos">528</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">"this"</span><span class="p">)</span> +</span><span id="MySQL-529"><a href="#MySQL-529"><span class="linenos">529</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="MySQL-530"><a href="#MySQL-530"><span class="linenos">530</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> +</span><span id="MySQL-531"><a href="#MySQL-531"><span class="linenos">531</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL-532"><a href="#MySQL-532"><span class="linenos">532</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">"GLOBAL "</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL-533"><a href="#MySQL-533"><span class="linenos">533</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">global_</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL-534"><a href="#MySQL-534"><span class="linenos">534</span></a> +</span><span id="MySQL-535"><a href="#MySQL-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">set_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL-536"><a href="#MySQL-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> - <div id="MySQL.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">MySQL</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#MySQL.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -1183,8 +1178,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="MySQL.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="MySQL.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="MySQL.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="MySQL.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -1541,72 +1535,77 @@ Default: "nulls_are_small"</li> </span><span id="MySQL.Generator-463"><a href="#MySQL.Generator-463"><span class="linenos">463</span></a> <span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">pop</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">MEDIUMBLOB</span><span class="p">)</span> </span><span id="MySQL.Generator-464"><a href="#MySQL.Generator-464"><span class="linenos">464</span></a> <span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">pop</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">LONGBLOB</span><span class="p">)</span> </span><span id="MySQL.Generator-465"><a href="#MySQL.Generator-465"><span class="linenos">465</span></a> -</span><span id="MySQL.Generator-466"><a href="#MySQL.Generator-466"><span class="linenos">466</span></a> <span class="k">def</span> <span class="nf">show_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL.Generator-467"><a href="#MySQL.Generator-467"><span class="linenos">467</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator-468"><a href="#MySQL.Generator-468"><span class="linenos">468</span></a> <span class="n">full</span> <span class="o">=</span> <span class="s2">" FULL"</span> <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">"full"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator-469"><a href="#MySQL.Generator-469"><span class="linenos">469</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-466"><a href="#MySQL.Generator-466"><span class="linenos">466</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="MySQL.Generator-467"><a href="#MySQL.Generator-467"><span class="linenos">467</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 class="c1"># type: ignore</span> +</span><span id="MySQL.Generator-468"><a href="#MySQL.Generator-468"><span class="linenos">468</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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="MySQL.Generator-469"><a href="#MySQL.Generator-469"><span class="linenos">469</span></a> <span class="p">}</span> </span><span id="MySQL.Generator-470"><a href="#MySQL.Generator-470"><span class="linenos">470</span></a> -</span><span id="MySQL.Generator-471"><a href="#MySQL.Generator-471"><span class="linenos">471</span></a> <span class="n">target</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">"target"</span><span class="p">)</span> -</span><span id="MySQL.Generator-472"><a href="#MySQL.Generator-472"><span class="linenos">472</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">target</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator-473"><a href="#MySQL.Generator-473"><span class="linenos">473</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">"COLUMNS"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">}:</span> -</span><span id="MySQL.Generator-474"><a href="#MySQL.Generator-474"><span class="linenos">474</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator-475"><a href="#MySQL.Generator-475"><span class="linenos">475</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"GRANTS"</span><span class="p">:</span> -</span><span id="MySQL.Generator-476"><a href="#MySQL.Generator-476"><span class="linenos">476</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FOR</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator-477"><a href="#MySQL.Generator-477"><span class="linenos">477</span></a> -</span><span id="MySQL.Generator-478"><a href="#MySQL.Generator-478"><span class="linenos">478</span></a> <span class="n">db</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">)</span> -</span><span id="MySQL.Generator-479"><a href="#MySQL.Generator-479"><span class="linenos">479</span></a> -</span><span id="MySQL.Generator-480"><a href="#MySQL.Generator-480"><span class="linenos">480</span></a> <span class="n">like</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIKE"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"like"</span><span class="p">)</span> -</span><span id="MySQL.Generator-481"><a href="#MySQL.Generator-481"><span class="linenos">481</span></a> <span class="n">where</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">"where"</span><span class="p">)</span> +</span><span id="MySQL.Generator-471"><a href="#MySQL.Generator-471"><span class="linenos">471</span></a> <span class="k">def</span> <span class="nf">show_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL.Generator-472"><a href="#MySQL.Generator-472"><span class="linenos">472</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator-473"><a href="#MySQL.Generator-473"><span class="linenos">473</span></a> <span class="n">full</span> <span class="o">=</span> <span class="s2">" FULL"</span> <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">"full"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-474"><a href="#MySQL.Generator-474"><span class="linenos">474</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-475"><a href="#MySQL.Generator-475"><span class="linenos">475</span></a> +</span><span id="MySQL.Generator-476"><a href="#MySQL.Generator-476"><span class="linenos">476</span></a> <span class="n">target</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">"target"</span><span class="p">)</span> +</span><span id="MySQL.Generator-477"><a href="#MySQL.Generator-477"><span class="linenos">477</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">target</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-478"><a href="#MySQL.Generator-478"><span class="linenos">478</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">"COLUMNS"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">}:</span> +</span><span id="MySQL.Generator-479"><a href="#MySQL.Generator-479"><span class="linenos">479</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator-480"><a href="#MySQL.Generator-480"><span class="linenos">480</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"GRANTS"</span><span class="p">:</span> +</span><span id="MySQL.Generator-481"><a href="#MySQL.Generator-481"><span class="linenos">481</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FOR</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> </span><span id="MySQL.Generator-482"><a href="#MySQL.Generator-482"><span class="linenos">482</span></a> -</span><span id="MySQL.Generator-483"><a href="#MySQL.Generator-483"><span class="linenos">483</span></a> <span class="n">types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"types"</span><span class="p">)</span> -</span><span id="MySQL.Generator-484"><a href="#MySQL.Generator-484"><span class="linenos">484</span></a> <span class="n">types</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">types</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">types</span> <span class="k">else</span> <span class="n">types</span> -</span><span id="MySQL.Generator-485"><a href="#MySQL.Generator-485"><span class="linenos">485</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR QUERY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"query"</span><span class="p">)</span> -</span><span id="MySQL.Generator-486"><a href="#MySQL.Generator-486"><span class="linenos">486</span></a> -</span><span id="MySQL.Generator-487"><a href="#MySQL.Generator-487"><span class="linenos">487</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"PROFILE"</span><span class="p">:</span> -</span><span id="MySQL.Generator-488"><a href="#MySQL.Generator-488"><span class="linenos">488</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"OFFSET"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">)</span> -</span><span id="MySQL.Generator-489"><a href="#MySQL.Generator-489"><span class="linenos">489</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIMIT"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">)</span> -</span><span id="MySQL.Generator-490"><a href="#MySQL.Generator-490"><span class="linenos">490</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="MySQL.Generator-491"><a href="#MySQL.Generator-491"><span class="linenos">491</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="MySQL.Generator-492"><a href="#MySQL.Generator-492"><span class="linenos">492</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_oldstyle_limit_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="MySQL.Generator-493"><a href="#MySQL.Generator-493"><span class="linenos">493</span></a> -</span><span id="MySQL.Generator-494"><a href="#MySQL.Generator-494"><span class="linenos">494</span></a> <span class="n">log</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">)</span> -</span><span id="MySQL.Generator-495"><a href="#MySQL.Generator-495"><span class="linenos">495</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="MySQL.Generator-496"><a href="#MySQL.Generator-496"><span class="linenos">496</span></a> -</span><span id="MySQL.Generator-497"><a href="#MySQL.Generator-497"><span class="linenos">497</span></a> <span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR CHANNEL"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">)</span> +</span><span id="MySQL.Generator-483"><a href="#MySQL.Generator-483"><span class="linenos">483</span></a> <span class="n">db</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">)</span> +</span><span id="MySQL.Generator-484"><a href="#MySQL.Generator-484"><span class="linenos">484</span></a> +</span><span id="MySQL.Generator-485"><a href="#MySQL.Generator-485"><span class="linenos">485</span></a> <span class="n">like</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIKE"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"like"</span><span class="p">)</span> +</span><span id="MySQL.Generator-486"><a href="#MySQL.Generator-486"><span class="linenos">486</span></a> <span class="n">where</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">"where"</span><span class="p">)</span> +</span><span id="MySQL.Generator-487"><a href="#MySQL.Generator-487"><span class="linenos">487</span></a> +</span><span id="MySQL.Generator-488"><a href="#MySQL.Generator-488"><span class="linenos">488</span></a> <span class="n">types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"types"</span><span class="p">)</span> +</span><span id="MySQL.Generator-489"><a href="#MySQL.Generator-489"><span class="linenos">489</span></a> <span class="n">types</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">types</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">types</span> <span class="k">else</span> <span class="n">types</span> +</span><span id="MySQL.Generator-490"><a href="#MySQL.Generator-490"><span class="linenos">490</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR QUERY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"query"</span><span class="p">)</span> +</span><span id="MySQL.Generator-491"><a href="#MySQL.Generator-491"><span class="linenos">491</span></a> +</span><span id="MySQL.Generator-492"><a href="#MySQL.Generator-492"><span class="linenos">492</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"PROFILE"</span><span class="p">:</span> +</span><span id="MySQL.Generator-493"><a href="#MySQL.Generator-493"><span class="linenos">493</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"OFFSET"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">)</span> +</span><span id="MySQL.Generator-494"><a href="#MySQL.Generator-494"><span class="linenos">494</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIMIT"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">)</span> +</span><span id="MySQL.Generator-495"><a href="#MySQL.Generator-495"><span class="linenos">495</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="MySQL.Generator-496"><a href="#MySQL.Generator-496"><span class="linenos">496</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-497"><a href="#MySQL.Generator-497"><span class="linenos">497</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_oldstyle_limit_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span><span id="MySQL.Generator-498"><a href="#MySQL.Generator-498"><span class="linenos">498</span></a> -</span><span id="MySQL.Generator-499"><a href="#MySQL.Generator-499"><span class="linenos">499</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"ENGINE"</span><span class="p">:</span> -</span><span id="MySQL.Generator-500"><a href="#MySQL.Generator-500"><span class="linenos">500</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">" MUTEX"</span> <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">"mutex"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" STATUS"</span> -</span><span id="MySQL.Generator-501"><a href="#MySQL.Generator-501"><span class="linenos">501</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="MySQL.Generator-502"><a href="#MySQL.Generator-502"><span class="linenos">502</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-499"><a href="#MySQL.Generator-499"><span class="linenos">499</span></a> <span class="n">log</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">)</span> +</span><span id="MySQL.Generator-500"><a href="#MySQL.Generator-500"><span class="linenos">500</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="MySQL.Generator-501"><a href="#MySQL.Generator-501"><span class="linenos">501</span></a> +</span><span id="MySQL.Generator-502"><a href="#MySQL.Generator-502"><span class="linenos">502</span></a> <span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR CHANNEL"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">)</span> </span><span id="MySQL.Generator-503"><a href="#MySQL.Generator-503"><span class="linenos">503</span></a> -</span><span id="MySQL.Generator-504"><a href="#MySQL.Generator-504"><span class="linenos">504</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SHOW</span><span class="si">{</span><span class="n">full</span><span class="si">}{</span><span class="n">global_</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">types</span><span class="si">}{</span><span class="n">db</span><span class="si">}{</span><span class="n">query</span><span class="si">}{</span><span class="n">log</span><span class="si">}{</span><span class="n">position</span><span class="si">}{</span><span class="n">channel</span><span class="si">}{</span><span class="n">mutex_or_status</span><span class="si">}{</span><span class="n">like</span><span class="si">}{</span><span class="n">where</span><span class="si">}{</span><span class="n">offset</span><span class="si">}{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator-505"><a href="#MySQL.Generator-505"><span class="linenos">505</span></a> -</span><span id="MySQL.Generator-506"><a href="#MySQL.Generator-506"><span class="linenos">506</span></a> <span class="k">def</span> <span class="nf">_prefixed_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span> -</span><span id="MySQL.Generator-507"><a href="#MySQL.Generator-507"><span class="linenos">507</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">)</span> -</span><span id="MySQL.Generator-508"><a href="#MySQL.Generator-508"><span class="linenos">508</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">sql</span><span class="p">:</span> -</span><span id="MySQL.Generator-509"><a href="#MySQL.Generator-509"><span class="linenos">509</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="MySQL.Generator-510"><a href="#MySQL.Generator-510"><span class="linenos">510</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator-511"><a href="#MySQL.Generator-511"><span class="linenos">511</span></a> -</span><span id="MySQL.Generator-512"><a href="#MySQL.Generator-512"><span class="linenos">512</span></a> <span class="k">def</span> <span class="nf">_oldstyle_limit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL.Generator-513"><a href="#MySQL.Generator-513"><span class="linenos">513</span></a> <span class="n">limit</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">"limit"</span><span class="p">)</span> -</span><span id="MySQL.Generator-514"><a href="#MySQL.Generator-514"><span class="linenos">514</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> -</span><span id="MySQL.Generator-515"><a href="#MySQL.Generator-515"><span class="linenos">515</span></a> <span class="k">if</span> <span class="n">limit</span><span class="p">:</span> -</span><span id="MySQL.Generator-516"><a href="#MySQL.Generator-516"><span class="linenos">516</span></a> <span class="n">limit_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="n">limit</span> -</span><span id="MySQL.Generator-517"><a href="#MySQL.Generator-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" LIMIT </span><span class="si">{</span><span class="n">limit_offset</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator-518"><a href="#MySQL.Generator-518"><span class="linenos">518</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="MySQL.Generator-519"><a href="#MySQL.Generator-519"><span class="linenos">519</span></a> -</span><span id="MySQL.Generator-520"><a href="#MySQL.Generator-520"><span class="linenos">520</span></a> <span class="k">def</span> <span class="nf">setitem_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL.Generator-521"><a href="#MySQL.Generator-521"><span class="linenos">521</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="MySQL.Generator-522"><a href="#MySQL.Generator-522"><span class="linenos">522</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator-523"><a href="#MySQL.Generator-523"><span class="linenos">523</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">"this"</span><span class="p">)</span> -</span><span id="MySQL.Generator-524"><a href="#MySQL.Generator-524"><span class="linenos">524</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="MySQL.Generator-525"><a href="#MySQL.Generator-525"><span class="linenos">525</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> -</span><span id="MySQL.Generator-526"><a href="#MySQL.Generator-526"><span class="linenos">526</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator-527"><a href="#MySQL.Generator-527"><span class="linenos">527</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">"GLOBAL "</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator-528"><a href="#MySQL.Generator-528"><span class="linenos">528</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">global_</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator-529"><a href="#MySQL.Generator-529"><span class="linenos">529</span></a> -</span><span id="MySQL.Generator-530"><a href="#MySQL.Generator-530"><span class="linenos">530</span></a> <span class="k">def</span> <span class="nf">set_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL.Generator-531"><a href="#MySQL.Generator-531"><span class="linenos">531</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator-504"><a href="#MySQL.Generator-504"><span class="linenos">504</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"ENGINE"</span><span class="p">:</span> +</span><span id="MySQL.Generator-505"><a href="#MySQL.Generator-505"><span class="linenos">505</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">" MUTEX"</span> <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">"mutex"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" STATUS"</span> +</span><span id="MySQL.Generator-506"><a href="#MySQL.Generator-506"><span class="linenos">506</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="MySQL.Generator-507"><a href="#MySQL.Generator-507"><span class="linenos">507</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-508"><a href="#MySQL.Generator-508"><span class="linenos">508</span></a> +</span><span id="MySQL.Generator-509"><a href="#MySQL.Generator-509"><span class="linenos">509</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SHOW</span><span class="si">{</span><span class="n">full</span><span class="si">}{</span><span class="n">global_</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">types</span><span class="si">}{</span><span class="n">db</span><span class="si">}{</span><span class="n">query</span><span class="si">}{</span><span class="n">log</span><span class="si">}{</span><span class="n">position</span><span class="si">}{</span><span class="n">channel</span><span class="si">}{</span><span class="n">mutex_or_status</span><span class="si">}{</span><span class="n">like</span><span class="si">}{</span><span class="n">where</span><span class="si">}{</span><span class="n">offset</span><span class="si">}{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator-510"><a href="#MySQL.Generator-510"><span class="linenos">510</span></a> +</span><span id="MySQL.Generator-511"><a href="#MySQL.Generator-511"><span class="linenos">511</span></a> <span class="k">def</span> <span class="nf">_prefixed_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">):</span> +</span><span id="MySQL.Generator-512"><a href="#MySQL.Generator-512"><span class="linenos">512</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">arg</span><span class="p">)</span> +</span><span id="MySQL.Generator-513"><a href="#MySQL.Generator-513"><span class="linenos">513</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">sql</span><span class="p">:</span> +</span><span id="MySQL.Generator-514"><a href="#MySQL.Generator-514"><span class="linenos">514</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-515"><a href="#MySQL.Generator-515"><span class="linenos">515</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator-516"><a href="#MySQL.Generator-516"><span class="linenos">516</span></a> +</span><span id="MySQL.Generator-517"><a href="#MySQL.Generator-517"><span class="linenos">517</span></a> <span class="k">def</span> <span class="nf">_oldstyle_limit_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL.Generator-518"><a href="#MySQL.Generator-518"><span class="linenos">518</span></a> <span class="n">limit</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">"limit"</span><span class="p">)</span> +</span><span id="MySQL.Generator-519"><a href="#MySQL.Generator-519"><span class="linenos">519</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> +</span><span id="MySQL.Generator-520"><a href="#MySQL.Generator-520"><span class="linenos">520</span></a> <span class="k">if</span> <span class="n">limit</span><span class="p">:</span> +</span><span id="MySQL.Generator-521"><a href="#MySQL.Generator-521"><span class="linenos">521</span></a> <span class="n">limit_offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">offset</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="n">limit</span> +</span><span id="MySQL.Generator-522"><a href="#MySQL.Generator-522"><span class="linenos">522</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">" LIMIT </span><span class="si">{</span><span class="n">limit_offset</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator-523"><a href="#MySQL.Generator-523"><span class="linenos">523</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-524"><a href="#MySQL.Generator-524"><span class="linenos">524</span></a> +</span><span id="MySQL.Generator-525"><a href="#MySQL.Generator-525"><span class="linenos">525</span></a> <span class="k">def</span> <span class="nf">setitem_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL.Generator-526"><a href="#MySQL.Generator-526"><span class="linenos">526</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="MySQL.Generator-527"><a href="#MySQL.Generator-527"><span class="linenos">527</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-528"><a href="#MySQL.Generator-528"><span class="linenos">528</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">"this"</span><span class="p">)</span> +</span><span id="MySQL.Generator-529"><a href="#MySQL.Generator-529"><span class="linenos">529</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="MySQL.Generator-530"><a href="#MySQL.Generator-530"><span class="linenos">530</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> +</span><span id="MySQL.Generator-531"><a href="#MySQL.Generator-531"><span class="linenos">531</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-532"><a href="#MySQL.Generator-532"><span class="linenos">532</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">"GLOBAL "</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator-533"><a href="#MySQL.Generator-533"><span class="linenos">533</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">global_</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator-534"><a href="#MySQL.Generator-534"><span class="linenos">534</span></a> +</span><span id="MySQL.Generator-535"><a href="#MySQL.Generator-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">set_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL.Generator-536"><a href="#MySQL.Generator-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1666,45 +1665,45 @@ Default: True</li> </div> <a class="headerlink" href="#MySQL.Generator.show_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MySQL.Generator.show_sql-466"><a href="#MySQL.Generator.show_sql-466"><span class="linenos">466</span></a> <span class="k">def</span> <span class="nf">show_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL.Generator.show_sql-467"><a href="#MySQL.Generator.show_sql-467"><span class="linenos">467</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator.show_sql-468"><a href="#MySQL.Generator.show_sql-468"><span class="linenos">468</span></a> <span class="n">full</span> <span class="o">=</span> <span class="s2">" FULL"</span> <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">"full"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator.show_sql-469"><a href="#MySQL.Generator.show_sql-469"><span class="linenos">469</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator.show_sql-470"><a href="#MySQL.Generator.show_sql-470"><span class="linenos">470</span></a> -</span><span id="MySQL.Generator.show_sql-471"><a href="#MySQL.Generator.show_sql-471"><span class="linenos">471</span></a> <span class="n">target</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">"target"</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-472"><a href="#MySQL.Generator.show_sql-472"><span class="linenos">472</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">target</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator.show_sql-473"><a href="#MySQL.Generator.show_sql-473"><span class="linenos">473</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">"COLUMNS"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">}:</span> -</span><span id="MySQL.Generator.show_sql-474"><a href="#MySQL.Generator.show_sql-474"><span class="linenos">474</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator.show_sql-475"><a href="#MySQL.Generator.show_sql-475"><span class="linenos">475</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"GRANTS"</span><span class="p">:</span> -</span><span id="MySQL.Generator.show_sql-476"><a href="#MySQL.Generator.show_sql-476"><span class="linenos">476</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FOR</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> -</span><span id="MySQL.Generator.show_sql-477"><a href="#MySQL.Generator.show_sql-477"><span class="linenos">477</span></a> -</span><span id="MySQL.Generator.show_sql-478"><a href="#MySQL.Generator.show_sql-478"><span class="linenos">478</span></a> <span class="n">db</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-479"><a href="#MySQL.Generator.show_sql-479"><span class="linenos">479</span></a> -</span><span id="MySQL.Generator.show_sql-480"><a href="#MySQL.Generator.show_sql-480"><span class="linenos">480</span></a> <span class="n">like</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIKE"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"like"</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-481"><a href="#MySQL.Generator.show_sql-481"><span class="linenos">481</span></a> <span class="n">where</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">"where"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="MySQL.Generator.show_sql-471"><a href="#MySQL.Generator.show_sql-471"><span class="linenos">471</span></a> <span class="k">def</span> <span class="nf">show_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL.Generator.show_sql-472"><a href="#MySQL.Generator.show_sql-472"><span class="linenos">472</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator.show_sql-473"><a href="#MySQL.Generator.show_sql-473"><span class="linenos">473</span></a> <span class="n">full</span> <span class="o">=</span> <span class="s2">" FULL"</span> <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">"full"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator.show_sql-474"><a href="#MySQL.Generator.show_sql-474"><span class="linenos">474</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator.show_sql-475"><a href="#MySQL.Generator.show_sql-475"><span class="linenos">475</span></a> +</span><span id="MySQL.Generator.show_sql-476"><a href="#MySQL.Generator.show_sql-476"><span class="linenos">476</span></a> <span class="n">target</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">"target"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-477"><a href="#MySQL.Generator.show_sql-477"><span class="linenos">477</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">target</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator.show_sql-478"><a href="#MySQL.Generator.show_sql-478"><span class="linenos">478</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">{</span><span class="s2">"COLUMNS"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">}:</span> +</span><span id="MySQL.Generator.show_sql-479"><a href="#MySQL.Generator.show_sql-479"><span class="linenos">479</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator.show_sql-480"><a href="#MySQL.Generator.show_sql-480"><span class="linenos">480</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"GRANTS"</span><span class="p">:</span> +</span><span id="MySQL.Generator.show_sql-481"><a href="#MySQL.Generator.show_sql-481"><span class="linenos">481</span></a> <span class="n">target</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FOR</span><span class="si">{</span><span class="n">target</span><span class="si">}</span><span class="s2">"</span> </span><span id="MySQL.Generator.show_sql-482"><a href="#MySQL.Generator.show_sql-482"><span class="linenos">482</span></a> -</span><span id="MySQL.Generator.show_sql-483"><a href="#MySQL.Generator.show_sql-483"><span class="linenos">483</span></a> <span class="n">types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"types"</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-484"><a href="#MySQL.Generator.show_sql-484"><span class="linenos">484</span></a> <span class="n">types</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">types</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">types</span> <span class="k">else</span> <span class="n">types</span> -</span><span id="MySQL.Generator.show_sql-485"><a href="#MySQL.Generator.show_sql-485"><span class="linenos">485</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR QUERY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"query"</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-486"><a href="#MySQL.Generator.show_sql-486"><span class="linenos">486</span></a> -</span><span id="MySQL.Generator.show_sql-487"><a href="#MySQL.Generator.show_sql-487"><span class="linenos">487</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"PROFILE"</span><span class="p">:</span> -</span><span id="MySQL.Generator.show_sql-488"><a href="#MySQL.Generator.show_sql-488"><span class="linenos">488</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"OFFSET"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-489"><a href="#MySQL.Generator.show_sql-489"><span class="linenos">489</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIMIT"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-490"><a href="#MySQL.Generator.show_sql-490"><span class="linenos">490</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="MySQL.Generator.show_sql-491"><a href="#MySQL.Generator.show_sql-491"><span class="linenos">491</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="MySQL.Generator.show_sql-492"><a href="#MySQL.Generator.show_sql-492"><span class="linenos">492</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_oldstyle_limit_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-493"><a href="#MySQL.Generator.show_sql-493"><span class="linenos">493</span></a> -</span><span id="MySQL.Generator.show_sql-494"><a href="#MySQL.Generator.show_sql-494"><span class="linenos">494</span></a> <span class="n">log</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-495"><a href="#MySQL.Generator.show_sql-495"><span class="linenos">495</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="MySQL.Generator.show_sql-496"><a href="#MySQL.Generator.show_sql-496"><span class="linenos">496</span></a> -</span><span id="MySQL.Generator.show_sql-497"><a href="#MySQL.Generator.show_sql-497"><span class="linenos">497</span></a> <span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR CHANNEL"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-483"><a href="#MySQL.Generator.show_sql-483"><span class="linenos">483</span></a> <span class="n">db</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-484"><a href="#MySQL.Generator.show_sql-484"><span class="linenos">484</span></a> +</span><span id="MySQL.Generator.show_sql-485"><a href="#MySQL.Generator.show_sql-485"><span class="linenos">485</span></a> <span class="n">like</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIKE"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"like"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-486"><a href="#MySQL.Generator.show_sql-486"><span class="linenos">486</span></a> <span class="n">where</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">"where"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-487"><a href="#MySQL.Generator.show_sql-487"><span class="linenos">487</span></a> +</span><span id="MySQL.Generator.show_sql-488"><a href="#MySQL.Generator.show_sql-488"><span class="linenos">488</span></a> <span class="n">types</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"types"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-489"><a href="#MySQL.Generator.show_sql-489"><span class="linenos">489</span></a> <span class="n">types</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">types</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">types</span> <span class="k">else</span> <span class="n">types</span> +</span><span id="MySQL.Generator.show_sql-490"><a href="#MySQL.Generator.show_sql-490"><span class="linenos">490</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR QUERY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"query"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-491"><a href="#MySQL.Generator.show_sql-491"><span class="linenos">491</span></a> +</span><span id="MySQL.Generator.show_sql-492"><a href="#MySQL.Generator.show_sql-492"><span class="linenos">492</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"PROFILE"</span><span class="p">:</span> +</span><span id="MySQL.Generator.show_sql-493"><a href="#MySQL.Generator.show_sql-493"><span class="linenos">493</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"OFFSET"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"offset"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-494"><a href="#MySQL.Generator.show_sql-494"><span class="linenos">494</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"LIMIT"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-495"><a href="#MySQL.Generator.show_sql-495"><span class="linenos">495</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="MySQL.Generator.show_sql-496"><a href="#MySQL.Generator.show_sql-496"><span class="linenos">496</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="MySQL.Generator.show_sql-497"><a href="#MySQL.Generator.show_sql-497"><span class="linenos">497</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_oldstyle_limit_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span><span id="MySQL.Generator.show_sql-498"><a href="#MySQL.Generator.show_sql-498"><span class="linenos">498</span></a> -</span><span id="MySQL.Generator.show_sql-499"><a href="#MySQL.Generator.show_sql-499"><span class="linenos">499</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"ENGINE"</span><span class="p">:</span> -</span><span id="MySQL.Generator.show_sql-500"><a href="#MySQL.Generator.show_sql-500"><span class="linenos">500</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">" MUTEX"</span> <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">"mutex"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" STATUS"</span> -</span><span id="MySQL.Generator.show_sql-501"><a href="#MySQL.Generator.show_sql-501"><span class="linenos">501</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="MySQL.Generator.show_sql-502"><a href="#MySQL.Generator.show_sql-502"><span class="linenos">502</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="MySQL.Generator.show_sql-499"><a href="#MySQL.Generator.show_sql-499"><span class="linenos">499</span></a> <span class="n">log</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"IN"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"log"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-500"><a href="#MySQL.Generator.show_sql-500"><span class="linenos">500</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="MySQL.Generator.show_sql-501"><a href="#MySQL.Generator.show_sql-501"><span class="linenos">501</span></a> +</span><span id="MySQL.Generator.show_sql-502"><a href="#MySQL.Generator.show_sql-502"><span class="linenos">502</span></a> <span class="n">channel</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefixed_sql</span><span class="p">(</span><span class="s2">"FOR CHANNEL"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="s2">"channel"</span><span class="p">)</span> </span><span id="MySQL.Generator.show_sql-503"><a href="#MySQL.Generator.show_sql-503"><span class="linenos">503</span></a> -</span><span id="MySQL.Generator.show_sql-504"><a href="#MySQL.Generator.show_sql-504"><span class="linenos">504</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SHOW</span><span class="si">{</span><span class="n">full</span><span class="si">}{</span><span class="n">global_</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">types</span><span class="si">}{</span><span class="n">db</span><span class="si">}{</span><span class="n">query</span><span class="si">}{</span><span class="n">log</span><span class="si">}{</span><span class="n">position</span><span class="si">}{</span><span class="n">channel</span><span class="si">}{</span><span class="n">mutex_or_status</span><span class="si">}{</span><span class="n">like</span><span class="si">}{</span><span class="n">where</span><span class="si">}{</span><span class="n">offset</span><span class="si">}{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> +</span><span id="MySQL.Generator.show_sql-504"><a href="#MySQL.Generator.show_sql-504"><span class="linenos">504</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"ENGINE"</span><span class="p">:</span> +</span><span id="MySQL.Generator.show_sql-505"><a href="#MySQL.Generator.show_sql-505"><span class="linenos">505</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">" MUTEX"</span> <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">"mutex"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" STATUS"</span> +</span><span id="MySQL.Generator.show_sql-506"><a href="#MySQL.Generator.show_sql-506"><span class="linenos">506</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="MySQL.Generator.show_sql-507"><a href="#MySQL.Generator.show_sql-507"><span class="linenos">507</span></a> <span class="n">mutex_or_status</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="MySQL.Generator.show_sql-508"><a href="#MySQL.Generator.show_sql-508"><span class="linenos">508</span></a> +</span><span id="MySQL.Generator.show_sql-509"><a href="#MySQL.Generator.show_sql-509"><span class="linenos">509</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SHOW</span><span class="si">{</span><span class="n">full</span><span class="si">}{</span><span class="n">global_</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">types</span><span class="si">}{</span><span class="n">db</span><span class="si">}{</span><span class="n">query</span><span class="si">}{</span><span class="n">log</span><span class="si">}{</span><span class="n">position</span><span class="si">}{</span><span class="n">channel</span><span class="si">}{</span><span class="n">mutex_or_status</span><span class="si">}{</span><span class="n">like</span><span class="si">}{</span><span class="n">where</span><span class="si">}{</span><span class="n">offset</span><span class="si">}{</span><span class="n">limit</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1722,15 +1721,15 @@ Default: True</li> </div> <a class="headerlink" href="#MySQL.Generator.setitem_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MySQL.Generator.setitem_sql-520"><a href="#MySQL.Generator.setitem_sql-520"><span class="linenos">520</span></a> <span class="k">def</span> <span class="nf">setitem_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL.Generator.setitem_sql-521"><a href="#MySQL.Generator.setitem_sql-521"><span class="linenos">521</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="MySQL.Generator.setitem_sql-522"><a href="#MySQL.Generator.setitem_sql-522"><span class="linenos">522</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator.setitem_sql-523"><a href="#MySQL.Generator.setitem_sql-523"><span class="linenos">523</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">"this"</span><span class="p">)</span> -</span><span id="MySQL.Generator.setitem_sql-524"><a href="#MySQL.Generator.setitem_sql-524"><span class="linenos">524</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="MySQL.Generator.setitem_sql-525"><a href="#MySQL.Generator.setitem_sql-525"><span class="linenos">525</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> -</span><span id="MySQL.Generator.setitem_sql-526"><a href="#MySQL.Generator.setitem_sql-526"><span class="linenos">526</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator.setitem_sql-527"><a href="#MySQL.Generator.setitem_sql-527"><span class="linenos">527</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">"GLOBAL "</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="MySQL.Generator.setitem_sql-528"><a href="#MySQL.Generator.setitem_sql-528"><span class="linenos">528</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">global_</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="MySQL.Generator.setitem_sql-525"><a href="#MySQL.Generator.setitem_sql-525"><span class="linenos">525</span></a> <span class="k">def</span> <span class="nf">setitem_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL.Generator.setitem_sql-526"><a href="#MySQL.Generator.setitem_sql-526"><span class="linenos">526</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="MySQL.Generator.setitem_sql-527"><a href="#MySQL.Generator.setitem_sql-527"><span class="linenos">527</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator.setitem_sql-528"><a href="#MySQL.Generator.setitem_sql-528"><span class="linenos">528</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">"this"</span><span class="p">)</span> +</span><span id="MySQL.Generator.setitem_sql-529"><a href="#MySQL.Generator.setitem_sql-529"><span class="linenos">529</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="MySQL.Generator.setitem_sql-530"><a href="#MySQL.Generator.setitem_sql-530"><span class="linenos">530</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> +</span><span id="MySQL.Generator.setitem_sql-531"><a href="#MySQL.Generator.setitem_sql-531"><span class="linenos">531</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator.setitem_sql-532"><a href="#MySQL.Generator.setitem_sql-532"><span class="linenos">532</span></a> <span class="n">global_</span> <span class="o">=</span> <span class="s2">"GLOBAL "</span> <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">"global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="MySQL.Generator.setitem_sql-533"><a href="#MySQL.Generator.setitem_sql-533"><span class="linenos">533</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">global_</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1748,8 +1747,8 @@ Default: True</li> </div> <a class="headerlink" href="#MySQL.Generator.set_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MySQL.Generator.set_sql-530"><a href="#MySQL.Generator.set_sql-530"><span class="linenos">530</span></a> <span class="k">def</span> <span class="nf">set_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="MySQL.Generator.set_sql-531"><a href="#MySQL.Generator.set_sql-531"><span class="linenos">531</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="MySQL.Generator.set_sql-535"><a href="#MySQL.Generator.set_sql-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">set_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="MySQL.Generator.set_sql-536"><a href="#MySQL.Generator.set_sql-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SET </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1779,6 +1778,7 @@ Default: True</li> <dd id="MySQL.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="MySQL.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="MySQL.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="MySQL.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="MySQL.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="MySQL.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="MySQL.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -1821,6 +1821,7 @@ Default: True</li> <dd id="MySQL.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="MySQL.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="MySQL.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="MySQL.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="MySQL.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="MySQL.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="MySQL.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -2091,7 +2092,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/oracle.html b/docs/sqlglot/dialects/oracle.html index 3a7d9c4..23056a8 100644 --- a/docs/sqlglot/dialects/oracle.html +++ b/docs/sqlglot/dialects/oracle.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.oracle 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Oracle">Oracle</a> <ul class="memberlist"> <li> - <a class="function" href="#Oracle.__init__">Oracle</a> - </li> - <li> <a class="class" href="#Oracle.Parser">Oracle.Parser</a> <ul class="memberlist"> </ul> @@ -400,18 +397,6 @@ - <div id="Oracle.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Oracle</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Oracle.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -751,6 +736,7 @@ Default: True</li> <dd id="Oracle.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Oracle.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Oracle.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Oracle.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Oracle.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Oracle.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Oracle.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -793,6 +779,7 @@ Default: True</li> <dd id="Oracle.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Oracle.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Oracle.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Oracle.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Oracle.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Oracle.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Oracle.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -972,8 +959,7 @@ Default: True</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Oracle.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Oracle.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Oracle.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Oracle.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -1100,7 +1086,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/postgres.html b/docs/sqlglot/dialects/postgres.html index 4964579..abc0ee2 100644 --- a/docs/sqlglot/dialects/postgres.html +++ b/docs/sqlglot/dialects/postgres.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.postgres 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Postgres">Postgres</a> <ul class="memberlist"> <li> - <a class="function" href="#Postgres.__init__">Postgres</a> - </li> - <li> <a class="class" href="#Postgres.Tokenizer">Postgres.Tokenizer</a> <ul class="memberlist"> </ul> @@ -400,6 +397,11 @@ </span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> </span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</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">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">]"</span><span class="p">,</span> </span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="p">}</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> +</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-323"><a href="#L-323"><span class="linenos">323</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 class="c1"># type: ignore</span> +</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="p">}</span> </span></pre></div> @@ -561,23 +563,16 @@ </span><span id="Postgres-319"><a href="#Postgres-319"><span class="linenos">319</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> </span><span id="Postgres-320"><a href="#Postgres-320"><span class="linenos">320</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</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">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">]"</span><span class="p">,</span> </span><span id="Postgres-321"><a href="#Postgres-321"><span class="linenos">321</span></a> <span class="p">}</span> +</span><span id="Postgres-322"><a href="#Postgres-322"><span class="linenos">322</span></a> +</span><span id="Postgres-323"><a href="#Postgres-323"><span class="linenos">323</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres-324"><a href="#Postgres-324"><span class="linenos">324</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 class="c1"># type: ignore</span> +</span><span id="Postgres-325"><a href="#Postgres-325"><span class="linenos">325</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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="Postgres-326"><a href="#Postgres-326"><span class="linenos">326</span></a> <span class="p">}</span> </span></pre></div> - <div id="Postgres.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Postgres</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Postgres.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -653,8 +648,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Postgres.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Postgres.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Postgres.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Postgres.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -801,6 +795,11 @@ Default: "nulls_are_small"</li> </span><span id="Postgres.Generator-319"><a href="#Postgres.Generator-319"><span class="linenos">319</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span> </span><span id="Postgres.Generator-320"><a href="#Postgres.Generator-320"><span class="linenos">320</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">'ARRAY'</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">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">]"</span><span class="p">,</span> </span><span id="Postgres.Generator-321"><a href="#Postgres.Generator-321"><span class="linenos">321</span></a> <span class="p">}</span> +</span><span id="Postgres.Generator-322"><a href="#Postgres.Generator-322"><span class="linenos">322</span></a> +</span><span id="Postgres.Generator-323"><a href="#Postgres.Generator-323"><span class="linenos">323</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Postgres.Generator-324"><a href="#Postgres.Generator-324"><span class="linenos">324</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 class="c1"># type: ignore</span> +</span><span id="Postgres.Generator-325"><a href="#Postgres.Generator-325"><span class="linenos">325</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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="Postgres.Generator-326"><a href="#Postgres.Generator-326"><span class="linenos">326</span></a> <span class="p">}</span> </span></pre></div> @@ -872,6 +871,7 @@ Default: True</li> <dd id="Postgres.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Postgres.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Postgres.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Postgres.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Postgres.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Postgres.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Postgres.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -914,6 +914,7 @@ Default: True</li> <dd id="Postgres.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Postgres.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Postgres.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Postgres.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Postgres.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Postgres.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Postgres.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -1184,7 +1185,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/presto.html b/docs/sqlglot/dialects/presto.html index d508018..3906711 100644 --- a/docs/sqlglot/dialects/presto.html +++ b/docs/sqlglot/dialects/presto.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Presto">Presto</a> <ul class="memberlist"> <li> - <a class="function" href="#Presto.__init__">Presto</a> - </li> - <li> <a class="class" href="#Presto.Tokenizer">Presto.Tokenizer</a> <ul class="memberlist"> </ul> @@ -533,18 +530,6 @@ - <div id="Presto.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Presto</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Presto.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -588,8 +573,7 @@ <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.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</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> </div> @@ -873,6 +857,7 @@ Default: True</li> <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.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.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Presto.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -915,6 +900,7 @@ Default: True</li> <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.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.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Presto.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Presto.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -1184,7 +1170,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/redshift.html b/docs/sqlglot/dialects/redshift.html index 3f34770..8679493 100644 --- a/docs/sqlglot/dialects/redshift.html +++ b/docs/sqlglot/dialects/redshift.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.redshift 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Redshift">Redshift</a> <ul class="memberlist"> <li> - <a class="function" href="#Redshift.__init__">Redshift</a> - </li> - <li> <a class="class" href="#Redshift.Parser">Redshift.Parser</a> <ul class="memberlist"> </ul> @@ -375,18 +372,6 @@ - <div id="Redshift.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Redshift</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Redshift.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -518,8 +503,7 @@ Default: "nulls_are_small"</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Redshift.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Redshift.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Redshift.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Redshift.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -819,6 +803,7 @@ without precision we convert it to <code>VARCHAR(max)</code> and if it does have <dd id="Redshift.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Redshift.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Redshift.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Redshift.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Redshift.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Redshift.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Redshift.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -859,6 +844,7 @@ without precision we convert it to <code>VARCHAR(max)</code> and if it does have <dd id="Redshift.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Redshift.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Redshift.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Redshift.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Redshift.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Redshift.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Redshift.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -1127,7 +1113,7 @@ without precision we convert it to <code>VARCHAR(max)</code> and if it does have if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/snowflake.html b/docs/sqlglot/dialects/snowflake.html index 700eb12..cfca8e8 100644 --- a/docs/sqlglot/dialects/snowflake.html +++ b/docs/sqlglot/dialects/snowflake.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.snowflake 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Snowflake">Snowflake</a> <ul class="memberlist"> <li> - <a class="function" href="#Snowflake.__init__">Snowflake</a> - </li> - <li> <a class="class" href="#Snowflake.Parser">Snowflake.Parser</a> <ul class="memberlist"> </ul> @@ -114,323 +111,333 @@ </span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a> <span class="n">inline_array_sql</span><span class="p">,</span> </span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a> <span class="n">rename_func</span><span class="p">,</span> </span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a> <span class="n">timestrtotime_sql</span><span class="p">,</span> -</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a> <span class="n">var_map_sql</span><span class="p">,</span> -</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a><span class="p">)</span> -</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="kn">from</span> <span class="nn">sqlglot.expressions</span> <span class="kn">import</span> <span class="n">Literal</span> -</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">flatten</span><span class="p">,</span> <span class="n">seq_get</span> -</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</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-16"><a href="#L-16"><span class="linenos"> 16</span></a> +</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a> <span class="n">ts_or_ds_to_date_sql</span><span class="p">,</span> +</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a> <span class="n">var_map_sql</span><span class="p">,</span> +</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="p">)</span> +</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="kn">from</span> <span class="nn">sqlglot.expressions</span> <span class="kn">import</span> <span class="n">Literal</span> +</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">flatten</span><span class="p">,</span> <span class="n">seq_get</span> +</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</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-17"><a href="#L-17"><span class="linenos"> 17</span></a> -</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="k">def</span> <span class="nf">_check_int</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> -</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="k">if</span> <span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">):</span> -</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="k">return</span> <span class="n">s</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> -</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="k">return</span> <span class="n">s</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> -</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> +</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> +</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a><span class="k">def</span> <span class="nf">_check_int</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> +</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="k">if</span> <span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">):</span> +</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="k">return</span> <span class="n">s</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> +</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="k">return</span> <span class="n">s</span><span class="o">.</span><span class="n">isdigit</span><span class="p">()</span> </span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> -</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a><span class="c1"># from https://docs.snowflake.com/en/sql-reference/functions/to_timestamp.html</span> -</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a><span class="k">def</span> <span class="nf">_snowflake_to_timestamp</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</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-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="n">first_arg</span><span class="p">,</span> <span class="n">second_arg</span> <span class="o">=</span> <span class="n">args</span> -</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="k">if</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="c1"># case: <string_expr> [ , <format> ]</span> -</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="k">return</span> <span class="n">format_time_lambda</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">"snowflake"</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> -</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="c1"># case: <numeric_expr> [ , <scale> ]</span> -</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="k">if</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"0"</span><span class="p">,</span> <span class="s2">"3"</span><span class="p">,</span> <span class="s2">"9"</span><span class="p">]:</span> -</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> -</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="sa">f</span><span class="s2">"Scale for snowflake numeric timestamp is </span><span class="si">{</span><span class="n">second_arg</span><span class="si">}</span><span class="s2">, but should be 0, 3, or 9"</span> -</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="p">)</span> -</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> -</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="k">if</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> -</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="n">timescale</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">SECONDS</span> -</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="k">elif</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"3"</span><span class="p">:</span> -</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="n">timescale</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MILLIS</span> -</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="k">elif</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"9"</span><span class="p">:</span> -</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="n">timescale</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MICROS</span> -</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> -</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</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">first_arg</span><span class="p">,</span> <span class="n">scale</span><span class="o">=</span><span class="n">timescale</span><span class="p">)</span> -</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> -</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="n">first_arg</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-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> -</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="c1"># case: <variant_expr></span> -</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="k">return</span> <span class="n">format_time_lambda</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">"snowflake"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> -</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="k">if</span> <span class="n">first_arg</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="k">if</span> <span class="n">_check_int</span><span class="p">(</span><span class="n">first_arg</span><span class="o">.</span><span class="n">this</span><span class="p">):</span> -</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="c1"># case: <integer></span> -</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</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-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 class="c1"># case: <date_expr></span> -</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="k">return</span> <span class="n">format_time_lambda</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">"snowflake"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> -</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="c1"># case: <numeric_expr></span> -</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</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-62"><a href="#L-62"><span class="linenos"> 62</span></a> +</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> +</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a><span class="c1"># from https://docs.snowflake.com/en/sql-reference/functions/to_timestamp.html</span> +</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a><span class="k">def</span> <span class="nf">_snowflake_to_timestamp</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</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-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="n">first_arg</span><span class="p">,</span> <span class="n">second_arg</span> <span class="o">=</span> <span class="n">args</span> +</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="k">if</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="c1"># case: <string_expr> [ , <format> ]</span> +</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="k">return</span> <span class="n">format_time_lambda</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">"snowflake"</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> +</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="c1"># case: <numeric_expr> [ , <scale> ]</span> +</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> <span class="k">if</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">[</span><span class="s2">"0"</span><span class="p">,</span> <span class="s2">"3"</span><span class="p">,</span> <span class="s2">"9"</span><span class="p">]:</span> +</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span> +</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="sa">f</span><span class="s2">"Scale for snowflake numeric timestamp is </span><span class="si">{</span><span class="n">second_arg</span><span class="si">}</span><span class="s2">, but should be 0, 3, or 9"</span> +</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="p">)</span> +</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> +</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="k">if</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> +</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="n">timescale</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">SECONDS</span> +</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="k">elif</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"3"</span><span class="p">:</span> +</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="n">timescale</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MILLIS</span> +</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="k">elif</span> <span class="n">second_arg</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"9"</span><span class="p">:</span> +</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">timescale</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MICROS</span> +</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> +</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</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">first_arg</span><span class="p">,</span> <span class="n">scale</span><span class="o">=</span><span class="n">timescale</span><span class="p">)</span> +</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> +</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="n">first_arg</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-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">first_arg</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> +</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="c1"># case: <variant_expr></span> +</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="k">return</span> <span class="n">format_time_lambda</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">"snowflake"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> +</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="k">if</span> <span class="n">first_arg</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="k">if</span> <span class="n">_check_int</span><span class="p">(</span><span class="n">first_arg</span><span class="o">.</span><span class="n">this</span><span class="p">):</span> +</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="c1"># case: <integer></span> +</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</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-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="c1"># case: <date_expr></span> +</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="k">return</span> <span class="n">format_time_lambda</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">"snowflake"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> +</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="c1"># case: <numeric_expr></span> +</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</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-63"><a href="#L-63"><span class="linenos"> 63</span></a> -</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a><span class="k">def</span> <span class="nf">_unix_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><span id="L-65"><a href="#L-65"><span class="linenos"> 65</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">"scale"</span><span class="p">)</span> -</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</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">"this"</span><span class="p">)</span> -</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</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-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_TIMESTAMP(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MILLIS</span><span class="p">:</span> -</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_TIMESTAMP(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">, 3)"</span> -</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MICROS</span><span class="p">:</span> -</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_TIMESTAMP(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">, 9)"</span> -</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> -</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Improper scale for timestamp"</span><span class="p">)</span> -</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> +</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> +</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</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">expression</span><span class="p">):</span> +</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</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">"scale"</span><span class="p">)</span> +</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</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">"this"</span><span class="p">)</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</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-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_TIMESTAMP(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MILLIS</span><span class="p">:</span> +</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_TIMESTAMP(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">, 3)"</span> +</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MICROS</span><span class="p">:</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_TIMESTAMP(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">, 9)"</span> +</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> +</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Improper scale for timestamp"</span><span class="p">)</span> </span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> -</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/date_part.html</span> -</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions-date-time.html#label-supported-date-time-parts</span> -</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-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 class="n">name</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="k">if</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"EPOCH"</span><span class="p">):</span> -</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="k">if</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"EPOCH_MILLISECOND"</span><span class="p">):</span> -</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="mi">10</span><span class="o">**</span><span class="mi">3</span> -</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="k">elif</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"EPOCH_MICROSECOND"</span><span class="p">):</span> -</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="mi">10</span><span class="o">**</span><span class="mi">6</span> -</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="k">elif</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"EPOCH_NANOSECOND"</span><span class="p">):</span> -</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="mi">10</span><span class="o">**</span><span class="mi">9</span> -</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="kc">None</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 class="n">ts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</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">build</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">))</span> -</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="n">to_unix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">ts</span><span class="p">)</span> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> -</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="k">if</span> <span class="n">scale</span><span class="p">:</span> -</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="n">to_unix</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_unix</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">scale</span><span class="p">))</span> -</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> -</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="k">return</span> <span class="n">to_unix</span> -</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> -</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> +</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> +</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/date_part.html</span> +</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="c1"># https://docs.snowflake.com/en/sql-reference/functions-date-time.html#label-supported-date-time-parts</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a><span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-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="n">name</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="k">if</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"EPOCH"</span><span class="p">):</span> +</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="k">if</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"EPOCH_MILLISECOND"</span><span class="p">):</span> +</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="mi">10</span><span class="o">**</span><span class="mi">3</span> +</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="k">elif</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"EPOCH_MICROSECOND"</span><span class="p">):</span> +</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="mi">10</span><span class="o">**</span><span class="mi">6</span> +</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="k">elif</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">"EPOCH_NANOSECOND"</span><span class="p">):</span> +</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="mi">10</span><span class="o">**</span><span class="mi">9</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="n">scale</span> <span class="o">=</span> <span class="kc">None</span> +</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="n">ts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">this</span><span class="o">=</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">build</span><span class="p">(</span><span class="s2">"TIMESTAMP"</span><span class="p">))</span> +</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="n">to_unix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">ts</span><span class="p">)</span> +</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> +</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="k">if</span> <span class="n">scale</span><span class="p">:</span> +</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="n">to_unix</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_unix</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">scale</span><span class="p">))</span> +</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> +</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="k">return</span> <span class="n">to_unix</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 class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> </span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> -</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a><span class="k">def</span> <span class="nf">_datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</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">ARRAY</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="s2">"ARRAY"</span> -</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</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">MAP</span><span class="p">:</span> -</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="k">return</span> <span class="s2">"OBJECT"</span> -</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> +</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> +</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a><span class="k">def</span> <span class="nf">_datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</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">ARRAY</span><span class="p">:</span> +</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="k">return</span> <span class="s2">"ARRAY"</span> +</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</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">MAP</span><span class="p">:</span> +</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="k">return</span> <span class="s2">"OBJECT"</span> +</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> -</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a><span class="k">class</span> <span class="nc">Snowflake</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="n">null_ordering</span> <span class="o">=</span> <span class="s2">"nulls_are_large"</span> -</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="s2">"'yyyy-mm-dd hh24:mi:ss'"</span> -</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="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="s2">"yyyy"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="s2">"yy"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="s2">"MMMM"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="s2">"mmmm"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> -</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="s2">"MON"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> -</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="s2">"mon"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="s2">"mm"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="s2">"dd"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="s2">"d"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="s2">"DY"</span><span class="p">:</span> <span class="s2">"%w"</span><span class="p">,</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="s2">"dy"</span><span class="p">:</span> <span class="s2">"%w"</span><span class="p">,</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="s2">"HH24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="s2">"hh24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="s2">"HH12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="s2">"hh12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="s2">"MI"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> -</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="s2">"mi"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="s2">"SS"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> -</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="s2">"ss"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> -</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="s2">"FF"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="s2">"ff"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="s2">"FF6"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="s2">"ff6"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="p">}</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> -</span><span id="L-148"><a href="#L-148"><span class="linenos">148</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-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos">150</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-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="s2">"ARRAYAGG"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayAgg</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="s2">"IFF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_snowflake_to_timestamp</span><span class="p">,</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="s2">"ARRAY_CONSTRUCT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="s2">"OBJECT_CONSTRUCT"</span><span class="p">:</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_var_map</span><span class="p">,</span> -</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="p">}</span> -</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> -</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> -</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="n">_parse_date_part</span><span class="p">,</span> +</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> +</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a><span class="k">class</span> <span class="nc">Snowflake</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="n">null_ordering</span> <span class="o">=</span> <span class="s2">"nulls_are_large"</span> +</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="s2">"'yyyy-mm-dd hh24:mi:ss'"</span> +</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> +</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="s2">"yyyy"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="s2">"yy"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="s2">"MMMM"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="s2">"mmmm"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="s2">"MON"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="s2">"mon"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> +</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="s2">"mm"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="s2">"dd"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="s2">"d"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="s2">"DY"</span><span class="p">:</span> <span class="s2">"%w"</span><span class="p">,</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="s2">"dy"</span><span class="p">:</span> <span class="s2">"%w"</span><span class="p">,</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="s2">"HH24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="s2">"hh24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="s2">"HH12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="s2">"hh12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="s2">"MI"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> +</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="s2">"mi"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> +</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="s2">"SS"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="s2">"ss"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="s2">"FF"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="s2">"ff"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="s2">"FF6"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="s2">"ff6"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="p">}</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> +</span><span id="L-149"><a href="#L-149"><span class="linenos">149</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-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos">151</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-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="s2">"ARRAYAGG"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayAgg</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="s2">"DATE_TRUNC"</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">DateTrunc</span><span class="p">(</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">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="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># type: ignore</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos">155</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">1</span><span class="p">),</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="p">),</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="s2">"IFF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_snowflake_to_timestamp</span><span class="p">,</span> +</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="s2">"ARRAY_CONSTRUCT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="s2">"OBJECT_CONSTRUCT"</span><span class="p">:</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_var_map</span><span class="p">,</span> </span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="p">}</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</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="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">,</span> -</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="p">}</span> -</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> -</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos">173</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">COLUMN_OPERATORS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> -</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">path</span><span class="p">],</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="p">),</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="p">}</span> -</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> -</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="p">),</span> -</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="p">),</span> -</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="p">}</span> -</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> -</span><span id="L-191"><a href="#L-191"><span class="linenos">191</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-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s2">"$$"</span><span class="p">]</span> -</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">]</span> -</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> -</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos">196</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-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="s2">"ILIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">,</span> -</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="s2">"LIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">,</span> -</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="s2">"MATCH_RECOGNIZE"</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-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="s2">"PUT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="s2">"TIMESTAMP_TZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="s2">"MINUS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> -</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="p">}</span> -</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> -</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> -</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> +</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="n">_parse_date_part</span><span class="p">,</span> +</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="p">}</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> +</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">,</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="p">}</span> +</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> +</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-178"><a href="#L-178"><span class="linenos">178</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">COLUMN_OPERATORS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> +</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">path</span><span class="p">],</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="p">),</span> +</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="p">}</span> +</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> +</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="p">),</span> +</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="p">),</span> +</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="p">}</span> +</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> +</span><span id="L-196"><a href="#L-196"><span class="linenos">196</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-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s2">"$$"</span><span class="p">]</span> +</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">]</span> +</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> +</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-201"><a href="#L-201"><span class="linenos">201</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-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="s2">"ILIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">,</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="s2">"LIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">,</span> +</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="s2">"MATCH_RECOGNIZE"</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-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="s2">"PUT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="s2">"TIMESTAMP_TZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="s2">"MINUS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> </span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="p">}</span> </span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> -</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="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-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="n">CREATE_TRANSIENT</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> -</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-221"><a href="#L-221"><span class="linenos">221</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 class="c1"># type: ignore</span> -</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="n">inline_array_sql</span><span class="p">,</span> -</span><span id="L-223"><a href="#L-223"><span class="linenos">223</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">"ARRAY_CAT"</span><span class="p">),</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DATEADD"</span><span class="p">),</span> -</span><span id="L-225"><a href="#L-225"><span class="linenos">225</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-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</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">If</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"IFF"</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">Map</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">var_map_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">"OBJECT_CONSTRUCT"</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">VarMap</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">var_map_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">"OBJECT_CONSTRUCT"</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">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</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">Matches</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DECODE"</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">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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="s2">"POSITION"</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">"substr"</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">"position"</span><span class="p">)</span> -</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="p">),</span> -</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-236"><a href="#L-236"><span class="linenos">236</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-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</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">"EXTRACT(epoch_second FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TRIM"</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-239"><a href="#L-239"><span class="linenos">239</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-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="p">}</span> -</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> -</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-244"><a href="#L-244"><span class="linenos">244</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 class="c1"># type: ignore</span> -</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">,</span> +</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="p">}</span> +</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> +</span><span id="L-221"><a href="#L-221"><span class="linenos">221</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-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> +</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> +</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">TRANSFORMS</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">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 class="c1"># type: ignore</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">Array</span><span class="p">:</span> <span class="n">inline_array_sql</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">ArrayConcat</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"ARRAY_CAT"</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">DateAdd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DATEADD"</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">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</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">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</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">If</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"IFF"</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">Map</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> +</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> +</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DECODE"</span><span class="p">),</span> +</span><span id="L-236"><a href="#L-236"><span class="linenos">236</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="s2">"POSITION"</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">"substr"</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">"position"</span><span class="p">)</span> +</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="p">),</span> +</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-240"><a href="#L-240"><span class="linenos">240</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-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</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">"EXTRACT(epoch_second FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TRIM"</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-243"><a href="#L-243"><span class="linenos">243</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 class="s2">"snowflake"</span><span class="p">),</span> +</span><span id="L-244"><a href="#L-244"><span class="linenos">244</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-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> </span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="p">}</span> </span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> -</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCLUDE"</span><span class="p">,</span> -</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"RENAME"</span><span class="p">,</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-249"><a href="#L-249"><span class="linenos">249</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 class="c1"># type: ignore</span> +</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">,</span> </span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="p">}</span> </span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> -</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="k">def</span> <span class="nf">ilikeany_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">ILikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE ANY"</span><span class="p">)</span> -</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> -</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="k">def</span> <span class="nf">likeany_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">LikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE ANY"</span><span class="p">)</span> -</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> -</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="k">def</span> <span class="nf">except_op</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-260"><a href="#L-260"><span class="linenos">260</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT with All is not supported in Snowflake"</span><span class="p">)</span> -</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> -</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="k">def</span> <span class="nf">intersect_op</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-265"><a href="#L-265"><span class="linenos">265</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT with All is not supported in Snowflake"</span><span class="p">)</span> -</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCLUDE"</span><span class="p">,</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"RENAME"</span><span class="p">,</span> +</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="p">}</span> +</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> +</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos">259</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 class="c1"># type: ignore</span> +</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</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-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="p">}</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> +</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="k">def</span> <span class="nf">ilikeany_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">ILikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE ANY"</span><span class="p">)</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> +</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="k">def</span> <span class="nf">likeany_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">LikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE ANY"</span><span class="p">)</span> </span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> -</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> -</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a><span class="sd"> We also want to make sure that after we find matches where we need to unquote a column that we prevent users</span> -</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a><span class="sd"> from adding quotes to the column by using the `identify` argument when generating the SQL.</span> -</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a><span class="sd"> """</span> -</span><span id="L-275"><a href="#L-275"><span class="linenos">275</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">"alias"</span><span class="p">)</span> -</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> -</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> -</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> -</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">TableAlias</span><span class="p">)</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">==</span> <span class="s2">"columns"</span> -</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</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="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> -</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a><span class="sd"> that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need</span> -</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a><span class="sd"> to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when</span> -</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a><span class="sd"> generating the SQL.</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> -</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a><span class="sd"> Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the</span> -</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a><span class="sd"> expression. This might not be true in a case where the same column name can be sourced from another table that can</span> -</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a><span class="sd"> properly quote but should be true in most cases.</span> -</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a><span class="sd"> """</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="n">values_expressions</span> <span class="o">=</span> <span class="n">expression</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">Values</span><span class="p">)</span> -</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> <span class="n">values_identifiers</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span> -</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> <span class="n">flatten</span><span class="p">(</span> -</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a> <span class="n">v</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">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">())</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">"columns"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values_expressions</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="p">)</span> -</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="k">if</span> <span class="n">values_identifiers</span><span class="p">:</span> -</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> -</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">values_identifiers</span> -</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> -</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="p">)</span> -</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><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="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="c1"># Default to table if kind is unknown</span> -</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a> <span class="n">kind_value</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">"kind"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"TABLE"</span> -</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind_value</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind_value</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> -</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> -</span><span id="L-321"><a href="#L-321"><span class="linenos">321</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">GeneratedAsIdentityColumnConstraint</span> -</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> -</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" START </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> -</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"AUTOINCREMENT</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="k">def</span> <span class="nf">except_op</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-270"><a href="#L-270"><span class="linenos">270</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT with All is not supported in Snowflake"</span><span class="p">)</span> +</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> +</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="k">def</span> <span class="nf">intersect_op</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-275"><a href="#L-275"><span class="linenos">275</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT with All is not supported in Snowflake"</span><span class="p">)</span> +</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> +</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.</span> +</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> +</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a><span class="sd"> We also want to make sure that after we find matches where we need to unquote a column that we prevent users</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a><span class="sd"> from adding quotes to the column by using the `identify` argument when generating the SQL.</span> +</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a><span class="sd"> """</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos">285</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">"alias"</span><span class="p">)</span> +</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> +</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> +</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> +</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">TableAlias</span><span class="p">)</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">==</span> <span class="s2">"columns"</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a> <span class="p">)</span> +</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a> +</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a><span class="sd"> that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need</span> +</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a><span class="sd"> to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when</span> +</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a><span class="sd"> generating the SQL.</span> +</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> +</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a><span class="sd"> Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the</span> +</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a><span class="sd"> expression. This might not be true in a case where the same column name can be sourced from another table that can</span> +</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a><span class="sd"> properly quote but should be true in most cases.</span> +</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a><span class="sd"> """</span> +</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> <span class="n">values_expressions</span> <span class="o">=</span> <span class="n">expression</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">Values</span><span class="p">)</span> +</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a> <span class="n">values_identifiers</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span> +</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="n">flatten</span><span class="p">(</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a> <span class="n">v</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">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">())</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">"columns"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values_expressions</span> +</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a> <span class="p">)</span> +</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a> <span class="p">)</span> +</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="k">if</span> <span class="n">values_identifiers</span><span class="p">:</span> +</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> +</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">values_identifiers</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> +</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> <span class="p">)</span> +</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> +</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="c1"># Default to table if kind is unknown</span> +</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="n">kind_value</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">"kind"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"TABLE"</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind_value</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind_value</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> +</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> +</span><span id="L-331"><a href="#L-331"><span class="linenos">331</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">GeneratedAsIdentityColumnConstraint</span> +</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> +</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" START </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> +</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"AUTOINCREMENT</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -446,237 +453,234 @@ </div> <a class="headerlink" href="#Snowflake"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake-115"><a href="#Snowflake-115"><span class="linenos">115</span></a><span class="k">class</span> <span class="nc">Snowflake</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> -</span><span id="Snowflake-116"><a href="#Snowflake-116"><span class="linenos">116</span></a> <span class="n">null_ordering</span> <span class="o">=</span> <span class="s2">"nulls_are_large"</span> -</span><span id="Snowflake-117"><a href="#Snowflake-117"><span class="linenos">117</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="s2">"'yyyy-mm-dd hh24:mi:ss'"</span> -</span><span id="Snowflake-118"><a href="#Snowflake-118"><span class="linenos">118</span></a> -</span><span id="Snowflake-119"><a href="#Snowflake-119"><span class="linenos">119</span></a> <span class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-120"><a href="#Snowflake-120"><span class="linenos">120</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="Snowflake-121"><a href="#Snowflake-121"><span class="linenos">121</span></a> <span class="s2">"yyyy"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> -</span><span id="Snowflake-122"><a href="#Snowflake-122"><span class="linenos">122</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> -</span><span id="Snowflake-123"><a href="#Snowflake-123"><span class="linenos">123</span></a> <span class="s2">"yy"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> -</span><span id="Snowflake-124"><a href="#Snowflake-124"><span class="linenos">124</span></a> <span class="s2">"MMMM"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> -</span><span id="Snowflake-125"><a href="#Snowflake-125"><span class="linenos">125</span></a> <span class="s2">"mmmm"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> -</span><span id="Snowflake-126"><a href="#Snowflake-126"><span class="linenos">126</span></a> <span class="s2">"MON"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> -</span><span id="Snowflake-127"><a href="#Snowflake-127"><span class="linenos">127</span></a> <span class="s2">"mon"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> -</span><span id="Snowflake-128"><a href="#Snowflake-128"><span class="linenos">128</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> -</span><span id="Snowflake-129"><a href="#Snowflake-129"><span class="linenos">129</span></a> <span class="s2">"mm"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> -</span><span id="Snowflake-130"><a href="#Snowflake-130"><span class="linenos">130</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Snowflake-131"><a href="#Snowflake-131"><span class="linenos">131</span></a> <span class="s2">"dd"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Snowflake-132"><a href="#Snowflake-132"><span class="linenos">132</span></a> <span class="s2">"d"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Snowflake-133"><a href="#Snowflake-133"><span class="linenos">133</span></a> <span class="s2">"DY"</span><span class="p">:</span> <span class="s2">"%w"</span><span class="p">,</span> -</span><span id="Snowflake-134"><a href="#Snowflake-134"><span class="linenos">134</span></a> <span class="s2">"dy"</span><span class="p">:</span> <span class="s2">"%w"</span><span class="p">,</span> -</span><span id="Snowflake-135"><a href="#Snowflake-135"><span class="linenos">135</span></a> <span class="s2">"HH24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> -</span><span id="Snowflake-136"><a href="#Snowflake-136"><span class="linenos">136</span></a> <span class="s2">"hh24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> -</span><span id="Snowflake-137"><a href="#Snowflake-137"><span class="linenos">137</span></a> <span class="s2">"HH12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> -</span><span id="Snowflake-138"><a href="#Snowflake-138"><span class="linenos">138</span></a> <span class="s2">"hh12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> -</span><span id="Snowflake-139"><a href="#Snowflake-139"><span class="linenos">139</span></a> <span class="s2">"MI"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> -</span><span id="Snowflake-140"><a href="#Snowflake-140"><span class="linenos">140</span></a> <span class="s2">"mi"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> -</span><span id="Snowflake-141"><a href="#Snowflake-141"><span class="linenos">141</span></a> <span class="s2">"SS"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> -</span><span id="Snowflake-142"><a href="#Snowflake-142"><span class="linenos">142</span></a> <span class="s2">"ss"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> -</span><span id="Snowflake-143"><a href="#Snowflake-143"><span class="linenos">143</span></a> <span class="s2">"FF"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Snowflake-144"><a href="#Snowflake-144"><span class="linenos">144</span></a> <span class="s2">"ff"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Snowflake-145"><a href="#Snowflake-145"><span class="linenos">145</span></a> <span class="s2">"FF6"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Snowflake-146"><a href="#Snowflake-146"><span class="linenos">146</span></a> <span class="s2">"ff6"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Snowflake-147"><a href="#Snowflake-147"><span class="linenos">147</span></a> <span class="p">}</span> -</span><span id="Snowflake-148"><a href="#Snowflake-148"><span class="linenos">148</span></a> -</span><span id="Snowflake-149"><a href="#Snowflake-149"><span class="linenos">149</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="Snowflake-150"><a href="#Snowflake-150"><span class="linenos">150</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-151"><a href="#Snowflake-151"><span class="linenos">151</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="Snowflake-152"><a href="#Snowflake-152"><span class="linenos">152</span></a> <span class="s2">"ARRAYAGG"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayAgg</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake-153"><a href="#Snowflake-153"><span class="linenos">153</span></a> <span class="s2">"IFF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake-154"><a href="#Snowflake-154"><span class="linenos">154</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_snowflake_to_timestamp</span><span class="p">,</span> -</span><span id="Snowflake-155"><a href="#Snowflake-155"><span class="linenos">155</span></a> <span class="s2">"ARRAY_CONSTRUCT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake-156"><a href="#Snowflake-156"><span class="linenos">156</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake-157"><a href="#Snowflake-157"><span class="linenos">157</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake-158"><a href="#Snowflake-158"><span class="linenos">158</span></a> <span class="s2">"OBJECT_CONSTRUCT"</span><span class="p">:</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_var_map</span><span class="p">,</span> -</span><span id="Snowflake-159"><a href="#Snowflake-159"><span class="linenos">159</span></a> <span class="p">}</span> -</span><span id="Snowflake-160"><a href="#Snowflake-160"><span class="linenos">160</span></a> -</span><span id="Snowflake-161"><a href="#Snowflake-161"><span class="linenos">161</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-162"><a href="#Snowflake-162"><span class="linenos">162</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> -</span><span id="Snowflake-163"><a href="#Snowflake-163"><span class="linenos">163</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="n">_parse_date_part</span><span class="p">,</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake-116"><a href="#Snowflake-116"><span class="linenos">116</span></a><span class="k">class</span> <span class="nc">Snowflake</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> +</span><span id="Snowflake-117"><a href="#Snowflake-117"><span class="linenos">117</span></a> <span class="n">null_ordering</span> <span class="o">=</span> <span class="s2">"nulls_are_large"</span> +</span><span id="Snowflake-118"><a href="#Snowflake-118"><span class="linenos">118</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="s2">"'yyyy-mm-dd hh24:mi:ss'"</span> +</span><span id="Snowflake-119"><a href="#Snowflake-119"><span class="linenos">119</span></a> +</span><span id="Snowflake-120"><a href="#Snowflake-120"><span class="linenos">120</span></a> <span class="n">time_mapping</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-121"><a href="#Snowflake-121"><span class="linenos">121</span></a> <span class="s2">"YYYY"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="Snowflake-122"><a href="#Snowflake-122"><span class="linenos">122</span></a> <span class="s2">"yyyy"</span><span class="p">:</span> <span class="s2">"%Y"</span><span class="p">,</span> +</span><span id="Snowflake-123"><a href="#Snowflake-123"><span class="linenos">123</span></a> <span class="s2">"YY"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> +</span><span id="Snowflake-124"><a href="#Snowflake-124"><span class="linenos">124</span></a> <span class="s2">"yy"</span><span class="p">:</span> <span class="s2">"%y"</span><span class="p">,</span> +</span><span id="Snowflake-125"><a href="#Snowflake-125"><span class="linenos">125</span></a> <span class="s2">"MMMM"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> +</span><span id="Snowflake-126"><a href="#Snowflake-126"><span class="linenos">126</span></a> <span class="s2">"mmmm"</span><span class="p">:</span> <span class="s2">"%B"</span><span class="p">,</span> +</span><span id="Snowflake-127"><a href="#Snowflake-127"><span class="linenos">127</span></a> <span class="s2">"MON"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> +</span><span id="Snowflake-128"><a href="#Snowflake-128"><span class="linenos">128</span></a> <span class="s2">"mon"</span><span class="p">:</span> <span class="s2">"%b"</span><span class="p">,</span> +</span><span id="Snowflake-129"><a href="#Snowflake-129"><span class="linenos">129</span></a> <span class="s2">"MM"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> +</span><span id="Snowflake-130"><a href="#Snowflake-130"><span class="linenos">130</span></a> <span class="s2">"mm"</span><span class="p">:</span> <span class="s2">"%m"</span><span class="p">,</span> +</span><span id="Snowflake-131"><a href="#Snowflake-131"><span class="linenos">131</span></a> <span class="s2">"DD"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Snowflake-132"><a href="#Snowflake-132"><span class="linenos">132</span></a> <span class="s2">"dd"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Snowflake-133"><a href="#Snowflake-133"><span class="linenos">133</span></a> <span class="s2">"d"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%-d</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Snowflake-134"><a href="#Snowflake-134"><span class="linenos">134</span></a> <span class="s2">"DY"</span><span class="p">:</span> <span class="s2">"%w"</span><span class="p">,</span> +</span><span id="Snowflake-135"><a href="#Snowflake-135"><span class="linenos">135</span></a> <span class="s2">"dy"</span><span class="p">:</span> <span class="s2">"%w"</span><span class="p">,</span> +</span><span id="Snowflake-136"><a href="#Snowflake-136"><span class="linenos">136</span></a> <span class="s2">"HH24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> +</span><span id="Snowflake-137"><a href="#Snowflake-137"><span class="linenos">137</span></a> <span class="s2">"hh24"</span><span class="p">:</span> <span class="s2">"%H"</span><span class="p">,</span> +</span><span id="Snowflake-138"><a href="#Snowflake-138"><span class="linenos">138</span></a> <span class="s2">"HH12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> +</span><span id="Snowflake-139"><a href="#Snowflake-139"><span class="linenos">139</span></a> <span class="s2">"hh12"</span><span class="p">:</span> <span class="s2">"%I"</span><span class="p">,</span> +</span><span id="Snowflake-140"><a href="#Snowflake-140"><span class="linenos">140</span></a> <span class="s2">"MI"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> +</span><span id="Snowflake-141"><a href="#Snowflake-141"><span class="linenos">141</span></a> <span class="s2">"mi"</span><span class="p">:</span> <span class="s2">"%M"</span><span class="p">,</span> +</span><span id="Snowflake-142"><a href="#Snowflake-142"><span class="linenos">142</span></a> <span class="s2">"SS"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> +</span><span id="Snowflake-143"><a href="#Snowflake-143"><span class="linenos">143</span></a> <span class="s2">"ss"</span><span class="p">:</span> <span class="s2">"%S"</span><span class="p">,</span> +</span><span id="Snowflake-144"><a href="#Snowflake-144"><span class="linenos">144</span></a> <span class="s2">"FF"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Snowflake-145"><a href="#Snowflake-145"><span class="linenos">145</span></a> <span class="s2">"ff"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Snowflake-146"><a href="#Snowflake-146"><span class="linenos">146</span></a> <span class="s2">"FF6"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Snowflake-147"><a href="#Snowflake-147"><span class="linenos">147</span></a> <span class="s2">"ff6"</span><span class="p">:</span> <span class="s2">"</span><span class="si">%f</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Snowflake-148"><a href="#Snowflake-148"><span class="linenos">148</span></a> <span class="p">}</span> +</span><span id="Snowflake-149"><a href="#Snowflake-149"><span class="linenos">149</span></a> +</span><span id="Snowflake-150"><a href="#Snowflake-150"><span class="linenos">150</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="Snowflake-151"><a href="#Snowflake-151"><span class="linenos">151</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-152"><a href="#Snowflake-152"><span class="linenos">152</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="Snowflake-153"><a href="#Snowflake-153"><span class="linenos">153</span></a> <span class="s2">"ARRAYAGG"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayAgg</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake-154"><a href="#Snowflake-154"><span class="linenos">154</span></a> <span class="s2">"DATE_TRUNC"</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">DateTrunc</span><span class="p">(</span> +</span><span id="Snowflake-155"><a href="#Snowflake-155"><span class="linenos">155</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">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="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># type: ignore</span> +</span><span id="Snowflake-156"><a href="#Snowflake-156"><span class="linenos">156</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">1</span><span class="p">),</span> +</span><span id="Snowflake-157"><a href="#Snowflake-157"><span class="linenos">157</span></a> <span class="p">),</span> +</span><span id="Snowflake-158"><a href="#Snowflake-158"><span class="linenos">158</span></a> <span class="s2">"IFF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake-159"><a href="#Snowflake-159"><span class="linenos">159</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_snowflake_to_timestamp</span><span class="p">,</span> +</span><span id="Snowflake-160"><a href="#Snowflake-160"><span class="linenos">160</span></a> <span class="s2">"ARRAY_CONSTRUCT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake-161"><a href="#Snowflake-161"><span class="linenos">161</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake-162"><a href="#Snowflake-162"><span class="linenos">162</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake-163"><a href="#Snowflake-163"><span class="linenos">163</span></a> <span class="s2">"OBJECT_CONSTRUCT"</span><span class="p">:</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_var_map</span><span class="p">,</span> </span><span id="Snowflake-164"><a href="#Snowflake-164"><span class="linenos">164</span></a> <span class="p">}</span> -</span><span id="Snowflake-165"><a href="#Snowflake-165"><span class="linenos">165</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> -</span><span id="Snowflake-166"><a href="#Snowflake-166"><span class="linenos">166</span></a> -</span><span id="Snowflake-167"><a href="#Snowflake-167"><span class="linenos">167</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-168"><a href="#Snowflake-168"><span class="linenos">168</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">,</span> -</span><span id="Snowflake-169"><a href="#Snowflake-169"><span class="linenos">169</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="Snowflake-170"><a href="#Snowflake-170"><span class="linenos">170</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Snowflake-171"><a href="#Snowflake-171"><span class="linenos">171</span></a> <span class="p">}</span> -</span><span id="Snowflake-172"><a href="#Snowflake-172"><span class="linenos">172</span></a> -</span><span id="Snowflake-173"><a href="#Snowflake-173"><span class="linenos">173</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-174"><a href="#Snowflake-174"><span class="linenos">174</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">COLUMN_OPERATORS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Snowflake-175"><a href="#Snowflake-175"><span class="linenos">175</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Snowflake-176"><a href="#Snowflake-176"><span class="linenos">176</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> -</span><span id="Snowflake-177"><a href="#Snowflake-177"><span class="linenos">177</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Snowflake-178"><a href="#Snowflake-178"><span class="linenos">178</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">path</span><span class="p">],</span> -</span><span id="Snowflake-179"><a href="#Snowflake-179"><span class="linenos">179</span></a> <span class="p">),</span> -</span><span id="Snowflake-180"><a href="#Snowflake-180"><span class="linenos">180</span></a> <span class="p">}</span> -</span><span id="Snowflake-181"><a href="#Snowflake-181"><span class="linenos">181</span></a> -</span><span id="Snowflake-182"><a href="#Snowflake-182"><span class="linenos">182</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-183"><a href="#Snowflake-183"><span class="linenos">183</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Snowflake-184"><a href="#Snowflake-184"><span class="linenos">184</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="Snowflake-185"><a href="#Snowflake-185"><span class="linenos">185</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Snowflake-186"><a href="#Snowflake-186"><span class="linenos">186</span></a> <span class="p">),</span> -</span><span id="Snowflake-187"><a href="#Snowflake-187"><span class="linenos">187</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="Snowflake-188"><a href="#Snowflake-188"><span class="linenos">188</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Snowflake-189"><a href="#Snowflake-189"><span class="linenos">189</span></a> <span class="p">),</span> -</span><span id="Snowflake-190"><a href="#Snowflake-190"><span class="linenos">190</span></a> <span class="p">}</span> -</span><span id="Snowflake-191"><a href="#Snowflake-191"><span class="linenos">191</span></a> -</span><span id="Snowflake-192"><a href="#Snowflake-192"><span class="linenos">192</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="Snowflake-193"><a href="#Snowflake-193"><span class="linenos">193</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s2">"$$"</span><span class="p">]</span> -</span><span id="Snowflake-194"><a href="#Snowflake-194"><span class="linenos">194</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">]</span> -</span><span id="Snowflake-195"><a href="#Snowflake-195"><span class="linenos">195</span></a> -</span><span id="Snowflake-196"><a href="#Snowflake-196"><span class="linenos">196</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-197"><a href="#Snowflake-197"><span class="linenos">197</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="Snowflake-198"><a href="#Snowflake-198"><span class="linenos">198</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="Snowflake-199"><a href="#Snowflake-199"><span class="linenos">199</span></a> <span class="s2">"ILIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">,</span> -</span><span id="Snowflake-200"><a href="#Snowflake-200"><span class="linenos">200</span></a> <span class="s2">"LIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">,</span> -</span><span id="Snowflake-201"><a href="#Snowflake-201"><span class="linenos">201</span></a> <span class="s2">"MATCH_RECOGNIZE"</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="Snowflake-202"><a href="#Snowflake-202"><span class="linenos">202</span></a> <span class="s2">"PUT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Snowflake-203"><a href="#Snowflake-203"><span class="linenos">203</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="Snowflake-204"><a href="#Snowflake-204"><span class="linenos">204</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="Snowflake-205"><a href="#Snowflake-205"><span class="linenos">205</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Snowflake-206"><a href="#Snowflake-206"><span class="linenos">206</span></a> <span class="s2">"TIMESTAMP_TZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="Snowflake-207"><a href="#Snowflake-207"><span class="linenos">207</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Snowflake-208"><a href="#Snowflake-208"><span class="linenos">208</span></a> <span class="s2">"MINUS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="Snowflake-209"><a href="#Snowflake-209"><span class="linenos">209</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> -</span><span id="Snowflake-210"><a href="#Snowflake-210"><span class="linenos">210</span></a> <span class="p">}</span> -</span><span id="Snowflake-211"><a href="#Snowflake-211"><span class="linenos">211</span></a> -</span><span id="Snowflake-212"><a href="#Snowflake-212"><span class="linenos">212</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-213"><a href="#Snowflake-213"><span class="linenos">213</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> -</span><span id="Snowflake-214"><a href="#Snowflake-214"><span class="linenos">214</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> +</span><span id="Snowflake-165"><a href="#Snowflake-165"><span class="linenos">165</span></a> +</span><span id="Snowflake-166"><a href="#Snowflake-166"><span class="linenos">166</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-167"><a href="#Snowflake-167"><span class="linenos">167</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> +</span><span id="Snowflake-168"><a href="#Snowflake-168"><span class="linenos">168</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="n">_parse_date_part</span><span class="p">,</span> +</span><span id="Snowflake-169"><a href="#Snowflake-169"><span class="linenos">169</span></a> <span class="p">}</span> +</span><span id="Snowflake-170"><a href="#Snowflake-170"><span class="linenos">170</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> +</span><span id="Snowflake-171"><a href="#Snowflake-171"><span class="linenos">171</span></a> +</span><span id="Snowflake-172"><a href="#Snowflake-172"><span class="linenos">172</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-173"><a href="#Snowflake-173"><span class="linenos">173</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">,</span> +</span><span id="Snowflake-174"><a href="#Snowflake-174"><span class="linenos">174</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="Snowflake-175"><a href="#Snowflake-175"><span class="linenos">175</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Snowflake-176"><a href="#Snowflake-176"><span class="linenos">176</span></a> <span class="p">}</span> +</span><span id="Snowflake-177"><a href="#Snowflake-177"><span class="linenos">177</span></a> +</span><span id="Snowflake-178"><a href="#Snowflake-178"><span class="linenos">178</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-179"><a href="#Snowflake-179"><span class="linenos">179</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">COLUMN_OPERATORS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Snowflake-180"><a href="#Snowflake-180"><span class="linenos">180</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Snowflake-181"><a href="#Snowflake-181"><span class="linenos">181</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> +</span><span id="Snowflake-182"><a href="#Snowflake-182"><span class="linenos">182</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Snowflake-183"><a href="#Snowflake-183"><span class="linenos">183</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">path</span><span class="p">],</span> +</span><span id="Snowflake-184"><a href="#Snowflake-184"><span class="linenos">184</span></a> <span class="p">),</span> +</span><span id="Snowflake-185"><a href="#Snowflake-185"><span class="linenos">185</span></a> <span class="p">}</span> +</span><span id="Snowflake-186"><a href="#Snowflake-186"><span class="linenos">186</span></a> +</span><span id="Snowflake-187"><a href="#Snowflake-187"><span class="linenos">187</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-188"><a href="#Snowflake-188"><span class="linenos">188</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Snowflake-189"><a href="#Snowflake-189"><span class="linenos">189</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="Snowflake-190"><a href="#Snowflake-190"><span class="linenos">190</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Snowflake-191"><a href="#Snowflake-191"><span class="linenos">191</span></a> <span class="p">),</span> +</span><span id="Snowflake-192"><a href="#Snowflake-192"><span class="linenos">192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="Snowflake-193"><a href="#Snowflake-193"><span class="linenos">193</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Snowflake-194"><a href="#Snowflake-194"><span class="linenos">194</span></a> <span class="p">),</span> +</span><span id="Snowflake-195"><a href="#Snowflake-195"><span class="linenos">195</span></a> <span class="p">}</span> +</span><span id="Snowflake-196"><a href="#Snowflake-196"><span class="linenos">196</span></a> +</span><span id="Snowflake-197"><a href="#Snowflake-197"><span class="linenos">197</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="Snowflake-198"><a href="#Snowflake-198"><span class="linenos">198</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s2">"$$"</span><span class="p">]</span> +</span><span id="Snowflake-199"><a href="#Snowflake-199"><span class="linenos">199</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">]</span> +</span><span id="Snowflake-200"><a href="#Snowflake-200"><span class="linenos">200</span></a> +</span><span id="Snowflake-201"><a href="#Snowflake-201"><span class="linenos">201</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-202"><a href="#Snowflake-202"><span class="linenos">202</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="Snowflake-203"><a href="#Snowflake-203"><span class="linenos">203</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="Snowflake-204"><a href="#Snowflake-204"><span class="linenos">204</span></a> <span class="s2">"ILIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">,</span> +</span><span id="Snowflake-205"><a href="#Snowflake-205"><span class="linenos">205</span></a> <span class="s2">"LIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">,</span> +</span><span id="Snowflake-206"><a href="#Snowflake-206"><span class="linenos">206</span></a> <span class="s2">"MATCH_RECOGNIZE"</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="Snowflake-207"><a href="#Snowflake-207"><span class="linenos">207</span></a> <span class="s2">"PUT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Snowflake-208"><a href="#Snowflake-208"><span class="linenos">208</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="Snowflake-209"><a href="#Snowflake-209"><span class="linenos">209</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="Snowflake-210"><a href="#Snowflake-210"><span class="linenos">210</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Snowflake-211"><a href="#Snowflake-211"><span class="linenos">211</span></a> <span class="s2">"TIMESTAMP_TZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="Snowflake-212"><a href="#Snowflake-212"><span class="linenos">212</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Snowflake-213"><a href="#Snowflake-213"><span class="linenos">213</span></a> <span class="s2">"MINUS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="Snowflake-214"><a href="#Snowflake-214"><span class="linenos">214</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> </span><span id="Snowflake-215"><a href="#Snowflake-215"><span class="linenos">215</span></a> <span class="p">}</span> </span><span id="Snowflake-216"><a href="#Snowflake-216"><span class="linenos">216</span></a> -</span><span id="Snowflake-217"><a href="#Snowflake-217"><span class="linenos">217</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="Snowflake-218"><a href="#Snowflake-218"><span class="linenos">218</span></a> <span class="n">CREATE_TRANSIENT</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Snowflake-219"><a href="#Snowflake-219"><span class="linenos">219</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> -</span><span id="Snowflake-220"><a href="#Snowflake-220"><span class="linenos">220</span></a> -</span><span id="Snowflake-221"><a href="#Snowflake-221"><span class="linenos">221</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-222"><a href="#Snowflake-222"><span class="linenos">222</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 class="c1"># type: ignore</span> -</span><span id="Snowflake-223"><a href="#Snowflake-223"><span class="linenos">223</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="n">inline_array_sql</span><span class="p">,</span> -</span><span id="Snowflake-224"><a href="#Snowflake-224"><span class="linenos">224</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">"ARRAY_CAT"</span><span class="p">),</span> -</span><span id="Snowflake-225"><a href="#Snowflake-225"><span class="linenos">225</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DATEADD"</span><span class="p">),</span> -</span><span id="Snowflake-226"><a href="#Snowflake-226"><span class="linenos">226</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="Snowflake-227"><a href="#Snowflake-227"><span class="linenos">227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> -</span><span id="Snowflake-228"><a href="#Snowflake-228"><span class="linenos">228</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"IFF"</span><span class="p">),</span> -</span><span id="Snowflake-229"><a href="#Snowflake-229"><span class="linenos">229</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> -</span><span id="Snowflake-230"><a href="#Snowflake-230"><span class="linenos">230</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> -</span><span id="Snowflake-231"><a href="#Snowflake-231"><span class="linenos">231</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Snowflake-232"><a href="#Snowflake-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DECODE"</span><span class="p">),</span> -</span><span id="Snowflake-233"><a href="#Snowflake-233"><span class="linenos">233</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="Snowflake-234"><a href="#Snowflake-234"><span class="linenos">234</span></a> <span class="s2">"POSITION"</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">"substr"</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">"position"</span><span class="p">)</span> -</span><span id="Snowflake-235"><a href="#Snowflake-235"><span class="linenos">235</span></a> <span class="p">),</span> -</span><span id="Snowflake-236"><a href="#Snowflake-236"><span class="linenos">236</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Snowflake-237"><a href="#Snowflake-237"><span class="linenos">237</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="Snowflake-238"><a href="#Snowflake-238"><span class="linenos">238</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</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">"EXTRACT(epoch_second FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Snowflake-239"><a href="#Snowflake-239"><span class="linenos">239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TRIM"</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="Snowflake-240"><a href="#Snowflake-240"><span class="linenos">240</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="Snowflake-241"><a href="#Snowflake-241"><span class="linenos">241</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> -</span><span id="Snowflake-242"><a href="#Snowflake-242"><span class="linenos">242</span></a> <span class="p">}</span> -</span><span id="Snowflake-243"><a href="#Snowflake-243"><span class="linenos">243</span></a> -</span><span id="Snowflake-244"><a href="#Snowflake-244"><span class="linenos">244</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-245"><a href="#Snowflake-245"><span class="linenos">245</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 class="c1"># type: ignore</span> -</span><span id="Snowflake-246"><a href="#Snowflake-246"><span class="linenos">246</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">,</span> +</span><span id="Snowflake-217"><a href="#Snowflake-217"><span class="linenos">217</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-218"><a href="#Snowflake-218"><span class="linenos">218</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> +</span><span id="Snowflake-219"><a href="#Snowflake-219"><span class="linenos">219</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> +</span><span id="Snowflake-220"><a href="#Snowflake-220"><span class="linenos">220</span></a> <span class="p">}</span> +</span><span id="Snowflake-221"><a href="#Snowflake-221"><span class="linenos">221</span></a> +</span><span id="Snowflake-222"><a href="#Snowflake-222"><span class="linenos">222</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="Snowflake-223"><a href="#Snowflake-223"><span class="linenos">223</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> +</span><span id="Snowflake-224"><a href="#Snowflake-224"><span class="linenos">224</span></a> +</span><span id="Snowflake-225"><a href="#Snowflake-225"><span class="linenos">225</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-226"><a href="#Snowflake-226"><span class="linenos">226</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 class="c1"># type: ignore</span> +</span><span id="Snowflake-227"><a href="#Snowflake-227"><span class="linenos">227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="n">inline_array_sql</span><span class="p">,</span> +</span><span id="Snowflake-228"><a href="#Snowflake-228"><span class="linenos">228</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">"ARRAY_CAT"</span><span class="p">),</span> +</span><span id="Snowflake-229"><a href="#Snowflake-229"><span class="linenos">229</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DATEADD"</span><span class="p">),</span> +</span><span id="Snowflake-230"><a href="#Snowflake-230"><span class="linenos">230</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="Snowflake-231"><a href="#Snowflake-231"><span class="linenos">231</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> +</span><span id="Snowflake-232"><a href="#Snowflake-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"IFF"</span><span class="p">),</span> +</span><span id="Snowflake-233"><a href="#Snowflake-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> +</span><span id="Snowflake-234"><a href="#Snowflake-234"><span class="linenos">234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> +</span><span id="Snowflake-235"><a href="#Snowflake-235"><span class="linenos">235</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Snowflake-236"><a href="#Snowflake-236"><span class="linenos">236</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DECODE"</span><span class="p">),</span> +</span><span id="Snowflake-237"><a href="#Snowflake-237"><span class="linenos">237</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="Snowflake-238"><a href="#Snowflake-238"><span class="linenos">238</span></a> <span class="s2">"POSITION"</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">"substr"</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">"position"</span><span class="p">)</span> +</span><span id="Snowflake-239"><a href="#Snowflake-239"><span class="linenos">239</span></a> <span class="p">),</span> +</span><span id="Snowflake-240"><a href="#Snowflake-240"><span class="linenos">240</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Snowflake-241"><a href="#Snowflake-241"><span class="linenos">241</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="Snowflake-242"><a href="#Snowflake-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</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">"EXTRACT(epoch_second FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Snowflake-243"><a href="#Snowflake-243"><span class="linenos">243</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TRIM"</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="Snowflake-244"><a href="#Snowflake-244"><span class="linenos">244</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 class="s2">"snowflake"</span><span class="p">),</span> +</span><span id="Snowflake-245"><a href="#Snowflake-245"><span class="linenos">245</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="Snowflake-246"><a href="#Snowflake-246"><span class="linenos">246</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> </span><span id="Snowflake-247"><a href="#Snowflake-247"><span class="linenos">247</span></a> <span class="p">}</span> </span><span id="Snowflake-248"><a href="#Snowflake-248"><span class="linenos">248</span></a> -</span><span id="Snowflake-249"><a href="#Snowflake-249"><span class="linenos">249</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake-250"><a href="#Snowflake-250"><span class="linenos">250</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCLUDE"</span><span class="p">,</span> -</span><span id="Snowflake-251"><a href="#Snowflake-251"><span class="linenos">251</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"RENAME"</span><span class="p">,</span> +</span><span id="Snowflake-249"><a href="#Snowflake-249"><span class="linenos">249</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-250"><a href="#Snowflake-250"><span class="linenos">250</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 class="c1"># type: ignore</span> +</span><span id="Snowflake-251"><a href="#Snowflake-251"><span class="linenos">251</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">,</span> </span><span id="Snowflake-252"><a href="#Snowflake-252"><span class="linenos">252</span></a> <span class="p">}</span> </span><span id="Snowflake-253"><a href="#Snowflake-253"><span class="linenos">253</span></a> -</span><span id="Snowflake-254"><a href="#Snowflake-254"><span class="linenos">254</span></a> <span class="k">def</span> <span class="nf">ilikeany_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">ILikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake-255"><a href="#Snowflake-255"><span class="linenos">255</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE ANY"</span><span class="p">)</span> -</span><span id="Snowflake-256"><a href="#Snowflake-256"><span class="linenos">256</span></a> -</span><span id="Snowflake-257"><a href="#Snowflake-257"><span class="linenos">257</span></a> <span class="k">def</span> <span class="nf">likeany_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">LikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake-258"><a href="#Snowflake-258"><span class="linenos">258</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE ANY"</span><span class="p">)</span> -</span><span id="Snowflake-259"><a href="#Snowflake-259"><span class="linenos">259</span></a> -</span><span id="Snowflake-260"><a href="#Snowflake-260"><span class="linenos">260</span></a> <span class="k">def</span> <span class="nf">except_op</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="Snowflake-261"><a href="#Snowflake-261"><span class="linenos">261</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="Snowflake-262"><a href="#Snowflake-262"><span class="linenos">262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT with All is not supported in Snowflake"</span><span class="p">)</span> -</span><span id="Snowflake-263"><a href="#Snowflake-263"><span class="linenos">263</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Snowflake-264"><a href="#Snowflake-264"><span class="linenos">264</span></a> -</span><span id="Snowflake-265"><a href="#Snowflake-265"><span class="linenos">265</span></a> <span class="k">def</span> <span class="nf">intersect_op</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="Snowflake-266"><a href="#Snowflake-266"><span class="linenos">266</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="Snowflake-267"><a href="#Snowflake-267"><span class="linenos">267</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT with All is not supported in Snowflake"</span><span class="p">)</span> -</span><span id="Snowflake-268"><a href="#Snowflake-268"><span class="linenos">268</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake-254"><a href="#Snowflake-254"><span class="linenos">254</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-255"><a href="#Snowflake-255"><span class="linenos">255</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCLUDE"</span><span class="p">,</span> +</span><span id="Snowflake-256"><a href="#Snowflake-256"><span class="linenos">256</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"RENAME"</span><span class="p">,</span> +</span><span id="Snowflake-257"><a href="#Snowflake-257"><span class="linenos">257</span></a> <span class="p">}</span> +</span><span id="Snowflake-258"><a href="#Snowflake-258"><span class="linenos">258</span></a> +</span><span id="Snowflake-259"><a href="#Snowflake-259"><span class="linenos">259</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake-260"><a href="#Snowflake-260"><span class="linenos">260</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 class="c1"># type: ignore</span> +</span><span id="Snowflake-261"><a href="#Snowflake-261"><span class="linenos">261</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</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="Snowflake-262"><a href="#Snowflake-262"><span class="linenos">262</span></a> <span class="p">}</span> +</span><span id="Snowflake-263"><a href="#Snowflake-263"><span class="linenos">263</span></a> +</span><span id="Snowflake-264"><a href="#Snowflake-264"><span class="linenos">264</span></a> <span class="k">def</span> <span class="nf">ilikeany_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">ILikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake-265"><a href="#Snowflake-265"><span class="linenos">265</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE ANY"</span><span class="p">)</span> +</span><span id="Snowflake-266"><a href="#Snowflake-266"><span class="linenos">266</span></a> +</span><span id="Snowflake-267"><a href="#Snowflake-267"><span class="linenos">267</span></a> <span class="k">def</span> <span class="nf">likeany_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">LikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake-268"><a href="#Snowflake-268"><span class="linenos">268</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE ANY"</span><span class="p">)</span> </span><span id="Snowflake-269"><a href="#Snowflake-269"><span class="linenos">269</span></a> -</span><span id="Snowflake-270"><a href="#Snowflake-270"><span class="linenos">270</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake-271"><a href="#Snowflake-271"><span class="linenos">271</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.</span> -</span><span id="Snowflake-272"><a href="#Snowflake-272"><span class="linenos">272</span></a> -</span><span id="Snowflake-273"><a href="#Snowflake-273"><span class="linenos">273</span></a><span class="sd"> We also want to make sure that after we find matches where we need to unquote a column that we prevent users</span> -</span><span id="Snowflake-274"><a href="#Snowflake-274"><span class="linenos">274</span></a><span class="sd"> from adding quotes to the column by using the `identify` argument when generating the SQL.</span> -</span><span id="Snowflake-275"><a href="#Snowflake-275"><span class="linenos">275</span></a><span class="sd"> """</span> -</span><span id="Snowflake-276"><a href="#Snowflake-276"><span class="linenos">276</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">"alias"</span><span class="p">)</span> -</span><span id="Snowflake-277"><a href="#Snowflake-277"><span class="linenos">277</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> -</span><span id="Snowflake-278"><a href="#Snowflake-278"><span class="linenos">278</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="Snowflake-279"><a href="#Snowflake-279"><span class="linenos">279</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> -</span><span id="Snowflake-280"><a href="#Snowflake-280"><span class="linenos">280</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> -</span><span id="Snowflake-281"><a href="#Snowflake-281"><span class="linenos">281</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">TableAlias</span><span class="p">)</span> -</span><span id="Snowflake-282"><a href="#Snowflake-282"><span class="linenos">282</span></a> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">==</span> <span class="s2">"columns"</span> -</span><span id="Snowflake-283"><a href="#Snowflake-283"><span class="linenos">283</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> -</span><span id="Snowflake-284"><a href="#Snowflake-284"><span class="linenos">284</span></a> <span class="p">)</span> -</span><span id="Snowflake-285"><a href="#Snowflake-285"><span class="linenos">285</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="Snowflake-286"><a href="#Snowflake-286"><span class="linenos">286</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Snowflake-287"><a href="#Snowflake-287"><span class="linenos">287</span></a> -</span><span id="Snowflake-288"><a href="#Snowflake-288"><span class="linenos">288</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake-289"><a href="#Snowflake-289"><span class="linenos">289</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also</span> -</span><span id="Snowflake-290"><a href="#Snowflake-290"><span class="linenos">290</span></a><span class="sd"> that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need</span> -</span><span id="Snowflake-291"><a href="#Snowflake-291"><span class="linenos">291</span></a><span class="sd"> to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when</span> -</span><span id="Snowflake-292"><a href="#Snowflake-292"><span class="linenos">292</span></a><span class="sd"> generating the SQL.</span> -</span><span id="Snowflake-293"><a href="#Snowflake-293"><span class="linenos">293</span></a> -</span><span id="Snowflake-294"><a href="#Snowflake-294"><span class="linenos">294</span></a><span class="sd"> Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the</span> -</span><span id="Snowflake-295"><a href="#Snowflake-295"><span class="linenos">295</span></a><span class="sd"> expression. This might not be true in a case where the same column name can be sourced from another table that can</span> -</span><span id="Snowflake-296"><a href="#Snowflake-296"><span class="linenos">296</span></a><span class="sd"> properly quote but should be true in most cases.</span> -</span><span id="Snowflake-297"><a href="#Snowflake-297"><span class="linenos">297</span></a><span class="sd"> """</span> -</span><span id="Snowflake-298"><a href="#Snowflake-298"><span class="linenos">298</span></a> <span class="n">values_expressions</span> <span class="o">=</span> <span class="n">expression</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">Values</span><span class="p">)</span> -</span><span id="Snowflake-299"><a href="#Snowflake-299"><span class="linenos">299</span></a> <span class="n">values_identifiers</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span> -</span><span id="Snowflake-300"><a href="#Snowflake-300"><span class="linenos">300</span></a> <span class="n">flatten</span><span class="p">(</span> -</span><span id="Snowflake-301"><a href="#Snowflake-301"><span class="linenos">301</span></a> <span class="n">v</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">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">())</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">"columns"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="Snowflake-302"><a href="#Snowflake-302"><span class="linenos">302</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values_expressions</span> -</span><span id="Snowflake-303"><a href="#Snowflake-303"><span class="linenos">303</span></a> <span class="p">)</span> -</span><span id="Snowflake-304"><a href="#Snowflake-304"><span class="linenos">304</span></a> <span class="p">)</span> -</span><span id="Snowflake-305"><a href="#Snowflake-305"><span class="linenos">305</span></a> <span class="k">if</span> <span class="n">values_identifiers</span><span class="p">:</span> -</span><span id="Snowflake-306"><a href="#Snowflake-306"><span class="linenos">306</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="Snowflake-307"><a href="#Snowflake-307"><span class="linenos">307</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> -</span><span id="Snowflake-308"><a href="#Snowflake-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">values_identifiers</span> -</span><span id="Snowflake-309"><a href="#Snowflake-309"><span class="linenos">309</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> -</span><span id="Snowflake-310"><a href="#Snowflake-310"><span class="linenos">310</span></a> <span class="p">)</span> -</span><span id="Snowflake-311"><a href="#Snowflake-311"><span class="linenos">311</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="Snowflake-312"><a href="#Snowflake-312"><span class="linenos">312</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Snowflake-313"><a href="#Snowflake-313"><span class="linenos">313</span></a> -</span><span id="Snowflake-314"><a href="#Snowflake-314"><span class="linenos">314</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake-315"><a href="#Snowflake-315"><span class="linenos">315</span></a> <span class="c1"># Default to table if kind is unknown</span> -</span><span id="Snowflake-316"><a href="#Snowflake-316"><span class="linenos">316</span></a> <span class="n">kind_value</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">"kind"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"TABLE"</span> -</span><span id="Snowflake-317"><a href="#Snowflake-317"><span class="linenos">317</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind_value</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind_value</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Snowflake-318"><a href="#Snowflake-318"><span class="linenos">318</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Snowflake-319"><a href="#Snowflake-319"><span class="linenos">319</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Snowflake-320"><a href="#Snowflake-320"><span class="linenos">320</span></a> -</span><span id="Snowflake-321"><a href="#Snowflake-321"><span class="linenos">321</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> -</span><span id="Snowflake-322"><a href="#Snowflake-322"><span class="linenos">322</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">GeneratedAsIdentityColumnConstraint</span> -</span><span id="Snowflake-323"><a href="#Snowflake-323"><span class="linenos">323</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake-324"><a href="#Snowflake-324"><span class="linenos">324</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> -</span><span id="Snowflake-325"><a href="#Snowflake-325"><span class="linenos">325</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" START </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Snowflake-326"><a href="#Snowflake-326"><span class="linenos">326</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> -</span><span id="Snowflake-327"><a href="#Snowflake-327"><span class="linenos">327</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Snowflake-328"><a href="#Snowflake-328"><span class="linenos">328</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"AUTOINCREMENT</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Snowflake-270"><a href="#Snowflake-270"><span class="linenos">270</span></a> <span class="k">def</span> <span class="nf">except_op</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="Snowflake-271"><a href="#Snowflake-271"><span class="linenos">271</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="Snowflake-272"><a href="#Snowflake-272"><span class="linenos">272</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT with All is not supported in Snowflake"</span><span class="p">)</span> +</span><span id="Snowflake-273"><a href="#Snowflake-273"><span class="linenos">273</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake-274"><a href="#Snowflake-274"><span class="linenos">274</span></a> +</span><span id="Snowflake-275"><a href="#Snowflake-275"><span class="linenos">275</span></a> <span class="k">def</span> <span class="nf">intersect_op</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="Snowflake-276"><a href="#Snowflake-276"><span class="linenos">276</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="Snowflake-277"><a href="#Snowflake-277"><span class="linenos">277</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT with All is not supported in Snowflake"</span><span class="p">)</span> +</span><span id="Snowflake-278"><a href="#Snowflake-278"><span class="linenos">278</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake-279"><a href="#Snowflake-279"><span class="linenos">279</span></a> +</span><span id="Snowflake-280"><a href="#Snowflake-280"><span class="linenos">280</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake-281"><a href="#Snowflake-281"><span class="linenos">281</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.</span> +</span><span id="Snowflake-282"><a href="#Snowflake-282"><span class="linenos">282</span></a> +</span><span id="Snowflake-283"><a href="#Snowflake-283"><span class="linenos">283</span></a><span class="sd"> We also want to make sure that after we find matches where we need to unquote a column that we prevent users</span> +</span><span id="Snowflake-284"><a href="#Snowflake-284"><span class="linenos">284</span></a><span class="sd"> from adding quotes to the column by using the `identify` argument when generating the SQL.</span> +</span><span id="Snowflake-285"><a href="#Snowflake-285"><span class="linenos">285</span></a><span class="sd"> """</span> +</span><span id="Snowflake-286"><a href="#Snowflake-286"><span class="linenos">286</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">"alias"</span><span class="p">)</span> +</span><span id="Snowflake-287"><a href="#Snowflake-287"><span class="linenos">287</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> +</span><span id="Snowflake-288"><a href="#Snowflake-288"><span class="linenos">288</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="Snowflake-289"><a href="#Snowflake-289"><span class="linenos">289</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> +</span><span id="Snowflake-290"><a href="#Snowflake-290"><span class="linenos">290</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> +</span><span id="Snowflake-291"><a href="#Snowflake-291"><span class="linenos">291</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">TableAlias</span><span class="p">)</span> +</span><span id="Snowflake-292"><a href="#Snowflake-292"><span class="linenos">292</span></a> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">==</span> <span class="s2">"columns"</span> +</span><span id="Snowflake-293"><a href="#Snowflake-293"><span class="linenos">293</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> +</span><span id="Snowflake-294"><a href="#Snowflake-294"><span class="linenos">294</span></a> <span class="p">)</span> +</span><span id="Snowflake-295"><a href="#Snowflake-295"><span class="linenos">295</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="Snowflake-296"><a href="#Snowflake-296"><span class="linenos">296</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake-297"><a href="#Snowflake-297"><span class="linenos">297</span></a> +</span><span id="Snowflake-298"><a href="#Snowflake-298"><span class="linenos">298</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake-299"><a href="#Snowflake-299"><span class="linenos">299</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also</span> +</span><span id="Snowflake-300"><a href="#Snowflake-300"><span class="linenos">300</span></a><span class="sd"> that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need</span> +</span><span id="Snowflake-301"><a href="#Snowflake-301"><span class="linenos">301</span></a><span class="sd"> to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when</span> +</span><span id="Snowflake-302"><a href="#Snowflake-302"><span class="linenos">302</span></a><span class="sd"> generating the SQL.</span> +</span><span id="Snowflake-303"><a href="#Snowflake-303"><span class="linenos">303</span></a> +</span><span id="Snowflake-304"><a href="#Snowflake-304"><span class="linenos">304</span></a><span class="sd"> Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the</span> +</span><span id="Snowflake-305"><a href="#Snowflake-305"><span class="linenos">305</span></a><span class="sd"> expression. This might not be true in a case where the same column name can be sourced from another table that can</span> +</span><span id="Snowflake-306"><a href="#Snowflake-306"><span class="linenos">306</span></a><span class="sd"> properly quote but should be true in most cases.</span> +</span><span id="Snowflake-307"><a href="#Snowflake-307"><span class="linenos">307</span></a><span class="sd"> """</span> +</span><span id="Snowflake-308"><a href="#Snowflake-308"><span class="linenos">308</span></a> <span class="n">values_expressions</span> <span class="o">=</span> <span class="n">expression</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">Values</span><span class="p">)</span> +</span><span id="Snowflake-309"><a href="#Snowflake-309"><span class="linenos">309</span></a> <span class="n">values_identifiers</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span> +</span><span id="Snowflake-310"><a href="#Snowflake-310"><span class="linenos">310</span></a> <span class="n">flatten</span><span class="p">(</span> +</span><span id="Snowflake-311"><a href="#Snowflake-311"><span class="linenos">311</span></a> <span class="n">v</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">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">())</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">"columns"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="Snowflake-312"><a href="#Snowflake-312"><span class="linenos">312</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values_expressions</span> +</span><span id="Snowflake-313"><a href="#Snowflake-313"><span class="linenos">313</span></a> <span class="p">)</span> +</span><span id="Snowflake-314"><a href="#Snowflake-314"><span class="linenos">314</span></a> <span class="p">)</span> +</span><span id="Snowflake-315"><a href="#Snowflake-315"><span class="linenos">315</span></a> <span class="k">if</span> <span class="n">values_identifiers</span><span class="p">:</span> +</span><span id="Snowflake-316"><a href="#Snowflake-316"><span class="linenos">316</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="Snowflake-317"><a href="#Snowflake-317"><span class="linenos">317</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> +</span><span id="Snowflake-318"><a href="#Snowflake-318"><span class="linenos">318</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">values_identifiers</span> +</span><span id="Snowflake-319"><a href="#Snowflake-319"><span class="linenos">319</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> +</span><span id="Snowflake-320"><a href="#Snowflake-320"><span class="linenos">320</span></a> <span class="p">)</span> +</span><span id="Snowflake-321"><a href="#Snowflake-321"><span class="linenos">321</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="Snowflake-322"><a href="#Snowflake-322"><span class="linenos">322</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake-323"><a href="#Snowflake-323"><span class="linenos">323</span></a> +</span><span id="Snowflake-324"><a href="#Snowflake-324"><span class="linenos">324</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake-325"><a href="#Snowflake-325"><span class="linenos">325</span></a> <span class="c1"># Default to table if kind is unknown</span> +</span><span id="Snowflake-326"><a href="#Snowflake-326"><span class="linenos">326</span></a> <span class="n">kind_value</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">"kind"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"TABLE"</span> +</span><span id="Snowflake-327"><a href="#Snowflake-327"><span class="linenos">327</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind_value</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind_value</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Snowflake-328"><a href="#Snowflake-328"><span class="linenos">328</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Snowflake-329"><a href="#Snowflake-329"><span class="linenos">329</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Snowflake-330"><a href="#Snowflake-330"><span class="linenos">330</span></a> +</span><span id="Snowflake-331"><a href="#Snowflake-331"><span class="linenos">331</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> +</span><span id="Snowflake-332"><a href="#Snowflake-332"><span class="linenos">332</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">GeneratedAsIdentityColumnConstraint</span> +</span><span id="Snowflake-333"><a href="#Snowflake-333"><span class="linenos">333</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake-334"><a href="#Snowflake-334"><span class="linenos">334</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> +</span><span id="Snowflake-335"><a href="#Snowflake-335"><span class="linenos">335</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" START </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Snowflake-336"><a href="#Snowflake-336"><span class="linenos">336</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> +</span><span id="Snowflake-337"><a href="#Snowflake-337"><span class="linenos">337</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Snowflake-338"><a href="#Snowflake-338"><span class="linenos">338</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"AUTOINCREMENT</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> - <div id="Snowflake.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Snowflake</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Snowflake.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -705,48 +709,52 @@ </div> <a class="headerlink" href="#Snowflake.Parser"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Parser-149"><a href="#Snowflake.Parser-149"><span class="linenos">149</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="Snowflake.Parser-150"><a href="#Snowflake.Parser-150"><span class="linenos">150</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Parser-151"><a href="#Snowflake.Parser-151"><span class="linenos">151</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="Snowflake.Parser-152"><a href="#Snowflake.Parser-152"><span class="linenos">152</span></a> <span class="s2">"ARRAYAGG"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayAgg</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake.Parser-153"><a href="#Snowflake.Parser-153"><span class="linenos">153</span></a> <span class="s2">"IFF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake.Parser-154"><a href="#Snowflake.Parser-154"><span class="linenos">154</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_snowflake_to_timestamp</span><span class="p">,</span> -</span><span id="Snowflake.Parser-155"><a href="#Snowflake.Parser-155"><span class="linenos">155</span></a> <span class="s2">"ARRAY_CONSTRUCT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake.Parser-156"><a href="#Snowflake.Parser-156"><span class="linenos">156</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake.Parser-157"><a href="#Snowflake.Parser-157"><span class="linenos">157</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Snowflake.Parser-158"><a href="#Snowflake.Parser-158"><span class="linenos">158</span></a> <span class="s2">"OBJECT_CONSTRUCT"</span><span class="p">:</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_var_map</span><span class="p">,</span> -</span><span id="Snowflake.Parser-159"><a href="#Snowflake.Parser-159"><span class="linenos">159</span></a> <span class="p">}</span> -</span><span id="Snowflake.Parser-160"><a href="#Snowflake.Parser-160"><span class="linenos">160</span></a> -</span><span id="Snowflake.Parser-161"><a href="#Snowflake.Parser-161"><span class="linenos">161</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Parser-162"><a href="#Snowflake.Parser-162"><span class="linenos">162</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> -</span><span id="Snowflake.Parser-163"><a href="#Snowflake.Parser-163"><span class="linenos">163</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="n">_parse_date_part</span><span class="p">,</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Parser-150"><a href="#Snowflake.Parser-150"><span class="linenos">150</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="Snowflake.Parser-151"><a href="#Snowflake.Parser-151"><span class="linenos">151</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Parser-152"><a href="#Snowflake.Parser-152"><span class="linenos">152</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="Snowflake.Parser-153"><a href="#Snowflake.Parser-153"><span class="linenos">153</span></a> <span class="s2">"ARRAYAGG"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayAgg</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake.Parser-154"><a href="#Snowflake.Parser-154"><span class="linenos">154</span></a> <span class="s2">"DATE_TRUNC"</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">DateTrunc</span><span class="p">(</span> +</span><span id="Snowflake.Parser-155"><a href="#Snowflake.Parser-155"><span class="linenos">155</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">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="o">.</span><span class="n">name</span><span class="p">),</span> <span class="c1"># type: ignore</span> +</span><span id="Snowflake.Parser-156"><a href="#Snowflake.Parser-156"><span class="linenos">156</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">1</span><span class="p">),</span> +</span><span id="Snowflake.Parser-157"><a href="#Snowflake.Parser-157"><span class="linenos">157</span></a> <span class="p">),</span> +</span><span id="Snowflake.Parser-158"><a href="#Snowflake.Parser-158"><span class="linenos">158</span></a> <span class="s2">"IFF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake.Parser-159"><a href="#Snowflake.Parser-159"><span class="linenos">159</span></a> <span class="s2">"TO_TIMESTAMP"</span><span class="p">:</span> <span class="n">_snowflake_to_timestamp</span><span class="p">,</span> +</span><span id="Snowflake.Parser-160"><a href="#Snowflake.Parser-160"><span class="linenos">160</span></a> <span class="s2">"ARRAY_CONSTRUCT"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake.Parser-161"><a href="#Snowflake.Parser-161"><span class="linenos">161</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake.Parser-162"><a href="#Snowflake.Parser-162"><span class="linenos">162</span></a> <span class="s2">"DECODE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Snowflake.Parser-163"><a href="#Snowflake.Parser-163"><span class="linenos">163</span></a> <span class="s2">"OBJECT_CONSTRUCT"</span><span class="p">:</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_var_map</span><span class="p">,</span> </span><span id="Snowflake.Parser-164"><a href="#Snowflake.Parser-164"><span class="linenos">164</span></a> <span class="p">}</span> -</span><span id="Snowflake.Parser-165"><a href="#Snowflake.Parser-165"><span class="linenos">165</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> -</span><span id="Snowflake.Parser-166"><a href="#Snowflake.Parser-166"><span class="linenos">166</span></a> -</span><span id="Snowflake.Parser-167"><a href="#Snowflake.Parser-167"><span class="linenos">167</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Parser-168"><a href="#Snowflake.Parser-168"><span class="linenos">168</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">,</span> -</span><span id="Snowflake.Parser-169"><a href="#Snowflake.Parser-169"><span class="linenos">169</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="Snowflake.Parser-170"><a href="#Snowflake.Parser-170"><span class="linenos">170</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Snowflake.Parser-171"><a href="#Snowflake.Parser-171"><span class="linenos">171</span></a> <span class="p">}</span> -</span><span id="Snowflake.Parser-172"><a href="#Snowflake.Parser-172"><span class="linenos">172</span></a> -</span><span id="Snowflake.Parser-173"><a href="#Snowflake.Parser-173"><span class="linenos">173</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Parser-174"><a href="#Snowflake.Parser-174"><span class="linenos">174</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">COLUMN_OPERATORS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Snowflake.Parser-175"><a href="#Snowflake.Parser-175"><span class="linenos">175</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Snowflake.Parser-176"><a href="#Snowflake.Parser-176"><span class="linenos">176</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> -</span><span id="Snowflake.Parser-177"><a href="#Snowflake.Parser-177"><span class="linenos">177</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Snowflake.Parser-178"><a href="#Snowflake.Parser-178"><span class="linenos">178</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">path</span><span class="p">],</span> -</span><span id="Snowflake.Parser-179"><a href="#Snowflake.Parser-179"><span class="linenos">179</span></a> <span class="p">),</span> -</span><span id="Snowflake.Parser-180"><a href="#Snowflake.Parser-180"><span class="linenos">180</span></a> <span class="p">}</span> -</span><span id="Snowflake.Parser-181"><a href="#Snowflake.Parser-181"><span class="linenos">181</span></a> -</span><span id="Snowflake.Parser-182"><a href="#Snowflake.Parser-182"><span class="linenos">182</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Parser-183"><a href="#Snowflake.Parser-183"><span class="linenos">183</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Snowflake.Parser-184"><a href="#Snowflake.Parser-184"><span class="linenos">184</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="Snowflake.Parser-185"><a href="#Snowflake.Parser-185"><span class="linenos">185</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Snowflake.Parser-186"><a href="#Snowflake.Parser-186"><span class="linenos">186</span></a> <span class="p">),</span> -</span><span id="Snowflake.Parser-187"><a href="#Snowflake.Parser-187"><span class="linenos">187</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="Snowflake.Parser-188"><a href="#Snowflake.Parser-188"><span class="linenos">188</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Snowflake.Parser-189"><a href="#Snowflake.Parser-189"><span class="linenos">189</span></a> <span class="p">),</span> -</span><span id="Snowflake.Parser-190"><a href="#Snowflake.Parser-190"><span class="linenos">190</span></a> <span class="p">}</span> +</span><span id="Snowflake.Parser-165"><a href="#Snowflake.Parser-165"><span class="linenos">165</span></a> +</span><span id="Snowflake.Parser-166"><a href="#Snowflake.Parser-166"><span class="linenos">166</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Parser-167"><a href="#Snowflake.Parser-167"><span class="linenos">167</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> +</span><span id="Snowflake.Parser-168"><a href="#Snowflake.Parser-168"><span class="linenos">168</span></a> <span class="s2">"DATE_PART"</span><span class="p">:</span> <span class="n">_parse_date_part</span><span class="p">,</span> +</span><span id="Snowflake.Parser-169"><a href="#Snowflake.Parser-169"><span class="linenos">169</span></a> <span class="p">}</span> +</span><span id="Snowflake.Parser-170"><a href="#Snowflake.Parser-170"><span class="linenos">170</span></a> <span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s2">"TRIM"</span><span class="p">)</span> +</span><span id="Snowflake.Parser-171"><a href="#Snowflake.Parser-171"><span class="linenos">171</span></a> +</span><span id="Snowflake.Parser-172"><a href="#Snowflake.Parser-172"><span class="linenos">172</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Parser-173"><a href="#Snowflake.Parser-173"><span class="linenos">173</span></a> <span class="o">*</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">,</span> +</span><span id="Snowflake.Parser-174"><a href="#Snowflake.Parser-174"><span class="linenos">174</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="Snowflake.Parser-175"><a href="#Snowflake.Parser-175"><span class="linenos">175</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Snowflake.Parser-176"><a href="#Snowflake.Parser-176"><span class="linenos">176</span></a> <span class="p">}</span> +</span><span id="Snowflake.Parser-177"><a href="#Snowflake.Parser-177"><span class="linenos">177</span></a> +</span><span id="Snowflake.Parser-178"><a href="#Snowflake.Parser-178"><span class="linenos">178</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Parser-179"><a href="#Snowflake.Parser-179"><span class="linenos">179</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">COLUMN_OPERATORS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Snowflake.Parser-180"><a href="#Snowflake.Parser-180"><span class="linenos">180</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Snowflake.Parser-181"><a href="#Snowflake.Parser-181"><span class="linenos">181</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Bracket</span><span class="p">,</span> +</span><span id="Snowflake.Parser-182"><a href="#Snowflake.Parser-182"><span class="linenos">182</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Snowflake.Parser-183"><a href="#Snowflake.Parser-183"><span class="linenos">183</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">path</span><span class="p">],</span> +</span><span id="Snowflake.Parser-184"><a href="#Snowflake.Parser-184"><span class="linenos">184</span></a> <span class="p">),</span> +</span><span id="Snowflake.Parser-185"><a href="#Snowflake.Parser-185"><span class="linenos">185</span></a> <span class="p">}</span> +</span><span id="Snowflake.Parser-186"><a href="#Snowflake.Parser-186"><span class="linenos">186</span></a> +</span><span id="Snowflake.Parser-187"><a href="#Snowflake.Parser-187"><span class="linenos">187</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Parser-188"><a href="#Snowflake.Parser-188"><span class="linenos">188</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Snowflake.Parser-189"><a href="#Snowflake.Parser-189"><span class="linenos">189</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="Snowflake.Parser-190"><a href="#Snowflake.Parser-190"><span class="linenos">190</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Snowflake.Parser-191"><a href="#Snowflake.Parser-191"><span class="linenos">191</span></a> <span class="p">),</span> +</span><span id="Snowflake.Parser-192"><a href="#Snowflake.Parser-192"><span class="linenos">192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="Snowflake.Parser-193"><a href="#Snowflake.Parser-193"><span class="linenos">193</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILikeAny</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Snowflake.Parser-194"><a href="#Snowflake.Parser-194"><span class="linenos">194</span></a> <span class="p">),</span> +</span><span id="Snowflake.Parser-195"><a href="#Snowflake.Parser-195"><span class="linenos">195</span></a> <span class="p">}</span> </span></pre></div> @@ -803,30 +811,30 @@ Default: "nulls_are_small"</li> </div> <a class="headerlink" href="#Snowflake.Tokenizer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Tokenizer-192"><a href="#Snowflake.Tokenizer-192"><span class="linenos">192</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="Snowflake.Tokenizer-193"><a href="#Snowflake.Tokenizer-193"><span class="linenos">193</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s2">"$$"</span><span class="p">]</span> -</span><span id="Snowflake.Tokenizer-194"><a href="#Snowflake.Tokenizer-194"><span class="linenos">194</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">]</span> -</span><span id="Snowflake.Tokenizer-195"><a href="#Snowflake.Tokenizer-195"><span class="linenos">195</span></a> -</span><span id="Snowflake.Tokenizer-196"><a href="#Snowflake.Tokenizer-196"><span class="linenos">196</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Tokenizer-197"><a href="#Snowflake.Tokenizer-197"><span class="linenos">197</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="Snowflake.Tokenizer-198"><a href="#Snowflake.Tokenizer-198"><span class="linenos">198</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-199"><a href="#Snowflake.Tokenizer-199"><span class="linenos">199</span></a> <span class="s2">"ILIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-200"><a href="#Snowflake.Tokenizer-200"><span class="linenos">200</span></a> <span class="s2">"LIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-201"><a href="#Snowflake.Tokenizer-201"><span class="linenos">201</span></a> <span class="s2">"MATCH_RECOGNIZE"</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="Snowflake.Tokenizer-202"><a href="#Snowflake.Tokenizer-202"><span class="linenos">202</span></a> <span class="s2">"PUT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-203"><a href="#Snowflake.Tokenizer-203"><span class="linenos">203</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-204"><a href="#Snowflake.Tokenizer-204"><span class="linenos">204</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-205"><a href="#Snowflake.Tokenizer-205"><span class="linenos">205</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-206"><a href="#Snowflake.Tokenizer-206"><span class="linenos">206</span></a> <span class="s2">"TIMESTAMP_TZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-207"><a href="#Snowflake.Tokenizer-207"><span class="linenos">207</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-208"><a href="#Snowflake.Tokenizer-208"><span class="linenos">208</span></a> <span class="s2">"MINUS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-209"><a href="#Snowflake.Tokenizer-209"><span class="linenos">209</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-210"><a href="#Snowflake.Tokenizer-210"><span class="linenos">210</span></a> <span class="p">}</span> -</span><span id="Snowflake.Tokenizer-211"><a href="#Snowflake.Tokenizer-211"><span class="linenos">211</span></a> -</span><span id="Snowflake.Tokenizer-212"><a href="#Snowflake.Tokenizer-212"><span class="linenos">212</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Tokenizer-213"><a href="#Snowflake.Tokenizer-213"><span class="linenos">213</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> -</span><span id="Snowflake.Tokenizer-214"><a href="#Snowflake.Tokenizer-214"><span class="linenos">214</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Tokenizer-197"><a href="#Snowflake.Tokenizer-197"><span class="linenos">197</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="Snowflake.Tokenizer-198"><a href="#Snowflake.Tokenizer-198"><span class="linenos">198</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">,</span> <span class="s2">"$$"</span><span class="p">]</span> +</span><span id="Snowflake.Tokenizer-199"><a href="#Snowflake.Tokenizer-199"><span class="linenos">199</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">]</span> +</span><span id="Snowflake.Tokenizer-200"><a href="#Snowflake.Tokenizer-200"><span class="linenos">200</span></a> +</span><span id="Snowflake.Tokenizer-201"><a href="#Snowflake.Tokenizer-201"><span class="linenos">201</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Tokenizer-202"><a href="#Snowflake.Tokenizer-202"><span class="linenos">202</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="Snowflake.Tokenizer-203"><a href="#Snowflake.Tokenizer-203"><span class="linenos">203</span></a> <span class="s2">"EXCLUDE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-204"><a href="#Snowflake.Tokenizer-204"><span class="linenos">204</span></a> <span class="s2">"ILIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE_ANY</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-205"><a href="#Snowflake.Tokenizer-205"><span class="linenos">205</span></a> <span class="s2">"LIKE ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE_ANY</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-206"><a href="#Snowflake.Tokenizer-206"><span class="linenos">206</span></a> <span class="s2">"MATCH_RECOGNIZE"</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="Snowflake.Tokenizer-207"><a href="#Snowflake.Tokenizer-207"><span class="linenos">207</span></a> <span class="s2">"PUT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-208"><a href="#Snowflake.Tokenizer-208"><span class="linenos">208</span></a> <span class="s2">"RENAME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-209"><a href="#Snowflake.Tokenizer-209"><span class="linenos">209</span></a> <span class="s2">"TIMESTAMP_LTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-210"><a href="#Snowflake.Tokenizer-210"><span class="linenos">210</span></a> <span class="s2">"TIMESTAMP_NTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-211"><a href="#Snowflake.Tokenizer-211"><span class="linenos">211</span></a> <span class="s2">"TIMESTAMP_TZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-212"><a href="#Snowflake.Tokenizer-212"><span class="linenos">212</span></a> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-213"><a href="#Snowflake.Tokenizer-213"><span class="linenos">213</span></a> <span class="s2">"MINUS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-214"><a href="#Snowflake.Tokenizer-214"><span class="linenos">214</span></a> <span class="s2">"SAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> </span><span id="Snowflake.Tokenizer-215"><a href="#Snowflake.Tokenizer-215"><span class="linenos">215</span></a> <span class="p">}</span> +</span><span id="Snowflake.Tokenizer-216"><a href="#Snowflake.Tokenizer-216"><span class="linenos">216</span></a> +</span><span id="Snowflake.Tokenizer-217"><a href="#Snowflake.Tokenizer-217"><span class="linenos">217</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Tokenizer-218"><a href="#Snowflake.Tokenizer-218"><span class="linenos">218</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-219"><a href="#Snowflake.Tokenizer-219"><span class="linenos">219</span></a> <span class="s2">"$"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> +</span><span id="Snowflake.Tokenizer-220"><a href="#Snowflake.Tokenizer-220"><span class="linenos">220</span></a> <span class="p">}</span> </span></pre></div> @@ -836,8 +844,7 @@ Default: "nulls_are_small"</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Snowflake.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Snowflake.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Snowflake.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Snowflake.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -855,118 +862,123 @@ Default: "nulls_are_small"</li> </div> <a class="headerlink" href="#Snowflake.Generator"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator-217"><a href="#Snowflake.Generator-217"><span class="linenos">217</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="Snowflake.Generator-218"><a href="#Snowflake.Generator-218"><span class="linenos">218</span></a> <span class="n">CREATE_TRANSIENT</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Snowflake.Generator-219"><a href="#Snowflake.Generator-219"><span class="linenos">219</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> -</span><span id="Snowflake.Generator-220"><a href="#Snowflake.Generator-220"><span class="linenos">220</span></a> -</span><span id="Snowflake.Generator-221"><a href="#Snowflake.Generator-221"><span class="linenos">221</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Generator-222"><a href="#Snowflake.Generator-222"><span class="linenos">222</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 class="c1"># type: ignore</span> -</span><span id="Snowflake.Generator-223"><a href="#Snowflake.Generator-223"><span class="linenos">223</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="n">inline_array_sql</span><span class="p">,</span> -</span><span id="Snowflake.Generator-224"><a href="#Snowflake.Generator-224"><span class="linenos">224</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">"ARRAY_CAT"</span><span class="p">),</span> -</span><span id="Snowflake.Generator-225"><a href="#Snowflake.Generator-225"><span class="linenos">225</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DATEADD"</span><span class="p">),</span> -</span><span id="Snowflake.Generator-226"><a href="#Snowflake.Generator-226"><span class="linenos">226</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="Snowflake.Generator-227"><a href="#Snowflake.Generator-227"><span class="linenos">227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> -</span><span id="Snowflake.Generator-228"><a href="#Snowflake.Generator-228"><span class="linenos">228</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"IFF"</span><span class="p">),</span> -</span><span id="Snowflake.Generator-229"><a href="#Snowflake.Generator-229"><span class="linenos">229</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> -</span><span id="Snowflake.Generator-230"><a href="#Snowflake.Generator-230"><span class="linenos">230</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> -</span><span id="Snowflake.Generator-231"><a href="#Snowflake.Generator-231"><span class="linenos">231</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Snowflake.Generator-232"><a href="#Snowflake.Generator-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DECODE"</span><span class="p">),</span> -</span><span id="Snowflake.Generator-233"><a href="#Snowflake.Generator-233"><span class="linenos">233</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> -</span><span id="Snowflake.Generator-234"><a href="#Snowflake.Generator-234"><span class="linenos">234</span></a> <span class="s2">"POSITION"</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">"substr"</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">"position"</span><span class="p">)</span> -</span><span id="Snowflake.Generator-235"><a href="#Snowflake.Generator-235"><span class="linenos">235</span></a> <span class="p">),</span> -</span><span id="Snowflake.Generator-236"><a href="#Snowflake.Generator-236"><span class="linenos">236</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Snowflake.Generator-237"><a href="#Snowflake.Generator-237"><span class="linenos">237</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="Snowflake.Generator-238"><a href="#Snowflake.Generator-238"><span class="linenos">238</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</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">"EXTRACT(epoch_second FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Snowflake.Generator-239"><a href="#Snowflake.Generator-239"><span class="linenos">239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TRIM"</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="Snowflake.Generator-240"><a href="#Snowflake.Generator-240"><span class="linenos">240</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="Snowflake.Generator-241"><a href="#Snowflake.Generator-241"><span class="linenos">241</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> -</span><span id="Snowflake.Generator-242"><a href="#Snowflake.Generator-242"><span class="linenos">242</span></a> <span class="p">}</span> -</span><span id="Snowflake.Generator-243"><a href="#Snowflake.Generator-243"><span class="linenos">243</span></a> -</span><span id="Snowflake.Generator-244"><a href="#Snowflake.Generator-244"><span class="linenos">244</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Generator-245"><a href="#Snowflake.Generator-245"><span class="linenos">245</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 class="c1"># type: ignore</span> -</span><span id="Snowflake.Generator-246"><a href="#Snowflake.Generator-246"><span class="linenos">246</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">,</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator-222"><a href="#Snowflake.Generator-222"><span class="linenos">222</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="Snowflake.Generator-223"><a href="#Snowflake.Generator-223"><span class="linenos">223</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"$"</span> +</span><span id="Snowflake.Generator-224"><a href="#Snowflake.Generator-224"><span class="linenos">224</span></a> +</span><span id="Snowflake.Generator-225"><a href="#Snowflake.Generator-225"><span class="linenos">225</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Generator-226"><a href="#Snowflake.Generator-226"><span class="linenos">226</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 class="c1"># type: ignore</span> +</span><span id="Snowflake.Generator-227"><a href="#Snowflake.Generator-227"><span class="linenos">227</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="n">inline_array_sql</span><span class="p">,</span> +</span><span id="Snowflake.Generator-228"><a href="#Snowflake.Generator-228"><span class="linenos">228</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">"ARRAY_CAT"</span><span class="p">),</span> +</span><span id="Snowflake.Generator-229"><a href="#Snowflake.Generator-229"><span class="linenos">229</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DATEADD"</span><span class="p">),</span> +</span><span id="Snowflake.Generator-230"><a href="#Snowflake.Generator-230"><span class="linenos">230</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="Snowflake.Generator-231"><a href="#Snowflake.Generator-231"><span class="linenos">231</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span> +</span><span id="Snowflake.Generator-232"><a href="#Snowflake.Generator-232"><span class="linenos">232</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"IFF"</span><span class="p">),</span> +</span><span id="Snowflake.Generator-233"><a href="#Snowflake.Generator-233"><span class="linenos">233</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> +</span><span id="Snowflake.Generator-234"><a href="#Snowflake.Generator-234"><span class="linenos">234</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</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">var_map_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">"OBJECT_CONSTRUCT"</span><span class="p">),</span> +</span><span id="Snowflake.Generator-235"><a href="#Snowflake.Generator-235"><span class="linenos">235</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Snowflake.Generator-236"><a href="#Snowflake.Generator-236"><span class="linenos">236</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Matches</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DECODE"</span><span class="p">),</span> +</span><span id="Snowflake.Generator-237"><a href="#Snowflake.Generator-237"><span class="linenos">237</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span> +</span><span id="Snowflake.Generator-238"><a href="#Snowflake.Generator-238"><span class="linenos">238</span></a> <span class="s2">"POSITION"</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">"substr"</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">"position"</span><span class="p">)</span> +</span><span id="Snowflake.Generator-239"><a href="#Snowflake.Generator-239"><span class="linenos">239</span></a> <span class="p">),</span> +</span><span id="Snowflake.Generator-240"><a href="#Snowflake.Generator-240"><span class="linenos">240</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Snowflake.Generator-241"><a href="#Snowflake.Generator-241"><span class="linenos">241</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="Snowflake.Generator-242"><a href="#Snowflake.Generator-242"><span class="linenos">242</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</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">"EXTRACT(epoch_second FROM </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Snowflake.Generator-243"><a href="#Snowflake.Generator-243"><span class="linenos">243</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TRIM"</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="Snowflake.Generator-244"><a href="#Snowflake.Generator-244"><span class="linenos">244</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 class="s2">"snowflake"</span><span class="p">),</span> +</span><span id="Snowflake.Generator-245"><a href="#Snowflake.Generator-245"><span class="linenos">245</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="Snowflake.Generator-246"><a href="#Snowflake.Generator-246"><span class="linenos">246</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> </span><span id="Snowflake.Generator-247"><a href="#Snowflake.Generator-247"><span class="linenos">247</span></a> <span class="p">}</span> </span><span id="Snowflake.Generator-248"><a href="#Snowflake.Generator-248"><span class="linenos">248</span></a> -</span><span id="Snowflake.Generator-249"><a href="#Snowflake.Generator-249"><span class="linenos">249</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Snowflake.Generator-250"><a href="#Snowflake.Generator-250"><span class="linenos">250</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCLUDE"</span><span class="p">,</span> -</span><span id="Snowflake.Generator-251"><a href="#Snowflake.Generator-251"><span class="linenos">251</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"RENAME"</span><span class="p">,</span> +</span><span id="Snowflake.Generator-249"><a href="#Snowflake.Generator-249"><span class="linenos">249</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Generator-250"><a href="#Snowflake.Generator-250"><span class="linenos">250</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 class="c1"># type: ignore</span> +</span><span id="Snowflake.Generator-251"><a href="#Snowflake.Generator-251"><span class="linenos">251</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">:</span> <span class="s2">"TIMESTAMPNTZ"</span><span class="p">,</span> </span><span id="Snowflake.Generator-252"><a href="#Snowflake.Generator-252"><span class="linenos">252</span></a> <span class="p">}</span> </span><span id="Snowflake.Generator-253"><a href="#Snowflake.Generator-253"><span class="linenos">253</span></a> -</span><span id="Snowflake.Generator-254"><a href="#Snowflake.Generator-254"><span class="linenos">254</span></a> <span class="k">def</span> <span class="nf">ilikeany_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">ILikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator-255"><a href="#Snowflake.Generator-255"><span class="linenos">255</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE ANY"</span><span class="p">)</span> -</span><span id="Snowflake.Generator-256"><a href="#Snowflake.Generator-256"><span class="linenos">256</span></a> -</span><span id="Snowflake.Generator-257"><a href="#Snowflake.Generator-257"><span class="linenos">257</span></a> <span class="k">def</span> <span class="nf">likeany_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">LikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator-258"><a href="#Snowflake.Generator-258"><span class="linenos">258</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE ANY"</span><span class="p">)</span> -</span><span id="Snowflake.Generator-259"><a href="#Snowflake.Generator-259"><span class="linenos">259</span></a> -</span><span id="Snowflake.Generator-260"><a href="#Snowflake.Generator-260"><span class="linenos">260</span></a> <span class="k">def</span> <span class="nf">except_op</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="Snowflake.Generator-261"><a href="#Snowflake.Generator-261"><span class="linenos">261</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="Snowflake.Generator-262"><a href="#Snowflake.Generator-262"><span class="linenos">262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT with All is not supported in Snowflake"</span><span class="p">)</span> -</span><span id="Snowflake.Generator-263"><a href="#Snowflake.Generator-263"><span class="linenos">263</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Snowflake.Generator-264"><a href="#Snowflake.Generator-264"><span class="linenos">264</span></a> -</span><span id="Snowflake.Generator-265"><a href="#Snowflake.Generator-265"><span class="linenos">265</span></a> <span class="k">def</span> <span class="nf">intersect_op</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="Snowflake.Generator-266"><a href="#Snowflake.Generator-266"><span class="linenos">266</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="Snowflake.Generator-267"><a href="#Snowflake.Generator-267"><span class="linenos">267</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT with All is not supported in Snowflake"</span><span class="p">)</span> -</span><span id="Snowflake.Generator-268"><a href="#Snowflake.Generator-268"><span class="linenos">268</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake.Generator-254"><a href="#Snowflake.Generator-254"><span class="linenos">254</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Generator-255"><a href="#Snowflake.Generator-255"><span class="linenos">255</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCLUDE"</span><span class="p">,</span> +</span><span id="Snowflake.Generator-256"><a href="#Snowflake.Generator-256"><span class="linenos">256</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"RENAME"</span><span class="p">,</span> +</span><span id="Snowflake.Generator-257"><a href="#Snowflake.Generator-257"><span class="linenos">257</span></a> <span class="p">}</span> +</span><span id="Snowflake.Generator-258"><a href="#Snowflake.Generator-258"><span class="linenos">258</span></a> +</span><span id="Snowflake.Generator-259"><a href="#Snowflake.Generator-259"><span class="linenos">259</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Snowflake.Generator-260"><a href="#Snowflake.Generator-260"><span class="linenos">260</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 class="c1"># type: ignore</span> +</span><span id="Snowflake.Generator-261"><a href="#Snowflake.Generator-261"><span class="linenos">261</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</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="Snowflake.Generator-262"><a href="#Snowflake.Generator-262"><span class="linenos">262</span></a> <span class="p">}</span> +</span><span id="Snowflake.Generator-263"><a href="#Snowflake.Generator-263"><span class="linenos">263</span></a> +</span><span id="Snowflake.Generator-264"><a href="#Snowflake.Generator-264"><span class="linenos">264</span></a> <span class="k">def</span> <span class="nf">ilikeany_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">ILikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator-265"><a href="#Snowflake.Generator-265"><span class="linenos">265</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE ANY"</span><span class="p">)</span> +</span><span id="Snowflake.Generator-266"><a href="#Snowflake.Generator-266"><span class="linenos">266</span></a> +</span><span id="Snowflake.Generator-267"><a href="#Snowflake.Generator-267"><span class="linenos">267</span></a> <span class="k">def</span> <span class="nf">likeany_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">LikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator-268"><a href="#Snowflake.Generator-268"><span class="linenos">268</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE ANY"</span><span class="p">)</span> </span><span id="Snowflake.Generator-269"><a href="#Snowflake.Generator-269"><span class="linenos">269</span></a> -</span><span id="Snowflake.Generator-270"><a href="#Snowflake.Generator-270"><span class="linenos">270</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator-271"><a href="#Snowflake.Generator-271"><span class="linenos">271</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.</span> -</span><span id="Snowflake.Generator-272"><a href="#Snowflake.Generator-272"><span class="linenos">272</span></a> -</span><span id="Snowflake.Generator-273"><a href="#Snowflake.Generator-273"><span class="linenos">273</span></a><span class="sd"> We also want to make sure that after we find matches where we need to unquote a column that we prevent users</span> -</span><span id="Snowflake.Generator-274"><a href="#Snowflake.Generator-274"><span class="linenos">274</span></a><span class="sd"> from adding quotes to the column by using the `identify` argument when generating the SQL.</span> -</span><span id="Snowflake.Generator-275"><a href="#Snowflake.Generator-275"><span class="linenos">275</span></a><span class="sd"> """</span> -</span><span id="Snowflake.Generator-276"><a href="#Snowflake.Generator-276"><span class="linenos">276</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">"alias"</span><span class="p">)</span> -</span><span id="Snowflake.Generator-277"><a href="#Snowflake.Generator-277"><span class="linenos">277</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> -</span><span id="Snowflake.Generator-278"><a href="#Snowflake.Generator-278"><span class="linenos">278</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="Snowflake.Generator-279"><a href="#Snowflake.Generator-279"><span class="linenos">279</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> -</span><span id="Snowflake.Generator-280"><a href="#Snowflake.Generator-280"><span class="linenos">280</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> -</span><span id="Snowflake.Generator-281"><a href="#Snowflake.Generator-281"><span class="linenos">281</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">TableAlias</span><span class="p">)</span> -</span><span id="Snowflake.Generator-282"><a href="#Snowflake.Generator-282"><span class="linenos">282</span></a> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">==</span> <span class="s2">"columns"</span> -</span><span id="Snowflake.Generator-283"><a href="#Snowflake.Generator-283"><span class="linenos">283</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> -</span><span id="Snowflake.Generator-284"><a href="#Snowflake.Generator-284"><span class="linenos">284</span></a> <span class="p">)</span> -</span><span id="Snowflake.Generator-285"><a href="#Snowflake.Generator-285"><span class="linenos">285</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="Snowflake.Generator-286"><a href="#Snowflake.Generator-286"><span class="linenos">286</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Snowflake.Generator-287"><a href="#Snowflake.Generator-287"><span class="linenos">287</span></a> -</span><span id="Snowflake.Generator-288"><a href="#Snowflake.Generator-288"><span class="linenos">288</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator-289"><a href="#Snowflake.Generator-289"><span class="linenos">289</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also</span> -</span><span id="Snowflake.Generator-290"><a href="#Snowflake.Generator-290"><span class="linenos">290</span></a><span class="sd"> that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need</span> -</span><span id="Snowflake.Generator-291"><a href="#Snowflake.Generator-291"><span class="linenos">291</span></a><span class="sd"> to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when</span> -</span><span id="Snowflake.Generator-292"><a href="#Snowflake.Generator-292"><span class="linenos">292</span></a><span class="sd"> generating the SQL.</span> -</span><span id="Snowflake.Generator-293"><a href="#Snowflake.Generator-293"><span class="linenos">293</span></a> -</span><span id="Snowflake.Generator-294"><a href="#Snowflake.Generator-294"><span class="linenos">294</span></a><span class="sd"> Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the</span> -</span><span id="Snowflake.Generator-295"><a href="#Snowflake.Generator-295"><span class="linenos">295</span></a><span class="sd"> expression. This might not be true in a case where the same column name can be sourced from another table that can</span> -</span><span id="Snowflake.Generator-296"><a href="#Snowflake.Generator-296"><span class="linenos">296</span></a><span class="sd"> properly quote but should be true in most cases.</span> -</span><span id="Snowflake.Generator-297"><a href="#Snowflake.Generator-297"><span class="linenos">297</span></a><span class="sd"> """</span> -</span><span id="Snowflake.Generator-298"><a href="#Snowflake.Generator-298"><span class="linenos">298</span></a> <span class="n">values_expressions</span> <span class="o">=</span> <span class="n">expression</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">Values</span><span class="p">)</span> -</span><span id="Snowflake.Generator-299"><a href="#Snowflake.Generator-299"><span class="linenos">299</span></a> <span class="n">values_identifiers</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span> -</span><span id="Snowflake.Generator-300"><a href="#Snowflake.Generator-300"><span class="linenos">300</span></a> <span class="n">flatten</span><span class="p">(</span> -</span><span id="Snowflake.Generator-301"><a href="#Snowflake.Generator-301"><span class="linenos">301</span></a> <span class="n">v</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">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">())</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">"columns"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="Snowflake.Generator-302"><a href="#Snowflake.Generator-302"><span class="linenos">302</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values_expressions</span> -</span><span id="Snowflake.Generator-303"><a href="#Snowflake.Generator-303"><span class="linenos">303</span></a> <span class="p">)</span> -</span><span id="Snowflake.Generator-304"><a href="#Snowflake.Generator-304"><span class="linenos">304</span></a> <span class="p">)</span> -</span><span id="Snowflake.Generator-305"><a href="#Snowflake.Generator-305"><span class="linenos">305</span></a> <span class="k">if</span> <span class="n">values_identifiers</span><span class="p">:</span> -</span><span id="Snowflake.Generator-306"><a href="#Snowflake.Generator-306"><span class="linenos">306</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="Snowflake.Generator-307"><a href="#Snowflake.Generator-307"><span class="linenos">307</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> -</span><span id="Snowflake.Generator-308"><a href="#Snowflake.Generator-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">values_identifiers</span> -</span><span id="Snowflake.Generator-309"><a href="#Snowflake.Generator-309"><span class="linenos">309</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> -</span><span id="Snowflake.Generator-310"><a href="#Snowflake.Generator-310"><span class="linenos">310</span></a> <span class="p">)</span> -</span><span id="Snowflake.Generator-311"><a href="#Snowflake.Generator-311"><span class="linenos">311</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="Snowflake.Generator-312"><a href="#Snowflake.Generator-312"><span class="linenos">312</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Snowflake.Generator-313"><a href="#Snowflake.Generator-313"><span class="linenos">313</span></a> -</span><span id="Snowflake.Generator-314"><a href="#Snowflake.Generator-314"><span class="linenos">314</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator-315"><a href="#Snowflake.Generator-315"><span class="linenos">315</span></a> <span class="c1"># Default to table if kind is unknown</span> -</span><span id="Snowflake.Generator-316"><a href="#Snowflake.Generator-316"><span class="linenos">316</span></a> <span class="n">kind_value</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">"kind"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"TABLE"</span> -</span><span id="Snowflake.Generator-317"><a href="#Snowflake.Generator-317"><span class="linenos">317</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind_value</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind_value</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Snowflake.Generator-318"><a href="#Snowflake.Generator-318"><span class="linenos">318</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Snowflake.Generator-319"><a href="#Snowflake.Generator-319"><span class="linenos">319</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Snowflake.Generator-320"><a href="#Snowflake.Generator-320"><span class="linenos">320</span></a> -</span><span id="Snowflake.Generator-321"><a href="#Snowflake.Generator-321"><span class="linenos">321</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> -</span><span id="Snowflake.Generator-322"><a href="#Snowflake.Generator-322"><span class="linenos">322</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">GeneratedAsIdentityColumnConstraint</span> -</span><span id="Snowflake.Generator-323"><a href="#Snowflake.Generator-323"><span class="linenos">323</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator-324"><a href="#Snowflake.Generator-324"><span class="linenos">324</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> -</span><span id="Snowflake.Generator-325"><a href="#Snowflake.Generator-325"><span class="linenos">325</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" START </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Snowflake.Generator-326"><a href="#Snowflake.Generator-326"><span class="linenos">326</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> -</span><span id="Snowflake.Generator-327"><a href="#Snowflake.Generator-327"><span class="linenos">327</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Snowflake.Generator-328"><a href="#Snowflake.Generator-328"><span class="linenos">328</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"AUTOINCREMENT</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Snowflake.Generator-270"><a href="#Snowflake.Generator-270"><span class="linenos">270</span></a> <span class="k">def</span> <span class="nf">except_op</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="Snowflake.Generator-271"><a href="#Snowflake.Generator-271"><span class="linenos">271</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="Snowflake.Generator-272"><a href="#Snowflake.Generator-272"><span class="linenos">272</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT with All is not supported in Snowflake"</span><span class="p">)</span> +</span><span id="Snowflake.Generator-273"><a href="#Snowflake.Generator-273"><span class="linenos">273</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake.Generator-274"><a href="#Snowflake.Generator-274"><span class="linenos">274</span></a> +</span><span id="Snowflake.Generator-275"><a href="#Snowflake.Generator-275"><span class="linenos">275</span></a> <span class="k">def</span> <span class="nf">intersect_op</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="Snowflake.Generator-276"><a href="#Snowflake.Generator-276"><span class="linenos">276</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="Snowflake.Generator-277"><a href="#Snowflake.Generator-277"><span class="linenos">277</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT with All is not supported in Snowflake"</span><span class="p">)</span> +</span><span id="Snowflake.Generator-278"><a href="#Snowflake.Generator-278"><span class="linenos">278</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake.Generator-279"><a href="#Snowflake.Generator-279"><span class="linenos">279</span></a> +</span><span id="Snowflake.Generator-280"><a href="#Snowflake.Generator-280"><span class="linenos">280</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator-281"><a href="#Snowflake.Generator-281"><span class="linenos">281</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.</span> +</span><span id="Snowflake.Generator-282"><a href="#Snowflake.Generator-282"><span class="linenos">282</span></a> +</span><span id="Snowflake.Generator-283"><a href="#Snowflake.Generator-283"><span class="linenos">283</span></a><span class="sd"> We also want to make sure that after we find matches where we need to unquote a column that we prevent users</span> +</span><span id="Snowflake.Generator-284"><a href="#Snowflake.Generator-284"><span class="linenos">284</span></a><span class="sd"> from adding quotes to the column by using the `identify` argument when generating the SQL.</span> +</span><span id="Snowflake.Generator-285"><a href="#Snowflake.Generator-285"><span class="linenos">285</span></a><span class="sd"> """</span> +</span><span id="Snowflake.Generator-286"><a href="#Snowflake.Generator-286"><span class="linenos">286</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">"alias"</span><span class="p">)</span> +</span><span id="Snowflake.Generator-287"><a href="#Snowflake.Generator-287"><span class="linenos">287</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> +</span><span id="Snowflake.Generator-288"><a href="#Snowflake.Generator-288"><span class="linenos">288</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="Snowflake.Generator-289"><a href="#Snowflake.Generator-289"><span class="linenos">289</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> +</span><span id="Snowflake.Generator-290"><a href="#Snowflake.Generator-290"><span class="linenos">290</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> +</span><span id="Snowflake.Generator-291"><a href="#Snowflake.Generator-291"><span class="linenos">291</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">TableAlias</span><span class="p">)</span> +</span><span id="Snowflake.Generator-292"><a href="#Snowflake.Generator-292"><span class="linenos">292</span></a> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">==</span> <span class="s2">"columns"</span> +</span><span id="Snowflake.Generator-293"><a href="#Snowflake.Generator-293"><span class="linenos">293</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> +</span><span id="Snowflake.Generator-294"><a href="#Snowflake.Generator-294"><span class="linenos">294</span></a> <span class="p">)</span> +</span><span id="Snowflake.Generator-295"><a href="#Snowflake.Generator-295"><span class="linenos">295</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="Snowflake.Generator-296"><a href="#Snowflake.Generator-296"><span class="linenos">296</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake.Generator-297"><a href="#Snowflake.Generator-297"><span class="linenos">297</span></a> +</span><span id="Snowflake.Generator-298"><a href="#Snowflake.Generator-298"><span class="linenos">298</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator-299"><a href="#Snowflake.Generator-299"><span class="linenos">299</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also</span> +</span><span id="Snowflake.Generator-300"><a href="#Snowflake.Generator-300"><span class="linenos">300</span></a><span class="sd"> that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need</span> +</span><span id="Snowflake.Generator-301"><a href="#Snowflake.Generator-301"><span class="linenos">301</span></a><span class="sd"> to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when</span> +</span><span id="Snowflake.Generator-302"><a href="#Snowflake.Generator-302"><span class="linenos">302</span></a><span class="sd"> generating the SQL.</span> +</span><span id="Snowflake.Generator-303"><a href="#Snowflake.Generator-303"><span class="linenos">303</span></a> +</span><span id="Snowflake.Generator-304"><a href="#Snowflake.Generator-304"><span class="linenos">304</span></a><span class="sd"> Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the</span> +</span><span id="Snowflake.Generator-305"><a href="#Snowflake.Generator-305"><span class="linenos">305</span></a><span class="sd"> expression. This might not be true in a case where the same column name can be sourced from another table that can</span> +</span><span id="Snowflake.Generator-306"><a href="#Snowflake.Generator-306"><span class="linenos">306</span></a><span class="sd"> properly quote but should be true in most cases.</span> +</span><span id="Snowflake.Generator-307"><a href="#Snowflake.Generator-307"><span class="linenos">307</span></a><span class="sd"> """</span> +</span><span id="Snowflake.Generator-308"><a href="#Snowflake.Generator-308"><span class="linenos">308</span></a> <span class="n">values_expressions</span> <span class="o">=</span> <span class="n">expression</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">Values</span><span class="p">)</span> +</span><span id="Snowflake.Generator-309"><a href="#Snowflake.Generator-309"><span class="linenos">309</span></a> <span class="n">values_identifiers</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span> +</span><span id="Snowflake.Generator-310"><a href="#Snowflake.Generator-310"><span class="linenos">310</span></a> <span class="n">flatten</span><span class="p">(</span> +</span><span id="Snowflake.Generator-311"><a href="#Snowflake.Generator-311"><span class="linenos">311</span></a> <span class="n">v</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">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">())</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">"columns"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="Snowflake.Generator-312"><a href="#Snowflake.Generator-312"><span class="linenos">312</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values_expressions</span> +</span><span id="Snowflake.Generator-313"><a href="#Snowflake.Generator-313"><span class="linenos">313</span></a> <span class="p">)</span> +</span><span id="Snowflake.Generator-314"><a href="#Snowflake.Generator-314"><span class="linenos">314</span></a> <span class="p">)</span> +</span><span id="Snowflake.Generator-315"><a href="#Snowflake.Generator-315"><span class="linenos">315</span></a> <span class="k">if</span> <span class="n">values_identifiers</span><span class="p">:</span> +</span><span id="Snowflake.Generator-316"><a href="#Snowflake.Generator-316"><span class="linenos">316</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="Snowflake.Generator-317"><a href="#Snowflake.Generator-317"><span class="linenos">317</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> +</span><span id="Snowflake.Generator-318"><a href="#Snowflake.Generator-318"><span class="linenos">318</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">values_identifiers</span> +</span><span id="Snowflake.Generator-319"><a href="#Snowflake.Generator-319"><span class="linenos">319</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> +</span><span id="Snowflake.Generator-320"><a href="#Snowflake.Generator-320"><span class="linenos">320</span></a> <span class="p">)</span> +</span><span id="Snowflake.Generator-321"><a href="#Snowflake.Generator-321"><span class="linenos">321</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="Snowflake.Generator-322"><a href="#Snowflake.Generator-322"><span class="linenos">322</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Snowflake.Generator-323"><a href="#Snowflake.Generator-323"><span class="linenos">323</span></a> +</span><span id="Snowflake.Generator-324"><a href="#Snowflake.Generator-324"><span class="linenos">324</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator-325"><a href="#Snowflake.Generator-325"><span class="linenos">325</span></a> <span class="c1"># Default to table if kind is unknown</span> +</span><span id="Snowflake.Generator-326"><a href="#Snowflake.Generator-326"><span class="linenos">326</span></a> <span class="n">kind_value</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">"kind"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"TABLE"</span> +</span><span id="Snowflake.Generator-327"><a href="#Snowflake.Generator-327"><span class="linenos">327</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind_value</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind_value</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Snowflake.Generator-328"><a href="#Snowflake.Generator-328"><span class="linenos">328</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Snowflake.Generator-329"><a href="#Snowflake.Generator-329"><span class="linenos">329</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Snowflake.Generator-330"><a href="#Snowflake.Generator-330"><span class="linenos">330</span></a> +</span><span id="Snowflake.Generator-331"><a href="#Snowflake.Generator-331"><span class="linenos">331</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> +</span><span id="Snowflake.Generator-332"><a href="#Snowflake.Generator-332"><span class="linenos">332</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">GeneratedAsIdentityColumnConstraint</span> +</span><span id="Snowflake.Generator-333"><a href="#Snowflake.Generator-333"><span class="linenos">333</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator-334"><a href="#Snowflake.Generator-334"><span class="linenos">334</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> +</span><span id="Snowflake.Generator-335"><a href="#Snowflake.Generator-335"><span class="linenos">335</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" START </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Snowflake.Generator-336"><a href="#Snowflake.Generator-336"><span class="linenos">336</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> +</span><span id="Snowflake.Generator-337"><a href="#Snowflake.Generator-337"><span class="linenos">337</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Snowflake.Generator-338"><a href="#Snowflake.Generator-338"><span class="linenos">338</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"AUTOINCREMENT</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1026,8 +1038,8 @@ Default: True</li> </div> <a class="headerlink" href="#Snowflake.Generator.ilikeany_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.ilikeany_sql-254"><a href="#Snowflake.Generator.ilikeany_sql-254"><span class="linenos">254</span></a> <span class="k">def</span> <span class="nf">ilikeany_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">ILikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator.ilikeany_sql-255"><a href="#Snowflake.Generator.ilikeany_sql-255"><span class="linenos">255</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE ANY"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.ilikeany_sql-264"><a href="#Snowflake.Generator.ilikeany_sql-264"><span class="linenos">264</span></a> <span class="k">def</span> <span class="nf">ilikeany_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">ILikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator.ilikeany_sql-265"><a href="#Snowflake.Generator.ilikeany_sql-265"><span class="linenos">265</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE ANY"</span><span class="p">)</span> </span></pre></div> @@ -1045,8 +1057,8 @@ Default: True</li> </div> <a class="headerlink" href="#Snowflake.Generator.likeany_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.likeany_sql-257"><a href="#Snowflake.Generator.likeany_sql-257"><span class="linenos">257</span></a> <span class="k">def</span> <span class="nf">likeany_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">LikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator.likeany_sql-258"><a href="#Snowflake.Generator.likeany_sql-258"><span class="linenos">258</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE ANY"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.likeany_sql-267"><a href="#Snowflake.Generator.likeany_sql-267"><span class="linenos">267</span></a> <span class="k">def</span> <span class="nf">likeany_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">LikeAny</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator.likeany_sql-268"><a href="#Snowflake.Generator.likeany_sql-268"><span class="linenos">268</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE ANY"</span><span class="p">)</span> </span></pre></div> @@ -1064,10 +1076,10 @@ Default: True</li> </div> <a class="headerlink" href="#Snowflake.Generator.except_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.except_op-260"><a href="#Snowflake.Generator.except_op-260"><span class="linenos">260</span></a> <span class="k">def</span> <span class="nf">except_op</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="Snowflake.Generator.except_op-261"><a href="#Snowflake.Generator.except_op-261"><span class="linenos">261</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="Snowflake.Generator.except_op-262"><a href="#Snowflake.Generator.except_op-262"><span class="linenos">262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT with All is not supported in Snowflake"</span><span class="p">)</span> -</span><span id="Snowflake.Generator.except_op-263"><a href="#Snowflake.Generator.except_op-263"><span class="linenos">263</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.except_op-270"><a href="#Snowflake.Generator.except_op-270"><span class="linenos">270</span></a> <span class="k">def</span> <span class="nf">except_op</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="Snowflake.Generator.except_op-271"><a href="#Snowflake.Generator.except_op-271"><span class="linenos">271</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="Snowflake.Generator.except_op-272"><a href="#Snowflake.Generator.except_op-272"><span class="linenos">272</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"EXCEPT with All is not supported in Snowflake"</span><span class="p">)</span> +</span><span id="Snowflake.Generator.except_op-273"><a href="#Snowflake.Generator.except_op-273"><span class="linenos">273</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -1085,10 +1097,10 @@ Default: True</li> </div> <a class="headerlink" href="#Snowflake.Generator.intersect_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.intersect_op-265"><a href="#Snowflake.Generator.intersect_op-265"><span class="linenos">265</span></a> <span class="k">def</span> <span class="nf">intersect_op</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="Snowflake.Generator.intersect_op-266"><a href="#Snowflake.Generator.intersect_op-266"><span class="linenos">266</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> -</span><span id="Snowflake.Generator.intersect_op-267"><a href="#Snowflake.Generator.intersect_op-267"><span class="linenos">267</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT with All is not supported in Snowflake"</span><span class="p">)</span> -</span><span id="Snowflake.Generator.intersect_op-268"><a href="#Snowflake.Generator.intersect_op-268"><span class="linenos">268</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.intersect_op-275"><a href="#Snowflake.Generator.intersect_op-275"><span class="linenos">275</span></a> <span class="k">def</span> <span class="nf">intersect_op</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="Snowflake.Generator.intersect_op-276"><a href="#Snowflake.Generator.intersect_op-276"><span class="linenos">276</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">"distinct"</span><span class="p">,</span> <span class="kc">False</span><span class="p">):</span> +</span><span id="Snowflake.Generator.intersect_op-277"><a href="#Snowflake.Generator.intersect_op-277"><span class="linenos">277</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"INTERSECT with All is not supported in Snowflake"</span><span class="p">)</span> +</span><span id="Snowflake.Generator.intersect_op-278"><a href="#Snowflake.Generator.intersect_op-278"><span class="linenos">278</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -1106,23 +1118,23 @@ Default: True</li> </div> <a class="headerlink" href="#Snowflake.Generator.values_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.values_sql-270"><a href="#Snowflake.Generator.values_sql-270"><span class="linenos">270</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator.values_sql-271"><a href="#Snowflake.Generator.values_sql-271"><span class="linenos">271</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.</span> -</span><span id="Snowflake.Generator.values_sql-272"><a href="#Snowflake.Generator.values_sql-272"><span class="linenos">272</span></a> -</span><span id="Snowflake.Generator.values_sql-273"><a href="#Snowflake.Generator.values_sql-273"><span class="linenos">273</span></a><span class="sd"> We also want to make sure that after we find matches where we need to unquote a column that we prevent users</span> -</span><span id="Snowflake.Generator.values_sql-274"><a href="#Snowflake.Generator.values_sql-274"><span class="linenos">274</span></a><span class="sd"> from adding quotes to the column by using the `identify` argument when generating the SQL.</span> -</span><span id="Snowflake.Generator.values_sql-275"><a href="#Snowflake.Generator.values_sql-275"><span class="linenos">275</span></a><span class="sd"> """</span> -</span><span id="Snowflake.Generator.values_sql-276"><a href="#Snowflake.Generator.values_sql-276"><span class="linenos">276</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">"alias"</span><span class="p">)</span> -</span><span id="Snowflake.Generator.values_sql-277"><a href="#Snowflake.Generator.values_sql-277"><span class="linenos">277</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> -</span><span id="Snowflake.Generator.values_sql-278"><a href="#Snowflake.Generator.values_sql-278"><span class="linenos">278</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="Snowflake.Generator.values_sql-279"><a href="#Snowflake.Generator.values_sql-279"><span class="linenos">279</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> -</span><span id="Snowflake.Generator.values_sql-280"><a href="#Snowflake.Generator.values_sql-280"><span class="linenos">280</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> -</span><span id="Snowflake.Generator.values_sql-281"><a href="#Snowflake.Generator.values_sql-281"><span class="linenos">281</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">TableAlias</span><span class="p">)</span> -</span><span id="Snowflake.Generator.values_sql-282"><a href="#Snowflake.Generator.values_sql-282"><span class="linenos">282</span></a> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">==</span> <span class="s2">"columns"</span> -</span><span id="Snowflake.Generator.values_sql-283"><a href="#Snowflake.Generator.values_sql-283"><span class="linenos">283</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> -</span><span id="Snowflake.Generator.values_sql-284"><a href="#Snowflake.Generator.values_sql-284"><span class="linenos">284</span></a> <span class="p">)</span> -</span><span id="Snowflake.Generator.values_sql-285"><a href="#Snowflake.Generator.values_sql-285"><span class="linenos">285</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="Snowflake.Generator.values_sql-286"><a href="#Snowflake.Generator.values_sql-286"><span class="linenos">286</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.values_sql-280"><a href="#Snowflake.Generator.values_sql-280"><span class="linenos">280</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator.values_sql-281"><a href="#Snowflake.Generator.values_sql-281"><span class="linenos">281</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted.</span> +</span><span id="Snowflake.Generator.values_sql-282"><a href="#Snowflake.Generator.values_sql-282"><span class="linenos">282</span></a> +</span><span id="Snowflake.Generator.values_sql-283"><a href="#Snowflake.Generator.values_sql-283"><span class="linenos">283</span></a><span class="sd"> We also want to make sure that after we find matches where we need to unquote a column that we prevent users</span> +</span><span id="Snowflake.Generator.values_sql-284"><a href="#Snowflake.Generator.values_sql-284"><span class="linenos">284</span></a><span class="sd"> from adding quotes to the column by using the `identify` argument when generating the SQL.</span> +</span><span id="Snowflake.Generator.values_sql-285"><a href="#Snowflake.Generator.values_sql-285"><span class="linenos">285</span></a><span class="sd"> """</span> +</span><span id="Snowflake.Generator.values_sql-286"><a href="#Snowflake.Generator.values_sql-286"><span class="linenos">286</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">"alias"</span><span class="p">)</span> +</span><span id="Snowflake.Generator.values_sql-287"><a href="#Snowflake.Generator.values_sql-287"><span class="linenos">287</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> +</span><span id="Snowflake.Generator.values_sql-288"><a href="#Snowflake.Generator.values_sql-288"><span class="linenos">288</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="Snowflake.Generator.values_sql-289"><a href="#Snowflake.Generator.values_sql-289"><span class="linenos">289</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> +</span><span id="Snowflake.Generator.values_sql-290"><a href="#Snowflake.Generator.values_sql-290"><span class="linenos">290</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> +</span><span id="Snowflake.Generator.values_sql-291"><a href="#Snowflake.Generator.values_sql-291"><span class="linenos">291</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">TableAlias</span><span class="p">)</span> +</span><span id="Snowflake.Generator.values_sql-292"><a href="#Snowflake.Generator.values_sql-292"><span class="linenos">292</span></a> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">==</span> <span class="s2">"columns"</span> +</span><span id="Snowflake.Generator.values_sql-293"><a href="#Snowflake.Generator.values_sql-293"><span class="linenos">293</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> +</span><span id="Snowflake.Generator.values_sql-294"><a href="#Snowflake.Generator.values_sql-294"><span class="linenos">294</span></a> <span class="p">)</span> +</span><span id="Snowflake.Generator.values_sql-295"><a href="#Snowflake.Generator.values_sql-295"><span class="linenos">295</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="Snowflake.Generator.values_sql-296"><a href="#Snowflake.Generator.values_sql-296"><span class="linenos">296</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">values_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -1145,31 +1157,31 @@ from adding quotes to the column by using the <code>identify</code> argument whe </div> <a class="headerlink" href="#Snowflake.Generator.select_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.select_sql-288"><a href="#Snowflake.Generator.select_sql-288"><span class="linenos">288</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator.select_sql-289"><a href="#Snowflake.Generator.select_sql-289"><span class="linenos">289</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also</span> -</span><span id="Snowflake.Generator.select_sql-290"><a href="#Snowflake.Generator.select_sql-290"><span class="linenos">290</span></a><span class="sd"> that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need</span> -</span><span id="Snowflake.Generator.select_sql-291"><a href="#Snowflake.Generator.select_sql-291"><span class="linenos">291</span></a><span class="sd"> to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when</span> -</span><span id="Snowflake.Generator.select_sql-292"><a href="#Snowflake.Generator.select_sql-292"><span class="linenos">292</span></a><span class="sd"> generating the SQL.</span> -</span><span id="Snowflake.Generator.select_sql-293"><a href="#Snowflake.Generator.select_sql-293"><span class="linenos">293</span></a> -</span><span id="Snowflake.Generator.select_sql-294"><a href="#Snowflake.Generator.select_sql-294"><span class="linenos">294</span></a><span class="sd"> Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the</span> -</span><span id="Snowflake.Generator.select_sql-295"><a href="#Snowflake.Generator.select_sql-295"><span class="linenos">295</span></a><span class="sd"> expression. This might not be true in a case where the same column name can be sourced from another table that can</span> -</span><span id="Snowflake.Generator.select_sql-296"><a href="#Snowflake.Generator.select_sql-296"><span class="linenos">296</span></a><span class="sd"> properly quote but should be true in most cases.</span> -</span><span id="Snowflake.Generator.select_sql-297"><a href="#Snowflake.Generator.select_sql-297"><span class="linenos">297</span></a><span class="sd"> """</span> -</span><span id="Snowflake.Generator.select_sql-298"><a href="#Snowflake.Generator.select_sql-298"><span class="linenos">298</span></a> <span class="n">values_expressions</span> <span class="o">=</span> <span class="n">expression</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">Values</span><span class="p">)</span> -</span><span id="Snowflake.Generator.select_sql-299"><a href="#Snowflake.Generator.select_sql-299"><span class="linenos">299</span></a> <span class="n">values_identifiers</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span> -</span><span id="Snowflake.Generator.select_sql-300"><a href="#Snowflake.Generator.select_sql-300"><span class="linenos">300</span></a> <span class="n">flatten</span><span class="p">(</span> -</span><span id="Snowflake.Generator.select_sql-301"><a href="#Snowflake.Generator.select_sql-301"><span class="linenos">301</span></a> <span class="n">v</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">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">())</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">"columns"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="Snowflake.Generator.select_sql-302"><a href="#Snowflake.Generator.select_sql-302"><span class="linenos">302</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values_expressions</span> -</span><span id="Snowflake.Generator.select_sql-303"><a href="#Snowflake.Generator.select_sql-303"><span class="linenos">303</span></a> <span class="p">)</span> -</span><span id="Snowflake.Generator.select_sql-304"><a href="#Snowflake.Generator.select_sql-304"><span class="linenos">304</span></a> <span class="p">)</span> -</span><span id="Snowflake.Generator.select_sql-305"><a href="#Snowflake.Generator.select_sql-305"><span class="linenos">305</span></a> <span class="k">if</span> <span class="n">values_identifiers</span><span class="p">:</span> -</span><span id="Snowflake.Generator.select_sql-306"><a href="#Snowflake.Generator.select_sql-306"><span class="linenos">306</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="Snowflake.Generator.select_sql-307"><a href="#Snowflake.Generator.select_sql-307"><span class="linenos">307</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> -</span><span id="Snowflake.Generator.select_sql-308"><a href="#Snowflake.Generator.select_sql-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">values_identifiers</span> -</span><span id="Snowflake.Generator.select_sql-309"><a href="#Snowflake.Generator.select_sql-309"><span class="linenos">309</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> -</span><span id="Snowflake.Generator.select_sql-310"><a href="#Snowflake.Generator.select_sql-310"><span class="linenos">310</span></a> <span class="p">)</span> -</span><span id="Snowflake.Generator.select_sql-311"><a href="#Snowflake.Generator.select_sql-311"><span class="linenos">311</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="Snowflake.Generator.select_sql-312"><a href="#Snowflake.Generator.select_sql-312"><span class="linenos">312</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.select_sql-298"><a href="#Snowflake.Generator.select_sql-298"><span class="linenos">298</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator.select_sql-299"><a href="#Snowflake.Generator.select_sql-299"><span class="linenos">299</span></a><span class="w"> </span><span class="sd">"""Due to a bug in Snowflake we want to make sure that all columns in a VALUES table alias are unquoted and also</span> +</span><span id="Snowflake.Generator.select_sql-300"><a href="#Snowflake.Generator.select_sql-300"><span class="linenos">300</span></a><span class="sd"> that all columns in a SELECT are unquoted. We also want to make sure that after we find matches where we need</span> +</span><span id="Snowflake.Generator.select_sql-301"><a href="#Snowflake.Generator.select_sql-301"><span class="linenos">301</span></a><span class="sd"> to unquote a column that we prevent users from adding quotes to the column by using the `identify` argument when</span> +</span><span id="Snowflake.Generator.select_sql-302"><a href="#Snowflake.Generator.select_sql-302"><span class="linenos">302</span></a><span class="sd"> generating the SQL.</span> +</span><span id="Snowflake.Generator.select_sql-303"><a href="#Snowflake.Generator.select_sql-303"><span class="linenos">303</span></a> +</span><span id="Snowflake.Generator.select_sql-304"><a href="#Snowflake.Generator.select_sql-304"><span class="linenos">304</span></a><span class="sd"> Note: We make an assumption that any columns referenced in a VALUES expression should be unquoted throughout the</span> +</span><span id="Snowflake.Generator.select_sql-305"><a href="#Snowflake.Generator.select_sql-305"><span class="linenos">305</span></a><span class="sd"> expression. This might not be true in a case where the same column name can be sourced from another table that can</span> +</span><span id="Snowflake.Generator.select_sql-306"><a href="#Snowflake.Generator.select_sql-306"><span class="linenos">306</span></a><span class="sd"> properly quote but should be true in most cases.</span> +</span><span id="Snowflake.Generator.select_sql-307"><a href="#Snowflake.Generator.select_sql-307"><span class="linenos">307</span></a><span class="sd"> """</span> +</span><span id="Snowflake.Generator.select_sql-308"><a href="#Snowflake.Generator.select_sql-308"><span class="linenos">308</span></a> <span class="n">values_expressions</span> <span class="o">=</span> <span class="n">expression</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">Values</span><span class="p">)</span> +</span><span id="Snowflake.Generator.select_sql-309"><a href="#Snowflake.Generator.select_sql-309"><span class="linenos">309</span></a> <span class="n">values_identifiers</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span> +</span><span id="Snowflake.Generator.select_sql-310"><a href="#Snowflake.Generator.select_sql-310"><span class="linenos">310</span></a> <span class="n">flatten</span><span class="p">(</span> +</span><span id="Snowflake.Generator.select_sql-311"><a href="#Snowflake.Generator.select_sql-311"><span class="linenos">311</span></a> <span class="n">v</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">"alias"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">())</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">"columns"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="Snowflake.Generator.select_sql-312"><a href="#Snowflake.Generator.select_sql-312"><span class="linenos">312</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values_expressions</span> +</span><span id="Snowflake.Generator.select_sql-313"><a href="#Snowflake.Generator.select_sql-313"><span class="linenos">313</span></a> <span class="p">)</span> +</span><span id="Snowflake.Generator.select_sql-314"><a href="#Snowflake.Generator.select_sql-314"><span class="linenos">314</span></a> <span class="p">)</span> +</span><span id="Snowflake.Generator.select_sql-315"><a href="#Snowflake.Generator.select_sql-315"><span class="linenos">315</span></a> <span class="k">if</span> <span class="n">values_identifiers</span><span class="p">:</span> +</span><span id="Snowflake.Generator.select_sql-316"><a href="#Snowflake.Generator.select_sql-316"><span class="linenos">316</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="Snowflake.Generator.select_sql-317"><a href="#Snowflake.Generator.select_sql-317"><span class="linenos">317</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">})</span> +</span><span id="Snowflake.Generator.select_sql-318"><a href="#Snowflake.Generator.select_sql-318"><span class="linenos">318</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> <span class="ow">and</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">values_identifiers</span> +</span><span id="Snowflake.Generator.select_sql-319"><a href="#Snowflake.Generator.select_sql-319"><span class="linenos">319</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span> +</span><span id="Snowflake.Generator.select_sql-320"><a href="#Snowflake.Generator.select_sql-320"><span class="linenos">320</span></a> <span class="p">)</span> +</span><span id="Snowflake.Generator.select_sql-321"><a href="#Snowflake.Generator.select_sql-321"><span class="linenos">321</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="nb">super</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="Snowflake.Generator.select_sql-322"><a href="#Snowflake.Generator.select_sql-322"><span class="linenos">322</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">select_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -1196,12 +1208,12 @@ properly quote but should be true in most cases.</p> </div> <a class="headerlink" href="#Snowflake.Generator.describe_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.describe_sql-314"><a href="#Snowflake.Generator.describe_sql-314"><span class="linenos">314</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator.describe_sql-315"><a href="#Snowflake.Generator.describe_sql-315"><span class="linenos">315</span></a> <span class="c1"># Default to table if kind is unknown</span> -</span><span id="Snowflake.Generator.describe_sql-316"><a href="#Snowflake.Generator.describe_sql-316"><span class="linenos">316</span></a> <span class="n">kind_value</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">"kind"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"TABLE"</span> -</span><span id="Snowflake.Generator.describe_sql-317"><a href="#Snowflake.Generator.describe_sql-317"><span class="linenos">317</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind_value</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind_value</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Snowflake.Generator.describe_sql-318"><a href="#Snowflake.Generator.describe_sql-318"><span class="linenos">318</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Snowflake.Generator.describe_sql-319"><a href="#Snowflake.Generator.describe_sql-319"><span class="linenos">319</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.describe_sql-324"><a href="#Snowflake.Generator.describe_sql-324"><span class="linenos">324</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator.describe_sql-325"><a href="#Snowflake.Generator.describe_sql-325"><span class="linenos">325</span></a> <span class="c1"># Default to table if kind is unknown</span> +</span><span id="Snowflake.Generator.describe_sql-326"><a href="#Snowflake.Generator.describe_sql-326"><span class="linenos">326</span></a> <span class="n">kind_value</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">"kind"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"TABLE"</span> +</span><span id="Snowflake.Generator.describe_sql-327"><a href="#Snowflake.Generator.describe_sql-327"><span class="linenos">327</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind_value</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind_value</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Snowflake.Generator.describe_sql-328"><a href="#Snowflake.Generator.describe_sql-328"><span class="linenos">328</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Snowflake.Generator.describe_sql-329"><a href="#Snowflake.Generator.describe_sql-329"><span class="linenos">329</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1219,14 +1231,14 @@ properly quote but should be true in most cases.</p> </div> <a class="headerlink" href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-321"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-321"><span class="linenos">321</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> -</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-322"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-322"><span class="linenos">322</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">GeneratedAsIdentityColumnConstraint</span> -</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-323"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-323"><span class="linenos">323</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-324"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-324"><span class="linenos">324</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> -</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-325"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-325"><span class="linenos">325</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" START </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-326"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-326"><span class="linenos">326</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> -</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-327"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-327"><span class="linenos">327</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-328"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-328"><span class="linenos">328</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"AUTOINCREMENT</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-331"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-331"><span class="linenos">331</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> +</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-332"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-332"><span class="linenos">332</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">GeneratedAsIdentityColumnConstraint</span> +</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-333"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-333"><span class="linenos">333</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-334"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-334"><span class="linenos">334</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> +</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-335"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-335"><span class="linenos">335</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" START </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-336"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-336"><span class="linenos">336</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> +</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-337"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-337"><span class="linenos">337</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Snowflake.Generator.generatedasidentitycolumnconstraint_sql-338"><a href="#Snowflake.Generator.generatedasidentitycolumnconstraint_sql-338"><span class="linenos">338</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"AUTOINCREMENT</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -1256,6 +1268,7 @@ properly quote but should be true in most cases.</p> <dd id="Snowflake.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Snowflake.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Snowflake.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Snowflake.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Snowflake.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Snowflake.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> <dd id="Snowflake.Generator.uniquecolumnconstraint_sql" class="function"><a href="../generator.html#Generator.uniquecolumnconstraint_sql">uniquecolumnconstraint_sql</a></dd> @@ -1295,6 +1308,7 @@ properly quote but should be true in most cases.</p> <dd id="Snowflake.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Snowflake.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Snowflake.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Snowflake.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Snowflake.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Snowflake.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Snowflake.Generator.introducer_sql" class="function"><a href="../generator.html#Generator.introducer_sql">introducer_sql</a></dd> @@ -1562,7 +1576,7 @@ properly quote but should be true in most cases.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/spark.html b/docs/sqlglot/dialects/spark.html index ae58e10..91f4f4f 100644 --- a/docs/sqlglot/dialects/spark.html +++ b/docs/sqlglot/dialects/spark.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.spark 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Spark">Spark</a> <ul class="memberlist"> <li> - <a class="function" href="#Spark.__init__">Spark</a> - </li> - <li> <a class="class" href="#Spark.Parser">Spark.Parser</a> <ul class="memberlist"> </ul> @@ -93,177 +90,180 @@ </span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a> </span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</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">e</span><span class="p">):</span> </span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a> <span class="n">kind</span> <span class="o">=</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">"kind"</span><span class="p">)</span> -</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a> <span class="n">temporary</span> <span class="o">=</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">"temporary"</span><span class="p">)</span> +</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a> <span class="n">properties</span> <span class="o">=</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">"properties"</span><span class="p">)</span> </span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a> -</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"TABLE"</span> <span class="ow">and</span> <span class="n">temporary</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CREATE TEMPORARY VIEW </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a> <span class="k">return</span> <span class="n">create_with_partitions_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><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> -</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> -</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="k">def</span> <span class="nf">_map_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> -</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> <span class="n">keys</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="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">])</span> -</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> <span class="n">values</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="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">])</span> -</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MAP_FROM_ARRAYS(</span><span class="si">{</span><span class="n">keys</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> -</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> -</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a><span class="k">def</span> <span class="nf">_str_to_date</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-25"><a href="#L-25"><span class="linenos"> 25</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">"this"</span><span class="p">)</span> -</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</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-27"><a href="#L-27"><span class="linenos"> 27</span></a> <span class="k">if</span> <span class="n">time_format</span> <span class="o">==</span> <span class="n">Hive</span><span class="o">.</span><span class="n">date_format</span><span class="p">:</span> -</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_DATE(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_DATE(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">time_format</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> -</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> -</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a><span class="k">def</span> <span class="nf">_unix_to_time</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-33"><a href="#L-33"><span class="linenos"> 33</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">"scale"</span><span class="p">)</span> -</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</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">"this"</span><span class="p">)</span> -</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FROM_UNIXTIME(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">SECONDS</span><span class="p">:</span> -</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TIMESTAMP_SECONDS(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MILLIS</span><span class="p">:</span> -</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TIMESTAMP_MILLIS(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MICROS</span><span class="p">:</span> -</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TIMESTAMP_MICROS(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> -</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Improper scale for timestamp"</span><span class="p">)</span> -</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> +</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a> <span class="k">if</span> <span class="n">kind</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"TABLE"</span> <span class="ow">and</span> <span class="nb">any</span><span class="p">(</span> +</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prop</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">)</span> +</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="p">(</span><span class="n">properties</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="p">[])</span> +</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="p">):</span> +</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CREATE TEMPORARY VIEW </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> <span class="k">return</span> <span class="n">create_with_partitions_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><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a> +</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a> +</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a><span class="k">def</span> <span class="nf">_map_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">):</span> +</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="n">keys</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="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">])</span> +</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> <span class="n">values</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="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">])</span> +</span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MAP_FROM_ARRAYS(</span><span class="si">{</span><span class="n">keys</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> +</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a> +</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="k">def</span> <span class="nf">_str_to_date</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-28"><a href="#L-28"><span class="linenos"> 28</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">"this"</span><span class="p">)</span> +</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</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-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="k">if</span> <span class="n">time_format</span> <span class="o">==</span> <span class="n">Hive</span><span class="o">.</span><span class="n">date_format</span><span class="p">:</span> +</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_DATE(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TO_DATE(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">time_format</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> +</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> +</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a><span class="k">def</span> <span class="nf">_unix_to_time</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-36"><a href="#L-36"><span class="linenos"> 36</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">"scale"</span><span class="p">)</span> +</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</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">"this"</span><span class="p">)</span> +</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FROM_UNIXTIME(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">SECONDS</span><span class="p">:</span> +</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TIMESTAMP_SECONDS(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MILLIS</span><span class="p">:</span> +</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TIMESTAMP_MILLIS(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="k">if</span> <span class="n">scale</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="o">.</span><span class="n">MICROS</span><span class="p">:</span> +</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TIMESTAMP_MICROS(</span><span class="si">{</span><span class="n">timestamp</span><span class="si">}</span><span class="s2">)"</span> </span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> -</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a><span class="k">class</span> <span class="nc">Spark</span><span class="p">(</span><span class="n">Hive</span><span class="p">):</span> -</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> -</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="s2">"MAP_FROM_ARRAYS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="s2">"TO_UNIX_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="s2">"LEFT"</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">Substring</span><span class="p">(</span> -</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</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-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="n">start</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">1</span><span class="p">),</span> -</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="n">length</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-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="p">),</span> -</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="s2">"SHIFTLEFT"</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">BitwiseLeftShift</span><span class="p">(</span> -</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</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-60"><a href="#L-60"><span class="linenos"> 60</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-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="p">),</span> -</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="s2">"SHIFTRIGHT"</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">BitwiseRightShift</span><span class="p">(</span> -</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</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-64"><a href="#L-64"><span class="linenos"> 64</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-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="p">),</span> -</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="s2">"RIGHT"</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">Substring</span><span class="p">(</span> -</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</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-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">(</span> -</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)),</span> -</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</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">1</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> -</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="p">),</span> -</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="n">length</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-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="p">),</span> -</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="s2">"APPROX_PERCENTILE"</span><span class="p">:</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><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="s2">"IIF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="s2">"AGGREGATE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="s2">"DAYOFWEEK"</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">DayOfWeek</span><span class="p">(</span> -</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="p">),</span> -</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="s2">"DAYOFMONTH"</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">DayOfMonth</span><span class="p">(</span> +</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Improper scale for timestamp"</span><span class="p">)</span> +</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a> +</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a> +</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a><span class="k">class</span> <span class="nc">Spark</span><span class="p">(</span><span class="n">Hive</span><span class="p">):</span> +</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> +</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="s2">"MAP_FROM_ARRAYS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="s2">"TO_UNIX_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="s2">"LEFT"</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">Substring</span><span class="p">(</span> +</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</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-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="n">start</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">1</span><span class="p">),</span> +</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="n">length</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-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="p">),</span> +</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="s2">"SHIFTLEFT"</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">BitwiseLeftShift</span><span class="p">(</span> +</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</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-63"><a href="#L-63"><span class="linenos"> 63</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-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="p">),</span> +</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="s2">"SHIFTRIGHT"</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">BitwiseRightShift</span><span class="p">(</span> +</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</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-67"><a href="#L-67"><span class="linenos"> 67</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-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="p">),</span> +</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="s2">"RIGHT"</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">Substring</span><span class="p">(</span> +</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</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-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">(</span> +</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)),</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</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">1</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> +</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="p">),</span> +</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="n">length</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-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="p">),</span> +</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="s2">"APPROX_PERCENTILE"</span><span class="p">:</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><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="s2">"IIF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="s2">"AGGREGATE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="s2">"DAYOFWEEK"</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">DayOfWeek</span><span class="p">(</span> </span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="p">),</span> -</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="s2">"DAYOFYEAR"</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">DayOfYear</span><span class="p">(</span> +</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="s2">"DAYOFMONTH"</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">DayOfMonth</span><span class="p">(</span> </span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="p">),</span> -</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="s2">"WEEKOFYEAR"</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">WeekOfYear</span><span class="p">(</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="s2">"DAYOFYEAR"</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">DayOfYear</span><span class="p">(</span> </span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="p">),</span> -</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="s2">"DATE_TRUNC"</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">TimestampTrunc</span><span class="p">(</span> -</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</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">1</span><span class="p">),</span> -</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">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-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="p">),</span> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="s2">"TRUNC"</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">DateTrunc</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">1</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-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="p">}</span> -</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="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="s2">"BROADCAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCAST"</span><span class="p">),</span> -</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="s2">"BROADCASTJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCASTJOIN"</span><span class="p">),</span> -</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="s2">"MAPJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MAPJOIN"</span><span class="p">),</span> -</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGE"</span><span class="p">),</span> -</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="s2">"SHUFFLEMERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLEMERGE"</span><span class="p">),</span> -</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="s2">"MERGEJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGEJOIN"</span><span class="p">),</span> -</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="s2">"SHUFFLE_HASH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_HASH"</span><span class="p">),</span> -</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">),</span> -</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="p">}</span> -</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> -</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="s2">"WEEKOFYEAR"</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">WeekOfYear</span><span class="p">(</span> +</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="p">),</span> +</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="s2">"DATE_TRUNC"</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">TimestampTrunc</span><span class="p">(</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</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">1</span><span class="p">),</span> +</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">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-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="p">),</span> +</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="s2">"TRUNC"</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">DateTrunc</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">1</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-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="p">}</span> +</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> +</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="s2">"BROADCAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCAST"</span><span class="p">),</span> +</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="s2">"BROADCASTJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCASTJOIN"</span><span class="p">),</span> +</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="s2">"MAPJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MAPJOIN"</span><span class="p">),</span> +</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGE"</span><span class="p">),</span> +</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="s2">"SHUFFLEMERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLEMERGE"</span><span class="p">),</span> +</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="s2">"MERGEJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGEJOIN"</span><span class="p">),</span> +</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="s2">"SHUFFLE_HASH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_HASH"</span><span class="p">),</span> +</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">),</span> +</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="p">}</span> </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">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> -</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(),</span> -</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"COLUMNS"</span><span class="p">,</span> -</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="p">)</span> -</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">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"BYTE"</span><span class="p">,</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"SHORT"</span><span class="p">,</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"LONG"</span><span class="p">,</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="p">}</span> -</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> -</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</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-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</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-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</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-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="p">}</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> -</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">),</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos">137</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">"USING </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">"</span><span class="p">,</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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">"AGGREGATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, 0, (acc, x) -> acc + x, acc -> acc)"</span><span class="p">,</span> -</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTLEFT"</span><span class="p">),</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTRIGHT"</span><span class="p">),</span> -</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"TRUNC"</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">"unit"</span><span class="p">)),</span> -</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Hint</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">" /*+ </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="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2"> */"</span><span class="p">,</span> -</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-145"><a href="#L-145"><span class="linenos">145</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</span><span class="p">,</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"AGGREGATE"</span><span class="p">),</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</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">"</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</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-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="p">),</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos">154</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">"VAR_POP"</span><span class="p">),</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_DATE"</span><span class="p">),</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos">156</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">"BOOL_OR"</span><span class="p">),</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> -</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFMONTH"</span><span class="p">),</span> -</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFYEAR"</span><span class="p">),</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"WEEKOFYEAR"</span><span class="p">),</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">"FROM_UTC_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'zone'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="p">}</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">)</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</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="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> +</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</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">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> +</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(),</span> +</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"COLUMNS"</span><span class="p">,</span> +</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="p">)</span> +</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> +</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"BYTE"</span><span class="p">,</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"SHORT"</span><span class="p">,</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"LONG"</span><span class="p">,</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="p">}</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> +</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</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-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</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-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</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-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="p">}</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> +</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">),</span> +</span><span id="L-140"><a href="#L-140"><span class="linenos">140</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">"USING </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">"</span><span class="p">,</span> +</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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">"AGGREGATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, 0, (acc, x) -> acc + x, acc -> acc)"</span><span class="p">,</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTLEFT"</span><span class="p">),</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTRIGHT"</span><span class="p">),</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"TRUNC"</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">"unit"</span><span class="p">)),</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Hint</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">" /*+ </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="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2"> */"</span><span class="p">,</span> +</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos">148</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</span><span class="p">,</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"AGGREGATE"</span><span class="p">),</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</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">"</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</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-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="p">),</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos">157</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">"VAR_POP"</span><span class="p">),</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_DATE"</span><span class="p">),</span> +</span><span id="L-159"><a href="#L-159"><span class="linenos">159</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">"BOOL_OR"</span><span class="p">),</span> +</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFMONTH"</span><span class="p">),</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFYEAR"</span><span class="p">),</span> +</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"WEEKOFYEAR"</span><span class="p">),</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">"FROM_UTC_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'zone'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="p">}</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">)</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">)</span> </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">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</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="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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span> -</span><span id="L-171"><a href="#L-171"><span class="linenos">171</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">JSON</span> -</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="p">):</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos">174</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">"FROM_JSON"</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 class="n">schema</span><span class="p">)</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</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">JSON</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="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"TO_JSON"</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-177"><a href="#L-177"><span class="linenos">177</span></a> -</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Spark</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> -</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> -</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> +</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos">173</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos">174</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">JSON</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="p">):</span> +</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span> +</span><span id="L-177"><a href="#L-177"><span class="linenos">177</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">"FROM_JSON"</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 class="n">schema</span><span class="p">)</span> +</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</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">JSON</span><span class="p">):</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos">179</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">"TO_JSON"</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-180"><a href="#L-180"><span class="linenos">180</span></a> +</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Spark</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> +</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> +</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> </span></pre></div> @@ -279,158 +279,146 @@ </div> <a class="headerlink" href="#Spark"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Spark-48"><a href="#Spark-48"><span class="linenos"> 48</span></a><span class="k">class</span> <span class="nc">Spark</span><span class="p">(</span><span class="n">Hive</span><span class="p">):</span> -</span><span id="Spark-49"><a href="#Spark-49"><span class="linenos"> 49</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> -</span><span id="Spark-50"><a href="#Spark-50"><span class="linenos"> 50</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark-51"><a href="#Spark-51"><span class="linenos"> 51</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Spark-52"><a href="#Spark-52"><span class="linenos"> 52</span></a> <span class="s2">"MAP_FROM_ARRAYS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Spark-53"><a href="#Spark-53"><span class="linenos"> 53</span></a> <span class="s2">"TO_UNIX_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Spark-54"><a href="#Spark-54"><span class="linenos"> 54</span></a> <span class="s2">"LEFT"</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">Substring</span><span class="p">(</span> -</span><span id="Spark-55"><a href="#Spark-55"><span class="linenos"> 55</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="Spark-56"><a href="#Spark-56"><span class="linenos"> 56</span></a> <span class="n">start</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">1</span><span class="p">),</span> -</span><span id="Spark-57"><a href="#Spark-57"><span class="linenos"> 57</span></a> <span class="n">length</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="Spark-58"><a href="#Spark-58"><span class="linenos"> 58</span></a> <span class="p">),</span> -</span><span id="Spark-59"><a href="#Spark-59"><span class="linenos"> 59</span></a> <span class="s2">"SHIFTLEFT"</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">BitwiseLeftShift</span><span class="p">(</span> -</span><span id="Spark-60"><a href="#Spark-60"><span class="linenos"> 60</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="Spark-61"><a href="#Spark-61"><span class="linenos"> 61</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="Spark-62"><a href="#Spark-62"><span class="linenos"> 62</span></a> <span class="p">),</span> -</span><span id="Spark-63"><a href="#Spark-63"><span class="linenos"> 63</span></a> <span class="s2">"SHIFTRIGHT"</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">BitwiseRightShift</span><span class="p">(</span> -</span><span id="Spark-64"><a href="#Spark-64"><span class="linenos"> 64</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="Spark-65"><a href="#Spark-65"><span class="linenos"> 65</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="Spark-66"><a href="#Spark-66"><span class="linenos"> 66</span></a> <span class="p">),</span> -</span><span id="Spark-67"><a href="#Spark-67"><span class="linenos"> 67</span></a> <span class="s2">"RIGHT"</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">Substring</span><span class="p">(</span> -</span><span id="Spark-68"><a href="#Spark-68"><span class="linenos"> 68</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="Spark-69"><a href="#Spark-69"><span class="linenos"> 69</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">(</span> -</span><span id="Spark-70"><a href="#Spark-70"><span class="linenos"> 70</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)),</span> -</span><span id="Spark-71"><a href="#Spark-71"><span class="linenos"> 71</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</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">1</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> -</span><span id="Spark-72"><a href="#Spark-72"><span class="linenos"> 72</span></a> <span class="p">),</span> -</span><span id="Spark-73"><a href="#Spark-73"><span class="linenos"> 73</span></a> <span class="n">length</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="Spark-74"><a href="#Spark-74"><span class="linenos"> 74</span></a> <span class="p">),</span> -</span><span id="Spark-75"><a href="#Spark-75"><span class="linenos"> 75</span></a> <span class="s2">"APPROX_PERCENTILE"</span><span class="p">:</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><span id="Spark-76"><a href="#Spark-76"><span class="linenos"> 76</span></a> <span class="s2">"IIF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Spark-77"><a href="#Spark-77"><span class="linenos"> 77</span></a> <span class="s2">"AGGREGATE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Spark-78"><a href="#Spark-78"><span class="linenos"> 78</span></a> <span class="s2">"DAYOFWEEK"</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">DayOfWeek</span><span class="p">(</span> -</span><span id="Spark-79"><a href="#Spark-79"><span class="linenos"> 79</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark-80"><a href="#Spark-80"><span class="linenos"> 80</span></a> <span class="p">),</span> -</span><span id="Spark-81"><a href="#Spark-81"><span class="linenos"> 81</span></a> <span class="s2">"DAYOFMONTH"</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">DayOfMonth</span><span class="p">(</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Spark-51"><a href="#Spark-51"><span class="linenos"> 51</span></a><span class="k">class</span> <span class="nc">Spark</span><span class="p">(</span><span class="n">Hive</span><span class="p">):</span> +</span><span id="Spark-52"><a href="#Spark-52"><span class="linenos"> 52</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> +</span><span id="Spark-53"><a href="#Spark-53"><span class="linenos"> 53</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark-54"><a href="#Spark-54"><span class="linenos"> 54</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Spark-55"><a href="#Spark-55"><span class="linenos"> 55</span></a> <span class="s2">"MAP_FROM_ARRAYS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Spark-56"><a href="#Spark-56"><span class="linenos"> 56</span></a> <span class="s2">"TO_UNIX_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Spark-57"><a href="#Spark-57"><span class="linenos"> 57</span></a> <span class="s2">"LEFT"</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">Substring</span><span class="p">(</span> +</span><span id="Spark-58"><a href="#Spark-58"><span class="linenos"> 58</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="Spark-59"><a href="#Spark-59"><span class="linenos"> 59</span></a> <span class="n">start</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">1</span><span class="p">),</span> +</span><span id="Spark-60"><a href="#Spark-60"><span class="linenos"> 60</span></a> <span class="n">length</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="Spark-61"><a href="#Spark-61"><span class="linenos"> 61</span></a> <span class="p">),</span> +</span><span id="Spark-62"><a href="#Spark-62"><span class="linenos"> 62</span></a> <span class="s2">"SHIFTLEFT"</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">BitwiseLeftShift</span><span class="p">(</span> +</span><span id="Spark-63"><a href="#Spark-63"><span class="linenos"> 63</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="Spark-64"><a href="#Spark-64"><span class="linenos"> 64</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="Spark-65"><a href="#Spark-65"><span class="linenos"> 65</span></a> <span class="p">),</span> +</span><span id="Spark-66"><a href="#Spark-66"><span class="linenos"> 66</span></a> <span class="s2">"SHIFTRIGHT"</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">BitwiseRightShift</span><span class="p">(</span> +</span><span id="Spark-67"><a href="#Spark-67"><span class="linenos"> 67</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="Spark-68"><a href="#Spark-68"><span class="linenos"> 68</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="Spark-69"><a href="#Spark-69"><span class="linenos"> 69</span></a> <span class="p">),</span> +</span><span id="Spark-70"><a href="#Spark-70"><span class="linenos"> 70</span></a> <span class="s2">"RIGHT"</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">Substring</span><span class="p">(</span> +</span><span id="Spark-71"><a href="#Spark-71"><span class="linenos"> 71</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="Spark-72"><a href="#Spark-72"><span class="linenos"> 72</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">(</span> +</span><span id="Spark-73"><a href="#Spark-73"><span class="linenos"> 73</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)),</span> +</span><span id="Spark-74"><a href="#Spark-74"><span class="linenos"> 74</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</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">1</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> +</span><span id="Spark-75"><a href="#Spark-75"><span class="linenos"> 75</span></a> <span class="p">),</span> +</span><span id="Spark-76"><a href="#Spark-76"><span class="linenos"> 76</span></a> <span class="n">length</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="Spark-77"><a href="#Spark-77"><span class="linenos"> 77</span></a> <span class="p">),</span> +</span><span id="Spark-78"><a href="#Spark-78"><span class="linenos"> 78</span></a> <span class="s2">"APPROX_PERCENTILE"</span><span class="p">:</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><span id="Spark-79"><a href="#Spark-79"><span class="linenos"> 79</span></a> <span class="s2">"IIF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Spark-80"><a href="#Spark-80"><span class="linenos"> 80</span></a> <span class="s2">"AGGREGATE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Spark-81"><a href="#Spark-81"><span class="linenos"> 81</span></a> <span class="s2">"DAYOFWEEK"</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">DayOfWeek</span><span class="p">(</span> </span><span id="Spark-82"><a href="#Spark-82"><span class="linenos"> 82</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark-83"><a href="#Spark-83"><span class="linenos"> 83</span></a> <span class="p">),</span> -</span><span id="Spark-84"><a href="#Spark-84"><span class="linenos"> 84</span></a> <span class="s2">"DAYOFYEAR"</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">DayOfYear</span><span class="p">(</span> +</span><span id="Spark-84"><a href="#Spark-84"><span class="linenos"> 84</span></a> <span class="s2">"DAYOFMONTH"</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">DayOfMonth</span><span class="p">(</span> </span><span id="Spark-85"><a href="#Spark-85"><span class="linenos"> 85</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark-86"><a href="#Spark-86"><span class="linenos"> 86</span></a> <span class="p">),</span> -</span><span id="Spark-87"><a href="#Spark-87"><span class="linenos"> 87</span></a> <span class="s2">"WEEKOFYEAR"</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">WeekOfYear</span><span class="p">(</span> +</span><span id="Spark-87"><a href="#Spark-87"><span class="linenos"> 87</span></a> <span class="s2">"DAYOFYEAR"</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">DayOfYear</span><span class="p">(</span> </span><span id="Spark-88"><a href="#Spark-88"><span class="linenos"> 88</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark-89"><a href="#Spark-89"><span class="linenos"> 89</span></a> <span class="p">),</span> -</span><span id="Spark-90"><a href="#Spark-90"><span class="linenos"> 90</span></a> <span class="s2">"DATE_TRUNC"</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">TimestampTrunc</span><span class="p">(</span> -</span><span id="Spark-91"><a href="#Spark-91"><span class="linenos"> 91</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">1</span><span class="p">),</span> -</span><span id="Spark-92"><a href="#Spark-92"><span class="linenos"> 92</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">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="Spark-93"><a href="#Spark-93"><span class="linenos"> 93</span></a> <span class="p">),</span> -</span><span id="Spark-94"><a href="#Spark-94"><span class="linenos"> 94</span></a> <span class="s2">"TRUNC"</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">DateTrunc</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">1</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="Spark-95"><a href="#Spark-95"><span class="linenos"> 95</span></a> <span class="p">}</span> -</span><span id="Spark-96"><a href="#Spark-96"><span class="linenos"> 96</span></a> -</span><span id="Spark-97"><a href="#Spark-97"><span class="linenos"> 97</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark-98"><a href="#Spark-98"><span class="linenos"> 98</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Spark-99"><a href="#Spark-99"><span class="linenos"> 99</span></a> <span class="s2">"BROADCAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCAST"</span><span class="p">),</span> -</span><span id="Spark-100"><a href="#Spark-100"><span class="linenos">100</span></a> <span class="s2">"BROADCASTJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCASTJOIN"</span><span class="p">),</span> -</span><span id="Spark-101"><a href="#Spark-101"><span class="linenos">101</span></a> <span class="s2">"MAPJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MAPJOIN"</span><span class="p">),</span> -</span><span id="Spark-102"><a href="#Spark-102"><span class="linenos">102</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGE"</span><span class="p">),</span> -</span><span id="Spark-103"><a href="#Spark-103"><span class="linenos">103</span></a> <span class="s2">"SHUFFLEMERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLEMERGE"</span><span class="p">),</span> -</span><span id="Spark-104"><a href="#Spark-104"><span class="linenos">104</span></a> <span class="s2">"MERGEJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGEJOIN"</span><span class="p">),</span> -</span><span id="Spark-105"><a href="#Spark-105"><span class="linenos">105</span></a> <span class="s2">"SHUFFLE_HASH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_HASH"</span><span class="p">),</span> -</span><span id="Spark-106"><a href="#Spark-106"><span class="linenos">106</span></a> <span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">),</span> -</span><span id="Spark-107"><a href="#Spark-107"><span class="linenos">107</span></a> <span class="p">}</span> -</span><span id="Spark-108"><a href="#Spark-108"><span class="linenos">108</span></a> -</span><span id="Spark-109"><a href="#Spark-109"><span class="linenos">109</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Spark-110"><a href="#Spark-110"><span class="linenos">110</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="Spark-90"><a href="#Spark-90"><span class="linenos"> 90</span></a> <span class="s2">"WEEKOFYEAR"</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">WeekOfYear</span><span class="p">(</span> +</span><span id="Spark-91"><a href="#Spark-91"><span class="linenos"> 91</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark-92"><a href="#Spark-92"><span class="linenos"> 92</span></a> <span class="p">),</span> +</span><span id="Spark-93"><a href="#Spark-93"><span class="linenos"> 93</span></a> <span class="s2">"DATE_TRUNC"</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">TimestampTrunc</span><span class="p">(</span> +</span><span id="Spark-94"><a href="#Spark-94"><span class="linenos"> 94</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">1</span><span class="p">),</span> +</span><span id="Spark-95"><a href="#Spark-95"><span class="linenos"> 95</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">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="Spark-96"><a href="#Spark-96"><span class="linenos"> 96</span></a> <span class="p">),</span> +</span><span id="Spark-97"><a href="#Spark-97"><span class="linenos"> 97</span></a> <span class="s2">"TRUNC"</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">DateTrunc</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">1</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="Spark-98"><a href="#Spark-98"><span class="linenos"> 98</span></a> <span class="p">}</span> +</span><span id="Spark-99"><a href="#Spark-99"><span class="linenos"> 99</span></a> +</span><span id="Spark-100"><a href="#Spark-100"><span class="linenos">100</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark-101"><a href="#Spark-101"><span class="linenos">101</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Spark-102"><a href="#Spark-102"><span class="linenos">102</span></a> <span class="s2">"BROADCAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCAST"</span><span class="p">),</span> +</span><span id="Spark-103"><a href="#Spark-103"><span class="linenos">103</span></a> <span class="s2">"BROADCASTJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCASTJOIN"</span><span class="p">),</span> +</span><span id="Spark-104"><a href="#Spark-104"><span class="linenos">104</span></a> <span class="s2">"MAPJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MAPJOIN"</span><span class="p">),</span> +</span><span id="Spark-105"><a href="#Spark-105"><span class="linenos">105</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGE"</span><span class="p">),</span> +</span><span id="Spark-106"><a href="#Spark-106"><span class="linenos">106</span></a> <span class="s2">"SHUFFLEMERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLEMERGE"</span><span class="p">),</span> +</span><span id="Spark-107"><a href="#Spark-107"><span class="linenos">107</span></a> <span class="s2">"MERGEJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGEJOIN"</span><span class="p">),</span> +</span><span id="Spark-108"><a href="#Spark-108"><span class="linenos">108</span></a> <span class="s2">"SHUFFLE_HASH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_HASH"</span><span class="p">),</span> +</span><span id="Spark-109"><a href="#Spark-109"><span class="linenos">109</span></a> <span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">),</span> +</span><span id="Spark-110"><a href="#Spark-110"><span class="linenos">110</span></a> <span class="p">}</span> </span><span id="Spark-111"><a href="#Spark-111"><span class="linenos">111</span></a> -</span><span id="Spark-112"><a href="#Spark-112"><span class="linenos">112</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Spark-113"><a href="#Spark-113"><span class="linenos">113</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Spark-114"><a href="#Spark-114"><span class="linenos">114</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> -</span><span id="Spark-115"><a href="#Spark-115"><span class="linenos">115</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(),</span> -</span><span id="Spark-116"><a href="#Spark-116"><span class="linenos">116</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"COLUMNS"</span><span class="p">,</span> -</span><span id="Spark-117"><a href="#Spark-117"><span class="linenos">117</span></a> <span class="p">)</span> -</span><span id="Spark-118"><a href="#Spark-118"><span class="linenos">118</span></a> -</span><span id="Spark-119"><a href="#Spark-119"><span class="linenos">119</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> -</span><span id="Spark-120"><a href="#Spark-120"><span class="linenos">120</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark-121"><a href="#Spark-121"><span class="linenos">121</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> -</span><span id="Spark-122"><a href="#Spark-122"><span class="linenos">122</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"BYTE"</span><span class="p">,</span> -</span><span id="Spark-123"><a href="#Spark-123"><span class="linenos">123</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"SHORT"</span><span class="p">,</span> -</span><span id="Spark-124"><a href="#Spark-124"><span class="linenos">124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"LONG"</span><span class="p">,</span> -</span><span id="Spark-125"><a href="#Spark-125"><span class="linenos">125</span></a> <span class="p">}</span> -</span><span id="Spark-126"><a href="#Spark-126"><span class="linenos">126</span></a> -</span><span id="Spark-127"><a href="#Spark-127"><span class="linenos">127</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark-128"><a href="#Spark-128"><span class="linenos">128</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> -</span><span id="Spark-129"><a href="#Spark-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</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="Spark-130"><a href="#Spark-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</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="Spark-131"><a href="#Spark-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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="Spark-132"><a href="#Spark-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</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="Spark-133"><a href="#Spark-133"><span class="linenos">133</span></a> <span class="p">}</span> -</span><span id="Spark-134"><a href="#Spark-134"><span class="linenos">134</span></a> -</span><span id="Spark-135"><a href="#Spark-135"><span class="linenos">135</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark-136"><a href="#Spark-136"><span class="linenos">136</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Spark-137"><a href="#Spark-137"><span class="linenos">137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">),</span> -</span><span id="Spark-138"><a href="#Spark-138"><span class="linenos">138</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">"USING </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">"</span><span class="p">,</span> -</span><span id="Spark-139"><a href="#Spark-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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">"AGGREGATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, 0, (acc, x) -> acc + x, acc -> acc)"</span><span class="p">,</span> -</span><span id="Spark-140"><a href="#Spark-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTLEFT"</span><span class="p">),</span> -</span><span id="Spark-141"><a href="#Spark-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTRIGHT"</span><span class="p">),</span> -</span><span id="Spark-142"><a href="#Spark-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"TRUNC"</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">"unit"</span><span class="p">)),</span> -</span><span id="Spark-143"><a href="#Spark-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Hint</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">" /*+ </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="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2"> */"</span><span class="p">,</span> -</span><span id="Spark-144"><a href="#Spark-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> -</span><span id="Spark-145"><a href="#Spark-145"><span class="linenos">145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Spark-146"><a href="#Spark-146"><span class="linenos">146</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</span><span class="p">,</span> -</span><span id="Spark-147"><a href="#Spark-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> -</span><span id="Spark-148"><a href="#Spark-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span> -</span><span id="Spark-149"><a href="#Spark-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"AGGREGATE"</span><span class="p">),</span> -</span><span id="Spark-150"><a href="#Spark-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</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">"</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Spark-151"><a href="#Spark-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</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="Spark-152"><a href="#Spark-152"><span class="linenos">152</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> -</span><span id="Spark-153"><a href="#Spark-153"><span class="linenos">153</span></a> <span class="p">),</span> -</span><span id="Spark-154"><a href="#Spark-154"><span class="linenos">154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> -</span><span id="Spark-155"><a href="#Spark-155"><span class="linenos">155</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">"VAR_POP"</span><span class="p">),</span> -</span><span id="Spark-156"><a href="#Spark-156"><span class="linenos">156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_DATE"</span><span class="p">),</span> -</span><span id="Spark-157"><a href="#Spark-157"><span class="linenos">157</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">"BOOL_OR"</span><span class="p">),</span> -</span><span id="Spark-158"><a href="#Spark-158"><span class="linenos">158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> -</span><span id="Spark-159"><a href="#Spark-159"><span class="linenos">159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFMONTH"</span><span class="p">),</span> -</span><span id="Spark-160"><a href="#Spark-160"><span class="linenos">160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFYEAR"</span><span class="p">),</span> -</span><span id="Spark-161"><a href="#Spark-161"><span class="linenos">161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"WEEKOFYEAR"</span><span class="p">),</span> -</span><span id="Spark-162"><a href="#Spark-162"><span class="linenos">162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">"FROM_UTC_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'zone'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Spark-163"><a href="#Spark-163"><span class="linenos">163</span></a> <span class="p">}</span> -</span><span id="Spark-164"><a href="#Spark-164"><span class="linenos">164</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">)</span> -</span><span id="Spark-165"><a href="#Spark-165"><span class="linenos">165</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">)</span> -</span><span id="Spark-166"><a href="#Spark-166"><span class="linenos">166</span></a> -</span><span id="Spark-167"><a href="#Spark-167"><span class="linenos">167</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Spark-168"><a href="#Spark-168"><span class="linenos">168</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Spark-112"><a href="#Spark-112"><span class="linenos">112</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Spark-113"><a href="#Spark-113"><span class="linenos">113</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="Spark-114"><a href="#Spark-114"><span class="linenos">114</span></a> +</span><span id="Spark-115"><a href="#Spark-115"><span class="linenos">115</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Spark-116"><a href="#Spark-116"><span class="linenos">116</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Spark-117"><a href="#Spark-117"><span class="linenos">117</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> +</span><span id="Spark-118"><a href="#Spark-118"><span class="linenos">118</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(),</span> +</span><span id="Spark-119"><a href="#Spark-119"><span class="linenos">119</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"COLUMNS"</span><span class="p">,</span> +</span><span id="Spark-120"><a href="#Spark-120"><span class="linenos">120</span></a> <span class="p">)</span> +</span><span id="Spark-121"><a href="#Spark-121"><span class="linenos">121</span></a> +</span><span id="Spark-122"><a href="#Spark-122"><span class="linenos">122</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="Spark-123"><a href="#Spark-123"><span class="linenos">123</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark-124"><a href="#Spark-124"><span class="linenos">124</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> +</span><span id="Spark-125"><a href="#Spark-125"><span class="linenos">125</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"BYTE"</span><span class="p">,</span> +</span><span id="Spark-126"><a href="#Spark-126"><span class="linenos">126</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"SHORT"</span><span class="p">,</span> +</span><span id="Spark-127"><a href="#Spark-127"><span class="linenos">127</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"LONG"</span><span class="p">,</span> +</span><span id="Spark-128"><a href="#Spark-128"><span class="linenos">128</span></a> <span class="p">}</span> +</span><span id="Spark-129"><a href="#Spark-129"><span class="linenos">129</span></a> +</span><span id="Spark-130"><a href="#Spark-130"><span class="linenos">130</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark-131"><a href="#Spark-131"><span class="linenos">131</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> +</span><span id="Spark-132"><a href="#Spark-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</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="Spark-133"><a href="#Spark-133"><span class="linenos">133</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</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="Spark-134"><a href="#Spark-134"><span class="linenos">134</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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="Spark-135"><a href="#Spark-135"><span class="linenos">135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</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="Spark-136"><a href="#Spark-136"><span class="linenos">136</span></a> <span class="p">}</span> +</span><span id="Spark-137"><a href="#Spark-137"><span class="linenos">137</span></a> +</span><span id="Spark-138"><a href="#Spark-138"><span class="linenos">138</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark-139"><a href="#Spark-139"><span class="linenos">139</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Spark-140"><a href="#Spark-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">),</span> +</span><span id="Spark-141"><a href="#Spark-141"><span class="linenos">141</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">"USING </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">"</span><span class="p">,</span> +</span><span id="Spark-142"><a href="#Spark-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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">"AGGREGATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, 0, (acc, x) -> acc + x, acc -> acc)"</span><span class="p">,</span> +</span><span id="Spark-143"><a href="#Spark-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTLEFT"</span><span class="p">),</span> +</span><span id="Spark-144"><a href="#Spark-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTRIGHT"</span><span class="p">),</span> +</span><span id="Spark-145"><a href="#Spark-145"><span class="linenos">145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"TRUNC"</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">"unit"</span><span class="p">)),</span> +</span><span id="Spark-146"><a href="#Spark-146"><span class="linenos">146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Hint</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">" /*+ </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="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2"> */"</span><span class="p">,</span> +</span><span id="Spark-147"><a href="#Spark-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> +</span><span id="Spark-148"><a href="#Spark-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Spark-149"><a href="#Spark-149"><span class="linenos">149</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</span><span class="p">,</span> +</span><span id="Spark-150"><a href="#Spark-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> +</span><span id="Spark-151"><a href="#Spark-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span> +</span><span id="Spark-152"><a href="#Spark-152"><span class="linenos">152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"AGGREGATE"</span><span class="p">),</span> +</span><span id="Spark-153"><a href="#Spark-153"><span class="linenos">153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</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">"</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Spark-154"><a href="#Spark-154"><span class="linenos">154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</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="Spark-155"><a href="#Spark-155"><span class="linenos">155</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> +</span><span id="Spark-156"><a href="#Spark-156"><span class="linenos">156</span></a> <span class="p">),</span> +</span><span id="Spark-157"><a href="#Spark-157"><span class="linenos">157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> +</span><span id="Spark-158"><a href="#Spark-158"><span class="linenos">158</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">"VAR_POP"</span><span class="p">),</span> +</span><span id="Spark-159"><a href="#Spark-159"><span class="linenos">159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_DATE"</span><span class="p">),</span> +</span><span id="Spark-160"><a href="#Spark-160"><span class="linenos">160</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">"BOOL_OR"</span><span class="p">),</span> +</span><span id="Spark-161"><a href="#Spark-161"><span class="linenos">161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> +</span><span id="Spark-162"><a href="#Spark-162"><span class="linenos">162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFMONTH"</span><span class="p">),</span> +</span><span id="Spark-163"><a href="#Spark-163"><span class="linenos">163</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFYEAR"</span><span class="p">),</span> +</span><span id="Spark-164"><a href="#Spark-164"><span class="linenos">164</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"WEEKOFYEAR"</span><span class="p">),</span> +</span><span id="Spark-165"><a href="#Spark-165"><span class="linenos">165</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">"FROM_UTC_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'zone'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Spark-166"><a href="#Spark-166"><span class="linenos">166</span></a> <span class="p">}</span> +</span><span id="Spark-167"><a href="#Spark-167"><span class="linenos">167</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">)</span> +</span><span id="Spark-168"><a href="#Spark-168"><span class="linenos">168</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">)</span> </span><span id="Spark-169"><a href="#Spark-169"><span class="linenos">169</span></a> -</span><span id="Spark-170"><a href="#Spark-170"><span class="linenos">170</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Spark-171"><a href="#Spark-171"><span class="linenos">171</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span> -</span><span id="Spark-172"><a href="#Spark-172"><span class="linenos">172</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">JSON</span> -</span><span id="Spark-173"><a href="#Spark-173"><span class="linenos">173</span></a> <span class="p">):</span> -</span><span id="Spark-174"><a href="#Spark-174"><span class="linenos">174</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span> -</span><span id="Spark-175"><a href="#Spark-175"><span class="linenos">175</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">"FROM_JSON"</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 class="n">schema</span><span class="p">)</span> -</span><span id="Spark-176"><a href="#Spark-176"><span class="linenos">176</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</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">JSON</span><span class="p">):</span> -</span><span id="Spark-177"><a href="#Spark-177"><span class="linenos">177</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">"TO_JSON"</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="Spark-178"><a href="#Spark-178"><span class="linenos">178</span></a> -</span><span id="Spark-179"><a href="#Spark-179"><span class="linenos">179</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Spark</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Spark-180"><a href="#Spark-180"><span class="linenos">180</span></a> -</span><span id="Spark-181"><a href="#Spark-181"><span class="linenos">181</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> -</span><span id="Spark-182"><a href="#Spark-182"><span class="linenos">182</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> +</span><span id="Spark-170"><a href="#Spark-170"><span class="linenos">170</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Spark-171"><a href="#Spark-171"><span class="linenos">171</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Spark-172"><a href="#Spark-172"><span class="linenos">172</span></a> +</span><span id="Spark-173"><a href="#Spark-173"><span class="linenos">173</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Spark-174"><a href="#Spark-174"><span class="linenos">174</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span> +</span><span id="Spark-175"><a href="#Spark-175"><span class="linenos">175</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">JSON</span> +</span><span id="Spark-176"><a href="#Spark-176"><span class="linenos">176</span></a> <span class="p">):</span> +</span><span id="Spark-177"><a href="#Spark-177"><span class="linenos">177</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span> +</span><span id="Spark-178"><a href="#Spark-178"><span class="linenos">178</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">"FROM_JSON"</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 class="n">schema</span><span class="p">)</span> +</span><span id="Spark-179"><a href="#Spark-179"><span class="linenos">179</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</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">JSON</span><span class="p">):</span> +</span><span id="Spark-180"><a href="#Spark-180"><span class="linenos">180</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">"TO_JSON"</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="Spark-181"><a href="#Spark-181"><span class="linenos">181</span></a> +</span><span id="Spark-182"><a href="#Spark-182"><span class="linenos">182</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Spark</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Spark-183"><a href="#Spark-183"><span class="linenos">183</span></a> +</span><span id="Spark-184"><a href="#Spark-184"><span class="linenos">184</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> +</span><span id="Spark-185"><a href="#Spark-185"><span class="linenos">185</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> </span></pre></div> - <div id="Spark.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Spark</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Spark.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -459,75 +447,75 @@ </div> <a class="headerlink" href="#Spark.Parser"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Parser-49"><a href="#Spark.Parser-49"><span class="linenos"> 49</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> -</span><span id="Spark.Parser-50"><a href="#Spark.Parser-50"><span class="linenos"> 50</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark.Parser-51"><a href="#Spark.Parser-51"><span class="linenos"> 51</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Spark.Parser-52"><a href="#Spark.Parser-52"><span class="linenos"> 52</span></a> <span class="s2">"MAP_FROM_ARRAYS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Spark.Parser-53"><a href="#Spark.Parser-53"><span class="linenos"> 53</span></a> <span class="s2">"TO_UNIX_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Spark.Parser-54"><a href="#Spark.Parser-54"><span class="linenos"> 54</span></a> <span class="s2">"LEFT"</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">Substring</span><span class="p">(</span> -</span><span id="Spark.Parser-55"><a href="#Spark.Parser-55"><span class="linenos"> 55</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="Spark.Parser-56"><a href="#Spark.Parser-56"><span class="linenos"> 56</span></a> <span class="n">start</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">1</span><span class="p">),</span> -</span><span id="Spark.Parser-57"><a href="#Spark.Parser-57"><span class="linenos"> 57</span></a> <span class="n">length</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="Spark.Parser-58"><a href="#Spark.Parser-58"><span class="linenos"> 58</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-59"><a href="#Spark.Parser-59"><span class="linenos"> 59</span></a> <span class="s2">"SHIFTLEFT"</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">BitwiseLeftShift</span><span class="p">(</span> -</span><span id="Spark.Parser-60"><a href="#Spark.Parser-60"><span class="linenos"> 60</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="Spark.Parser-61"><a href="#Spark.Parser-61"><span class="linenos"> 61</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="Spark.Parser-62"><a href="#Spark.Parser-62"><span class="linenos"> 62</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-63"><a href="#Spark.Parser-63"><span class="linenos"> 63</span></a> <span class="s2">"SHIFTRIGHT"</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">BitwiseRightShift</span><span class="p">(</span> -</span><span id="Spark.Parser-64"><a href="#Spark.Parser-64"><span class="linenos"> 64</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="Spark.Parser-65"><a href="#Spark.Parser-65"><span class="linenos"> 65</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="Spark.Parser-66"><a href="#Spark.Parser-66"><span class="linenos"> 66</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-67"><a href="#Spark.Parser-67"><span class="linenos"> 67</span></a> <span class="s2">"RIGHT"</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">Substring</span><span class="p">(</span> -</span><span id="Spark.Parser-68"><a href="#Spark.Parser-68"><span class="linenos"> 68</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="Spark.Parser-69"><a href="#Spark.Parser-69"><span class="linenos"> 69</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">(</span> -</span><span id="Spark.Parser-70"><a href="#Spark.Parser-70"><span class="linenos"> 70</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)),</span> -</span><span id="Spark.Parser-71"><a href="#Spark.Parser-71"><span class="linenos"> 71</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</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">1</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> -</span><span id="Spark.Parser-72"><a href="#Spark.Parser-72"><span class="linenos"> 72</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-73"><a href="#Spark.Parser-73"><span class="linenos"> 73</span></a> <span class="n">length</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="Spark.Parser-74"><a href="#Spark.Parser-74"><span class="linenos"> 74</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-75"><a href="#Spark.Parser-75"><span class="linenos"> 75</span></a> <span class="s2">"APPROX_PERCENTILE"</span><span class="p">:</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><span id="Spark.Parser-76"><a href="#Spark.Parser-76"><span class="linenos"> 76</span></a> <span class="s2">"IIF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Spark.Parser-77"><a href="#Spark.Parser-77"><span class="linenos"> 77</span></a> <span class="s2">"AGGREGATE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> -</span><span id="Spark.Parser-78"><a href="#Spark.Parser-78"><span class="linenos"> 78</span></a> <span class="s2">"DAYOFWEEK"</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">DayOfWeek</span><span class="p">(</span> -</span><span id="Spark.Parser-79"><a href="#Spark.Parser-79"><span class="linenos"> 79</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark.Parser-80"><a href="#Spark.Parser-80"><span class="linenos"> 80</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-81"><a href="#Spark.Parser-81"><span class="linenos"> 81</span></a> <span class="s2">"DAYOFMONTH"</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">DayOfMonth</span><span class="p">(</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Parser-52"><a href="#Spark.Parser-52"><span class="linenos"> 52</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> +</span><span id="Spark.Parser-53"><a href="#Spark.Parser-53"><span class="linenos"> 53</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark.Parser-54"><a href="#Spark.Parser-54"><span class="linenos"> 54</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Spark.Parser-55"><a href="#Spark.Parser-55"><span class="linenos"> 55</span></a> <span class="s2">"MAP_FROM_ARRAYS"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Spark.Parser-56"><a href="#Spark.Parser-56"><span class="linenos"> 56</span></a> <span class="s2">"TO_UNIX_TIMESTAMP"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Spark.Parser-57"><a href="#Spark.Parser-57"><span class="linenos"> 57</span></a> <span class="s2">"LEFT"</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">Substring</span><span class="p">(</span> +</span><span id="Spark.Parser-58"><a href="#Spark.Parser-58"><span class="linenos"> 58</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="Spark.Parser-59"><a href="#Spark.Parser-59"><span class="linenos"> 59</span></a> <span class="n">start</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">1</span><span class="p">),</span> +</span><span id="Spark.Parser-60"><a href="#Spark.Parser-60"><span class="linenos"> 60</span></a> <span class="n">length</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="Spark.Parser-61"><a href="#Spark.Parser-61"><span class="linenos"> 61</span></a> <span class="p">),</span> +</span><span id="Spark.Parser-62"><a href="#Spark.Parser-62"><span class="linenos"> 62</span></a> <span class="s2">"SHIFTLEFT"</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">BitwiseLeftShift</span><span class="p">(</span> +</span><span id="Spark.Parser-63"><a href="#Spark.Parser-63"><span class="linenos"> 63</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="Spark.Parser-64"><a href="#Spark.Parser-64"><span class="linenos"> 64</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="Spark.Parser-65"><a href="#Spark.Parser-65"><span class="linenos"> 65</span></a> <span class="p">),</span> +</span><span id="Spark.Parser-66"><a href="#Spark.Parser-66"><span class="linenos"> 66</span></a> <span class="s2">"SHIFTRIGHT"</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">BitwiseRightShift</span><span class="p">(</span> +</span><span id="Spark.Parser-67"><a href="#Spark.Parser-67"><span class="linenos"> 67</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="Spark.Parser-68"><a href="#Spark.Parser-68"><span class="linenos"> 68</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="Spark.Parser-69"><a href="#Spark.Parser-69"><span class="linenos"> 69</span></a> <span class="p">),</span> +</span><span id="Spark.Parser-70"><a href="#Spark.Parser-70"><span class="linenos"> 70</span></a> <span class="s2">"RIGHT"</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">Substring</span><span class="p">(</span> +</span><span id="Spark.Parser-71"><a href="#Spark.Parser-71"><span class="linenos"> 71</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="Spark.Parser-72"><a href="#Spark.Parser-72"><span class="linenos"> 72</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">(</span> +</span><span id="Spark.Parser-73"><a href="#Spark.Parser-73"><span class="linenos"> 73</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)),</span> +</span><span id="Spark.Parser-74"><a href="#Spark.Parser-74"><span class="linenos"> 74</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Add</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">1</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> +</span><span id="Spark.Parser-75"><a href="#Spark.Parser-75"><span class="linenos"> 75</span></a> <span class="p">),</span> +</span><span id="Spark.Parser-76"><a href="#Spark.Parser-76"><span class="linenos"> 76</span></a> <span class="n">length</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="Spark.Parser-77"><a href="#Spark.Parser-77"><span class="linenos"> 77</span></a> <span class="p">),</span> +</span><span id="Spark.Parser-78"><a href="#Spark.Parser-78"><span class="linenos"> 78</span></a> <span class="s2">"APPROX_PERCENTILE"</span><span class="p">:</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><span id="Spark.Parser-79"><a href="#Spark.Parser-79"><span class="linenos"> 79</span></a> <span class="s2">"IIF"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Spark.Parser-80"><a href="#Spark.Parser-80"><span class="linenos"> 80</span></a> <span class="s2">"AGGREGATE"</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span> +</span><span id="Spark.Parser-81"><a href="#Spark.Parser-81"><span class="linenos"> 81</span></a> <span class="s2">"DAYOFWEEK"</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">DayOfWeek</span><span class="p">(</span> </span><span id="Spark.Parser-82"><a href="#Spark.Parser-82"><span class="linenos"> 82</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark.Parser-83"><a href="#Spark.Parser-83"><span class="linenos"> 83</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-84"><a href="#Spark.Parser-84"><span class="linenos"> 84</span></a> <span class="s2">"DAYOFYEAR"</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">DayOfYear</span><span class="p">(</span> +</span><span id="Spark.Parser-84"><a href="#Spark.Parser-84"><span class="linenos"> 84</span></a> <span class="s2">"DAYOFMONTH"</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">DayOfMonth</span><span class="p">(</span> </span><span id="Spark.Parser-85"><a href="#Spark.Parser-85"><span class="linenos"> 85</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark.Parser-86"><a href="#Spark.Parser-86"><span class="linenos"> 86</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-87"><a href="#Spark.Parser-87"><span class="linenos"> 87</span></a> <span class="s2">"WEEKOFYEAR"</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">WeekOfYear</span><span class="p">(</span> +</span><span id="Spark.Parser-87"><a href="#Spark.Parser-87"><span class="linenos"> 87</span></a> <span class="s2">"DAYOFYEAR"</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">DayOfYear</span><span class="p">(</span> </span><span id="Spark.Parser-88"><a href="#Spark.Parser-88"><span class="linenos"> 88</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark.Parser-89"><a href="#Spark.Parser-89"><span class="linenos"> 89</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-90"><a href="#Spark.Parser-90"><span class="linenos"> 90</span></a> <span class="s2">"DATE_TRUNC"</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">TimestampTrunc</span><span class="p">(</span> -</span><span id="Spark.Parser-91"><a href="#Spark.Parser-91"><span class="linenos"> 91</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">1</span><span class="p">),</span> -</span><span id="Spark.Parser-92"><a href="#Spark.Parser-92"><span class="linenos"> 92</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">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="Spark.Parser-93"><a href="#Spark.Parser-93"><span class="linenos"> 93</span></a> <span class="p">),</span> -</span><span id="Spark.Parser-94"><a href="#Spark.Parser-94"><span class="linenos"> 94</span></a> <span class="s2">"TRUNC"</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">DateTrunc</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">1</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="Spark.Parser-95"><a href="#Spark.Parser-95"><span class="linenos"> 95</span></a> <span class="p">}</span> -</span><span id="Spark.Parser-96"><a href="#Spark.Parser-96"><span class="linenos"> 96</span></a> -</span><span id="Spark.Parser-97"><a href="#Spark.Parser-97"><span class="linenos"> 97</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark.Parser-98"><a href="#Spark.Parser-98"><span class="linenos"> 98</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Spark.Parser-99"><a href="#Spark.Parser-99"><span class="linenos"> 99</span></a> <span class="s2">"BROADCAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCAST"</span><span class="p">),</span> -</span><span id="Spark.Parser-100"><a href="#Spark.Parser-100"><span class="linenos">100</span></a> <span class="s2">"BROADCASTJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCASTJOIN"</span><span class="p">),</span> -</span><span id="Spark.Parser-101"><a href="#Spark.Parser-101"><span class="linenos">101</span></a> <span class="s2">"MAPJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MAPJOIN"</span><span class="p">),</span> -</span><span id="Spark.Parser-102"><a href="#Spark.Parser-102"><span class="linenos">102</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGE"</span><span class="p">),</span> -</span><span id="Spark.Parser-103"><a href="#Spark.Parser-103"><span class="linenos">103</span></a> <span class="s2">"SHUFFLEMERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLEMERGE"</span><span class="p">),</span> -</span><span id="Spark.Parser-104"><a href="#Spark.Parser-104"><span class="linenos">104</span></a> <span class="s2">"MERGEJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGEJOIN"</span><span class="p">),</span> -</span><span id="Spark.Parser-105"><a href="#Spark.Parser-105"><span class="linenos">105</span></a> <span class="s2">"SHUFFLE_HASH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_HASH"</span><span class="p">),</span> -</span><span id="Spark.Parser-106"><a href="#Spark.Parser-106"><span class="linenos">106</span></a> <span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">),</span> -</span><span id="Spark.Parser-107"><a href="#Spark.Parser-107"><span class="linenos">107</span></a> <span class="p">}</span> -</span><span id="Spark.Parser-108"><a href="#Spark.Parser-108"><span class="linenos">108</span></a> -</span><span id="Spark.Parser-109"><a href="#Spark.Parser-109"><span class="linenos">109</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Spark.Parser-110"><a href="#Spark.Parser-110"><span class="linenos">110</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="Spark.Parser-90"><a href="#Spark.Parser-90"><span class="linenos"> 90</span></a> <span class="s2">"WEEKOFYEAR"</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">WeekOfYear</span><span class="p">(</span> +</span><span id="Spark.Parser-91"><a href="#Spark.Parser-91"><span class="linenos"> 91</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</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="Spark.Parser-92"><a href="#Spark.Parser-92"><span class="linenos"> 92</span></a> <span class="p">),</span> +</span><span id="Spark.Parser-93"><a href="#Spark.Parser-93"><span class="linenos"> 93</span></a> <span class="s2">"DATE_TRUNC"</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">TimestampTrunc</span><span class="p">(</span> +</span><span id="Spark.Parser-94"><a href="#Spark.Parser-94"><span class="linenos"> 94</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">1</span><span class="p">),</span> +</span><span id="Spark.Parser-95"><a href="#Spark.Parser-95"><span class="linenos"> 95</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="n">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="Spark.Parser-96"><a href="#Spark.Parser-96"><span class="linenos"> 96</span></a> <span class="p">),</span> +</span><span id="Spark.Parser-97"><a href="#Spark.Parser-97"><span class="linenos"> 97</span></a> <span class="s2">"TRUNC"</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">DateTrunc</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">1</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="Spark.Parser-98"><a href="#Spark.Parser-98"><span class="linenos"> 98</span></a> <span class="p">}</span> +</span><span id="Spark.Parser-99"><a href="#Spark.Parser-99"><span class="linenos"> 99</span></a> +</span><span id="Spark.Parser-100"><a href="#Spark.Parser-100"><span class="linenos">100</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark.Parser-101"><a href="#Spark.Parser-101"><span class="linenos">101</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Spark.Parser-102"><a href="#Spark.Parser-102"><span class="linenos">102</span></a> <span class="s2">"BROADCAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCAST"</span><span class="p">),</span> +</span><span id="Spark.Parser-103"><a href="#Spark.Parser-103"><span class="linenos">103</span></a> <span class="s2">"BROADCASTJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"BROADCASTJOIN"</span><span class="p">),</span> +</span><span id="Spark.Parser-104"><a href="#Spark.Parser-104"><span class="linenos">104</span></a> <span class="s2">"MAPJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MAPJOIN"</span><span class="p">),</span> +</span><span id="Spark.Parser-105"><a href="#Spark.Parser-105"><span class="linenos">105</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGE"</span><span class="p">),</span> +</span><span id="Spark.Parser-106"><a href="#Spark.Parser-106"><span class="linenos">106</span></a> <span class="s2">"SHUFFLEMERGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLEMERGE"</span><span class="p">),</span> +</span><span id="Spark.Parser-107"><a href="#Spark.Parser-107"><span class="linenos">107</span></a> <span class="s2">"MERGEJOIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"MERGEJOIN"</span><span class="p">),</span> +</span><span id="Spark.Parser-108"><a href="#Spark.Parser-108"><span class="linenos">108</span></a> <span class="s2">"SHUFFLE_HASH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_HASH"</span><span class="p">),</span> +</span><span id="Spark.Parser-109"><a href="#Spark.Parser-109"><span class="linenos">109</span></a> <span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_hint</span><span class="p">(</span><span class="s2">"SHUFFLE_REPLICATE_NL"</span><span class="p">),</span> +</span><span id="Spark.Parser-110"><a href="#Spark.Parser-110"><span class="linenos">110</span></a> <span class="p">}</span> </span><span id="Spark.Parser-111"><a href="#Spark.Parser-111"><span class="linenos">111</span></a> -</span><span id="Spark.Parser-112"><a href="#Spark.Parser-112"><span class="linenos">112</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Spark.Parser-113"><a href="#Spark.Parser-113"><span class="linenos">113</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Spark.Parser-114"><a href="#Spark.Parser-114"><span class="linenos">114</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> -</span><span id="Spark.Parser-115"><a href="#Spark.Parser-115"><span class="linenos">115</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(),</span> -</span><span id="Spark.Parser-116"><a href="#Spark.Parser-116"><span class="linenos">116</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"COLUMNS"</span><span class="p">,</span> -</span><span id="Spark.Parser-117"><a href="#Spark.Parser-117"><span class="linenos">117</span></a> <span class="p">)</span> +</span><span id="Spark.Parser-112"><a href="#Spark.Parser-112"><span class="linenos">112</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Spark.Parser-113"><a href="#Spark.Parser-113"><span class="linenos">113</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="Spark.Parser-114"><a href="#Spark.Parser-114"><span class="linenos">114</span></a> +</span><span id="Spark.Parser-115"><a href="#Spark.Parser-115"><span class="linenos">115</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Spark.Parser-116"><a href="#Spark.Parser-116"><span class="linenos">116</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">,</span> <span class="s2">"COLUMNS"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Spark.Parser-117"><a href="#Spark.Parser-117"><span class="linenos">117</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> +</span><span id="Spark.Parser-118"><a href="#Spark.Parser-118"><span class="linenos">118</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(),</span> +</span><span id="Spark.Parser-119"><a href="#Spark.Parser-119"><span class="linenos">119</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"COLUMNS"</span><span class="p">,</span> +</span><span id="Spark.Parser-120"><a href="#Spark.Parser-120"><span class="linenos">120</span></a> <span class="p">)</span> </span></pre></div> @@ -584,67 +572,67 @@ Default: "nulls_are_small"</li> </div> <a class="headerlink" href="#Spark.Generator"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Generator-119"><a href="#Spark.Generator-119"><span class="linenos">119</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> -</span><span id="Spark.Generator-120"><a href="#Spark.Generator-120"><span class="linenos">120</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark.Generator-121"><a href="#Spark.Generator-121"><span class="linenos">121</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> -</span><span id="Spark.Generator-122"><a href="#Spark.Generator-122"><span class="linenos">122</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"BYTE"</span><span class="p">,</span> -</span><span id="Spark.Generator-123"><a href="#Spark.Generator-123"><span class="linenos">123</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"SHORT"</span><span class="p">,</span> -</span><span id="Spark.Generator-124"><a href="#Spark.Generator-124"><span class="linenos">124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"LONG"</span><span class="p">,</span> -</span><span id="Spark.Generator-125"><a href="#Spark.Generator-125"><span class="linenos">125</span></a> <span class="p">}</span> -</span><span id="Spark.Generator-126"><a href="#Spark.Generator-126"><span class="linenos">126</span></a> -</span><span id="Spark.Generator-127"><a href="#Spark.Generator-127"><span class="linenos">127</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark.Generator-128"><a href="#Spark.Generator-128"><span class="linenos">128</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> -</span><span id="Spark.Generator-129"><a href="#Spark.Generator-129"><span class="linenos">129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</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="Spark.Generator-130"><a href="#Spark.Generator-130"><span class="linenos">130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</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="Spark.Generator-131"><a href="#Spark.Generator-131"><span class="linenos">131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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="Spark.Generator-132"><a href="#Spark.Generator-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</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="Spark.Generator-133"><a href="#Spark.Generator-133"><span class="linenos">133</span></a> <span class="p">}</span> -</span><span id="Spark.Generator-134"><a href="#Spark.Generator-134"><span class="linenos">134</span></a> -</span><span id="Spark.Generator-135"><a href="#Spark.Generator-135"><span class="linenos">135</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Spark.Generator-136"><a href="#Spark.Generator-136"><span class="linenos">136</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> <span class="c1"># type: ignore</span> -</span><span id="Spark.Generator-137"><a href="#Spark.Generator-137"><span class="linenos">137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">),</span> -</span><span id="Spark.Generator-138"><a href="#Spark.Generator-138"><span class="linenos">138</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">"USING </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">"</span><span class="p">,</span> -</span><span id="Spark.Generator-139"><a href="#Spark.Generator-139"><span class="linenos">139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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">"AGGREGATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, 0, (acc, x) -> acc + x, acc -> acc)"</span><span class="p">,</span> -</span><span id="Spark.Generator-140"><a href="#Spark.Generator-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTLEFT"</span><span class="p">),</span> -</span><span id="Spark.Generator-141"><a href="#Spark.Generator-141"><span class="linenos">141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTRIGHT"</span><span class="p">),</span> -</span><span id="Spark.Generator-142"><a href="#Spark.Generator-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"TRUNC"</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">"unit"</span><span class="p">)),</span> -</span><span id="Spark.Generator-143"><a href="#Spark.Generator-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Hint</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">" /*+ </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="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2"> */"</span><span class="p">,</span> -</span><span id="Spark.Generator-144"><a href="#Spark.Generator-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> -</span><span id="Spark.Generator-145"><a href="#Spark.Generator-145"><span class="linenos">145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Spark.Generator-146"><a href="#Spark.Generator-146"><span class="linenos">146</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</span><span class="p">,</span> -</span><span id="Spark.Generator-147"><a href="#Spark.Generator-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> -</span><span id="Spark.Generator-148"><a href="#Spark.Generator-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span> -</span><span id="Spark.Generator-149"><a href="#Spark.Generator-149"><span class="linenos">149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"AGGREGATE"</span><span class="p">),</span> -</span><span id="Spark.Generator-150"><a href="#Spark.Generator-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</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">"</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Spark.Generator-151"><a href="#Spark.Generator-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</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="Spark.Generator-152"><a href="#Spark.Generator-152"><span class="linenos">152</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> -</span><span id="Spark.Generator-153"><a href="#Spark.Generator-153"><span class="linenos">153</span></a> <span class="p">),</span> -</span><span id="Spark.Generator-154"><a href="#Spark.Generator-154"><span class="linenos">154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> -</span><span id="Spark.Generator-155"><a href="#Spark.Generator-155"><span class="linenos">155</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">"VAR_POP"</span><span class="p">),</span> -</span><span id="Spark.Generator-156"><a href="#Spark.Generator-156"><span class="linenos">156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_DATE"</span><span class="p">),</span> -</span><span id="Spark.Generator-157"><a href="#Spark.Generator-157"><span class="linenos">157</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">"BOOL_OR"</span><span class="p">),</span> -</span><span id="Spark.Generator-158"><a href="#Spark.Generator-158"><span class="linenos">158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> -</span><span id="Spark.Generator-159"><a href="#Spark.Generator-159"><span class="linenos">159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFMONTH"</span><span class="p">),</span> -</span><span id="Spark.Generator-160"><a href="#Spark.Generator-160"><span class="linenos">160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFYEAR"</span><span class="p">),</span> -</span><span id="Spark.Generator-161"><a href="#Spark.Generator-161"><span class="linenos">161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"WEEKOFYEAR"</span><span class="p">),</span> -</span><span id="Spark.Generator-162"><a href="#Spark.Generator-162"><span class="linenos">162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">"FROM_UTC_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'zone'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Spark.Generator-163"><a href="#Spark.Generator-163"><span class="linenos">163</span></a> <span class="p">}</span> -</span><span id="Spark.Generator-164"><a href="#Spark.Generator-164"><span class="linenos">164</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">)</span> -</span><span id="Spark.Generator-165"><a href="#Spark.Generator-165"><span class="linenos">165</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">)</span> -</span><span id="Spark.Generator-166"><a href="#Spark.Generator-166"><span class="linenos">166</span></a> -</span><span id="Spark.Generator-167"><a href="#Spark.Generator-167"><span class="linenos">167</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Spark.Generator-168"><a href="#Spark.Generator-168"><span class="linenos">168</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">False</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Generator-122"><a href="#Spark.Generator-122"><span class="linenos">122</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> +</span><span id="Spark.Generator-123"><a href="#Spark.Generator-123"><span class="linenos">123</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark.Generator-124"><a href="#Spark.Generator-124"><span class="linenos">124</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> +</span><span id="Spark.Generator-125"><a href="#Spark.Generator-125"><span class="linenos">125</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">:</span> <span class="s2">"BYTE"</span><span class="p">,</span> +</span><span id="Spark.Generator-126"><a href="#Spark.Generator-126"><span class="linenos">126</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">:</span> <span class="s2">"SHORT"</span><span class="p">,</span> +</span><span id="Spark.Generator-127"><a href="#Spark.Generator-127"><span class="linenos">127</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">:</span> <span class="s2">"LONG"</span><span class="p">,</span> +</span><span id="Spark.Generator-128"><a href="#Spark.Generator-128"><span class="linenos">128</span></a> <span class="p">}</span> +</span><span id="Spark.Generator-129"><a href="#Spark.Generator-129"><span class="linenos">129</span></a> +</span><span id="Spark.Generator-130"><a href="#Spark.Generator-130"><span class="linenos">130</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark.Generator-131"><a href="#Spark.Generator-131"><span class="linenos">131</span></a> <span class="o">**</span><span class="n">Hive</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 class="c1"># type: ignore</span> +</span><span id="Spark.Generator-132"><a href="#Spark.Generator-132"><span class="linenos">132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</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="Spark.Generator-133"><a href="#Spark.Generator-133"><span class="linenos">133</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</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="Spark.Generator-134"><a href="#Spark.Generator-134"><span class="linenos">134</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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="Spark.Generator-135"><a href="#Spark.Generator-135"><span class="linenos">135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</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="Spark.Generator-136"><a href="#Spark.Generator-136"><span class="linenos">136</span></a> <span class="p">}</span> +</span><span id="Spark.Generator-137"><a href="#Spark.Generator-137"><span class="linenos">137</span></a> +</span><span id="Spark.Generator-138"><a href="#Spark.Generator-138"><span class="linenos">138</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Spark.Generator-139"><a href="#Spark.Generator-139"><span class="linenos">139</span></a> <span class="o">**</span><span class="n">Hive</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span> <span class="c1"># type: ignore</span> +</span><span id="Spark.Generator-140"><a href="#Spark.Generator-140"><span class="linenos">140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"APPROX_COUNT_DISTINCT"</span><span class="p">),</span> +</span><span id="Spark.Generator-141"><a href="#Spark.Generator-141"><span class="linenos">141</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">"USING </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">"</span><span class="p">,</span> +</span><span id="Spark.Generator-142"><a href="#Spark.Generator-142"><span class="linenos">142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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">"AGGREGATE(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, 0, (acc, x) -> acc + x, acc -> acc)"</span><span class="p">,</span> +</span><span id="Spark.Generator-143"><a href="#Spark.Generator-143"><span class="linenos">143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTLEFT"</span><span class="p">),</span> +</span><span id="Spark.Generator-144"><a href="#Spark.Generator-144"><span class="linenos">144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"SHIFTRIGHT"</span><span class="p">),</span> +</span><span id="Spark.Generator-145"><a href="#Spark.Generator-145"><span class="linenos">145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateTrunc</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">"TRUNC"</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">"unit"</span><span class="p">)),</span> +</span><span id="Spark.Generator-146"><a href="#Spark.Generator-146"><span class="linenos">146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Hint</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">" /*+ </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="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2"> */"</span><span class="p">,</span> +</span><span id="Spark.Generator-147"><a href="#Spark.Generator-147"><span class="linenos">147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="n">_str_to_date</span><span class="p">,</span> +</span><span id="Spark.Generator-148"><a href="#Spark.Generator-148"><span class="linenos">148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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">"TO_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Spark.Generator-149"><a href="#Spark.Generator-149"><span class="linenos">149</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</span><span class="p">,</span> +</span><span id="Spark.Generator-150"><a href="#Spark.Generator-150"><span class="linenos">150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">:</span> <span class="n">_create_sql</span><span class="p">,</span> +</span><span id="Spark.Generator-151"><a href="#Spark.Generator-151"><span class="linenos">151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Map</span><span class="p">:</span> <span class="n">_map_sql</span><span class="p">,</span> +</span><span id="Spark.Generator-152"><a href="#Spark.Generator-152"><span class="linenos">152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Reduce</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"AGGREGATE"</span><span class="p">),</span> +</span><span id="Spark.Generator-153"><a href="#Spark.Generator-153"><span class="linenos">153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</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">"</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Spark.Generator-154"><a href="#Spark.Generator-154"><span class="linenos">154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</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="Spark.Generator-155"><a href="#Spark.Generator-155"><span class="linenos">155</span></a> <span class="s2">"DATE_TRUNC"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)),</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span> +</span><span id="Spark.Generator-156"><a href="#Spark.Generator-156"><span class="linenos">156</span></a> <span class="p">),</span> +</span><span id="Spark.Generator-157"><a href="#Spark.Generator-157"><span class="linenos">157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span> +</span><span id="Spark.Generator-158"><a href="#Spark.Generator-158"><span class="linenos">158</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">"VAR_POP"</span><span class="p">),</span> +</span><span id="Spark.Generator-159"><a href="#Spark.Generator-159"><span class="linenos">159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"MAKE_DATE"</span><span class="p">),</span> +</span><span id="Spark.Generator-160"><a href="#Spark.Generator-160"><span class="linenos">160</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">"BOOL_OR"</span><span class="p">),</span> +</span><span id="Spark.Generator-161"><a href="#Spark.Generator-161"><span class="linenos">161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFWEEK"</span><span class="p">),</span> +</span><span id="Spark.Generator-162"><a href="#Spark.Generator-162"><span class="linenos">162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFMONTH"</span><span class="p">),</span> +</span><span id="Spark.Generator-163"><a href="#Spark.Generator-163"><span class="linenos">163</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"DAYOFYEAR"</span><span class="p">),</span> +</span><span id="Spark.Generator-164"><a href="#Spark.Generator-164"><span class="linenos">164</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">"WEEKOFYEAR"</span><span class="p">),</span> +</span><span id="Spark.Generator-165"><a href="#Spark.Generator-165"><span class="linenos">165</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">"FROM_UTC_TIMESTAMP(</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'zone'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Spark.Generator-166"><a href="#Spark.Generator-166"><span class="linenos">166</span></a> <span class="p">}</span> +</span><span id="Spark.Generator-167"><a href="#Spark.Generator-167"><span class="linenos">167</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">)</span> +</span><span id="Spark.Generator-168"><a href="#Spark.Generator-168"><span class="linenos">168</span></a> <span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">)</span> </span><span id="Spark.Generator-169"><a href="#Spark.Generator-169"><span class="linenos">169</span></a> -</span><span id="Spark.Generator-170"><a href="#Spark.Generator-170"><span class="linenos">170</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Spark.Generator-171"><a href="#Spark.Generator-171"><span class="linenos">171</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span> -</span><span id="Spark.Generator-172"><a href="#Spark.Generator-172"><span class="linenos">172</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">JSON</span> -</span><span id="Spark.Generator-173"><a href="#Spark.Generator-173"><span class="linenos">173</span></a> <span class="p">):</span> -</span><span id="Spark.Generator-174"><a href="#Spark.Generator-174"><span class="linenos">174</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span> -</span><span id="Spark.Generator-175"><a href="#Spark.Generator-175"><span class="linenos">175</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">"FROM_JSON"</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 class="n">schema</span><span class="p">)</span> -</span><span id="Spark.Generator-176"><a href="#Spark.Generator-176"><span class="linenos">176</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</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">JSON</span><span class="p">):</span> -</span><span id="Spark.Generator-177"><a href="#Spark.Generator-177"><span class="linenos">177</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">"TO_JSON"</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="Spark.Generator-178"><a href="#Spark.Generator-178"><span class="linenos">178</span></a> -</span><span id="Spark.Generator-179"><a href="#Spark.Generator-179"><span class="linenos">179</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Spark</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Spark.Generator-170"><a href="#Spark.Generator-170"><span class="linenos">170</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Spark.Generator-171"><a href="#Spark.Generator-171"><span class="linenos">171</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Spark.Generator-172"><a href="#Spark.Generator-172"><span class="linenos">172</span></a> +</span><span id="Spark.Generator-173"><a href="#Spark.Generator-173"><span class="linenos">173</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Spark.Generator-174"><a href="#Spark.Generator-174"><span class="linenos">174</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span> +</span><span id="Spark.Generator-175"><a href="#Spark.Generator-175"><span class="linenos">175</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">JSON</span> +</span><span id="Spark.Generator-176"><a href="#Spark.Generator-176"><span class="linenos">176</span></a> <span class="p">):</span> +</span><span id="Spark.Generator-177"><a href="#Spark.Generator-177"><span class="linenos">177</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span> +</span><span id="Spark.Generator-178"><a href="#Spark.Generator-178"><span class="linenos">178</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">"FROM_JSON"</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 class="n">schema</span><span class="p">)</span> +</span><span id="Spark.Generator-179"><a href="#Spark.Generator-179"><span class="linenos">179</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</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">JSON</span><span class="p">):</span> +</span><span id="Spark.Generator-180"><a href="#Spark.Generator-180"><span class="linenos">180</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">"TO_JSON"</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="Spark.Generator-181"><a href="#Spark.Generator-181"><span class="linenos">181</span></a> +</span><span id="Spark.Generator-182"><a href="#Spark.Generator-182"><span class="linenos">182</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Spark</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -704,16 +692,16 @@ Default: True</li> </div> <a class="headerlink" href="#Spark.Generator.cast_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Generator.cast_sql-170"><a href="#Spark.Generator.cast_sql-170"><span class="linenos">170</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Spark.Generator.cast_sql-171"><a href="#Spark.Generator.cast_sql-171"><span class="linenos">171</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span> -</span><span id="Spark.Generator.cast_sql-172"><a href="#Spark.Generator.cast_sql-172"><span class="linenos">172</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">JSON</span> -</span><span id="Spark.Generator.cast_sql-173"><a href="#Spark.Generator.cast_sql-173"><span class="linenos">173</span></a> <span class="p">):</span> -</span><span id="Spark.Generator.cast_sql-174"><a href="#Spark.Generator.cast_sql-174"><span class="linenos">174</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span> -</span><span id="Spark.Generator.cast_sql-175"><a href="#Spark.Generator.cast_sql-175"><span class="linenos">175</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">"FROM_JSON"</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 class="n">schema</span><span class="p">)</span> -</span><span id="Spark.Generator.cast_sql-176"><a href="#Spark.Generator.cast_sql-176"><span class="linenos">176</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</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">JSON</span><span class="p">):</span> -</span><span id="Spark.Generator.cast_sql-177"><a href="#Spark.Generator.cast_sql-177"><span class="linenos">177</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">"TO_JSON"</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="Spark.Generator.cast_sql-178"><a href="#Spark.Generator.cast_sql-178"><span class="linenos">178</span></a> -</span><span id="Spark.Generator.cast_sql-179"><a href="#Spark.Generator.cast_sql-179"><span class="linenos">179</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Spark</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Generator.cast_sql-173"><a href="#Spark.Generator.cast_sql-173"><span class="linenos">173</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Spark.Generator.cast_sql-174"><a href="#Spark.Generator.cast_sql-174"><span class="linenos">174</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span> +</span><span id="Spark.Generator.cast_sql-175"><a href="#Spark.Generator.cast_sql-175"><span class="linenos">175</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">JSON</span> +</span><span id="Spark.Generator.cast_sql-176"><a href="#Spark.Generator.cast_sql-176"><span class="linenos">176</span></a> <span class="p">):</span> +</span><span id="Spark.Generator.cast_sql-177"><a href="#Spark.Generator.cast_sql-177"><span class="linenos">177</span></a> <span class="n">schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"'</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">'"</span> +</span><span id="Spark.Generator.cast_sql-178"><a href="#Spark.Generator.cast_sql-178"><span class="linenos">178</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">"FROM_JSON"</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 class="n">schema</span><span class="p">)</span> +</span><span id="Spark.Generator.cast_sql-179"><a href="#Spark.Generator.cast_sql-179"><span class="linenos">179</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">to</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">JSON</span><span class="p">):</span> +</span><span id="Spark.Generator.cast_sql-180"><a href="#Spark.Generator.cast_sql-180"><span class="linenos">180</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">"TO_JSON"</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="Spark.Generator.cast_sql-181"><a href="#Spark.Generator.cast_sql-181"><span class="linenos">181</span></a> +</span><span id="Spark.Generator.cast_sql-182"><a href="#Spark.Generator.cast_sql-182"><span class="linenos">182</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Spark</span><span class="o">.</span><span class="n">Generator</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">cast_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -743,6 +731,7 @@ Default: True</li> <dd id="Spark.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Spark.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Spark.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Spark.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Spark.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Spark.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Spark.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -783,6 +772,7 @@ Default: True</li> <dd id="Spark.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Spark.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Spark.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Spark.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Spark.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Spark.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Spark.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -948,8 +938,8 @@ Default: True</li> </div> <a class="headerlink" href="#Spark.Tokenizer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Tokenizer-181"><a href="#Spark.Tokenizer-181"><span class="linenos">181</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> -</span><span id="Spark.Tokenizer-182"><a href="#Spark.Tokenizer-182"><span class="linenos">182</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Tokenizer-184"><a href="#Spark.Tokenizer-184"><span class="linenos">184</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Hive</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> +</span><span id="Spark.Tokenizer-185"><a href="#Spark.Tokenizer-185"><span class="linenos">185</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"X'"</span><span class="p">,</span> <span class="s2">"'"</span><span class="p">)]</span> </span></pre></div> @@ -959,8 +949,7 @@ Default: True</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Spark.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Spark.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Spark.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Spark.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -1087,7 +1076,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/sqlite.html b/docs/sqlglot/dialects/sqlite.html index 0973704..bf6fd13 100644 --- a/docs/sqlglot/dialects/sqlite.html +++ b/docs/sqlglot/dialects/sqlite.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.sqlite 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#SQLite">SQLite</a> <ul class="memberlist"> <li> - <a class="function" href="#SQLite.__init__">SQLite</a> - </li> - <li> <a class="class" href="#SQLite.Tokenizer">SQLite.Tokenizer</a> <ul class="memberlist"> </ul> @@ -265,18 +262,6 @@ - <div id="SQLite.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">SQLite</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#SQLite.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -321,8 +306,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="SQLite.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="SQLite.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="SQLite.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="SQLite.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -537,6 +521,7 @@ Default: True</li> <dd id="SQLite.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="SQLite.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="SQLite.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="SQLite.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="SQLite.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="SQLite.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="SQLite.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -579,6 +564,7 @@ Default: True</li> <dd id="SQLite.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="SQLite.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="SQLite.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="SQLite.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="SQLite.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="SQLite.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="SQLite.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -848,7 +834,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/starrocks.html b/docs/sqlglot/dialects/starrocks.html index 4fcb84a..74bde1e 100644 --- a/docs/sqlglot/dialects/starrocks.html +++ b/docs/sqlglot/dialects/starrocks.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.starrocks 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#StarRocks">StarRocks</a> <ul class="memberlist"> <li> - <a class="function" href="#StarRocks.__init__">StarRocks</a> - </li> - <li> <a class="class" href="#StarRocks.Generator">StarRocks.Generator</a> <ul class="memberlist"> </ul> @@ -135,18 +132,6 @@ - <div id="StarRocks.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">StarRocks</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#StarRocks.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -270,6 +255,7 @@ Default: True</li> <dd id="StarRocks.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="StarRocks.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="StarRocks.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="StarRocks.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="StarRocks.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="StarRocks.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="StarRocks.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -312,6 +298,7 @@ Default: True</li> <dd id="StarRocks.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="StarRocks.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="StarRocks.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="StarRocks.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="StarRocks.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="StarRocks.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="StarRocks.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -588,7 +575,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/tableau.html b/docs/sqlglot/dialects/tableau.html index f9628bb..e665d42 100644 --- a/docs/sqlglot/dialects/tableau.html +++ b/docs/sqlglot/dialects/tableau.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.tableau 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Tableau">Tableau</a> <ul class="memberlist"> <li> - <a class="function" href="#Tableau.__init__">Tableau</a> - </li> - <li> <a class="class" href="#Tableau.Generator">Tableau.Generator</a> <ul class="memberlist"> </ul> @@ -143,18 +140,6 @@ - <div id="Tableau.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Tableau</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Tableau.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -261,6 +246,7 @@ Default: True</li> <dd id="Tableau.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Tableau.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Tableau.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Tableau.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Tableau.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Tableau.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Tableau.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -303,6 +289,7 @@ Default: True</li> <dd id="Tableau.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Tableau.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Tableau.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Tableau.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Tableau.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Tableau.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Tableau.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -634,7 +621,7 @@ Default: "nulls_are_small"</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/teradata.html b/docs/sqlglot/dialects/teradata.html index 82cdc13..9854606 100644 --- a/docs/sqlglot/dialects/teradata.html +++ b/docs/sqlglot/dialects/teradata.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.teradata 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Teradata">Teradata</a> <ul class="memberlist"> <li> - <a class="function" href="#Teradata.__init__">Teradata</a> - </li> - <li> <a class="class" href="#Teradata.Tokenizer">Teradata.Tokenizer</a> <ul class="memberlist"> </ul> @@ -208,28 +205,29 @@ </span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-115"><a href="#L-115"><span class="linenos">115</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 class="c1"># type: ignore</span> </span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">,</span> -</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="p">}</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> -</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="k">def</span> <span class="nf">partitionedbyproperty_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">PartitionedByProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</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="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> -</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="c1"># FROM before SET in Teradata UPDATE syntax</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="c1"># https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-125"><a href="#L-125"><span class="linenos">125</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">"this"</span><span class="p">)</span> -</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> -</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"MOD"</span><span class="p">)</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> -</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">prefix_sql</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">"prefix"</span><span class="p">)</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SYSUDTLIB.</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">prefix_sql</span> <span class="k">else</span> <span class="n">type_sql</span> +</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="p">}</span> +</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> +</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="k">def</span> <span class="nf">partitionedbyproperty_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">PartitionedByProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> +</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="c1"># FROM before SET in Teradata UPDATE syntax</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="c1"># https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos">126</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">"this"</span><span class="p">)</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</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">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"MOD"</span><span class="p">)</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> +</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">prefix_sql</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">"prefix"</span><span class="p">)</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SYSUDTLIB.</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">prefix_sql</span> <span class="k">else</span> <span class="n">type_sql</span> </span></pre></div> @@ -354,45 +352,34 @@ </span><span id="Teradata-115"><a href="#Teradata-115"><span class="linenos">115</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Teradata-116"><a href="#Teradata-116"><span class="linenos">116</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 class="c1"># type: ignore</span> </span><span id="Teradata-117"><a href="#Teradata-117"><span class="linenos">117</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">,</span> -</span><span id="Teradata-118"><a href="#Teradata-118"><span class="linenos">118</span></a> <span class="p">}</span> -</span><span id="Teradata-119"><a href="#Teradata-119"><span class="linenos">119</span></a> -</span><span id="Teradata-120"><a href="#Teradata-120"><span class="linenos">120</span></a> <span class="k">def</span> <span class="nf">partitionedbyproperty_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">PartitionedByProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata-121"><a href="#Teradata-121"><span class="linenos">121</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Teradata-122"><a href="#Teradata-122"><span class="linenos">122</span></a> -</span><span id="Teradata-123"><a href="#Teradata-123"><span class="linenos">123</span></a> <span class="c1"># FROM before SET in Teradata UPDATE syntax</span> -</span><span id="Teradata-124"><a href="#Teradata-124"><span class="linenos">124</span></a> <span class="c1"># https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause</span> -</span><span id="Teradata-125"><a href="#Teradata-125"><span class="linenos">125</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata-126"><a href="#Teradata-126"><span class="linenos">126</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">"this"</span><span class="p">)</span> -</span><span id="Teradata-127"><a href="#Teradata-127"><span class="linenos">127</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> -</span><span id="Teradata-128"><a href="#Teradata-128"><span class="linenos">128</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Teradata-129"><a href="#Teradata-129"><span class="linenos">129</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="Teradata-130"><a href="#Teradata-130"><span class="linenos">130</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Teradata-131"><a href="#Teradata-131"><span class="linenos">131</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Teradata-132"><a href="#Teradata-132"><span class="linenos">132</span></a> -</span><span id="Teradata-133"><a href="#Teradata-133"><span class="linenos">133</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata-134"><a href="#Teradata-134"><span class="linenos">134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"MOD"</span><span class="p">)</span> -</span><span id="Teradata-135"><a href="#Teradata-135"><span class="linenos">135</span></a> -</span><span id="Teradata-136"><a href="#Teradata-136"><span class="linenos">136</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata-137"><a href="#Teradata-137"><span class="linenos">137</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Teradata-138"><a href="#Teradata-138"><span class="linenos">138</span></a> <span class="n">prefix_sql</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">"prefix"</span><span class="p">)</span> -</span><span id="Teradata-139"><a href="#Teradata-139"><span class="linenos">139</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SYSUDTLIB.</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">prefix_sql</span> <span class="k">else</span> <span class="n">type_sql</span> +</span><span id="Teradata-118"><a href="#Teradata-118"><span class="linenos">118</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Teradata-119"><a href="#Teradata-119"><span class="linenos">119</span></a> <span class="p">}</span> +</span><span id="Teradata-120"><a href="#Teradata-120"><span class="linenos">120</span></a> +</span><span id="Teradata-121"><a href="#Teradata-121"><span class="linenos">121</span></a> <span class="k">def</span> <span class="nf">partitionedbyproperty_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">PartitionedByProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata-122"><a href="#Teradata-122"><span class="linenos">122</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Teradata-123"><a href="#Teradata-123"><span class="linenos">123</span></a> +</span><span id="Teradata-124"><a href="#Teradata-124"><span class="linenos">124</span></a> <span class="c1"># FROM before SET in Teradata UPDATE syntax</span> +</span><span id="Teradata-125"><a href="#Teradata-125"><span class="linenos">125</span></a> <span class="c1"># https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause</span> +</span><span id="Teradata-126"><a href="#Teradata-126"><span class="linenos">126</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata-127"><a href="#Teradata-127"><span class="linenos">127</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">"this"</span><span class="p">)</span> +</span><span id="Teradata-128"><a href="#Teradata-128"><span class="linenos">128</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> +</span><span id="Teradata-129"><a href="#Teradata-129"><span class="linenos">129</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Teradata-130"><a href="#Teradata-130"><span class="linenos">130</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="Teradata-131"><a href="#Teradata-131"><span class="linenos">131</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Teradata-132"><a href="#Teradata-132"><span class="linenos">132</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Teradata-133"><a href="#Teradata-133"><span class="linenos">133</span></a> +</span><span id="Teradata-134"><a href="#Teradata-134"><span class="linenos">134</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata-135"><a href="#Teradata-135"><span class="linenos">135</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"MOD"</span><span class="p">)</span> +</span><span id="Teradata-136"><a href="#Teradata-136"><span class="linenos">136</span></a> +</span><span id="Teradata-137"><a href="#Teradata-137"><span class="linenos">137</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata-138"><a href="#Teradata-138"><span class="linenos">138</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Teradata-139"><a href="#Teradata-139"><span class="linenos">139</span></a> <span class="n">prefix_sql</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">"prefix"</span><span class="p">)</span> +</span><span id="Teradata-140"><a href="#Teradata-140"><span class="linenos">140</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SYSUDTLIB.</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">prefix_sql</span> <span class="k">else</span> <span class="n">type_sql</span> </span></pre></div> - <div id="Teradata.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Teradata</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Teradata.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -451,8 +438,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Teradata.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Teradata.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Teradata.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Teradata.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -611,28 +597,29 @@ Default: "nulls_are_small"</li> </span><span id="Teradata.Generator-115"><a href="#Teradata.Generator-115"><span class="linenos">115</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Teradata.Generator-116"><a href="#Teradata.Generator-116"><span class="linenos">116</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 class="c1"># type: ignore</span> </span><span id="Teradata.Generator-117"><a href="#Teradata.Generator-117"><span class="linenos">117</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">,</span> -</span><span id="Teradata.Generator-118"><a href="#Teradata.Generator-118"><span class="linenos">118</span></a> <span class="p">}</span> -</span><span id="Teradata.Generator-119"><a href="#Teradata.Generator-119"><span class="linenos">119</span></a> -</span><span id="Teradata.Generator-120"><a href="#Teradata.Generator-120"><span class="linenos">120</span></a> <span class="k">def</span> <span class="nf">partitionedbyproperty_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">PartitionedByProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata.Generator-121"><a href="#Teradata.Generator-121"><span class="linenos">121</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Teradata.Generator-122"><a href="#Teradata.Generator-122"><span class="linenos">122</span></a> -</span><span id="Teradata.Generator-123"><a href="#Teradata.Generator-123"><span class="linenos">123</span></a> <span class="c1"># FROM before SET in Teradata UPDATE syntax</span> -</span><span id="Teradata.Generator-124"><a href="#Teradata.Generator-124"><span class="linenos">124</span></a> <span class="c1"># https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause</span> -</span><span id="Teradata.Generator-125"><a href="#Teradata.Generator-125"><span class="linenos">125</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata.Generator-126"><a href="#Teradata.Generator-126"><span class="linenos">126</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">"this"</span><span class="p">)</span> -</span><span id="Teradata.Generator-127"><a href="#Teradata.Generator-127"><span class="linenos">127</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> -</span><span id="Teradata.Generator-128"><a href="#Teradata.Generator-128"><span class="linenos">128</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Teradata.Generator-129"><a href="#Teradata.Generator-129"><span class="linenos">129</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="Teradata.Generator-130"><a href="#Teradata.Generator-130"><span class="linenos">130</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Teradata.Generator-131"><a href="#Teradata.Generator-131"><span class="linenos">131</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Teradata.Generator-132"><a href="#Teradata.Generator-132"><span class="linenos">132</span></a> -</span><span id="Teradata.Generator-133"><a href="#Teradata.Generator-133"><span class="linenos">133</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata.Generator-134"><a href="#Teradata.Generator-134"><span class="linenos">134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"MOD"</span><span class="p">)</span> -</span><span id="Teradata.Generator-135"><a href="#Teradata.Generator-135"><span class="linenos">135</span></a> -</span><span id="Teradata.Generator-136"><a href="#Teradata.Generator-136"><span class="linenos">136</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata.Generator-137"><a href="#Teradata.Generator-137"><span class="linenos">137</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Teradata.Generator-138"><a href="#Teradata.Generator-138"><span class="linenos">138</span></a> <span class="n">prefix_sql</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">"prefix"</span><span class="p">)</span> -</span><span id="Teradata.Generator-139"><a href="#Teradata.Generator-139"><span class="linenos">139</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SYSUDTLIB.</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">prefix_sql</span> <span class="k">else</span> <span class="n">type_sql</span> +</span><span id="Teradata.Generator-118"><a href="#Teradata.Generator-118"><span class="linenos">118</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Teradata.Generator-119"><a href="#Teradata.Generator-119"><span class="linenos">119</span></a> <span class="p">}</span> +</span><span id="Teradata.Generator-120"><a href="#Teradata.Generator-120"><span class="linenos">120</span></a> +</span><span id="Teradata.Generator-121"><a href="#Teradata.Generator-121"><span class="linenos">121</span></a> <span class="k">def</span> <span class="nf">partitionedbyproperty_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">PartitionedByProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata.Generator-122"><a href="#Teradata.Generator-122"><span class="linenos">122</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Teradata.Generator-123"><a href="#Teradata.Generator-123"><span class="linenos">123</span></a> +</span><span id="Teradata.Generator-124"><a href="#Teradata.Generator-124"><span class="linenos">124</span></a> <span class="c1"># FROM before SET in Teradata UPDATE syntax</span> +</span><span id="Teradata.Generator-125"><a href="#Teradata.Generator-125"><span class="linenos">125</span></a> <span class="c1"># https://docs.teradata.com/r/Enterprise_IntelliFlex_VMware/Teradata-VantageTM-SQL-Data-Manipulation-Language-17.20/Statement-Syntax/UPDATE/UPDATE-Syntax-Basic-Form-FROM-Clause</span> +</span><span id="Teradata.Generator-126"><a href="#Teradata.Generator-126"><span class="linenos">126</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata.Generator-127"><a href="#Teradata.Generator-127"><span class="linenos">127</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">"this"</span><span class="p">)</span> +</span><span id="Teradata.Generator-128"><a href="#Teradata.Generator-128"><span class="linenos">128</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> +</span><span id="Teradata.Generator-129"><a href="#Teradata.Generator-129"><span class="linenos">129</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Teradata.Generator-130"><a href="#Teradata.Generator-130"><span class="linenos">130</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="Teradata.Generator-131"><a href="#Teradata.Generator-131"><span class="linenos">131</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Teradata.Generator-132"><a href="#Teradata.Generator-132"><span class="linenos">132</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Teradata.Generator-133"><a href="#Teradata.Generator-133"><span class="linenos">133</span></a> +</span><span id="Teradata.Generator-134"><a href="#Teradata.Generator-134"><span class="linenos">134</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata.Generator-135"><a href="#Teradata.Generator-135"><span class="linenos">135</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"MOD"</span><span class="p">)</span> +</span><span id="Teradata.Generator-136"><a href="#Teradata.Generator-136"><span class="linenos">136</span></a> +</span><span id="Teradata.Generator-137"><a href="#Teradata.Generator-137"><span class="linenos">137</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata.Generator-138"><a href="#Teradata.Generator-138"><span class="linenos">138</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Teradata.Generator-139"><a href="#Teradata.Generator-139"><span class="linenos">139</span></a> <span class="n">prefix_sql</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">"prefix"</span><span class="p">)</span> +</span><span id="Teradata.Generator-140"><a href="#Teradata.Generator-140"><span class="linenos">140</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SYSUDTLIB.</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">prefix_sql</span> <span class="k">else</span> <span class="n">type_sql</span> </span></pre></div> @@ -692,8 +679,8 @@ Default: True</li> </div> <a class="headerlink" href="#Teradata.Generator.partitionedbyproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Teradata.Generator.partitionedbyproperty_sql-120"><a href="#Teradata.Generator.partitionedbyproperty_sql-120"><span class="linenos">120</span></a> <span class="k">def</span> <span class="nf">partitionedbyproperty_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">PartitionedByProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata.Generator.partitionedbyproperty_sql-121"><a href="#Teradata.Generator.partitionedbyproperty_sql-121"><span class="linenos">121</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Teradata.Generator.partitionedbyproperty_sql-121"><a href="#Teradata.Generator.partitionedbyproperty_sql-121"><span class="linenos">121</span></a> <span class="k">def</span> <span class="nf">partitionedbyproperty_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">PartitionedByProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata.Generator.partitionedbyproperty_sql-122"><a href="#Teradata.Generator.partitionedbyproperty_sql-122"><span class="linenos">122</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -711,13 +698,13 @@ Default: True</li> </div> <a class="headerlink" href="#Teradata.Generator.update_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Teradata.Generator.update_sql-125"><a href="#Teradata.Generator.update_sql-125"><span class="linenos">125</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata.Generator.update_sql-126"><a href="#Teradata.Generator.update_sql-126"><span class="linenos">126</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">"this"</span><span class="p">)</span> -</span><span id="Teradata.Generator.update_sql-127"><a href="#Teradata.Generator.update_sql-127"><span class="linenos">127</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> -</span><span id="Teradata.Generator.update_sql-128"><a href="#Teradata.Generator.update_sql-128"><span class="linenos">128</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Teradata.Generator.update_sql-129"><a href="#Teradata.Generator.update_sql-129"><span class="linenos">129</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="Teradata.Generator.update_sql-130"><a href="#Teradata.Generator.update_sql-130"><span class="linenos">130</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Teradata.Generator.update_sql-131"><a href="#Teradata.Generator.update_sql-131"><span class="linenos">131</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Teradata.Generator.update_sql-126"><a href="#Teradata.Generator.update_sql-126"><span class="linenos">126</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata.Generator.update_sql-127"><a href="#Teradata.Generator.update_sql-127"><span class="linenos">127</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">"this"</span><span class="p">)</span> +</span><span id="Teradata.Generator.update_sql-128"><a href="#Teradata.Generator.update_sql-128"><span class="linenos">128</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> +</span><span id="Teradata.Generator.update_sql-129"><a href="#Teradata.Generator.update_sql-129"><span class="linenos">129</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Teradata.Generator.update_sql-130"><a href="#Teradata.Generator.update_sql-130"><span class="linenos">130</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="Teradata.Generator.update_sql-131"><a href="#Teradata.Generator.update_sql-131"><span class="linenos">131</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Teradata.Generator.update_sql-132"><a href="#Teradata.Generator.update_sql-132"><span class="linenos">132</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -735,8 +722,8 @@ Default: True</li> </div> <a class="headerlink" href="#Teradata.Generator.mod_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Teradata.Generator.mod_sql-133"><a href="#Teradata.Generator.mod_sql-133"><span class="linenos">133</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata.Generator.mod_sql-134"><a href="#Teradata.Generator.mod_sql-134"><span class="linenos">134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"MOD"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Teradata.Generator.mod_sql-134"><a href="#Teradata.Generator.mod_sql-134"><span class="linenos">134</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata.Generator.mod_sql-135"><a href="#Teradata.Generator.mod_sql-135"><span class="linenos">135</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"MOD"</span><span class="p">)</span> </span></pre></div> @@ -754,10 +741,10 @@ Default: True</li> </div> <a class="headerlink" href="#Teradata.Generator.datatype_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Teradata.Generator.datatype_sql-136"><a href="#Teradata.Generator.datatype_sql-136"><span class="linenos">136</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Teradata.Generator.datatype_sql-137"><a href="#Teradata.Generator.datatype_sql-137"><span class="linenos">137</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Teradata.Generator.datatype_sql-138"><a href="#Teradata.Generator.datatype_sql-138"><span class="linenos">138</span></a> <span class="n">prefix_sql</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">"prefix"</span><span class="p">)</span> -</span><span id="Teradata.Generator.datatype_sql-139"><a href="#Teradata.Generator.datatype_sql-139"><span class="linenos">139</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SYSUDTLIB.</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">prefix_sql</span> <span class="k">else</span> <span class="n">type_sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Teradata.Generator.datatype_sql-137"><a href="#Teradata.Generator.datatype_sql-137"><span class="linenos">137</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Teradata.Generator.datatype_sql-138"><a href="#Teradata.Generator.datatype_sql-138"><span class="linenos">138</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">datatype_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Teradata.Generator.datatype_sql-139"><a href="#Teradata.Generator.datatype_sql-139"><span class="linenos">139</span></a> <span class="n">prefix_sql</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">"prefix"</span><span class="p">)</span> +</span><span id="Teradata.Generator.datatype_sql-140"><a href="#Teradata.Generator.datatype_sql-140"><span class="linenos">140</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"SYSUDTLIB.</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">prefix_sql</span> <span class="k">else</span> <span class="n">type_sql</span> </span></pre></div> @@ -787,6 +774,7 @@ Default: True</li> <dd id="Teradata.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Teradata.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Teradata.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Teradata.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Teradata.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Teradata.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Teradata.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -828,6 +816,7 @@ Default: True</li> <dd id="Teradata.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Teradata.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Teradata.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Teradata.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Teradata.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Teradata.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Teradata.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -1096,7 +1085,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/trino.html b/docs/sqlglot/dialects/trino.html index 8745d59..957ddc5 100644 --- a/docs/sqlglot/dialects/trino.html +++ b/docs/sqlglot/dialects/trino.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.trino 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -34,9 +34,6 @@ <a class="class" href="#Trino">Trino</a> <ul class="memberlist"> <li> - <a class="function" href="#Trino.__init__">Trino</a> - </li> - <li> <a class="class" href="#Trino.Generator">Trino.Generator</a> <ul class="memberlist"> </ul> @@ -118,18 +115,6 @@ - <div id="Trino.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Trino</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Trino.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -238,6 +223,7 @@ Default: True</li> <dd id="Trino.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Trino.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Trino.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Trino.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Trino.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Trino.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Trino.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -280,6 +266,7 @@ Default: True</li> <dd id="Trino.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Trino.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Trino.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Trino.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Trino.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Trino.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Trino.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -455,8 +442,7 @@ Default: True</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Trino.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Trino.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Trino.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Trino.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -583,7 +569,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/dialects/tsql.html b/docs/sqlglot/dialects/tsql.html index fcb0cf7..d469f16 100644 --- a/docs/sqlglot/dialects/tsql.html +++ b/docs/sqlglot/dialects/tsql.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.dialects.tsql 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -37,9 +37,6 @@ <a class="class" href="#TSQL">TSQL</a> <ul class="memberlist"> <li> - <a class="function" href="#TSQL.__init__">TSQL</a> - </li> - <li> <a class="class" href="#TSQL.Tokenizer">TSQL.Tokenizer</a> <ul class="memberlist"> </ul> @@ -921,18 +918,6 @@ - <div id="TSQL.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">TSQL</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#TSQL.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -1003,8 +988,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="TSQL.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="TSQL.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="TSQL.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="TSQL.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -1390,6 +1374,7 @@ Default: True</li> <dd id="TSQL.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="TSQL.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="TSQL.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="TSQL.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="TSQL.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="TSQL.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="TSQL.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -1432,6 +1417,7 @@ Default: True</li> <dd id="TSQL.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="TSQL.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="TSQL.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="TSQL.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="TSQL.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="TSQL.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="TSQL.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -1702,7 +1688,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/diff.html b/docs/sqlglot/diff.html index 9c366b2..14f05eb 100644 --- a/docs/sqlglot/diff.html +++ b/docs/sqlglot/diff.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.diff 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -559,314 +559,353 @@ </span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a><span class="kn">from</span> <span class="nn">dataclasses</span> <span class="kn">import</span> <span class="n">dataclass</span> </span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a><span class="kn">from</span> <span class="nn">heapq</span> <span class="kn">import</span> <span class="n">heappop</span><span class="p">,</span> <span class="n">heappush</span> </span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a> -</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">expressions</span> <span class="k">as</span> <span class="n">exp</span> -</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">ensure_collection</span> +</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">Dialect</span><span class="p">,</span> <span class="n">expressions</span> <span class="k">as</span> <span class="n">exp</span> +</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">ensure_collection</span> +</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> </span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a> -</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a> -</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a><span class="k">class</span> <span class="nc">Insert</span><span class="p">:</span> -</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a><span class="w"> </span><span class="sd">"""Indicates that a new node has been inserted"""</span> -</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> -</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-19"><a href="#L-19"><span class="linenos"> 19</span></a><span class="k">class</span> <span class="nc">Insert</span><span class="p">:</span> +</span><span id="L-20"><a href="#L-20"><span class="linenos"> 20</span></a><span class="w"> </span><span class="sd">"""Indicates that a new node has been inserted"""</span> +</span><span id="L-21"><a href="#L-21"><span class="linenos"> 21</span></a> +</span><span id="L-22"><a href="#L-22"><span class="linenos"> 22</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-23"><a href="#L-23"><span class="linenos"> 23</span></a> </span><span id="L-24"><a href="#L-24"><span class="linenos"> 24</span></a> -</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a> -</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="k">class</span> <span class="nc">Remove</span><span class="p">:</span> -</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node has been removed"""</span> -</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> -</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-25"><a href="#L-25"><span class="linenos"> 25</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-26"><a href="#L-26"><span class="linenos"> 26</span></a><span class="k">class</span> <span class="nc">Remove</span><span class="p">:</span> +</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node has been removed"""</span> +</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a> +</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> </span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> -</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> -</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a><span class="k">class</span> <span class="nc">Move</span><span class="p">:</span> -</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node's position within the tree has changed"""</span> -</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> -</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a><span class="k">class</span> <span class="nc">Move</span><span class="p">:</span> +</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node's position within the tree has changed"""</span> +</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> +</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> </span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> -</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="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a><span class="k">class</span> <span class="nc">Update</span><span class="p">:</span> -</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node has been updated"""</span> -</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> -</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> -</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a><span class="k">class</span> <span class="nc">Update</span><span class="p">:</span> +</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node has been updated"""</span> +</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="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> </span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> -</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a> -</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a><span class="k">class</span> <span class="nc">Keep</span><span class="p">:</span> -</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node hasn't been changed"""</span> -</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> -</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> -</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-48"><a href="#L-48"><span class="linenos"> 48</span></a><span class="k">class</span> <span class="nc">Keep</span><span class="p">:</span> +</span><span id="L-49"><a href="#L-49"><span class="linenos"> 49</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node hasn't been changed"""</span> +</span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> +</span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> </span><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> -</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> -</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a><span class="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">TYPE_CHECKING</span><span class="p">:</span> -</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="n">T</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">TypeVar</span><span class="p">(</span><span class="s2">"T"</span><span class="p">)</span> -</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="n">Edit</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">Insert</span><span class="p">,</span> <span class="n">Remove</span><span class="p">,</span> <span class="n">Move</span><span class="p">,</span> <span class="n">Update</span><span class="p">,</span> <span class="n">Keep</span><span class="p">]</span> +</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a><span class="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">TYPE_CHECKING</span><span class="p">:</span> +</span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="n">T</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">TypeVar</span><span class="p">(</span><span class="s2">"T"</span><span class="p">)</span> +</span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="n">Edit</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">Insert</span><span class="p">,</span> <span class="n">Remove</span><span class="p">,</span> <span class="n">Move</span><span class="p">,</span> <span class="n">Update</span><span class="p">,</span> <span class="n">Keep</span><span class="p">]</span> +</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> </span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> -</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> -</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a><span class="k">def</span> <span class="nf">diff</span><span class="p">(</span><span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> -</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a><span class="sd"> Returns the list of changes between the source and the target expressions.</span> -</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> -</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a><span class="sd"> Examples:</span> -</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a><span class="sd"> >>> diff(parse_one("a + b"), parse_one("a + c"))</span> -</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a><span class="sd"> [</span> -</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a><span class="sd"> Remove(expression=(COLUMN this: (IDENTIFIER this: b, quoted: False))),</span> -</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="sd"> Insert(expression=(COLUMN this: (IDENTIFIER this: c, quoted: False))),</span> -</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="sd"> Keep(</span> -</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a><span class="sd"> source=(ADD this: ...),</span> -</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a><span class="sd"> target=(ADD this: ...)</span> -</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a><span class="sd"> ),</span> +</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a><span class="k">def</span> <span class="nf">diff</span><span class="p">(</span> +</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="n">matchings</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> +</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a><span class="sd"> Returns the list of changes between the source and the target expressions.</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> +</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a><span class="sd"> Examples:</span> +</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a><span class="sd"> >>> diff(parse_one("a + b"), parse_one("a + c"))</span> +</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a><span class="sd"> [</span> +</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a><span class="sd"> Remove(expression=(COLUMN this: (IDENTIFIER this: b, quoted: False))),</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a><span class="sd"> Insert(expression=(COLUMN this: (IDENTIFIER this: c, quoted: False))),</span> </span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a><span class="sd"> Keep(</span> -</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a><span class="sd"> source=(COLUMN this: (IDENTIFIER this: a, quoted: False)),</span> -</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a><span class="sd"> target=(COLUMN this: (IDENTIFIER this: a, quoted: False))</span> +</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a><span class="sd"> source=(ADD this: ...),</span> +</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a><span class="sd"> target=(ADD this: ...)</span> </span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a><span class="sd"> ),</span> -</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="sd"> ]</span> -</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> -</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a><span class="sd"> Args:</span> -</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a><span class="sd"> source: the source expression.</span> -</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a><span class="sd"> target: the target expression against which the diff should be calculated.</span> +</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="sd"> Keep(</span> +</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a><span class="sd"> source=(COLUMN this: (IDENTIFIER this: a, quoted: False)),</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a><span class="sd"> target=(COLUMN this: (IDENTIFIER this: a, quoted: False))</span> +</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a><span class="sd"> ),</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a><span class="sd"> ]</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 class="sd"> Returns:</span> -</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a><span class="sd"> the list of Insert, Remove, Move, Update and Keep objects for each node in the source and the</span> -</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a><span class="sd"> target expression trees. This list represents a sequence of steps needed to transform the source</span> -</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a><span class="sd"> expression tree into the target one.</span> -</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a><span class="sd"> """</span> -</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="k">return</span> <span class="n">ChangeDistiller</span><span class="p">()</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">source</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">target</span><span class="o">.</span><span class="n">copy</span><span class="p">())</span> -</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> +</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a><span class="sd"> Args:</span> +</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a><span class="sd"> source: the source expression.</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a><span class="sd"> target: the target expression against which the diff should be calculated.</span> +</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a><span class="sd"> matchings: the list of pre-matched node pairs which is used to help the algorithm's</span> +</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a><span class="sd"> heuristics produce better results for subtrees that are known by a caller to be matching.</span> +</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a><span class="sd"> Note: expression references in this list must refer to the same node objects that are</span> +</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a><span class="sd"> referenced in source / target trees.</span> </span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> -</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a><span class="n">LEAF_EXPRESSION_TYPES</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> -</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> -</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> -</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a><span class="p">)</span> -</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> +</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a><span class="sd"> Returns:</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a><span class="sd"> the list of Insert, Remove, Move, Update and Keep objects for each node in the source and the</span> +</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a><span class="sd"> target expression trees. This list represents a sequence of steps needed to transform the source</span> +</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a><span class="sd"> expression tree into the target one.</span> +</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a><span class="sd"> """</span> +</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="n">matchings</span> <span class="o">=</span> <span class="n">matchings</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="n">matching_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="k">for</span> <span class="n">pair</span> <span class="ow">in</span> <span class="n">matchings</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">pair</span><span class="p">}</span> </span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> -</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a><span class="k">class</span> <span class="nc">ChangeDistiller</span><span class="p">:</span> -</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a><span class="sd"> The implementation of the Change Distiller algorithm described by Beat Fluri and Martin Pinzger in</span> -</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a><span class="sd"> their paper https://ieeexplore.ieee.org/document/4339230, which in turn is based on the algorithm by</span> -</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a><span class="sd"> Chawathe et al. described in http://ilpubs.stanford.edu:8090/115/1/1995-46.pdf.</span> -</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a><span class="sd"> """</span> -</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> -</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">,</span> <span class="n">t</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span> -</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="o">=</span> <span class="n">t</span> -</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span> <span class="o">=</span> <span class="n">Dialect</span><span class="p">()</span><span class="o">.</span><span class="n">generator</span><span class="p">()</span> +</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a> <span class="k">def</span> <span class="nf">compute_node_mappings</span><span class="p">(</span> +</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a> <span class="n">original</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">copy</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="k">return</span> <span class="p">{</span> +</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">old_node</span><span class="p">):</span> <span class="n">new_node</span> +</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="k">for</span> <span class="p">(</span><span class="n">old_node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">),</span> <span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">original</span><span class="o">.</span><span class="n">walk</span><span class="p">(),</span> <span class="n">copy</span><span class="o">.</span><span class="n">walk</span><span class="p">())</span> +</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">old_node</span><span class="p">)</span> <span class="ow">in</span> <span class="n">matching_ids</span> +</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="p">}</span> +</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> +</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="n">source_copy</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="n">target_copy</span> <span class="o">=</span> <span class="n">target</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> </span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> -</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="k">def</span> <span class="nf">diff</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> -</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span> <span class="o">=</span> <span class="n">source</span> -</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span> <span class="o">=</span> <span class="n">target</span> -</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> -</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> -</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">)</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">)</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-112"><a href="#L-112"><span class="linenos">112</span></a> <span class="n">node_mappings</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="o">**</span><span class="n">compute_node_mappings</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">source_copy</span><span class="p">),</span> +</span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="o">**</span><span class="n">compute_node_mappings</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">target_copy</span><span class="p">),</span> +</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="p">}</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="n">matchings_copy</span> <span class="o">=</span> <span class="p">[(</span><span class="n">node_mappings</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">s</span><span class="p">)],</span> <span class="n">node_mappings</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">t</span><span class="p">)])</span> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">matchings</span><span class="p">]</span> +</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">return</span> <span class="n">ChangeDistiller</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">source_copy</span><span class="p">,</span> <span class="n">target_copy</span><span class="p">,</span> <span class="n">matchings</span><span class="o">=</span><span class="n">matchings_copy</span><span class="p">)</span> +</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> </span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> -</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_matching_set</span><span class="p">()</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_edit_script</span><span class="p">(</span><span class="n">matching_set</span><span class="p">)</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> -</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="k">def</span> <span class="nf">_generate_edit_script</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">matching_set</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> -</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="n">edit_script</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="k">for</span> <span class="n">removed_node_id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="p">:</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Remove</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">removed_node_id</span><span class="p">]))</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="k">for</span> <span class="n">inserted_node_id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="p">:</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Insert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">inserted_node_id</span><span class="p">]))</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="k">for</span> <span class="n">kept_source_node_id</span><span class="p">,</span> <span class="n">kept_target_node_id</span> <span class="ow">in</span> <span class="n">matching_set</span><span class="p">:</span> -</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">source_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">kept_source_node_id</span><span class="p">]</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="n">target_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">kept_target_node_id</span><span class="p">]</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">LEAF_EXPRESSION_TYPES</span><span class="p">)</span> <span class="ow">or</span> <span class="n">source_node</span> <span class="o">==</span> <span class="n">target_node</span><span class="p">:</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_move_edits</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">,</span> <span class="n">matching_set</span><span class="p">)</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="p">)</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Keep</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">))</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Update</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">))</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a><span class="n">LEAF_EXPRESSION_TYPES</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">,</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a><span class="p">)</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> +</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> +</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a><span class="k">class</span> <span class="nc">ChangeDistiller</span><span class="p">:</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a><span class="sd"> The implementation of the Change Distiller algorithm described by Beat Fluri and Martin Pinzger in</span> +</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a><span class="sd"> their paper https://ieeexplore.ieee.org/document/4339230, which in turn is based on the algorithm by</span> +</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a><span class="sd"> Chawathe et al. described in http://ilpubs.stanford.edu:8090/115/1/1995-46.pdf.</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a><span class="sd"> """</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> +</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">,</span> <span class="n">t</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="o">=</span> <span class="n">t</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span> <span class="o">=</span> <span class="n">Dialect</span><span class="p">()</span><span class="o">.</span><span class="n">generator</span><span class="p">()</span> </span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> -</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="k">return</span> <span class="n">edit_script</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">def</span> <span class="nf">_generate_move_edits</span><span class="p">(</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</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">matching_set</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> -</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Move</span><span class="p">]:</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="n">source_args</span> <span class="o">=</span> <span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">_expression_only_args</span><span class="p">(</span><span class="n">source</span><span class="p">)]</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">target_args</span> <span class="o">=</span> <span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">_expression_only_args</span><span class="p">(</span><span class="n">target</span><span class="p">)]</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> -</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">args_lcs</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">_lcs</span><span class="p">(</span><span class="n">source_args</span><span class="p">,</span> <span class="n">target_args</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">:</span> <span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span> <span class="ow">in</span> <span class="n">matching_set</span><span class="p">))</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> -</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">move_edits</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">source_args</span><span class="p">:</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="k">if</span> <span class="n">a</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">args_lcs</span> <span class="ow">and</span> <span class="n">a</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="p">:</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="n">move_edits</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Move</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">a</span><span class="p">]))</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> -</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="k">return</span> <span class="n">move_edits</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> -</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="k">def</span> <span class="nf">_compute_matching_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span> -</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">leaves_matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_leaf_matching_set</span><span class="p">()</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="n">leaves_matching_set</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> -</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="n">ordered_unmatched_source_nodes</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()</span> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="p">}</span> -</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="n">ordered_unmatched_target_nodes</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()</span> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="p">}</span> -</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">for</span> <span class="n">source_node_id</span> <span class="ow">in</span> <span class="n">ordered_unmatched_source_nodes</span><span class="p">:</span> -</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="k">for</span> <span class="n">target_node_id</span> <span class="ow">in</span> <span class="n">ordered_unmatched_target_nodes</span><span class="p">:</span> -</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="n">source_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">source_node_id</span><span class="p">]</span> -</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="n">target_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">target_node_id</span><span class="p">]</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="k">if</span> <span class="n">_is_same_type</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">):</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="n">source_leaf_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">source_node</span><span class="p">)}</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="n">target_leaf_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">target_node</span><span class="p">)}</span> -</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> -</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="n">max_leaves_num</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">source_leaf_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">target_leaf_ids</span><span class="p">))</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="k">if</span> <span class="n">max_leaves_num</span><span class="p">:</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="n">common_leaves_num</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span> -</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="mi">1</span> <span class="k">if</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">source_leaf_ids</span> <span class="ow">and</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">target_leaf_ids</span> <span class="k">else</span> <span class="mi">0</span> -</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">leaves_matching_set</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="p">)</span> -</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="n">leaf_similarity_score</span> <span class="o">=</span> <span class="n">common_leaves_num</span> <span class="o">/</span> <span class="n">max_leaves_num</span> -</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="n">leaf_similarity_score</span> <span class="o">=</span> <span class="mf">0.0</span> -</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> -</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="n">adjusted_t</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="k">if</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">source_leaf_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">target_leaf_ids</span><span class="p">))</span> <span class="o">></span> <span class="mi">4</span> <span class="k">else</span> <span class="mf">0.4</span> -</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="p">)</span> -</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> -</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="k">if</span> <span class="n">leaf_similarity_score</span> <span class="o">>=</span> <span class="mf">0.8</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="n">leaf_similarity_score</span> <span class="o">>=</span> <span class="n">adjusted_t</span> -</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dice_coefficient</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">)</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> -</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="p">):</span> -</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="n">matching_set</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="n">source_node_id</span><span class="p">,</span> <span class="n">target_node_id</span><span class="p">))</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">source_node_id</span><span class="p">)</span> -</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">target_node_id</span><span class="p">)</span> -</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">ordered_unmatched_target_nodes</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">target_node_id</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="k">break</span> +</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="k">def</span> <span class="nf">diff</span><span class="p">(</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="n">matchings</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">matchings</span> <span class="o">=</span> <span class="n">matchings</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="n">pre_matched_nodes</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> <span class="nb">id</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">matchings</span><span class="p">}</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">({</span><span class="n">n</span> <span class="k">for</span> <span class="n">pair</span> <span class="ow">in</span> <span class="n">pre_matched_nodes</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">pair</span><span class="p">})</span> <span class="o">!=</span> <span class="mi">2</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">matchings</span><span class="p">):</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Each node can be referenced at most once in the list of matchings"</span><span class="p">)</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> +</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span> <span class="o">=</span> <span class="n">source</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span> <span class="o">=</span> <span class="n">target</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">pre_matched_nodes</span><span class="p">)</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">pre_matched_nodes</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> +</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_matching_set</span><span class="p">()</span> <span class="o">|</span> <span class="p">{(</span><span class="n">s</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">pre_matched_nodes</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_edit_script</span><span class="p">(</span><span class="n">matching_set</span><span class="p">)</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> +</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="k">def</span> <span class="nf">_generate_edit_script</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">matching_set</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="n">edit_script</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="k">for</span> <span class="n">removed_node_id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="p">:</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Remove</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">removed_node_id</span><span class="p">]))</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="k">for</span> <span class="n">inserted_node_id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="p">:</span> +</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Insert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">inserted_node_id</span><span class="p">]))</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="k">for</span> <span class="n">kept_source_node_id</span><span class="p">,</span> <span class="n">kept_target_node_id</span> <span class="ow">in</span> <span class="n">matching_set</span><span class="p">:</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="n">source_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">kept_source_node_id</span><span class="p">]</span> +</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="n">target_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">kept_target_node_id</span><span class="p">]</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">LEAF_EXPRESSION_TYPES</span><span class="p">)</span> <span class="ow">or</span> <span class="n">source_node</span> <span class="o">==</span> <span class="n">target_node</span><span class="p">:</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_move_edits</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">,</span> <span class="n">matching_set</span><span class="p">)</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="p">)</span> +</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Keep</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">))</span> +</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Update</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">))</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> +</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="k">return</span> <span class="n">edit_script</span> +</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> +</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="k">def</span> <span class="nf">_generate_move_edits</span><span class="p">(</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</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">matching_set</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> +</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Move</span><span class="p">]:</span> +</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="n">source_args</span> <span class="o">=</span> <span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">_expression_only_args</span><span class="p">(</span><span class="n">source</span><span class="p">)]</span> +</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="n">target_args</span> <span class="o">=</span> <span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">_expression_only_args</span><span class="p">(</span><span class="n">target</span><span class="p">)]</span> +</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> +</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="n">args_lcs</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">_lcs</span><span class="p">(</span><span class="n">source_args</span><span class="p">,</span> <span class="n">target_args</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">:</span> <span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span> <span class="ow">in</span> <span class="n">matching_set</span><span class="p">))</span> +</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="n">move_edits</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">source_args</span><span class="p">:</span> +</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="k">if</span> <span class="n">a</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">args_lcs</span> <span class="ow">and</span> <span class="n">a</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="p">:</span> +</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="n">move_edits</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Move</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">a</span><span class="p">]))</span> +</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> +</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="k">return</span> <span class="n">move_edits</span> +</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> +</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="k">def</span> <span class="nf">_compute_matching_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span> +</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">leaves_matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_leaf_matching_set</span><span class="p">()</span> +</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="n">leaves_matching_set</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> </span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> -</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="k">return</span> <span class="n">matching_set</span> -</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> -</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="k">def</span> <span class="nf">_compute_leaf_matching_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span> -</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="n">candidate_matchings</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="n">source_leaves</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">_get_leaves</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source</span><span class="p">))</span> -</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="n">target_leaves</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">_get_leaves</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="p">))</span> -</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="k">for</span> <span class="n">source_leaf</span> <span class="ow">in</span> <span class="n">source_leaves</span><span class="p">:</span> -</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="k">for</span> <span class="n">target_leaf</span> <span class="ow">in</span> <span class="n">target_leaves</span><span class="p">:</span> -</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="k">if</span> <span class="n">_is_same_type</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span><span class="p">):</span> -</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="n">similarity_score</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dice_coefficient</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span><span class="p">)</span> -</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="k">if</span> <span class="n">similarity_score</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">:</span> -</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="n">heappush</span><span class="p">(</span> -</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="n">candidate_matchings</span><span class="p">,</span> -</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="p">(</span> -</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="o">-</span><span class="n">similarity_score</span><span class="p">,</span> -</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="nb">len</span><span class="p">(</span><span class="n">candidate_matchings</span><span class="p">),</span> -</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="n">source_leaf</span><span class="p">,</span> -</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="n">target_leaf</span><span class="p">,</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="p">),</span> -</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="p">)</span> -</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> -</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="c1"># Pick best matchings based on the highest score</span> -</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="k">while</span> <span class="n">candidate_matchings</span><span class="p">:</span> -</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span> <span class="o">=</span> <span class="n">heappop</span><span class="p">(</span><span class="n">candidate_matchings</span><span class="p">)</span> -</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> -</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="ow">and</span> <span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> -</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="p">):</span> -</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="n">matching_set</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">)))</span> -</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">))</span> -</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">))</span> -</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> -</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="k">return</span> <span class="n">matching_set</span> -</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> -</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a> <span class="k">def</span> <span class="nf">_dice_coefficient</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">float</span><span class="p">:</span> -</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="n">source_histo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo</span><span class="p">(</span><span class="n">source</span><span class="p">)</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="n">target_histo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo</span><span class="p">(</span><span class="n">target</span><span class="p">)</span> +</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="n">ordered_unmatched_source_nodes</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()</span> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> +</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="p">}</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="n">ordered_unmatched_target_nodes</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()</span> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> +</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="p">}</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> +</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="k">for</span> <span class="n">source_node_id</span> <span class="ow">in</span> <span class="n">ordered_unmatched_source_nodes</span><span class="p">:</span> +</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="k">for</span> <span class="n">target_node_id</span> <span class="ow">in</span> <span class="n">ordered_unmatched_target_nodes</span><span class="p">:</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="n">source_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">source_node_id</span><span class="p">]</span> +</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="n">target_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">target_node_id</span><span class="p">]</span> +</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="k">if</span> <span class="n">_is_same_type</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">):</span> +</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="n">source_leaf_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">source_node</span><span class="p">)}</span> +</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="n">target_leaf_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">target_node</span><span class="p">)}</span> +</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> +</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="n">max_leaves_num</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">source_leaf_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">target_leaf_ids</span><span class="p">))</span> +</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="k">if</span> <span class="n">max_leaves_num</span><span class="p">:</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="n">common_leaves_num</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="mi">1</span> <span class="k">if</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">source_leaf_ids</span> <span class="ow">and</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">target_leaf_ids</span> <span class="k">else</span> <span class="mi">0</span> +</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">leaves_matching_set</span> +</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="p">)</span> +</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="n">leaf_similarity_score</span> <span class="o">=</span> <span class="n">common_leaves_num</span> <span class="o">/</span> <span class="n">max_leaves_num</span> +</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">leaf_similarity_score</span> <span class="o">=</span> <span class="mf">0.0</span> +</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> +</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="n">adjusted_t</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="k">if</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">source_leaf_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">target_leaf_ids</span><span class="p">))</span> <span class="o">></span> <span class="mi">4</span> <span class="k">else</span> <span class="mf">0.4</span> +</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="p">)</span> +</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> +</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="k">if</span> <span class="n">leaf_similarity_score</span> <span class="o">>=</span> <span class="mf">0.8</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="n">leaf_similarity_score</span> <span class="o">>=</span> <span class="n">adjusted_t</span> +</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dice_coefficient</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">)</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> +</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="p">):</span> +</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="n">matching_set</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="n">source_node_id</span><span class="p">,</span> <span class="n">target_node_id</span><span class="p">))</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">source_node_id</span><span class="p">)</span> +</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">target_node_id</span><span class="p">)</span> +</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="n">ordered_unmatched_target_nodes</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">target_node_id</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="k">break</span> </span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> -</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="n">total_grams</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">source_histo</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="o">+</span> <span class="nb">sum</span><span class="p">(</span><span class="n">target_histo</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">total_grams</span><span class="p">:</span> -</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="k">return</span> <span class="mf">1.0</span> <span class="k">if</span> <span class="n">source</span> <span class="o">==</span> <span class="n">target</span> <span class="k">else</span> <span class="mf">0.0</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">overlap_len</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="n">overlapping_grams</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source_histo</span><span class="p">)</span> <span class="o">&</span> <span class="nb">set</span><span class="p">(</span><span class="n">target_histo</span><span class="p">)</span> -</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">overlapping_grams</span><span class="p">:</span> -</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="n">overlap_len</span> <span class="o">+=</span> <span class="nb">min</span><span class="p">(</span><span class="n">source_histo</span><span class="p">[</span><span class="n">g</span><span class="p">],</span> <span class="n">target_histo</span><span class="p">[</span><span class="n">g</span><span class="p">])</span> -</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> -</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a> <span class="k">return</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">overlap_len</span> <span class="o">/</span> <span class="n">total_grams</span> -</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> -</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="k">def</span> <span class="nf">_bigram_histo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]:</span> -</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> -</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)]</span> -</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> -</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="n">expression_str</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="n">count</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression_str</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="n">bigram_histo</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span> -</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">count</span><span class="p">):</span> -</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="n">bigram_histo</span><span class="p">[</span><span class="n">expression_str</span><span class="p">[</span><span class="n">i</span> <span class="p">:</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]]</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="k">return</span> <span class="n">matching_set</span> +</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> +</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="k">def</span> <span class="nf">_compute_leaf_matching_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span> +</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="n">candidate_matchings</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="n">source_leaves</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">_get_leaves</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source</span><span class="p">))</span> +</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="n">target_leaves</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">_get_leaves</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="p">))</span> +</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="k">for</span> <span class="n">source_leaf</span> <span class="ow">in</span> <span class="n">source_leaves</span><span class="p">:</span> +</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="k">for</span> <span class="n">target_leaf</span> <span class="ow">in</span> <span class="n">target_leaves</span><span class="p">:</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="k">if</span> <span class="n">_is_same_type</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span><span class="p">):</span> +</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a> <span class="n">similarity_score</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dice_coefficient</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span><span class="p">)</span> +</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="k">if</span> <span class="n">similarity_score</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">:</span> +</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="n">heappush</span><span class="p">(</span> +</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="n">candidate_matchings</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="o">-</span><span class="n">similarity_score</span><span class="p">,</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="nb">len</span><span class="p">(</span><span class="n">candidate_matchings</span><span class="p">),</span> +</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="n">source_leaf</span><span class="p">,</span> +</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="n">target_leaf</span><span class="p">,</span> +</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="p">),</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="p">)</span> </span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a> -</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)]</span> <span class="o">=</span> <span class="n">bigram_histo</span> -</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="k">return</span> <span class="n">bigram_histo</span> -</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> -</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> -</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a><span class="k">def</span> <span class="nf">_get_leaves</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">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Iterator</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="n">has_child_exprs</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> -</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> -</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">a</span><span class="p">):</span> -</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="n">has_child_exprs</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="k">yield from</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> -</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> -</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">has_child_exprs</span><span class="p">:</span> -</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a> <span class="k">yield</span> <span class="n">expression</span> -</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> -</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> -</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a><span class="k">def</span> <span class="nf">_is_same_type</span><span class="p">(</span><span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">source</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">target</span><span class="p">):</span> -</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">):</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="k">return</span> <span class="n">source</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">"side"</span><span class="p">)</span> <span class="o">==</span> <span class="n">target</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">"side"</span><span class="p">)</span> +</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="c1"># Pick best matchings based on the highest score</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="k">while</span> <span class="n">candidate_matchings</span><span class="p">:</span> +</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span> <span class="o">=</span> <span class="n">heappop</span><span class="p">(</span><span class="n">candidate_matchings</span><span class="p">)</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> +</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="ow">and</span> <span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> +</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> <span class="p">):</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="n">matching_set</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">)))</span> +</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">))</span> +</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">))</span> +</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> +</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="k">return</span> <span class="n">matching_set</span> +</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> +</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a> <span class="k">def</span> <span class="nf">_dice_coefficient</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">float</span><span class="p">:</span> +</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="n">source_histo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo</span><span class="p">(</span><span class="n">source</span><span class="p">)</span> +</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="n">target_histo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo</span><span class="p">(</span><span class="n">target</span><span class="p">)</span> +</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> +</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="n">total_grams</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">source_histo</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="o">+</span> <span class="nb">sum</span><span class="p">(</span><span class="n">target_histo</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">total_grams</span><span class="p">:</span> +</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="k">return</span> <span class="mf">1.0</span> <span class="k">if</span> <span class="n">source</span> <span class="o">==</span> <span class="n">target</span> <span class="k">else</span> <span class="mf">0.0</span> </span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> -</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">):</span> -</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">target</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> -</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="n">overlap_len</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> <span class="n">overlapping_grams</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source_histo</span><span class="p">)</span> <span class="o">&</span> <span class="nb">set</span><span class="p">(</span><span class="n">target_histo</span><span class="p">)</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">overlapping_grams</span><span class="p">:</span> +</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> <span class="n">overlap_len</span> <span class="o">+=</span> <span class="nb">min</span><span class="p">(</span><span class="n">source_histo</span><span class="p">[</span><span class="n">g</span><span class="p">],</span> <span class="n">target_histo</span><span class="p">[</span><span class="n">g</span><span class="p">])</span> </span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> -</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="k">return</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">overlap_len</span> <span class="o">/</span> <span class="n">total_grams</span> </span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a> -</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> -</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a><span class="k">def</span> <span class="nf">_expression_only_args</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">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <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="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">Expression</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">=</span> <span class="p">[]</span> -</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> -</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a> <span class="n">args</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">a</span><span class="p">))</span> -</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">a</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">args</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)]</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> -</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> -</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a><span class="k">def</span> <span class="nf">_lcs</span><span class="p">(</span> -</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a> <span class="n">seq_a</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="n">T</span><span class="p">],</span> <span class="n">seq_b</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="n">T</span><span class="p">],</span> <span class="n">equal</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">T</span><span class="p">,</span> <span class="n">T</span><span class="p">],</span> <span class="nb">bool</span><span class="p">]</span> -</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">T</span><span class="p">]]:</span> -</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a><span class="w"> </span><span class="sd">"""Calculates the longest common subsequence"""</span> +</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> <span class="k">def</span> <span class="nf">_bigram_histo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]:</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)]</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a> +</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a> <span class="n">expression_str</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a> <span class="n">count</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression_str</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a> <span class="n">bigram_histo</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span> +</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">count</span><span class="p">):</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> <span class="n">bigram_histo</span><span class="p">[</span><span class="n">expression_str</span><span class="p">[</span><span class="n">i</span> <span class="p">:</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]]</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> +</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)]</span> <span class="o">=</span> <span class="n">bigram_histo</span> +</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a> <span class="k">return</span> <span class="n">bigram_histo</span> +</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> </span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a> -</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="n">len_a</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">seq_a</span><span class="p">)</span> -</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="n">len_b</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">seq_b</span><span class="p">)</span> -</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a> <span class="n">lcs_result</span> <span class="o">=</span> <span class="p">[[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">len_b</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">len_a</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> -</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> -</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">len_a</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span> -</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">len_b</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span> -</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">j</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># type: ignore</span> -</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a> <span class="k">elif</span> <span class="n">equal</span><span class="p">(</span><span class="n">seq_a</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">],</span> <span class="n">seq_b</span><span class="p">[</span><span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]):</span> -</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="n">seq_a</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]]</span> <span class="c1"># type: ignore</span> -</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> -</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="p">])</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># type: ignore</span> -</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="k">else</span> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> <span class="p">)</span> -</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> -</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> <span class="k">return</span> <span class="n">lcs_result</span><span class="p">[</span><span class="n">len_a</span><span class="p">][</span><span class="n">len_b</span><span class="p">]</span> <span class="c1"># type: ignore</span> +</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a><span class="k">def</span> <span class="nf">_get_leaves</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">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Iterator</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="n">has_child_exprs</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a> +</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> +</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">a</span><span class="p">):</span> +</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a> <span class="n">has_child_exprs</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="k">yield from</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">node</span><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="k">if</span> <span class="ow">not</span> <span class="n">has_child_exprs</span><span class="p">:</span> +</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="k">yield</span> <span class="n">expression</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><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a><span class="k">def</span> <span class="nf">_is_same_type</span><span class="p">(</span><span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">source</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">target</span><span class="p">):</span> +</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">):</span> +</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="k">return</span> <span class="n">source</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">"side"</span><span class="p">)</span> <span class="o">==</span> <span class="n">target</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">"side"</span><span class="p">)</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> +</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</span><span class="p">):</span> +</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">target</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> +</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> +</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> +</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> +</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a><span class="k">def</span> <span class="nf">_expression_only_args</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">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a> <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="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">Expression</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">=</span> <span class="p">[]</span> +</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> +</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a> <span class="n">args</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">a</span><span class="p">))</span> +</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">a</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">args</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)]</span> +</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a> +</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a> +</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a><span class="k">def</span> <span class="nf">_lcs</span><span class="p">(</span> +</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="n">seq_a</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="n">T</span><span class="p">],</span> <span class="n">seq_b</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="n">T</span><span class="p">],</span> <span class="n">equal</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">T</span><span class="p">,</span> <span class="n">T</span><span class="p">],</span> <span class="nb">bool</span><span class="p">]</span> +</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">T</span><span class="p">]]:</span> +</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a><span class="w"> </span><span class="sd">"""Calculates the longest common subsequence"""</span> +</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> +</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="n">len_a</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">seq_a</span><span class="p">)</span> +</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="n">len_b</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">seq_b</span><span class="p">)</span> +</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a> <span class="n">lcs_result</span> <span class="o">=</span> <span class="p">[[</span><span class="kc">None</span><span class="p">]</span> <span class="o">*</span> <span class="p">(</span><span class="n">len_b</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">len_a</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)]</span> +</span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a> +</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">len_a</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span> +</span><span id="L-348"><a href="#L-348"><span class="linenos">348</span></a> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">len_b</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span> +</span><span id="L-349"><a href="#L-349"><span class="linenos">349</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">j</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-350"><a href="#L-350"><span class="linenos">350</span></a> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> <span class="c1"># type: ignore</span> +</span><span id="L-351"><a href="#L-351"><span class="linenos">351</span></a> <span class="k">elif</span> <span class="n">equal</span><span class="p">(</span><span class="n">seq_a</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">],</span> <span class="n">seq_b</span><span class="p">[</span><span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]):</span> +</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="p">[</span><span class="n">seq_a</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]]</span> <span class="c1"># type: ignore</span> +</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="p">]</span> +</span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span> <span class="o">-</span> <span class="mi">1</span><span class="p">][</span><span class="n">j</span><span class="p">])</span> <span class="o">></span> <span class="nb">len</span><span class="p">(</span><span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># type: ignore</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a> <span class="k">else</span> <span class="n">lcs_result</span><span class="p">[</span><span class="n">i</span><span class="p">][</span><span class="n">j</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a> <span class="p">)</span> +</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> +</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="k">return</span> <span class="n">lcs_result</span><span class="p">[</span><span class="n">len_a</span><span class="p">][</span><span class="n">len_b</span><span class="p">]</span> <span class="c1"># type: ignore</span> </span></pre></div> @@ -883,11 +922,11 @@ </div> <a class="headerlink" href="#Insert"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Insert-20"><a href="#Insert-20"><span class="linenos">20</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Insert-21"><a href="#Insert-21"><span class="linenos">21</span></a><span class="k">class</span> <span class="nc">Insert</span><span class="p">:</span> -</span><span id="Insert-22"><a href="#Insert-22"><span class="linenos">22</span></a><span class="w"> </span><span class="sd">"""Indicates that a new node has been inserted"""</span> -</span><span id="Insert-23"><a href="#Insert-23"><span class="linenos">23</span></a> -</span><span id="Insert-24"><a href="#Insert-24"><span class="linenos">24</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Insert-19"><a href="#Insert-19"><span class="linenos">19</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Insert-20"><a href="#Insert-20"><span class="linenos">20</span></a><span class="k">class</span> <span class="nc">Insert</span><span class="p">:</span> +</span><span id="Insert-21"><a href="#Insert-21"><span class="linenos">21</span></a><span class="w"> </span><span class="sd">"""Indicates that a new node has been inserted"""</span> +</span><span id="Insert-22"><a href="#Insert-22"><span class="linenos">22</span></a> +</span><span id="Insert-23"><a href="#Insert-23"><span class="linenos">23</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> </span></pre></div> @@ -920,11 +959,11 @@ </div> <a class="headerlink" href="#Remove"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Remove-27"><a href="#Remove-27"><span class="linenos">27</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Remove-28"><a href="#Remove-28"><span class="linenos">28</span></a><span class="k">class</span> <span class="nc">Remove</span><span class="p">:</span> -</span><span id="Remove-29"><a href="#Remove-29"><span class="linenos">29</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node has been removed"""</span> -</span><span id="Remove-30"><a href="#Remove-30"><span class="linenos">30</span></a> -</span><span id="Remove-31"><a href="#Remove-31"><span class="linenos">31</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Remove-26"><a href="#Remove-26"><span class="linenos">26</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Remove-27"><a href="#Remove-27"><span class="linenos">27</span></a><span class="k">class</span> <span class="nc">Remove</span><span class="p">:</span> +</span><span id="Remove-28"><a href="#Remove-28"><span class="linenos">28</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node has been removed"""</span> +</span><span id="Remove-29"><a href="#Remove-29"><span class="linenos">29</span></a> +</span><span id="Remove-30"><a href="#Remove-30"><span class="linenos">30</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> </span></pre></div> @@ -957,11 +996,11 @@ </div> <a class="headerlink" href="#Move"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Move-34"><a href="#Move-34"><span class="linenos">34</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Move-35"><a href="#Move-35"><span class="linenos">35</span></a><span class="k">class</span> <span class="nc">Move</span><span class="p">:</span> -</span><span id="Move-36"><a href="#Move-36"><span class="linenos">36</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node's position within the tree has changed"""</span> -</span><span id="Move-37"><a href="#Move-37"><span class="linenos">37</span></a> -</span><span id="Move-38"><a href="#Move-38"><span class="linenos">38</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Move-33"><a href="#Move-33"><span class="linenos">33</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Move-34"><a href="#Move-34"><span class="linenos">34</span></a><span class="k">class</span> <span class="nc">Move</span><span class="p">:</span> +</span><span id="Move-35"><a href="#Move-35"><span class="linenos">35</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node's position within the tree has changed"""</span> +</span><span id="Move-36"><a href="#Move-36"><span class="linenos">36</span></a> +</span><span id="Move-37"><a href="#Move-37"><span class="linenos">37</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> </span></pre></div> @@ -994,12 +1033,12 @@ </div> <a class="headerlink" href="#Update"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Update-41"><a href="#Update-41"><span class="linenos">41</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Update-42"><a href="#Update-42"><span class="linenos">42</span></a><span class="k">class</span> <span class="nc">Update</span><span class="p">:</span> -</span><span id="Update-43"><a href="#Update-43"><span class="linenos">43</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node has been updated"""</span> -</span><span id="Update-44"><a href="#Update-44"><span class="linenos">44</span></a> -</span><span id="Update-45"><a href="#Update-45"><span class="linenos">45</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> -</span><span id="Update-46"><a href="#Update-46"><span class="linenos">46</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Update-40"><a href="#Update-40"><span class="linenos">40</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Update-41"><a href="#Update-41"><span class="linenos">41</span></a><span class="k">class</span> <span class="nc">Update</span><span class="p">:</span> +</span><span id="Update-42"><a href="#Update-42"><span class="linenos">42</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node has been updated"""</span> +</span><span id="Update-43"><a href="#Update-43"><span class="linenos">43</span></a> +</span><span id="Update-44"><a href="#Update-44"><span class="linenos">44</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="Update-45"><a href="#Update-45"><span class="linenos">45</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> </span></pre></div> @@ -1032,12 +1071,12 @@ </div> <a class="headerlink" href="#Keep"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Keep-49"><a href="#Keep-49"><span class="linenos">49</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Keep-50"><a href="#Keep-50"><span class="linenos">50</span></a><span class="k">class</span> <span class="nc">Keep</span><span class="p">:</span> -</span><span id="Keep-51"><a href="#Keep-51"><span class="linenos">51</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node hasn't been changed"""</span> -</span><span id="Keep-52"><a href="#Keep-52"><span class="linenos">52</span></a> -</span><span id="Keep-53"><a href="#Keep-53"><span class="linenos">53</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> -</span><span id="Keep-54"><a href="#Keep-54"><span class="linenos">54</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Keep-48"><a href="#Keep-48"><span class="linenos">48</span></a><span class="nd">@dataclass</span><span class="p">(</span><span class="n">frozen</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Keep-49"><a href="#Keep-49"><span class="linenos">49</span></a><span class="k">class</span> <span class="nc">Keep</span><span class="p">:</span> +</span><span id="Keep-50"><a href="#Keep-50"><span class="linenos">50</span></a><span class="w"> </span><span class="sd">"""Indicates that an existing node hasn't been changed"""</span> +</span><span id="Keep-51"><a href="#Keep-51"><span class="linenos">51</span></a> +</span><span id="Keep-52"><a href="#Keep-52"><span class="linenos">52</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="Keep-53"><a href="#Keep-53"><span class="linenos">53</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> </span></pre></div> @@ -1063,41 +1102,71 @@ <div class="attr function"> <span class="def">def</span> - <span class="name">diff</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">source</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">target</span><span class="p">:</span> <span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n"><a href="#Insert">sqlglot.diff.Insert</a></span><span class="p">,</span> <span class="n"><a href="#Remove">sqlglot.diff.Remove</a></span><span class="p">,</span> <span class="n"><a href="#Move">sqlglot.diff.Move</a></span><span class="p">,</span> <span class="n"><a href="#Update">sqlglot.diff.Update</a></span><span class="p">,</span> <span class="n"><a href="#Keep">sqlglot.diff.Keep</a></span><span class="p">]]</span>:</span></span> + <span class="name">diff</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">source</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">target</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">matchings</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">Any</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n"><a href="#Insert">sqlglot.diff.Insert</a></span><span class="p">,</span> <span class="n"><a href="#Remove">sqlglot.diff.Remove</a></span><span class="p">,</span> <span class="n"><a href="#Move">sqlglot.diff.Move</a></span><span class="p">,</span> <span class="n"><a href="#Update">sqlglot.diff.Update</a></span><span class="p">,</span> <span class="n"><a href="#Keep">sqlglot.diff.Keep</a></span><span class="p">]]</span>:</span></span> <label class="view-source-button" for="diff-view-source"><span>View Source</span></label> </div> <a class="headerlink" href="#diff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="diff-62"><a href="#diff-62"><span class="linenos">62</span></a><span class="k">def</span> <span class="nf">diff</span><span class="p">(</span><span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> -</span><span id="diff-63"><a href="#diff-63"><span class="linenos">63</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="diff-64"><a href="#diff-64"><span class="linenos">64</span></a><span class="sd"> Returns the list of changes between the source and the target expressions.</span> -</span><span id="diff-65"><a href="#diff-65"><span class="linenos">65</span></a> -</span><span id="diff-66"><a href="#diff-66"><span class="linenos">66</span></a><span class="sd"> Examples:</span> -</span><span id="diff-67"><a href="#diff-67"><span class="linenos">67</span></a><span class="sd"> >>> diff(parse_one("a + b"), parse_one("a + c"))</span> -</span><span id="diff-68"><a href="#diff-68"><span class="linenos">68</span></a><span class="sd"> [</span> -</span><span id="diff-69"><a href="#diff-69"><span class="linenos">69</span></a><span class="sd"> Remove(expression=(COLUMN this: (IDENTIFIER this: b, quoted: False))),</span> -</span><span id="diff-70"><a href="#diff-70"><span class="linenos">70</span></a><span class="sd"> Insert(expression=(COLUMN this: (IDENTIFIER this: c, quoted: False))),</span> -</span><span id="diff-71"><a href="#diff-71"><span class="linenos">71</span></a><span class="sd"> Keep(</span> -</span><span id="diff-72"><a href="#diff-72"><span class="linenos">72</span></a><span class="sd"> source=(ADD this: ...),</span> -</span><span id="diff-73"><a href="#diff-73"><span class="linenos">73</span></a><span class="sd"> target=(ADD this: ...)</span> -</span><span id="diff-74"><a href="#diff-74"><span class="linenos">74</span></a><span class="sd"> ),</span> -</span><span id="diff-75"><a href="#diff-75"><span class="linenos">75</span></a><span class="sd"> Keep(</span> -</span><span id="diff-76"><a href="#diff-76"><span class="linenos">76</span></a><span class="sd"> source=(COLUMN this: (IDENTIFIER this: a, quoted: False)),</span> -</span><span id="diff-77"><a href="#diff-77"><span class="linenos">77</span></a><span class="sd"> target=(COLUMN this: (IDENTIFIER this: a, quoted: False))</span> -</span><span id="diff-78"><a href="#diff-78"><span class="linenos">78</span></a><span class="sd"> ),</span> -</span><span id="diff-79"><a href="#diff-79"><span class="linenos">79</span></a><span class="sd"> ]</span> -</span><span id="diff-80"><a href="#diff-80"><span class="linenos">80</span></a> -</span><span id="diff-81"><a href="#diff-81"><span class="linenos">81</span></a><span class="sd"> Args:</span> -</span><span id="diff-82"><a href="#diff-82"><span class="linenos">82</span></a><span class="sd"> source: the source expression.</span> -</span><span id="diff-83"><a href="#diff-83"><span class="linenos">83</span></a><span class="sd"> target: the target expression against which the diff should be calculated.</span> -</span><span id="diff-84"><a href="#diff-84"><span class="linenos">84</span></a> -</span><span id="diff-85"><a href="#diff-85"><span class="linenos">85</span></a><span class="sd"> Returns:</span> -</span><span id="diff-86"><a href="#diff-86"><span class="linenos">86</span></a><span class="sd"> the list of Insert, Remove, Move, Update and Keep objects for each node in the source and the</span> -</span><span id="diff-87"><a href="#diff-87"><span class="linenos">87</span></a><span class="sd"> target expression trees. This list represents a sequence of steps needed to transform the source</span> -</span><span id="diff-88"><a href="#diff-88"><span class="linenos">88</span></a><span class="sd"> expression tree into the target one.</span> -</span><span id="diff-89"><a href="#diff-89"><span class="linenos">89</span></a><span class="sd"> """</span> -</span><span id="diff-90"><a href="#diff-90"><span class="linenos">90</span></a> <span class="k">return</span> <span class="n">ChangeDistiller</span><span class="p">()</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">source</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">target</span><span class="o">.</span><span class="n">copy</span><span class="p">())</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="diff-61"><a href="#diff-61"><span class="linenos"> 61</span></a><span class="k">def</span> <span class="nf">diff</span><span class="p">(</span> +</span><span id="diff-62"><a href="#diff-62"><span class="linenos"> 62</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="diff-63"><a href="#diff-63"><span class="linenos"> 63</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="diff-64"><a href="#diff-64"><span class="linenos"> 64</span></a> <span class="n">matchings</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="diff-65"><a href="#diff-65"><span class="linenos"> 65</span></a> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="diff-66"><a href="#diff-66"><span class="linenos"> 66</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> +</span><span id="diff-67"><a href="#diff-67"><span class="linenos"> 67</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="diff-68"><a href="#diff-68"><span class="linenos"> 68</span></a><span class="sd"> Returns the list of changes between the source and the target expressions.</span> +</span><span id="diff-69"><a href="#diff-69"><span class="linenos"> 69</span></a> +</span><span id="diff-70"><a href="#diff-70"><span class="linenos"> 70</span></a><span class="sd"> Examples:</span> +</span><span id="diff-71"><a href="#diff-71"><span class="linenos"> 71</span></a><span class="sd"> >>> diff(parse_one("a + b"), parse_one("a + c"))</span> +</span><span id="diff-72"><a href="#diff-72"><span class="linenos"> 72</span></a><span class="sd"> [</span> +</span><span id="diff-73"><a href="#diff-73"><span class="linenos"> 73</span></a><span class="sd"> Remove(expression=(COLUMN this: (IDENTIFIER this: b, quoted: False))),</span> +</span><span id="diff-74"><a href="#diff-74"><span class="linenos"> 74</span></a><span class="sd"> Insert(expression=(COLUMN this: (IDENTIFIER this: c, quoted: False))),</span> +</span><span id="diff-75"><a href="#diff-75"><span class="linenos"> 75</span></a><span class="sd"> Keep(</span> +</span><span id="diff-76"><a href="#diff-76"><span class="linenos"> 76</span></a><span class="sd"> source=(ADD this: ...),</span> +</span><span id="diff-77"><a href="#diff-77"><span class="linenos"> 77</span></a><span class="sd"> target=(ADD this: ...)</span> +</span><span id="diff-78"><a href="#diff-78"><span class="linenos"> 78</span></a><span class="sd"> ),</span> +</span><span id="diff-79"><a href="#diff-79"><span class="linenos"> 79</span></a><span class="sd"> Keep(</span> +</span><span id="diff-80"><a href="#diff-80"><span class="linenos"> 80</span></a><span class="sd"> source=(COLUMN this: (IDENTIFIER this: a, quoted: False)),</span> +</span><span id="diff-81"><a href="#diff-81"><span class="linenos"> 81</span></a><span class="sd"> target=(COLUMN this: (IDENTIFIER this: a, quoted: False))</span> +</span><span id="diff-82"><a href="#diff-82"><span class="linenos"> 82</span></a><span class="sd"> ),</span> +</span><span id="diff-83"><a href="#diff-83"><span class="linenos"> 83</span></a><span class="sd"> ]</span> +</span><span id="diff-84"><a href="#diff-84"><span class="linenos"> 84</span></a> +</span><span id="diff-85"><a href="#diff-85"><span class="linenos"> 85</span></a><span class="sd"> Args:</span> +</span><span id="diff-86"><a href="#diff-86"><span class="linenos"> 86</span></a><span class="sd"> source: the source expression.</span> +</span><span id="diff-87"><a href="#diff-87"><span class="linenos"> 87</span></a><span class="sd"> target: the target expression against which the diff should be calculated.</span> +</span><span id="diff-88"><a href="#diff-88"><span class="linenos"> 88</span></a><span class="sd"> matchings: the list of pre-matched node pairs which is used to help the algorithm's</span> +</span><span id="diff-89"><a href="#diff-89"><span class="linenos"> 89</span></a><span class="sd"> heuristics produce better results for subtrees that are known by a caller to be matching.</span> +</span><span id="diff-90"><a href="#diff-90"><span class="linenos"> 90</span></a><span class="sd"> Note: expression references in this list must refer to the same node objects that are</span> +</span><span id="diff-91"><a href="#diff-91"><span class="linenos"> 91</span></a><span class="sd"> referenced in source / target trees.</span> +</span><span id="diff-92"><a href="#diff-92"><span class="linenos"> 92</span></a> +</span><span id="diff-93"><a href="#diff-93"><span class="linenos"> 93</span></a><span class="sd"> Returns:</span> +</span><span id="diff-94"><a href="#diff-94"><span class="linenos"> 94</span></a><span class="sd"> the list of Insert, Remove, Move, Update and Keep objects for each node in the source and the</span> +</span><span id="diff-95"><a href="#diff-95"><span class="linenos"> 95</span></a><span class="sd"> target expression trees. This list represents a sequence of steps needed to transform the source</span> +</span><span id="diff-96"><a href="#diff-96"><span class="linenos"> 96</span></a><span class="sd"> expression tree into the target one.</span> +</span><span id="diff-97"><a href="#diff-97"><span class="linenos"> 97</span></a><span class="sd"> """</span> +</span><span id="diff-98"><a href="#diff-98"><span class="linenos"> 98</span></a> <span class="n">matchings</span> <span class="o">=</span> <span class="n">matchings</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="diff-99"><a href="#diff-99"><span class="linenos"> 99</span></a> <span class="n">matching_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="k">for</span> <span class="n">pair</span> <span class="ow">in</span> <span class="n">matchings</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">pair</span><span class="p">}</span> +</span><span id="diff-100"><a href="#diff-100"><span class="linenos">100</span></a> +</span><span id="diff-101"><a href="#diff-101"><span class="linenos">101</span></a> <span class="k">def</span> <span class="nf">compute_node_mappings</span><span class="p">(</span> +</span><span id="diff-102"><a href="#diff-102"><span class="linenos">102</span></a> <span class="n">original</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">copy</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> +</span><span id="diff-103"><a href="#diff-103"><span class="linenos">103</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="diff-104"><a href="#diff-104"><span class="linenos">104</span></a> <span class="k">return</span> <span class="p">{</span> +</span><span id="diff-105"><a href="#diff-105"><span class="linenos">105</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">old_node</span><span class="p">):</span> <span class="n">new_node</span> +</span><span id="diff-106"><a href="#diff-106"><span class="linenos">106</span></a> <span class="k">for</span> <span class="p">(</span><span class="n">old_node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">),</span> <span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">original</span><span class="o">.</span><span class="n">walk</span><span class="p">(),</span> <span class="n">copy</span><span class="o">.</span><span class="n">walk</span><span class="p">())</span> +</span><span id="diff-107"><a href="#diff-107"><span class="linenos">107</span></a> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">old_node</span><span class="p">)</span> <span class="ow">in</span> <span class="n">matching_ids</span> +</span><span id="diff-108"><a href="#diff-108"><span class="linenos">108</span></a> <span class="p">}</span> +</span><span id="diff-109"><a href="#diff-109"><span class="linenos">109</span></a> +</span><span id="diff-110"><a href="#diff-110"><span class="linenos">110</span></a> <span class="n">source_copy</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="diff-111"><a href="#diff-111"><span class="linenos">111</span></a> <span class="n">target_copy</span> <span class="o">=</span> <span class="n">target</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="diff-112"><a href="#diff-112"><span class="linenos">112</span></a> +</span><span id="diff-113"><a href="#diff-113"><span class="linenos">113</span></a> <span class="n">node_mappings</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="diff-114"><a href="#diff-114"><span class="linenos">114</span></a> <span class="o">**</span><span class="n">compute_node_mappings</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">source_copy</span><span class="p">),</span> +</span><span id="diff-115"><a href="#diff-115"><span class="linenos">115</span></a> <span class="o">**</span><span class="n">compute_node_mappings</span><span class="p">(</span><span class="n">target</span><span class="p">,</span> <span class="n">target_copy</span><span class="p">),</span> +</span><span id="diff-116"><a href="#diff-116"><span class="linenos">116</span></a> <span class="p">}</span> +</span><span id="diff-117"><a href="#diff-117"><span class="linenos">117</span></a> <span class="n">matchings_copy</span> <span class="o">=</span> <span class="p">[(</span><span class="n">node_mappings</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">s</span><span class="p">)],</span> <span class="n">node_mappings</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">t</span><span class="p">)])</span> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">matchings</span><span class="p">]</span> +</span><span id="diff-118"><a href="#diff-118"><span class="linenos">118</span></a> +</span><span id="diff-119"><a href="#diff-119"><span class="linenos">119</span></a> <span class="k">return</span> <span class="n">ChangeDistiller</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span><span class="o">.</span><span class="n">diff</span><span class="p">(</span><span class="n">source_copy</span><span class="p">,</span> <span class="n">target_copy</span><span class="p">,</span> <span class="n">matchings</span><span class="o">=</span><span class="n">matchings_copy</span><span class="p">)</span> </span></pre></div> @@ -1129,6 +1198,10 @@ <ul> <li><strong>source:</strong> the source expression.</li> <li><strong>target:</strong> the target expression against which the diff should be calculated.</li> +<li><strong>matchings:</strong> the list of pre-matched node pairs which is used to help the algorithm's +heuristics produce better results for subtrees that are known by a caller to be matching. +Note: expression references in this list must refer to the same node objects that are +referenced in source / target trees.</li> </ul> <h6 id="returns">Returns:</h6> @@ -1153,169 +1226,179 @@ </div> <a class="headerlink" href="#ChangeDistiller"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ChangeDistiller-101"><a href="#ChangeDistiller-101"><span class="linenos">101</span></a><span class="k">class</span> <span class="nc">ChangeDistiller</span><span class="p">:</span> -</span><span id="ChangeDistiller-102"><a href="#ChangeDistiller-102"><span class="linenos">102</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="ChangeDistiller-103"><a href="#ChangeDistiller-103"><span class="linenos">103</span></a><span class="sd"> The implementation of the Change Distiller algorithm described by Beat Fluri and Martin Pinzger in</span> -</span><span id="ChangeDistiller-104"><a href="#ChangeDistiller-104"><span class="linenos">104</span></a><span class="sd"> their paper https://ieeexplore.ieee.org/document/4339230, which in turn is based on the algorithm by</span> -</span><span id="ChangeDistiller-105"><a href="#ChangeDistiller-105"><span class="linenos">105</span></a><span class="sd"> Chawathe et al. described in http://ilpubs.stanford.edu:8090/115/1/1995-46.pdf.</span> -</span><span id="ChangeDistiller-106"><a href="#ChangeDistiller-106"><span class="linenos">106</span></a><span class="sd"> """</span> -</span><span id="ChangeDistiller-107"><a href="#ChangeDistiller-107"><span class="linenos">107</span></a> -</span><span id="ChangeDistiller-108"><a href="#ChangeDistiller-108"><span class="linenos">108</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">,</span> <span class="n">t</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="ChangeDistiller-109"><a href="#ChangeDistiller-109"><span class="linenos">109</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span> -</span><span id="ChangeDistiller-110"><a href="#ChangeDistiller-110"><span class="linenos">110</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="o">=</span> <span class="n">t</span> -</span><span id="ChangeDistiller-111"><a href="#ChangeDistiller-111"><span class="linenos">111</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span> <span class="o">=</span> <span class="n">Dialect</span><span class="p">()</span><span class="o">.</span><span class="n">generator</span><span class="p">()</span> -</span><span id="ChangeDistiller-112"><a href="#ChangeDistiller-112"><span class="linenos">112</span></a> -</span><span id="ChangeDistiller-113"><a href="#ChangeDistiller-113"><span class="linenos">113</span></a> <span class="k">def</span> <span class="nf">diff</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> -</span><span id="ChangeDistiller-114"><a href="#ChangeDistiller-114"><span class="linenos">114</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span> <span class="o">=</span> <span class="n">source</span> -</span><span id="ChangeDistiller-115"><a href="#ChangeDistiller-115"><span class="linenos">115</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span> <span class="o">=</span> <span class="n">target</span> -</span><span id="ChangeDistiller-116"><a href="#ChangeDistiller-116"><span class="linenos">116</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> -</span><span id="ChangeDistiller-117"><a href="#ChangeDistiller-117"><span class="linenos">117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> -</span><span id="ChangeDistiller-118"><a href="#ChangeDistiller-118"><span class="linenos">118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">)</span> -</span><span id="ChangeDistiller-119"><a href="#ChangeDistiller-119"><span class="linenos">119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">)</span> -</span><span id="ChangeDistiller-120"><a href="#ChangeDistiller-120"><span class="linenos">120</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="ChangeDistiller-121"><a href="#ChangeDistiller-121"><span class="linenos">121</span></a> -</span><span id="ChangeDistiller-122"><a href="#ChangeDistiller-122"><span class="linenos">122</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_matching_set</span><span class="p">()</span> -</span><span id="ChangeDistiller-123"><a href="#ChangeDistiller-123"><span class="linenos">123</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_edit_script</span><span class="p">(</span><span class="n">matching_set</span><span class="p">)</span> -</span><span id="ChangeDistiller-124"><a href="#ChangeDistiller-124"><span class="linenos">124</span></a> -</span><span id="ChangeDistiller-125"><a href="#ChangeDistiller-125"><span class="linenos">125</span></a> <span class="k">def</span> <span class="nf">_generate_edit_script</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">matching_set</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> -</span><span id="ChangeDistiller-126"><a href="#ChangeDistiller-126"><span class="linenos">126</span></a> <span class="n">edit_script</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="ChangeDistiller-127"><a href="#ChangeDistiller-127"><span class="linenos">127</span></a> <span class="k">for</span> <span class="n">removed_node_id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="p">:</span> -</span><span id="ChangeDistiller-128"><a href="#ChangeDistiller-128"><span class="linenos">128</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Remove</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">removed_node_id</span><span class="p">]))</span> -</span><span id="ChangeDistiller-129"><a href="#ChangeDistiller-129"><span class="linenos">129</span></a> <span class="k">for</span> <span class="n">inserted_node_id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="p">:</span> -</span><span id="ChangeDistiller-130"><a href="#ChangeDistiller-130"><span class="linenos">130</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Insert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">inserted_node_id</span><span class="p">]))</span> -</span><span id="ChangeDistiller-131"><a href="#ChangeDistiller-131"><span class="linenos">131</span></a> <span class="k">for</span> <span class="n">kept_source_node_id</span><span class="p">,</span> <span class="n">kept_target_node_id</span> <span class="ow">in</span> <span class="n">matching_set</span><span class="p">:</span> -</span><span id="ChangeDistiller-132"><a href="#ChangeDistiller-132"><span class="linenos">132</span></a> <span class="n">source_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">kept_source_node_id</span><span class="p">]</span> -</span><span id="ChangeDistiller-133"><a href="#ChangeDistiller-133"><span class="linenos">133</span></a> <span class="n">target_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">kept_target_node_id</span><span class="p">]</span> -</span><span id="ChangeDistiller-134"><a href="#ChangeDistiller-134"><span class="linenos">134</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">LEAF_EXPRESSION_TYPES</span><span class="p">)</span> <span class="ow">or</span> <span class="n">source_node</span> <span class="o">==</span> <span class="n">target_node</span><span class="p">:</span> -</span><span id="ChangeDistiller-135"><a href="#ChangeDistiller-135"><span class="linenos">135</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> -</span><span id="ChangeDistiller-136"><a href="#ChangeDistiller-136"><span class="linenos">136</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_move_edits</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">,</span> <span class="n">matching_set</span><span class="p">)</span> -</span><span id="ChangeDistiller-137"><a href="#ChangeDistiller-137"><span class="linenos">137</span></a> <span class="p">)</span> -</span><span id="ChangeDistiller-138"><a href="#ChangeDistiller-138"><span class="linenos">138</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Keep</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">))</span> -</span><span id="ChangeDistiller-139"><a href="#ChangeDistiller-139"><span class="linenos">139</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="ChangeDistiller-140"><a href="#ChangeDistiller-140"><span class="linenos">140</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Update</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ChangeDistiller-130"><a href="#ChangeDistiller-130"><span class="linenos">130</span></a><span class="k">class</span> <span class="nc">ChangeDistiller</span><span class="p">:</span> +</span><span id="ChangeDistiller-131"><a href="#ChangeDistiller-131"><span class="linenos">131</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="ChangeDistiller-132"><a href="#ChangeDistiller-132"><span class="linenos">132</span></a><span class="sd"> The implementation of the Change Distiller algorithm described by Beat Fluri and Martin Pinzger in</span> +</span><span id="ChangeDistiller-133"><a href="#ChangeDistiller-133"><span class="linenos">133</span></a><span class="sd"> their paper https://ieeexplore.ieee.org/document/4339230, which in turn is based on the algorithm by</span> +</span><span id="ChangeDistiller-134"><a href="#ChangeDistiller-134"><span class="linenos">134</span></a><span class="sd"> Chawathe et al. described in http://ilpubs.stanford.edu:8090/115/1/1995-46.pdf.</span> +</span><span id="ChangeDistiller-135"><a href="#ChangeDistiller-135"><span class="linenos">135</span></a><span class="sd"> """</span> +</span><span id="ChangeDistiller-136"><a href="#ChangeDistiller-136"><span class="linenos">136</span></a> +</span><span id="ChangeDistiller-137"><a href="#ChangeDistiller-137"><span class="linenos">137</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">,</span> <span class="n">t</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="ChangeDistiller-138"><a href="#ChangeDistiller-138"><span class="linenos">138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span> +</span><span id="ChangeDistiller-139"><a href="#ChangeDistiller-139"><span class="linenos">139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="o">=</span> <span class="n">t</span> +</span><span id="ChangeDistiller-140"><a href="#ChangeDistiller-140"><span class="linenos">140</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span> <span class="o">=</span> <span class="n">Dialect</span><span class="p">()</span><span class="o">.</span><span class="n">generator</span><span class="p">()</span> </span><span id="ChangeDistiller-141"><a href="#ChangeDistiller-141"><span class="linenos">141</span></a> -</span><span id="ChangeDistiller-142"><a href="#ChangeDistiller-142"><span class="linenos">142</span></a> <span class="k">return</span> <span class="n">edit_script</span> -</span><span id="ChangeDistiller-143"><a href="#ChangeDistiller-143"><span class="linenos">143</span></a> -</span><span id="ChangeDistiller-144"><a href="#ChangeDistiller-144"><span class="linenos">144</span></a> <span class="k">def</span> <span class="nf">_generate_move_edits</span><span class="p">(</span> -</span><span id="ChangeDistiller-145"><a href="#ChangeDistiller-145"><span class="linenos">145</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</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">matching_set</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> -</span><span id="ChangeDistiller-146"><a href="#ChangeDistiller-146"><span class="linenos">146</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Move</span><span class="p">]:</span> -</span><span id="ChangeDistiller-147"><a href="#ChangeDistiller-147"><span class="linenos">147</span></a> <span class="n">source_args</span> <span class="o">=</span> <span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">_expression_only_args</span><span class="p">(</span><span class="n">source</span><span class="p">)]</span> -</span><span id="ChangeDistiller-148"><a href="#ChangeDistiller-148"><span class="linenos">148</span></a> <span class="n">target_args</span> <span class="o">=</span> <span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">_expression_only_args</span><span class="p">(</span><span class="n">target</span><span class="p">)]</span> -</span><span id="ChangeDistiller-149"><a href="#ChangeDistiller-149"><span class="linenos">149</span></a> -</span><span id="ChangeDistiller-150"><a href="#ChangeDistiller-150"><span class="linenos">150</span></a> <span class="n">args_lcs</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">_lcs</span><span class="p">(</span><span class="n">source_args</span><span class="p">,</span> <span class="n">target_args</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">:</span> <span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span> <span class="ow">in</span> <span class="n">matching_set</span><span class="p">))</span> -</span><span id="ChangeDistiller-151"><a href="#ChangeDistiller-151"><span class="linenos">151</span></a> -</span><span id="ChangeDistiller-152"><a href="#ChangeDistiller-152"><span class="linenos">152</span></a> <span class="n">move_edits</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="ChangeDistiller-153"><a href="#ChangeDistiller-153"><span class="linenos">153</span></a> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">source_args</span><span class="p">:</span> -</span><span id="ChangeDistiller-154"><a href="#ChangeDistiller-154"><span class="linenos">154</span></a> <span class="k">if</span> <span class="n">a</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">args_lcs</span> <span class="ow">and</span> <span class="n">a</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="p">:</span> -</span><span id="ChangeDistiller-155"><a href="#ChangeDistiller-155"><span class="linenos">155</span></a> <span class="n">move_edits</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Move</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">a</span><span class="p">]))</span> -</span><span id="ChangeDistiller-156"><a href="#ChangeDistiller-156"><span class="linenos">156</span></a> -</span><span id="ChangeDistiller-157"><a href="#ChangeDistiller-157"><span class="linenos">157</span></a> <span class="k">return</span> <span class="n">move_edits</span> -</span><span id="ChangeDistiller-158"><a href="#ChangeDistiller-158"><span class="linenos">158</span></a> -</span><span id="ChangeDistiller-159"><a href="#ChangeDistiller-159"><span class="linenos">159</span></a> <span class="k">def</span> <span class="nf">_compute_matching_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span> -</span><span id="ChangeDistiller-160"><a href="#ChangeDistiller-160"><span class="linenos">160</span></a> <span class="n">leaves_matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_leaf_matching_set</span><span class="p">()</span> -</span><span id="ChangeDistiller-161"><a href="#ChangeDistiller-161"><span class="linenos">161</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="n">leaves_matching_set</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="ChangeDistiller-162"><a href="#ChangeDistiller-162"><span class="linenos">162</span></a> -</span><span id="ChangeDistiller-163"><a href="#ChangeDistiller-163"><span class="linenos">163</span></a> <span class="n">ordered_unmatched_source_nodes</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="ChangeDistiller-164"><a href="#ChangeDistiller-164"><span class="linenos">164</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()</span> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> -</span><span id="ChangeDistiller-165"><a href="#ChangeDistiller-165"><span class="linenos">165</span></a> <span class="p">}</span> -</span><span id="ChangeDistiller-166"><a href="#ChangeDistiller-166"><span class="linenos">166</span></a> <span class="n">ordered_unmatched_target_nodes</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="ChangeDistiller-167"><a href="#ChangeDistiller-167"><span class="linenos">167</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()</span> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> -</span><span id="ChangeDistiller-168"><a href="#ChangeDistiller-168"><span class="linenos">168</span></a> <span class="p">}</span> -</span><span id="ChangeDistiller-169"><a href="#ChangeDistiller-169"><span class="linenos">169</span></a> -</span><span id="ChangeDistiller-170"><a href="#ChangeDistiller-170"><span class="linenos">170</span></a> <span class="k">for</span> <span class="n">source_node_id</span> <span class="ow">in</span> <span class="n">ordered_unmatched_source_nodes</span><span class="p">:</span> -</span><span id="ChangeDistiller-171"><a href="#ChangeDistiller-171"><span class="linenos">171</span></a> <span class="k">for</span> <span class="n">target_node_id</span> <span class="ow">in</span> <span class="n">ordered_unmatched_target_nodes</span><span class="p">:</span> -</span><span id="ChangeDistiller-172"><a href="#ChangeDistiller-172"><span class="linenos">172</span></a> <span class="n">source_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">source_node_id</span><span class="p">]</span> -</span><span id="ChangeDistiller-173"><a href="#ChangeDistiller-173"><span class="linenos">173</span></a> <span class="n">target_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">target_node_id</span><span class="p">]</span> -</span><span id="ChangeDistiller-174"><a href="#ChangeDistiller-174"><span class="linenos">174</span></a> <span class="k">if</span> <span class="n">_is_same_type</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">):</span> -</span><span id="ChangeDistiller-175"><a href="#ChangeDistiller-175"><span class="linenos">175</span></a> <span class="n">source_leaf_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">source_node</span><span class="p">)}</span> -</span><span id="ChangeDistiller-176"><a href="#ChangeDistiller-176"><span class="linenos">176</span></a> <span class="n">target_leaf_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">target_node</span><span class="p">)}</span> -</span><span id="ChangeDistiller-177"><a href="#ChangeDistiller-177"><span class="linenos">177</span></a> -</span><span id="ChangeDistiller-178"><a href="#ChangeDistiller-178"><span class="linenos">178</span></a> <span class="n">max_leaves_num</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">source_leaf_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">target_leaf_ids</span><span class="p">))</span> -</span><span id="ChangeDistiller-179"><a href="#ChangeDistiller-179"><span class="linenos">179</span></a> <span class="k">if</span> <span class="n">max_leaves_num</span><span class="p">:</span> -</span><span id="ChangeDistiller-180"><a href="#ChangeDistiller-180"><span class="linenos">180</span></a> <span class="n">common_leaves_num</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span> -</span><span id="ChangeDistiller-181"><a href="#ChangeDistiller-181"><span class="linenos">181</span></a> <span class="mi">1</span> <span class="k">if</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">source_leaf_ids</span> <span class="ow">and</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">target_leaf_ids</span> <span class="k">else</span> <span class="mi">0</span> -</span><span id="ChangeDistiller-182"><a href="#ChangeDistiller-182"><span class="linenos">182</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">leaves_matching_set</span> -</span><span id="ChangeDistiller-183"><a href="#ChangeDistiller-183"><span class="linenos">183</span></a> <span class="p">)</span> -</span><span id="ChangeDistiller-184"><a href="#ChangeDistiller-184"><span class="linenos">184</span></a> <span class="n">leaf_similarity_score</span> <span class="o">=</span> <span class="n">common_leaves_num</span> <span class="o">/</span> <span class="n">max_leaves_num</span> -</span><span id="ChangeDistiller-185"><a href="#ChangeDistiller-185"><span class="linenos">185</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="ChangeDistiller-186"><a href="#ChangeDistiller-186"><span class="linenos">186</span></a> <span class="n">leaf_similarity_score</span> <span class="o">=</span> <span class="mf">0.0</span> -</span><span id="ChangeDistiller-187"><a href="#ChangeDistiller-187"><span class="linenos">187</span></a> -</span><span id="ChangeDistiller-188"><a href="#ChangeDistiller-188"><span class="linenos">188</span></a> <span class="n">adjusted_t</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="ChangeDistiller-189"><a href="#ChangeDistiller-189"><span class="linenos">189</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="k">if</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">source_leaf_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">target_leaf_ids</span><span class="p">))</span> <span class="o">></span> <span class="mi">4</span> <span class="k">else</span> <span class="mf">0.4</span> -</span><span id="ChangeDistiller-190"><a href="#ChangeDistiller-190"><span class="linenos">190</span></a> <span class="p">)</span> -</span><span id="ChangeDistiller-191"><a href="#ChangeDistiller-191"><span class="linenos">191</span></a> -</span><span id="ChangeDistiller-192"><a href="#ChangeDistiller-192"><span class="linenos">192</span></a> <span class="k">if</span> <span class="n">leaf_similarity_score</span> <span class="o">>=</span> <span class="mf">0.8</span> <span class="ow">or</span> <span class="p">(</span> -</span><span id="ChangeDistiller-193"><a href="#ChangeDistiller-193"><span class="linenos">193</span></a> <span class="n">leaf_similarity_score</span> <span class="o">>=</span> <span class="n">adjusted_t</span> -</span><span id="ChangeDistiller-194"><a href="#ChangeDistiller-194"><span class="linenos">194</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dice_coefficient</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">)</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> -</span><span id="ChangeDistiller-195"><a href="#ChangeDistiller-195"><span class="linenos">195</span></a> <span class="p">):</span> -</span><span id="ChangeDistiller-196"><a href="#ChangeDistiller-196"><span class="linenos">196</span></a> <span class="n">matching_set</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="n">source_node_id</span><span class="p">,</span> <span class="n">target_node_id</span><span class="p">))</span> -</span><span id="ChangeDistiller-197"><a href="#ChangeDistiller-197"><span class="linenos">197</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">source_node_id</span><span class="p">)</span> -</span><span id="ChangeDistiller-198"><a href="#ChangeDistiller-198"><span class="linenos">198</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">target_node_id</span><span class="p">)</span> -</span><span id="ChangeDistiller-199"><a href="#ChangeDistiller-199"><span class="linenos">199</span></a> <span class="n">ordered_unmatched_target_nodes</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">target_node_id</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="ChangeDistiller-200"><a href="#ChangeDistiller-200"><span class="linenos">200</span></a> <span class="k">break</span> +</span><span id="ChangeDistiller-142"><a href="#ChangeDistiller-142"><span class="linenos">142</span></a> <span class="k">def</span> <span class="nf">diff</span><span class="p">(</span> +</span><span id="ChangeDistiller-143"><a href="#ChangeDistiller-143"><span class="linenos">143</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="ChangeDistiller-144"><a href="#ChangeDistiller-144"><span class="linenos">144</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="ChangeDistiller-145"><a href="#ChangeDistiller-145"><span class="linenos">145</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="ChangeDistiller-146"><a href="#ChangeDistiller-146"><span class="linenos">146</span></a> <span class="n">matchings</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="ChangeDistiller-147"><a href="#ChangeDistiller-147"><span class="linenos">147</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> +</span><span id="ChangeDistiller-148"><a href="#ChangeDistiller-148"><span class="linenos">148</span></a> <span class="n">matchings</span> <span class="o">=</span> <span class="n">matchings</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="ChangeDistiller-149"><a href="#ChangeDistiller-149"><span class="linenos">149</span></a> <span class="n">pre_matched_nodes</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> <span class="nb">id</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">matchings</span><span class="p">}</span> +</span><span id="ChangeDistiller-150"><a href="#ChangeDistiller-150"><span class="linenos">150</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">({</span><span class="n">n</span> <span class="k">for</span> <span class="n">pair</span> <span class="ow">in</span> <span class="n">pre_matched_nodes</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">pair</span><span class="p">})</span> <span class="o">!=</span> <span class="mi">2</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">matchings</span><span class="p">):</span> +</span><span id="ChangeDistiller-151"><a href="#ChangeDistiller-151"><span class="linenos">151</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Each node can be referenced at most once in the list of matchings"</span><span class="p">)</span> +</span><span id="ChangeDistiller-152"><a href="#ChangeDistiller-152"><span class="linenos">152</span></a> +</span><span id="ChangeDistiller-153"><a href="#ChangeDistiller-153"><span class="linenos">153</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span> <span class="o">=</span> <span class="n">source</span> +</span><span id="ChangeDistiller-154"><a href="#ChangeDistiller-154"><span class="linenos">154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span> <span class="o">=</span> <span class="n">target</span> +</span><span id="ChangeDistiller-155"><a href="#ChangeDistiller-155"><span class="linenos">155</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> +</span><span id="ChangeDistiller-156"><a href="#ChangeDistiller-156"><span class="linenos">156</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> +</span><span id="ChangeDistiller-157"><a href="#ChangeDistiller-157"><span class="linenos">157</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">pre_matched_nodes</span><span class="p">)</span> +</span><span id="ChangeDistiller-158"><a href="#ChangeDistiller-158"><span class="linenos">158</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">pre_matched_nodes</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="ChangeDistiller-159"><a href="#ChangeDistiller-159"><span class="linenos">159</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="ChangeDistiller-160"><a href="#ChangeDistiller-160"><span class="linenos">160</span></a> +</span><span id="ChangeDistiller-161"><a href="#ChangeDistiller-161"><span class="linenos">161</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_matching_set</span><span class="p">()</span> <span class="o">|</span> <span class="p">{(</span><span class="n">s</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">pre_matched_nodes</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="ChangeDistiller-162"><a href="#ChangeDistiller-162"><span class="linenos">162</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_edit_script</span><span class="p">(</span><span class="n">matching_set</span><span class="p">)</span> +</span><span id="ChangeDistiller-163"><a href="#ChangeDistiller-163"><span class="linenos">163</span></a> +</span><span id="ChangeDistiller-164"><a href="#ChangeDistiller-164"><span class="linenos">164</span></a> <span class="k">def</span> <span class="nf">_generate_edit_script</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">matching_set</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> +</span><span id="ChangeDistiller-165"><a href="#ChangeDistiller-165"><span class="linenos">165</span></a> <span class="n">edit_script</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="ChangeDistiller-166"><a href="#ChangeDistiller-166"><span class="linenos">166</span></a> <span class="k">for</span> <span class="n">removed_node_id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="p">:</span> +</span><span id="ChangeDistiller-167"><a href="#ChangeDistiller-167"><span class="linenos">167</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Remove</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">removed_node_id</span><span class="p">]))</span> +</span><span id="ChangeDistiller-168"><a href="#ChangeDistiller-168"><span class="linenos">168</span></a> <span class="k">for</span> <span class="n">inserted_node_id</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="p">:</span> +</span><span id="ChangeDistiller-169"><a href="#ChangeDistiller-169"><span class="linenos">169</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Insert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">inserted_node_id</span><span class="p">]))</span> +</span><span id="ChangeDistiller-170"><a href="#ChangeDistiller-170"><span class="linenos">170</span></a> <span class="k">for</span> <span class="n">kept_source_node_id</span><span class="p">,</span> <span class="n">kept_target_node_id</span> <span class="ow">in</span> <span class="n">matching_set</span><span class="p">:</span> +</span><span id="ChangeDistiller-171"><a href="#ChangeDistiller-171"><span class="linenos">171</span></a> <span class="n">source_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">kept_source_node_id</span><span class="p">]</span> +</span><span id="ChangeDistiller-172"><a href="#ChangeDistiller-172"><span class="linenos">172</span></a> <span class="n">target_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">kept_target_node_id</span><span class="p">]</span> +</span><span id="ChangeDistiller-173"><a href="#ChangeDistiller-173"><span class="linenos">173</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">LEAF_EXPRESSION_TYPES</span><span class="p">)</span> <span class="ow">or</span> <span class="n">source_node</span> <span class="o">==</span> <span class="n">target_node</span><span class="p">:</span> +</span><span id="ChangeDistiller-174"><a href="#ChangeDistiller-174"><span class="linenos">174</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span> +</span><span id="ChangeDistiller-175"><a href="#ChangeDistiller-175"><span class="linenos">175</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_move_edits</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">,</span> <span class="n">matching_set</span><span class="p">)</span> +</span><span id="ChangeDistiller-176"><a href="#ChangeDistiller-176"><span class="linenos">176</span></a> <span class="p">)</span> +</span><span id="ChangeDistiller-177"><a href="#ChangeDistiller-177"><span class="linenos">177</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Keep</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">))</span> +</span><span id="ChangeDistiller-178"><a href="#ChangeDistiller-178"><span class="linenos">178</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="ChangeDistiller-179"><a href="#ChangeDistiller-179"><span class="linenos">179</span></a> <span class="n">edit_script</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Update</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">))</span> +</span><span id="ChangeDistiller-180"><a href="#ChangeDistiller-180"><span class="linenos">180</span></a> +</span><span id="ChangeDistiller-181"><a href="#ChangeDistiller-181"><span class="linenos">181</span></a> <span class="k">return</span> <span class="n">edit_script</span> +</span><span id="ChangeDistiller-182"><a href="#ChangeDistiller-182"><span class="linenos">182</span></a> +</span><span id="ChangeDistiller-183"><a href="#ChangeDistiller-183"><span class="linenos">183</span></a> <span class="k">def</span> <span class="nf">_generate_move_edits</span><span class="p">(</span> +</span><span id="ChangeDistiller-184"><a href="#ChangeDistiller-184"><span class="linenos">184</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</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">matching_set</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> +</span><span id="ChangeDistiller-185"><a href="#ChangeDistiller-185"><span class="linenos">185</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Move</span><span class="p">]:</span> +</span><span id="ChangeDistiller-186"><a href="#ChangeDistiller-186"><span class="linenos">186</span></a> <span class="n">source_args</span> <span class="o">=</span> <span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">_expression_only_args</span><span class="p">(</span><span class="n">source</span><span class="p">)]</span> +</span><span id="ChangeDistiller-187"><a href="#ChangeDistiller-187"><span class="linenos">187</span></a> <span class="n">target_args</span> <span class="o">=</span> <span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">_expression_only_args</span><span class="p">(</span><span class="n">target</span><span class="p">)]</span> +</span><span id="ChangeDistiller-188"><a href="#ChangeDistiller-188"><span class="linenos">188</span></a> +</span><span id="ChangeDistiller-189"><a href="#ChangeDistiller-189"><span class="linenos">189</span></a> <span class="n">args_lcs</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">_lcs</span><span class="p">(</span><span class="n">source_args</span><span class="p">,</span> <span class="n">target_args</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">:</span> <span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">r</span><span class="p">)</span> <span class="ow">in</span> <span class="n">matching_set</span><span class="p">))</span> +</span><span id="ChangeDistiller-190"><a href="#ChangeDistiller-190"><span class="linenos">190</span></a> +</span><span id="ChangeDistiller-191"><a href="#ChangeDistiller-191"><span class="linenos">191</span></a> <span class="n">move_edits</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="ChangeDistiller-192"><a href="#ChangeDistiller-192"><span class="linenos">192</span></a> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">source_args</span><span class="p">:</span> +</span><span id="ChangeDistiller-193"><a href="#ChangeDistiller-193"><span class="linenos">193</span></a> <span class="k">if</span> <span class="n">a</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">args_lcs</span> <span class="ow">and</span> <span class="n">a</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="p">:</span> +</span><span id="ChangeDistiller-194"><a href="#ChangeDistiller-194"><span class="linenos">194</span></a> <span class="n">move_edits</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Move</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">a</span><span class="p">]))</span> +</span><span id="ChangeDistiller-195"><a href="#ChangeDistiller-195"><span class="linenos">195</span></a> +</span><span id="ChangeDistiller-196"><a href="#ChangeDistiller-196"><span class="linenos">196</span></a> <span class="k">return</span> <span class="n">move_edits</span> +</span><span id="ChangeDistiller-197"><a href="#ChangeDistiller-197"><span class="linenos">197</span></a> +</span><span id="ChangeDistiller-198"><a href="#ChangeDistiller-198"><span class="linenos">198</span></a> <span class="k">def</span> <span class="nf">_compute_matching_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span> +</span><span id="ChangeDistiller-199"><a href="#ChangeDistiller-199"><span class="linenos">199</span></a> <span class="n">leaves_matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_leaf_matching_set</span><span class="p">()</span> +</span><span id="ChangeDistiller-200"><a href="#ChangeDistiller-200"><span class="linenos">200</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="n">leaves_matching_set</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> </span><span id="ChangeDistiller-201"><a href="#ChangeDistiller-201"><span class="linenos">201</span></a> -</span><span id="ChangeDistiller-202"><a href="#ChangeDistiller-202"><span class="linenos">202</span></a> <span class="k">return</span> <span class="n">matching_set</span> -</span><span id="ChangeDistiller-203"><a href="#ChangeDistiller-203"><span class="linenos">203</span></a> -</span><span id="ChangeDistiller-204"><a href="#ChangeDistiller-204"><span class="linenos">204</span></a> <span class="k">def</span> <span class="nf">_compute_leaf_matching_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span> -</span><span id="ChangeDistiller-205"><a href="#ChangeDistiller-205"><span class="linenos">205</span></a> <span class="n">candidate_matchings</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="ChangeDistiller-206"><a href="#ChangeDistiller-206"><span class="linenos">206</span></a> <span class="n">source_leaves</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">_get_leaves</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source</span><span class="p">))</span> -</span><span id="ChangeDistiller-207"><a href="#ChangeDistiller-207"><span class="linenos">207</span></a> <span class="n">target_leaves</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">_get_leaves</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="p">))</span> -</span><span id="ChangeDistiller-208"><a href="#ChangeDistiller-208"><span class="linenos">208</span></a> <span class="k">for</span> <span class="n">source_leaf</span> <span class="ow">in</span> <span class="n">source_leaves</span><span class="p">:</span> -</span><span id="ChangeDistiller-209"><a href="#ChangeDistiller-209"><span class="linenos">209</span></a> <span class="k">for</span> <span class="n">target_leaf</span> <span class="ow">in</span> <span class="n">target_leaves</span><span class="p">:</span> -</span><span id="ChangeDistiller-210"><a href="#ChangeDistiller-210"><span class="linenos">210</span></a> <span class="k">if</span> <span class="n">_is_same_type</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span><span class="p">):</span> -</span><span id="ChangeDistiller-211"><a href="#ChangeDistiller-211"><span class="linenos">211</span></a> <span class="n">similarity_score</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dice_coefficient</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span><span class="p">)</span> -</span><span id="ChangeDistiller-212"><a href="#ChangeDistiller-212"><span class="linenos">212</span></a> <span class="k">if</span> <span class="n">similarity_score</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">:</span> -</span><span id="ChangeDistiller-213"><a href="#ChangeDistiller-213"><span class="linenos">213</span></a> <span class="n">heappush</span><span class="p">(</span> -</span><span id="ChangeDistiller-214"><a href="#ChangeDistiller-214"><span class="linenos">214</span></a> <span class="n">candidate_matchings</span><span class="p">,</span> -</span><span id="ChangeDistiller-215"><a href="#ChangeDistiller-215"><span class="linenos">215</span></a> <span class="p">(</span> -</span><span id="ChangeDistiller-216"><a href="#ChangeDistiller-216"><span class="linenos">216</span></a> <span class="o">-</span><span class="n">similarity_score</span><span class="p">,</span> -</span><span id="ChangeDistiller-217"><a href="#ChangeDistiller-217"><span class="linenos">217</span></a> <span class="nb">len</span><span class="p">(</span><span class="n">candidate_matchings</span><span class="p">),</span> -</span><span id="ChangeDistiller-218"><a href="#ChangeDistiller-218"><span class="linenos">218</span></a> <span class="n">source_leaf</span><span class="p">,</span> -</span><span id="ChangeDistiller-219"><a href="#ChangeDistiller-219"><span class="linenos">219</span></a> <span class="n">target_leaf</span><span class="p">,</span> -</span><span id="ChangeDistiller-220"><a href="#ChangeDistiller-220"><span class="linenos">220</span></a> <span class="p">),</span> -</span><span id="ChangeDistiller-221"><a href="#ChangeDistiller-221"><span class="linenos">221</span></a> <span class="p">)</span> -</span><span id="ChangeDistiller-222"><a href="#ChangeDistiller-222"><span class="linenos">222</span></a> -</span><span id="ChangeDistiller-223"><a href="#ChangeDistiller-223"><span class="linenos">223</span></a> <span class="c1"># Pick best matchings based on the highest score</span> -</span><span id="ChangeDistiller-224"><a href="#ChangeDistiller-224"><span class="linenos">224</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="ChangeDistiller-225"><a href="#ChangeDistiller-225"><span class="linenos">225</span></a> <span class="k">while</span> <span class="n">candidate_matchings</span><span class="p">:</span> -</span><span id="ChangeDistiller-226"><a href="#ChangeDistiller-226"><span class="linenos">226</span></a> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span> <span class="o">=</span> <span class="n">heappop</span><span class="p">(</span><span class="n">candidate_matchings</span><span class="p">)</span> -</span><span id="ChangeDistiller-227"><a href="#ChangeDistiller-227"><span class="linenos">227</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="ChangeDistiller-228"><a href="#ChangeDistiller-228"><span class="linenos">228</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> -</span><span id="ChangeDistiller-229"><a href="#ChangeDistiller-229"><span class="linenos">229</span></a> <span class="ow">and</span> <span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> -</span><span id="ChangeDistiller-230"><a href="#ChangeDistiller-230"><span class="linenos">230</span></a> <span class="p">):</span> -</span><span id="ChangeDistiller-231"><a href="#ChangeDistiller-231"><span class="linenos">231</span></a> <span class="n">matching_set</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">)))</span> -</span><span id="ChangeDistiller-232"><a href="#ChangeDistiller-232"><span class="linenos">232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">))</span> -</span><span id="ChangeDistiller-233"><a href="#ChangeDistiller-233"><span class="linenos">233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">))</span> -</span><span id="ChangeDistiller-234"><a href="#ChangeDistiller-234"><span class="linenos">234</span></a> -</span><span id="ChangeDistiller-235"><a href="#ChangeDistiller-235"><span class="linenos">235</span></a> <span class="k">return</span> <span class="n">matching_set</span> -</span><span id="ChangeDistiller-236"><a href="#ChangeDistiller-236"><span class="linenos">236</span></a> -</span><span id="ChangeDistiller-237"><a href="#ChangeDistiller-237"><span class="linenos">237</span></a> <span class="k">def</span> <span class="nf">_dice_coefficient</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">float</span><span class="p">:</span> -</span><span id="ChangeDistiller-238"><a href="#ChangeDistiller-238"><span class="linenos">238</span></a> <span class="n">source_histo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo</span><span class="p">(</span><span class="n">source</span><span class="p">)</span> -</span><span id="ChangeDistiller-239"><a href="#ChangeDistiller-239"><span class="linenos">239</span></a> <span class="n">target_histo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo</span><span class="p">(</span><span class="n">target</span><span class="p">)</span> +</span><span id="ChangeDistiller-202"><a href="#ChangeDistiller-202"><span class="linenos">202</span></a> <span class="n">ordered_unmatched_source_nodes</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="ChangeDistiller-203"><a href="#ChangeDistiller-203"><span class="linenos">203</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()</span> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> +</span><span id="ChangeDistiller-204"><a href="#ChangeDistiller-204"><span class="linenos">204</span></a> <span class="p">}</span> +</span><span id="ChangeDistiller-205"><a href="#ChangeDistiller-205"><span class="linenos">205</span></a> <span class="n">ordered_unmatched_target_nodes</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="ChangeDistiller-206"><a href="#ChangeDistiller-206"><span class="linenos">206</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()</span> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> +</span><span id="ChangeDistiller-207"><a href="#ChangeDistiller-207"><span class="linenos">207</span></a> <span class="p">}</span> +</span><span id="ChangeDistiller-208"><a href="#ChangeDistiller-208"><span class="linenos">208</span></a> +</span><span id="ChangeDistiller-209"><a href="#ChangeDistiller-209"><span class="linenos">209</span></a> <span class="k">for</span> <span class="n">source_node_id</span> <span class="ow">in</span> <span class="n">ordered_unmatched_source_nodes</span><span class="p">:</span> +</span><span id="ChangeDistiller-210"><a href="#ChangeDistiller-210"><span class="linenos">210</span></a> <span class="k">for</span> <span class="n">target_node_id</span> <span class="ow">in</span> <span class="n">ordered_unmatched_target_nodes</span><span class="p">:</span> +</span><span id="ChangeDistiller-211"><a href="#ChangeDistiller-211"><span class="linenos">211</span></a> <span class="n">source_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">[</span><span class="n">source_node_id</span><span class="p">]</span> +</span><span id="ChangeDistiller-212"><a href="#ChangeDistiller-212"><span class="linenos">212</span></a> <span class="n">target_node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">[</span><span class="n">target_node_id</span><span class="p">]</span> +</span><span id="ChangeDistiller-213"><a href="#ChangeDistiller-213"><span class="linenos">213</span></a> <span class="k">if</span> <span class="n">_is_same_type</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">):</span> +</span><span id="ChangeDistiller-214"><a href="#ChangeDistiller-214"><span class="linenos">214</span></a> <span class="n">source_leaf_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">source_node</span><span class="p">)}</span> +</span><span id="ChangeDistiller-215"><a href="#ChangeDistiller-215"><span class="linenos">215</span></a> <span class="n">target_leaf_ids</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">l</span><span class="p">)</span> <span class="k">for</span> <span class="n">l</span> <span class="ow">in</span> <span class="n">_get_leaves</span><span class="p">(</span><span class="n">target_node</span><span class="p">)}</span> +</span><span id="ChangeDistiller-216"><a href="#ChangeDistiller-216"><span class="linenos">216</span></a> +</span><span id="ChangeDistiller-217"><a href="#ChangeDistiller-217"><span class="linenos">217</span></a> <span class="n">max_leaves_num</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">source_leaf_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">target_leaf_ids</span><span class="p">))</span> +</span><span id="ChangeDistiller-218"><a href="#ChangeDistiller-218"><span class="linenos">218</span></a> <span class="k">if</span> <span class="n">max_leaves_num</span><span class="p">:</span> +</span><span id="ChangeDistiller-219"><a href="#ChangeDistiller-219"><span class="linenos">219</span></a> <span class="n">common_leaves_num</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span> +</span><span id="ChangeDistiller-220"><a href="#ChangeDistiller-220"><span class="linenos">220</span></a> <span class="mi">1</span> <span class="k">if</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">source_leaf_ids</span> <span class="ow">and</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">target_leaf_ids</span> <span class="k">else</span> <span class="mi">0</span> +</span><span id="ChangeDistiller-221"><a href="#ChangeDistiller-221"><span class="linenos">221</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">leaves_matching_set</span> +</span><span id="ChangeDistiller-222"><a href="#ChangeDistiller-222"><span class="linenos">222</span></a> <span class="p">)</span> +</span><span id="ChangeDistiller-223"><a href="#ChangeDistiller-223"><span class="linenos">223</span></a> <span class="n">leaf_similarity_score</span> <span class="o">=</span> <span class="n">common_leaves_num</span> <span class="o">/</span> <span class="n">max_leaves_num</span> +</span><span id="ChangeDistiller-224"><a href="#ChangeDistiller-224"><span class="linenos">224</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="ChangeDistiller-225"><a href="#ChangeDistiller-225"><span class="linenos">225</span></a> <span class="n">leaf_similarity_score</span> <span class="o">=</span> <span class="mf">0.0</span> +</span><span id="ChangeDistiller-226"><a href="#ChangeDistiller-226"><span class="linenos">226</span></a> +</span><span id="ChangeDistiller-227"><a href="#ChangeDistiller-227"><span class="linenos">227</span></a> <span class="n">adjusted_t</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="ChangeDistiller-228"><a href="#ChangeDistiller-228"><span class="linenos">228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="k">if</span> <span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">source_leaf_ids</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">target_leaf_ids</span><span class="p">))</span> <span class="o">></span> <span class="mi">4</span> <span class="k">else</span> <span class="mf">0.4</span> +</span><span id="ChangeDistiller-229"><a href="#ChangeDistiller-229"><span class="linenos">229</span></a> <span class="p">)</span> +</span><span id="ChangeDistiller-230"><a href="#ChangeDistiller-230"><span class="linenos">230</span></a> +</span><span id="ChangeDistiller-231"><a href="#ChangeDistiller-231"><span class="linenos">231</span></a> <span class="k">if</span> <span class="n">leaf_similarity_score</span> <span class="o">>=</span> <span class="mf">0.8</span> <span class="ow">or</span> <span class="p">(</span> +</span><span id="ChangeDistiller-232"><a href="#ChangeDistiller-232"><span class="linenos">232</span></a> <span class="n">leaf_similarity_score</span> <span class="o">>=</span> <span class="n">adjusted_t</span> +</span><span id="ChangeDistiller-233"><a href="#ChangeDistiller-233"><span class="linenos">233</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dice_coefficient</span><span class="p">(</span><span class="n">source_node</span><span class="p">,</span> <span class="n">target_node</span><span class="p">)</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> +</span><span id="ChangeDistiller-234"><a href="#ChangeDistiller-234"><span class="linenos">234</span></a> <span class="p">):</span> +</span><span id="ChangeDistiller-235"><a href="#ChangeDistiller-235"><span class="linenos">235</span></a> <span class="n">matching_set</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="n">source_node_id</span><span class="p">,</span> <span class="n">target_node_id</span><span class="p">))</span> +</span><span id="ChangeDistiller-236"><a href="#ChangeDistiller-236"><span class="linenos">236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">source_node_id</span><span class="p">)</span> +</span><span id="ChangeDistiller-237"><a href="#ChangeDistiller-237"><span class="linenos">237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">target_node_id</span><span class="p">)</span> +</span><span id="ChangeDistiller-238"><a href="#ChangeDistiller-238"><span class="linenos">238</span></a> <span class="n">ordered_unmatched_target_nodes</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">target_node_id</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="ChangeDistiller-239"><a href="#ChangeDistiller-239"><span class="linenos">239</span></a> <span class="k">break</span> </span><span id="ChangeDistiller-240"><a href="#ChangeDistiller-240"><span class="linenos">240</span></a> -</span><span id="ChangeDistiller-241"><a href="#ChangeDistiller-241"><span class="linenos">241</span></a> <span class="n">total_grams</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">source_histo</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="o">+</span> <span class="nb">sum</span><span class="p">(</span><span class="n">target_histo</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> -</span><span id="ChangeDistiller-242"><a href="#ChangeDistiller-242"><span class="linenos">242</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">total_grams</span><span class="p">:</span> -</span><span id="ChangeDistiller-243"><a href="#ChangeDistiller-243"><span class="linenos">243</span></a> <span class="k">return</span> <span class="mf">1.0</span> <span class="k">if</span> <span class="n">source</span> <span class="o">==</span> <span class="n">target</span> <span class="k">else</span> <span class="mf">0.0</span> -</span><span id="ChangeDistiller-244"><a href="#ChangeDistiller-244"><span class="linenos">244</span></a> -</span><span id="ChangeDistiller-245"><a href="#ChangeDistiller-245"><span class="linenos">245</span></a> <span class="n">overlap_len</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="ChangeDistiller-246"><a href="#ChangeDistiller-246"><span class="linenos">246</span></a> <span class="n">overlapping_grams</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source_histo</span><span class="p">)</span> <span class="o">&</span> <span class="nb">set</span><span class="p">(</span><span class="n">target_histo</span><span class="p">)</span> -</span><span id="ChangeDistiller-247"><a href="#ChangeDistiller-247"><span class="linenos">247</span></a> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">overlapping_grams</span><span class="p">:</span> -</span><span id="ChangeDistiller-248"><a href="#ChangeDistiller-248"><span class="linenos">248</span></a> <span class="n">overlap_len</span> <span class="o">+=</span> <span class="nb">min</span><span class="p">(</span><span class="n">source_histo</span><span class="p">[</span><span class="n">g</span><span class="p">],</span> <span class="n">target_histo</span><span class="p">[</span><span class="n">g</span><span class="p">])</span> -</span><span id="ChangeDistiller-249"><a href="#ChangeDistiller-249"><span class="linenos">249</span></a> -</span><span id="ChangeDistiller-250"><a href="#ChangeDistiller-250"><span class="linenos">250</span></a> <span class="k">return</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">overlap_len</span> <span class="o">/</span> <span class="n">total_grams</span> -</span><span id="ChangeDistiller-251"><a href="#ChangeDistiller-251"><span class="linenos">251</span></a> -</span><span id="ChangeDistiller-252"><a href="#ChangeDistiller-252"><span class="linenos">252</span></a> <span class="k">def</span> <span class="nf">_bigram_histo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]:</span> -</span><span id="ChangeDistiller-253"><a href="#ChangeDistiller-253"><span class="linenos">253</span></a> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> -</span><span id="ChangeDistiller-254"><a href="#ChangeDistiller-254"><span class="linenos">254</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)]</span> -</span><span id="ChangeDistiller-255"><a href="#ChangeDistiller-255"><span class="linenos">255</span></a> -</span><span id="ChangeDistiller-256"><a href="#ChangeDistiller-256"><span class="linenos">256</span></a> <span class="n">expression_str</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="ChangeDistiller-257"><a href="#ChangeDistiller-257"><span class="linenos">257</span></a> <span class="n">count</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression_str</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="ChangeDistiller-258"><a href="#ChangeDistiller-258"><span class="linenos">258</span></a> <span class="n">bigram_histo</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span> -</span><span id="ChangeDistiller-259"><a href="#ChangeDistiller-259"><span class="linenos">259</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">count</span><span class="p">):</span> -</span><span id="ChangeDistiller-260"><a href="#ChangeDistiller-260"><span class="linenos">260</span></a> <span class="n">bigram_histo</span><span class="p">[</span><span class="n">expression_str</span><span class="p">[</span><span class="n">i</span> <span class="p">:</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]]</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="ChangeDistiller-241"><a href="#ChangeDistiller-241"><span class="linenos">241</span></a> <span class="k">return</span> <span class="n">matching_set</span> +</span><span id="ChangeDistiller-242"><a href="#ChangeDistiller-242"><span class="linenos">242</span></a> +</span><span id="ChangeDistiller-243"><a href="#ChangeDistiller-243"><span class="linenos">243</span></a> <span class="k">def</span> <span class="nf">_compute_leaf_matching_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]:</span> +</span><span id="ChangeDistiller-244"><a href="#ChangeDistiller-244"><span class="linenos">244</span></a> <span class="n">candidate_matchings</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">float</span><span class="p">,</span> <span class="nb">int</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="ChangeDistiller-245"><a href="#ChangeDistiller-245"><span class="linenos">245</span></a> <span class="n">source_leaves</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">_get_leaves</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source</span><span class="p">))</span> +</span><span id="ChangeDistiller-246"><a href="#ChangeDistiller-246"><span class="linenos">246</span></a> <span class="n">target_leaves</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">_get_leaves</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target</span><span class="p">))</span> +</span><span id="ChangeDistiller-247"><a href="#ChangeDistiller-247"><span class="linenos">247</span></a> <span class="k">for</span> <span class="n">source_leaf</span> <span class="ow">in</span> <span class="n">source_leaves</span><span class="p">:</span> +</span><span id="ChangeDistiller-248"><a href="#ChangeDistiller-248"><span class="linenos">248</span></a> <span class="k">for</span> <span class="n">target_leaf</span> <span class="ow">in</span> <span class="n">target_leaves</span><span class="p">:</span> +</span><span id="ChangeDistiller-249"><a href="#ChangeDistiller-249"><span class="linenos">249</span></a> <span class="k">if</span> <span class="n">_is_same_type</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span><span class="p">):</span> +</span><span id="ChangeDistiller-250"><a href="#ChangeDistiller-250"><span class="linenos">250</span></a> <span class="n">similarity_score</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dice_coefficient</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span><span class="p">)</span> +</span><span id="ChangeDistiller-251"><a href="#ChangeDistiller-251"><span class="linenos">251</span></a> <span class="k">if</span> <span class="n">similarity_score</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">f</span><span class="p">:</span> +</span><span id="ChangeDistiller-252"><a href="#ChangeDistiller-252"><span class="linenos">252</span></a> <span class="n">heappush</span><span class="p">(</span> +</span><span id="ChangeDistiller-253"><a href="#ChangeDistiller-253"><span class="linenos">253</span></a> <span class="n">candidate_matchings</span><span class="p">,</span> +</span><span id="ChangeDistiller-254"><a href="#ChangeDistiller-254"><span class="linenos">254</span></a> <span class="p">(</span> +</span><span id="ChangeDistiller-255"><a href="#ChangeDistiller-255"><span class="linenos">255</span></a> <span class="o">-</span><span class="n">similarity_score</span><span class="p">,</span> +</span><span id="ChangeDistiller-256"><a href="#ChangeDistiller-256"><span class="linenos">256</span></a> <span class="nb">len</span><span class="p">(</span><span class="n">candidate_matchings</span><span class="p">),</span> +</span><span id="ChangeDistiller-257"><a href="#ChangeDistiller-257"><span class="linenos">257</span></a> <span class="n">source_leaf</span><span class="p">,</span> +</span><span id="ChangeDistiller-258"><a href="#ChangeDistiller-258"><span class="linenos">258</span></a> <span class="n">target_leaf</span><span class="p">,</span> +</span><span id="ChangeDistiller-259"><a href="#ChangeDistiller-259"><span class="linenos">259</span></a> <span class="p">),</span> +</span><span id="ChangeDistiller-260"><a href="#ChangeDistiller-260"><span class="linenos">260</span></a> <span class="p">)</span> </span><span id="ChangeDistiller-261"><a href="#ChangeDistiller-261"><span class="linenos">261</span></a> -</span><span id="ChangeDistiller-262"><a href="#ChangeDistiller-262"><span class="linenos">262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)]</span> <span class="o">=</span> <span class="n">bigram_histo</span> -</span><span id="ChangeDistiller-263"><a href="#ChangeDistiller-263"><span class="linenos">263</span></a> <span class="k">return</span> <span class="n">bigram_histo</span> +</span><span id="ChangeDistiller-262"><a href="#ChangeDistiller-262"><span class="linenos">262</span></a> <span class="c1"># Pick best matchings based on the highest score</span> +</span><span id="ChangeDistiller-263"><a href="#ChangeDistiller-263"><span class="linenos">263</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="ChangeDistiller-264"><a href="#ChangeDistiller-264"><span class="linenos">264</span></a> <span class="k">while</span> <span class="n">candidate_matchings</span><span class="p">:</span> +</span><span id="ChangeDistiller-265"><a href="#ChangeDistiller-265"><span class="linenos">265</span></a> <span class="n">_</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">source_leaf</span><span class="p">,</span> <span class="n">target_leaf</span> <span class="o">=</span> <span class="n">heappop</span><span class="p">(</span><span class="n">candidate_matchings</span><span class="p">)</span> +</span><span id="ChangeDistiller-266"><a href="#ChangeDistiller-266"><span class="linenos">266</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="ChangeDistiller-267"><a href="#ChangeDistiller-267"><span class="linenos">267</span></a> <span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> +</span><span id="ChangeDistiller-268"><a href="#ChangeDistiller-268"><span class="linenos">268</span></a> <span class="ow">and</span> <span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> +</span><span id="ChangeDistiller-269"><a href="#ChangeDistiller-269"><span class="linenos">269</span></a> <span class="p">):</span> +</span><span id="ChangeDistiller-270"><a href="#ChangeDistiller-270"><span class="linenos">270</span></a> <span class="n">matching_set</span><span class="o">.</span><span class="n">add</span><span class="p">((</span><span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">),</span> <span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">)))</span> +</span><span id="ChangeDistiller-271"><a href="#ChangeDistiller-271"><span class="linenos">271</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">source_leaf</span><span class="p">))</span> +</span><span id="ChangeDistiller-272"><a href="#ChangeDistiller-272"><span class="linenos">272</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="n">target_leaf</span><span class="p">))</span> +</span><span id="ChangeDistiller-273"><a href="#ChangeDistiller-273"><span class="linenos">273</span></a> +</span><span id="ChangeDistiller-274"><a href="#ChangeDistiller-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="n">matching_set</span> +</span><span id="ChangeDistiller-275"><a href="#ChangeDistiller-275"><span class="linenos">275</span></a> +</span><span id="ChangeDistiller-276"><a href="#ChangeDistiller-276"><span class="linenos">276</span></a> <span class="k">def</span> <span class="nf">_dice_coefficient</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="nb">float</span><span class="p">:</span> +</span><span id="ChangeDistiller-277"><a href="#ChangeDistiller-277"><span class="linenos">277</span></a> <span class="n">source_histo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo</span><span class="p">(</span><span class="n">source</span><span class="p">)</span> +</span><span id="ChangeDistiller-278"><a href="#ChangeDistiller-278"><span class="linenos">278</span></a> <span class="n">target_histo</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo</span><span class="p">(</span><span class="n">target</span><span class="p">)</span> +</span><span id="ChangeDistiller-279"><a href="#ChangeDistiller-279"><span class="linenos">279</span></a> +</span><span id="ChangeDistiller-280"><a href="#ChangeDistiller-280"><span class="linenos">280</span></a> <span class="n">total_grams</span> <span class="o">=</span> <span class="nb">sum</span><span class="p">(</span><span class="n">source_histo</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> <span class="o">+</span> <span class="nb">sum</span><span class="p">(</span><span class="n">target_histo</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="ChangeDistiller-281"><a href="#ChangeDistiller-281"><span class="linenos">281</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">total_grams</span><span class="p">:</span> +</span><span id="ChangeDistiller-282"><a href="#ChangeDistiller-282"><span class="linenos">282</span></a> <span class="k">return</span> <span class="mf">1.0</span> <span class="k">if</span> <span class="n">source</span> <span class="o">==</span> <span class="n">target</span> <span class="k">else</span> <span class="mf">0.0</span> +</span><span id="ChangeDistiller-283"><a href="#ChangeDistiller-283"><span class="linenos">283</span></a> +</span><span id="ChangeDistiller-284"><a href="#ChangeDistiller-284"><span class="linenos">284</span></a> <span class="n">overlap_len</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="ChangeDistiller-285"><a href="#ChangeDistiller-285"><span class="linenos">285</span></a> <span class="n">overlapping_grams</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source_histo</span><span class="p">)</span> <span class="o">&</span> <span class="nb">set</span><span class="p">(</span><span class="n">target_histo</span><span class="p">)</span> +</span><span id="ChangeDistiller-286"><a href="#ChangeDistiller-286"><span class="linenos">286</span></a> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">overlapping_grams</span><span class="p">:</span> +</span><span id="ChangeDistiller-287"><a href="#ChangeDistiller-287"><span class="linenos">287</span></a> <span class="n">overlap_len</span> <span class="o">+=</span> <span class="nb">min</span><span class="p">(</span><span class="n">source_histo</span><span class="p">[</span><span class="n">g</span><span class="p">],</span> <span class="n">target_histo</span><span class="p">[</span><span class="n">g</span><span class="p">])</span> +</span><span id="ChangeDistiller-288"><a href="#ChangeDistiller-288"><span class="linenos">288</span></a> +</span><span id="ChangeDistiller-289"><a href="#ChangeDistiller-289"><span class="linenos">289</span></a> <span class="k">return</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">overlap_len</span> <span class="o">/</span> <span class="n">total_grams</span> +</span><span id="ChangeDistiller-290"><a href="#ChangeDistiller-290"><span class="linenos">290</span></a> +</span><span id="ChangeDistiller-291"><a href="#ChangeDistiller-291"><span class="linenos">291</span></a> <span class="k">def</span> <span class="nf">_bigram_histo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]:</span> +</span><span id="ChangeDistiller-292"><a href="#ChangeDistiller-292"><span class="linenos">292</span></a> <span class="k">if</span> <span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> +</span><span id="ChangeDistiller-293"><a href="#ChangeDistiller-293"><span class="linenos">293</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)]</span> +</span><span id="ChangeDistiller-294"><a href="#ChangeDistiller-294"><span class="linenos">294</span></a> +</span><span id="ChangeDistiller-295"><a href="#ChangeDistiller-295"><span class="linenos">295</span></a> <span class="n">expression_str</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="ChangeDistiller-296"><a href="#ChangeDistiller-296"><span class="linenos">296</span></a> <span class="n">count</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">expression_str</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="ChangeDistiller-297"><a href="#ChangeDistiller-297"><span class="linenos">297</span></a> <span class="n">bigram_histo</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span> +</span><span id="ChangeDistiller-298"><a href="#ChangeDistiller-298"><span class="linenos">298</span></a> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">count</span><span class="p">):</span> +</span><span id="ChangeDistiller-299"><a href="#ChangeDistiller-299"><span class="linenos">299</span></a> <span class="n">bigram_histo</span><span class="p">[</span><span class="n">expression_str</span><span class="p">[</span><span class="n">i</span> <span class="p">:</span> <span class="n">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">]]</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="ChangeDistiller-300"><a href="#ChangeDistiller-300"><span class="linenos">300</span></a> +</span><span id="ChangeDistiller-301"><a href="#ChangeDistiller-301"><span class="linenos">301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">[</span><span class="nb">id</span><span class="p">(</span><span class="n">expression</span><span class="p">)]</span> <span class="o">=</span> <span class="n">bigram_histo</span> +</span><span id="ChangeDistiller-302"><a href="#ChangeDistiller-302"><span class="linenos">302</span></a> <span class="k">return</span> <span class="n">bigram_histo</span> </span></pre></div> @@ -1335,10 +1418,10 @@ Chawathe et al. described in <a href="http://ilpubs.stanford.edu:8090/115/1/1995 </div> <a class="headerlink" href="#ChangeDistiller.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ChangeDistiller.__init__-108"><a href="#ChangeDistiller.__init__-108"><span class="linenos">108</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">,</span> <span class="n">t</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="ChangeDistiller.__init__-109"><a href="#ChangeDistiller.__init__-109"><span class="linenos">109</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span> -</span><span id="ChangeDistiller.__init__-110"><a href="#ChangeDistiller.__init__-110"><span class="linenos">110</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="o">=</span> <span class="n">t</span> -</span><span id="ChangeDistiller.__init__-111"><a href="#ChangeDistiller.__init__-111"><span class="linenos">111</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span> <span class="o">=</span> <span class="n">Dialect</span><span class="p">()</span><span class="o">.</span><span class="n">generator</span><span class="p">()</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ChangeDistiller.__init__-137"><a href="#ChangeDistiller.__init__-137"><span class="linenos">137</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">f</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">,</span> <span class="n">t</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="mf">0.6</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="ChangeDistiller.__init__-138"><a href="#ChangeDistiller.__init__-138"><span class="linenos">138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">f</span> <span class="o">=</span> <span class="n">f</span> +</span><span id="ChangeDistiller.__init__-139"><a href="#ChangeDistiller.__init__-139"><span class="linenos">139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">t</span> <span class="o">=</span> <span class="n">t</span> +</span><span id="ChangeDistiller.__init__-140"><a href="#ChangeDistiller.__init__-140"><span class="linenos">140</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_sql_generator</span> <span class="o">=</span> <span class="n">Dialect</span><span class="p">()</span><span class="o">.</span><span class="n">generator</span><span class="p">()</span> </span></pre></div> @@ -1350,23 +1433,33 @@ Chawathe et al. described in <a href="http://ilpubs.stanford.edu:8090/115/1/1995 <div class="attr function"> <span class="def">def</span> - <span class="name">diff</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">source</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">target</span><span class="p">:</span> <span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n"><a href="#Insert">sqlglot.diff.Insert</a></span><span class="p">,</span> <span class="n"><a href="#Remove">sqlglot.diff.Remove</a></span><span class="p">,</span> <span class="n"><a href="#Move">sqlglot.diff.Move</a></span><span class="p">,</span> <span class="n"><a href="#Update">sqlglot.diff.Update</a></span><span class="p">,</span> <span class="n"><a href="#Keep">sqlglot.diff.Keep</a></span><span class="p">]]</span>:</span></span> + <span class="name">diff</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">source</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">target</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">matchings</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n">Tuple</span><span class="p">[</span><span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n"><a href="#Insert">sqlglot.diff.Insert</a></span><span class="p">,</span> <span class="n"><a href="#Remove">sqlglot.diff.Remove</a></span><span class="p">,</span> <span class="n"><a href="#Move">sqlglot.diff.Move</a></span><span class="p">,</span> <span class="n"><a href="#Update">sqlglot.diff.Update</a></span><span class="p">,</span> <span class="n"><a href="#Keep">sqlglot.diff.Keep</a></span><span class="p">]]</span>:</span></span> <label class="view-source-button" for="ChangeDistiller.diff-view-source"><span>View Source</span></label> </div> <a class="headerlink" href="#ChangeDistiller.diff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ChangeDistiller.diff-113"><a href="#ChangeDistiller.diff-113"><span class="linenos">113</span></a> <span class="k">def</span> <span class="nf">diff</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source</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">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> -</span><span id="ChangeDistiller.diff-114"><a href="#ChangeDistiller.diff-114"><span class="linenos">114</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span> <span class="o">=</span> <span class="n">source</span> -</span><span id="ChangeDistiller.diff-115"><a href="#ChangeDistiller.diff-115"><span class="linenos">115</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span> <span class="o">=</span> <span class="n">target</span> -</span><span id="ChangeDistiller.diff-116"><a href="#ChangeDistiller.diff-116"><span class="linenos">116</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> -</span><span id="ChangeDistiller.diff-117"><a href="#ChangeDistiller.diff-117"><span class="linenos">117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> -</span><span id="ChangeDistiller.diff-118"><a href="#ChangeDistiller.diff-118"><span class="linenos">118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">)</span> -</span><span id="ChangeDistiller.diff-119"><a href="#ChangeDistiller.diff-119"><span class="linenos">119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">)</span> -</span><span id="ChangeDistiller.diff-120"><a href="#ChangeDistiller.diff-120"><span class="linenos">120</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="ChangeDistiller.diff-121"><a href="#ChangeDistiller.diff-121"><span class="linenos">121</span></a> -</span><span id="ChangeDistiller.diff-122"><a href="#ChangeDistiller.diff-122"><span class="linenos">122</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_matching_set</span><span class="p">()</span> -</span><span id="ChangeDistiller.diff-123"><a href="#ChangeDistiller.diff-123"><span class="linenos">123</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_edit_script</span><span class="p">(</span><span class="n">matching_set</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ChangeDistiller.diff-142"><a href="#ChangeDistiller.diff-142"><span class="linenos">142</span></a> <span class="k">def</span> <span class="nf">diff</span><span class="p">(</span> +</span><span id="ChangeDistiller.diff-143"><a href="#ChangeDistiller.diff-143"><span class="linenos">143</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="ChangeDistiller.diff-144"><a href="#ChangeDistiller.diff-144"><span class="linenos">144</span></a> <span class="n">source</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="ChangeDistiller.diff-145"><a href="#ChangeDistiller.diff-145"><span class="linenos">145</span></a> <span class="n">target</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> +</span><span id="ChangeDistiller.diff-146"><a href="#ChangeDistiller.diff-146"><span class="linenos">146</span></a> <span class="n">matchings</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="ChangeDistiller.diff-147"><a href="#ChangeDistiller.diff-147"><span class="linenos">147</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Edit</span><span class="p">]:</span> +</span><span id="ChangeDistiller.diff-148"><a href="#ChangeDistiller.diff-148"><span class="linenos">148</span></a> <span class="n">matchings</span> <span class="o">=</span> <span class="n">matchings</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="ChangeDistiller.diff-149"><a href="#ChangeDistiller.diff-149"><span class="linenos">149</span></a> <span class="n">pre_matched_nodes</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">s</span><span class="p">):</span> <span class="nb">id</span><span class="p">(</span><span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">matchings</span><span class="p">}</span> +</span><span id="ChangeDistiller.diff-150"><a href="#ChangeDistiller.diff-150"><span class="linenos">150</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">({</span><span class="n">n</span> <span class="k">for</span> <span class="n">pair</span> <span class="ow">in</span> <span class="n">pre_matched_nodes</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">pair</span><span class="p">})</span> <span class="o">!=</span> <span class="mi">2</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">matchings</span><span class="p">):</span> +</span><span id="ChangeDistiller.diff-151"><a href="#ChangeDistiller.diff-151"><span class="linenos">151</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Each node can be referenced at most once in the list of matchings"</span><span class="p">)</span> +</span><span id="ChangeDistiller.diff-152"><a href="#ChangeDistiller.diff-152"><span class="linenos">152</span></a> +</span><span id="ChangeDistiller.diff-153"><a href="#ChangeDistiller.diff-153"><span class="linenos">153</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source</span> <span class="o">=</span> <span class="n">source</span> +</span><span id="ChangeDistiller.diff-154"><a href="#ChangeDistiller.diff-154"><span class="linenos">154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target</span> <span class="o">=</span> <span class="n">target</span> +</span><span id="ChangeDistiller.diff-155"><a href="#ChangeDistiller.diff-155"><span class="linenos">155</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">source</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> +</span><span id="ChangeDistiller.diff-156"><a href="#ChangeDistiller.diff-156"><span class="linenos">156</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span> <span class="o">=</span> <span class="p">{</span><span class="nb">id</span><span class="p">(</span><span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span> <span class="n">n</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="n">target</span><span class="o">.</span><span class="n">bfs</span><span class="p">()}</span> +</span><span id="ChangeDistiller.diff-157"><a href="#ChangeDistiller.diff-157"><span class="linenos">157</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_source_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_source_index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">pre_matched_nodes</span><span class="p">)</span> +</span><span id="ChangeDistiller.diff-158"><a href="#ChangeDistiller.diff-158"><span class="linenos">158</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unmatched_target_nodes</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_target_index</span><span class="p">)</span> <span class="o">-</span> <span class="nb">set</span><span class="p">(</span><span class="n">pre_matched_nodes</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="ChangeDistiller.diff-159"><a href="#ChangeDistiller.diff-159"><span class="linenos">159</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_bigram_histo_cache</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">DefaultDict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="ChangeDistiller.diff-160"><a href="#ChangeDistiller.diff-160"><span class="linenos">160</span></a> +</span><span id="ChangeDistiller.diff-161"><a href="#ChangeDistiller.diff-161"><span class="linenos">161</span></a> <span class="n">matching_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_compute_matching_set</span><span class="p">()</span> <span class="o">|</span> <span class="p">{(</span><span class="n">s</span><span class="p">,</span> <span class="n">t</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">pre_matched_nodes</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="ChangeDistiller.diff-162"><a href="#ChangeDistiller.diff-162"><span class="linenos">162</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_generate_edit_script</span><span class="p">(</span><span class="n">matching_set</span><span class="p">)</span> </span></pre></div> @@ -1494,7 +1587,7 @@ Chawathe et al. described in <a href="http://ilpubs.stanford.edu:8090/115/1/1995 if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/errors.html b/docs/sqlglot/errors.html index 534f71a..bcee5f4 100644 --- a/docs/sqlglot/errors.html +++ b/docs/sqlglot/errors.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.errors 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -254,7 +254,8 @@ <div id="ErrorLevel.IGNORE" class="classattr"> <div class="attr variable"> - <span class="name">IGNORE</span><span class="default_value"> = <<a href="#ErrorLevel.IGNORE">ErrorLevel.IGNORE</a>: 'IGNORE'></span> + <span class="name">IGNORE</span> = +<span class="default_value"><<a href="#ErrorLevel.IGNORE">ErrorLevel.IGNORE</a>: 'IGNORE'></span> </div> @@ -267,7 +268,8 @@ </div> <div id="ErrorLevel.WARN" class="classattr"> <div class="attr variable"> - <span class="name">WARN</span><span class="default_value"> = <<a href="#ErrorLevel.WARN">ErrorLevel.WARN</a>: 'WARN'></span> + <span class="name">WARN</span> = +<span class="default_value"><<a href="#ErrorLevel.WARN">ErrorLevel.WARN</a>: 'WARN'></span> </div> @@ -280,7 +282,8 @@ </div> <div id="ErrorLevel.RAISE" class="classattr"> <div class="attr variable"> - <span class="name">RAISE</span><span class="default_value"> = <<a href="#ErrorLevel.RAISE">ErrorLevel.RAISE</a>: 'RAISE'></span> + <span class="name">RAISE</span> = +<span class="default_value"><<a href="#ErrorLevel.RAISE">ErrorLevel.RAISE</a>: 'RAISE'></span> </div> @@ -293,7 +296,8 @@ </div> <div id="ErrorLevel.IMMEDIATE" class="classattr"> <div class="attr variable"> - <span class="name">IMMEDIATE</span><span class="default_value"> = <<a href="#ErrorLevel.IMMEDIATE">ErrorLevel.IMMEDIATE</a>: 'IMMEDIATE'></span> + <span class="name">IMMEDIATE</span> = +<span class="default_value"><<a href="#ErrorLevel.IMMEDIATE">ErrorLevel.IMMEDIATE</a>: 'IMMEDIATE'></span> </div> @@ -811,7 +815,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/executor.html b/docs/sqlglot/executor.html index db9dc89..a12760e 100644 --- a/docs/sqlglot/executor.html +++ b/docs/sqlglot/executor.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.executor 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -624,7 +624,7 @@ This can either be an instance of <code>Schema</code> or a mapping in one of the if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/executor/context.html b/docs/sqlglot/executor/context.html index da6c629..0ee8a2d 100644 --- a/docs/sqlglot/executor/context.html +++ b/docs/sqlglot/executor/context.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.executor.context 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -649,7 +649,7 @@ evaluation of aggregation functions.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/executor/env.html b/docs/sqlglot/executor/env.html index f221871..29d9395 100644 --- a/docs/sqlglot/executor/env.html +++ b/docs/sqlglot/executor/env.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.executor.env 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -651,7 +651,7 @@ def foo(a, b): ... if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/executor/python.html b/docs/sqlglot/executor/python.html index fb3e580..9b67f01 100644 --- a/docs/sqlglot/executor/python.html +++ b/docs/sqlglot/executor/python.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.executor.python 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -88,9 +88,6 @@ <a class="class" href="#Python">Python</a> <ul class="memberlist"> <li> - <a class="function" href="#Python.__init__">Python</a> - </li> - <li> <a class="class" href="#Python.Tokenizer">Python.Tokenizer</a> <ul class="memberlist"> </ul> @@ -1584,18 +1581,6 @@ - <div id="Python.__init__" class="classattr"> - <div class="attr function"> - - <span class="name">Python</span><span class="signature pdoc-code condensed">()</span> - - - </div> - <a class="headerlink" href="#Python.__init__"></a> - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -1635,8 +1620,7 @@ <h5>Inherited Members</h5> <dl> <div><dt><a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a></dt> - <dd id="Python.Tokenizer.__init__" class="function"><a href="../tokens.html#Tokenizer.__init__">Tokenizer</a></dd> - <dd id="Python.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> + <dd id="Python.Tokenizer.reset" class="function"><a href="../tokens.html#Tokenizer.reset">reset</a></dd> <dd id="Python.Tokenizer.tokenize" class="function"><a href="../tokens.html#Tokenizer.tokenize">tokenize</a></dd> </div> @@ -1748,6 +1732,7 @@ Default: True</li> <dd id="Python.Generator.columndef_sql" class="function"><a href="../generator.html#Generator.columndef_sql">columndef_sql</a></dd> <dd id="Python.Generator.columnconstraint_sql" class="function"><a href="../generator.html#Generator.columnconstraint_sql">columnconstraint_sql</a></dd> <dd id="Python.Generator.autoincrementcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a></dd> + <dd id="Python.Generator.compresscolumnconstraint_sql" class="function"><a href="../generator.html#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a></dd> <dd id="Python.Generator.generatedasidentitycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a></dd> <dd id="Python.Generator.notnullcolumnconstraint_sql" class="function"><a href="../generator.html#Generator.notnullcolumnconstraint_sql">notnullcolumnconstraint_sql</a></dd> <dd id="Python.Generator.primarykeycolumnconstraint_sql" class="function"><a href="../generator.html#Generator.primarykeycolumnconstraint_sql">primarykeycolumnconstraint_sql</a></dd> @@ -1790,6 +1775,7 @@ Default: True</li> <dd id="Python.Generator.blockcompressionproperty_sql" class="function"><a href="../generator.html#Generator.blockcompressionproperty_sql">blockcompressionproperty_sql</a></dd> <dd id="Python.Generator.isolatedloadingproperty_sql" class="function"><a href="../generator.html#Generator.isolatedloadingproperty_sql">isolatedloadingproperty_sql</a></dd> <dd id="Python.Generator.lockingproperty_sql" class="function"><a href="../generator.html#Generator.lockingproperty_sql">lockingproperty_sql</a></dd> + <dd id="Python.Generator.withdataproperty_sql" class="function"><a href="../generator.html#Generator.withdataproperty_sql">withdataproperty_sql</a></dd> <dd id="Python.Generator.insert_sql" class="function"><a href="../generator.html#Generator.insert_sql">insert_sql</a></dd> <dd id="Python.Generator.intersect_sql" class="function"><a href="../generator.html#Generator.intersect_sql">intersect_sql</a></dd> <dd id="Python.Generator.intersect_op" class="function"><a href="../generator.html#Generator.intersect_op">intersect_op</a></dd> @@ -2060,7 +2046,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/executor/table.html b/docs/sqlglot/executor/table.html index 59f777b..cbb3285 100644 --- a/docs/sqlglot/executor/table.html +++ b/docs/sqlglot/executor/table.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.executor.table 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -736,7 +736,7 @@ For example, a generic mapping type might be defined as::</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/expressions.html b/docs/sqlglot/expressions.html index f110b40..adb9af8 100644 --- a/docs/sqlglot/expressions.html +++ b/docs/sqlglot/expressions.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.expressions 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -363,6 +363,12 @@ </li> <li> + <a class="class" href="#CompressColumnConstraint">CompressColumnConstraint</a> + <ul class="memberlist"> + </ul> + + </li> + <li> <a class="class" href="#DateFormatColumnConstraint">DateFormatColumnConstraint</a> <ul class="memberlist"> </ul> @@ -387,6 +393,12 @@ </li> <li> + <a class="class" href="#InlineLengthColumnConstraint">InlineLengthColumnConstraint</a> + <ul class="memberlist"> + </ul> + + </li> + <li> <a class="class" href="#NotNullColumnConstraint">NotNullColumnConstraint</a> <ul class="memberlist"> </ul> @@ -663,49 +675,61 @@ </li> <li> + <a class="class" href="#AfterJournalProperty">AfterJournalProperty</a> + <ul class="memberlist"> + </ul> + + </li> + <li> <a class="class" href="#AlgorithmProperty">AlgorithmProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#DefinerProperty">DefinerProperty</a> + <a class="class" href="#AutoIncrementProperty">AutoIncrementProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#SqlSecurityProperty">SqlSecurityProperty</a> + <a class="class" href="#BlockCompressionProperty">BlockCompressionProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#TableFormatProperty">TableFormatProperty</a> + <a class="class" href="#CharacterSetProperty">CharacterSetProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#PartitionedByProperty">PartitionedByProperty</a> + <a class="class" href="#ChecksumProperty">ChecksumProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#FileFormatProperty">FileFormatProperty</a> + <a class="class" href="#CollateProperty">CollateProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#DistKeyProperty">DistKeyProperty</a> + <a class="class" href="#DataBlocksizeProperty">DataBlocksizeProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#SortKeyProperty">SortKeyProperty</a> + <a class="class" href="#DefinerProperty">DefinerProperty</a> + <ul class="memberlist"> + </ul> + + </li> + <li> + <a class="class" href="#DistKeyProperty">DistKeyProperty</a> <ul class="memberlist"> </ul> @@ -717,49 +741,49 @@ </li> <li> - <a class="class" href="#LikeProperty">LikeProperty</a> + <a class="class" href="#EngineProperty">EngineProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#LocationProperty">LocationProperty</a> + <a class="class" href="#ExecuteAsProperty">ExecuteAsProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#EngineProperty">EngineProperty</a> + <a class="class" href="#ExternalProperty">ExternalProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#AutoIncrementProperty">AutoIncrementProperty</a> + <a class="class" href="#FallbackProperty">FallbackProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#CharacterSetProperty">CharacterSetProperty</a> + <a class="class" href="#FileFormatProperty">FileFormatProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#CollateProperty">CollateProperty</a> + <a class="class" href="#FreespaceProperty">FreespaceProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#SchemaCommentProperty">SchemaCommentProperty</a> + <a class="class" href="#IsolatedLoadingProperty">IsolatedLoadingProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#ReturnsProperty">ReturnsProperty</a> + <a class="class" href="#JournalProperty">JournalProperty</a> <ul class="memberlist"> </ul> @@ -771,103 +795,139 @@ </li> <li> - <a class="class" href="#ExecuteAsProperty">ExecuteAsProperty</a> + <a class="class" href="#LikeProperty">LikeProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#VolatilityProperty">VolatilityProperty</a> + <a class="class" href="#LocationProperty">LocationProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#RowFormatDelimitedProperty">RowFormatDelimitedProperty</a> + <a class="class" href="#LockingProperty">LockingProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#RowFormatSerdeProperty">RowFormatSerdeProperty</a> + <a class="class" href="#LogProperty">LogProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#SerdeProperties">SerdeProperties</a> + <a class="class" href="#MaterializedProperty">MaterializedProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#FallbackProperty">FallbackProperty</a> + <a class="class" href="#MergeBlockRatioProperty">MergeBlockRatioProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#WithJournalTableProperty">WithJournalTableProperty</a> + <a class="class" href="#NoPrimaryIndexProperty">NoPrimaryIndexProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#LogProperty">LogProperty</a> + <a class="class" href="#OnCommitProperty">OnCommitProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#JournalProperty">JournalProperty</a> + <a class="class" href="#PartitionedByProperty">PartitionedByProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#AfterJournalProperty">AfterJournalProperty</a> + <a class="class" href="#ReturnsProperty">ReturnsProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#ChecksumProperty">ChecksumProperty</a> + <a class="class" href="#RowFormatDelimitedProperty">RowFormatDelimitedProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#FreespaceProperty">FreespaceProperty</a> + <a class="class" href="#RowFormatSerdeProperty">RowFormatSerdeProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#MergeBlockRatioProperty">MergeBlockRatioProperty</a> + <a class="class" href="#SchemaCommentProperty">SchemaCommentProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#DataBlocksizeProperty">DataBlocksizeProperty</a> + <a class="class" href="#SerdeProperties">SerdeProperties</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#BlockCompressionProperty">BlockCompressionProperty</a> + <a class="class" href="#SetProperty">SetProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#IsolatedLoadingProperty">IsolatedLoadingProperty</a> + <a class="class" href="#SortKeyProperty">SortKeyProperty</a> <ul class="memberlist"> </ul> </li> <li> - <a class="class" href="#LockingProperty">LockingProperty</a> + <a class="class" href="#SqlSecurityProperty">SqlSecurityProperty</a> + <ul class="memberlist"> + </ul> + + </li> + <li> + <a class="class" href="#TableFormatProperty">TableFormatProperty</a> + <ul class="memberlist"> + </ul> + + </li> + <li> + <a class="class" href="#TemporaryProperty">TemporaryProperty</a> + <ul class="memberlist"> + </ul> + + </li> + <li> + <a class="class" href="#TransientProperty">TransientProperty</a> + <ul class="memberlist"> + </ul> + + </li> + <li> + <a class="class" href="#VolatilityProperty">VolatilityProperty</a> + <ul class="memberlist"> + </ul> + + </li> + <li> + <a class="class" href="#WithDataProperty">WithDataProperty</a> + <ul class="memberlist"> + </ul> + + </li> + <li> + <a class="class" href="#WithJournalTableProperty">WithJournalTableProperty</a> <ul class="memberlist"> </ul> @@ -894,6 +954,9 @@ <a class="variable" href="#Properties.Location.POST_ALIAS">POST_ALIAS</a> </li> <li> + <a class="variable" href="#Properties.Location.POST_EXPRESSION">POST_EXPRESSION</a> + </li> + <li> <a class="variable" href="#Properties.Location.POST_INDEX">POST_INDEX</a> </li> <li> @@ -968,6 +1031,9 @@ <li> <a class="function" href="#Union.select">select</a> </li> + <li> + <a class="variable" href="#Union.is_star">is_star</a> + </li> </ul> </li> @@ -1070,6 +1136,9 @@ <li> <a class="function" href="#Select.lock">lock</a> </li> + <li> + <a class="variable" href="#Select.is_star">is_star</a> + </li> </ul> </li> @@ -1080,6 +1149,9 @@ <a class="function" href="#Subquery.unnest">unnest</a> </li> <li> + <a class="variable" href="#Subquery.is_star">is_star</a> + </li> + <li> <a class="variable" href="#Subquery.output_name">output_name</a> </li> </ul> @@ -1314,6 +1386,9 @@ <a class="variable" href="#DataType.Type.OBJECT">OBJECT</a> </li> <li> + <a class="variable" href="#DataType.Type.INET">INET</a> + </li> + <li> <a class="variable" href="#DataType.Type.NULL">NULL</a> </li> <li> @@ -2868,7 +2943,7 @@ SQL expressions, such as <code><a href="#select">sqlglot.expressions.select</a>< </span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> </span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="n">key</span> <span class="o">=</span> <span class="s2">"expression"</span> </span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"args"</span><span class="p">,</span> <span class="s2">"parent"</span><span class="p">,</span> <span class="s2">"arg_key"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">,</span> <span class="s2">"_type"</span><span class="p">)</span> +</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"args"</span><span class="p">,</span> <span class="s2">"parent"</span><span class="p">,</span> <span class="s2">"arg_key"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">,</span> <span class="s2">"_type"</span><span class="p">,</span> <span class="s2">"_meta"</span><span class="p">)</span> </span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> </span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">):</span> </span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="n">args</span> @@ -2876,4703 +2951,4761 @@ SQL expressions, such as <code><a href="#select">sqlglot.expressions.select</a>< </span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type</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">DataType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> -</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="k">for</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> -</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="ow">and</span> <span class="n">_norm_args</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">_norm_args</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> -</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> -</span><span id="L-100"><a href="#L-100"><span class="linenos"> 100</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="L-101"><a href="#L-101"><span class="linenos"> 101</span></a> <span class="k">return</span> <span class="nb">hash</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 class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> -</span><span id="L-104"><a href="#L-104"><span class="linenos"> 104</span></a> <span class="nb">tuple</span><span class="p">(</span> -</span><span id="L-105"><a href="#L-105"><span class="linenos"> 105</span></a> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">_norm_args</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-106"><a href="#L-106"><span class="linenos"> 106</span></a> <span class="p">),</span> -</span><span id="L-107"><a href="#L-107"><span class="linenos"> 107</span></a> <span class="p">)</span> -</span><span id="L-108"><a href="#L-108"><span class="linenos"> 108</span></a> <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 class="nd">@property</span> -</span><span id="L-111"><a href="#L-111"><span class="linenos"> 111</span></a> <span class="k">def</span> <span class="nf">this</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-112"><a href="#L-112"><span class="linenos"> 112</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-113"><a href="#L-113"><span class="linenos"> 113</span></a><span class="sd"> Retrieves the argument with key "this".</span> -</span><span id="L-114"><a href="#L-114"><span class="linenos"> 114</span></a><span class="sd"> """</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">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"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 class="nd">@property</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a><span class="sd"> Retrieves the argument with key "expression".</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a><span class="sd"> """</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a> <span class="k">return</span> <span class="bp">self</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">"expression"</span><span class="p">)</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a> -</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> <span class="nd">@property</span> -</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-126"><a href="#L-126"><span class="linenos"> 126</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a><span class="sd"> Retrieves the argument with key "expressions".</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a><span class="sd"> """</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a> <span class="k">return</span> <span class="bp">self</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">"expressions"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> -</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a> <span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a><span class="sd"> Returns a textual representation of the argument corresponding to "key". This can only be used</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a><span class="sd"> for args that are strings or leaf Expression instances, such as identifiers and literals.</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a><span class="sd"> """</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</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="n">key</span><span class="p">)</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> <span class="k">return</span> <span class="n">field</span> -</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</span><span class="p">)):</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Star</span><span class="p">,</span> <span class="n">Null</span><span class="p">)):</span> -</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a> <span class="k">return</span> <span class="s2">""</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 class="nd">@property</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a> <span class="k">def</span> <span class="nf">is_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</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">"""</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a><span class="sd"> Checks whether a Literal expression is a string.</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a><span class="sd"> """</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> -</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> -</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="nd">@property</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="k">def</span> <span class="nf">is_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a><span class="sd"> Checks whether a Literal expression is a number.</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a><span class="sd"> """</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</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 class="nd">@property</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="k">def</span> <span class="nf">is_int</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a><span class="sd"> Checks whether a Literal expression is an integer.</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a><span class="sd"> """</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> -</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> <span class="k">pass</span> -</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> -</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="nd">@property</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a><span class="w"> </span><span class="sd">"""Checks whether an expression is a star."""</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Star</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Star</span><span class="p">))</span> -</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> -</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a> <span class="nd">@property</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="k">def</span> <span class="nf">alias</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a><span class="sd"> Returns the alias of the expression, or an empty string if it's not aliased.</span> -</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a><span class="sd"> """</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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">"alias"</span><span class="p">),</span> <span class="n">TableAlias</span><span class="p">):</span> -</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> -</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> <span class="nd">@property</span> -</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"this"</span><span class="p">)</span> -</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="nd">@property</span> -</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="k">def</span> <span class="nf">alias_or_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> -</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> <span class="nd">@property</span> -</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a><span class="sd"> Name of the output column if this expression is a selection.</span> -</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> -</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a><span class="sd"> If the Expression has no output name, an empty string is returned.</span> -</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> -</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a><span class="sd"> Example:</span> -</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a><span class="sd"> >>> from sqlglot import parse_one</span> -</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a><span class="sd"> >>> parse_one("SELECT a").expressions[0].output_name</span> -</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a><span class="sd"> 'a'</span> -</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a><span class="sd"> >>> parse_one("SELECT b AS c").expressions[0].output_name</span> -</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a><span class="sd"> 'c'</span> -</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a><span class="sd"> >>> parse_one("SELECT 1 + 2").expressions[0].output_name</span> -</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a><span class="sd"> ''</span> -</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a><span class="sd"> """</span> -</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> -</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> <span class="nd">@property</span> -</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">DataType</span><span class="p">]:</span> -</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> -</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> -</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="nd">@type</span><span class="o">.</span><span class="n">setter</span> -</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</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">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="k">if</span> <span class="n">dtype</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> -</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="o">=</span> <span class="n">dtype</span> <span class="c1"># type: ignore</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="k">def</span> <span class="nf">__deepcopy__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">memo</span><span class="p">):</span> -</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="n">copy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">(</span><span class="o">**</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">))</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> -</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> -</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="k">return</span> <span class="n">copy</span> -</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> -</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a><span class="sd"> Returns a deep copy of the expression.</span> -</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a><span class="sd"> """</span> -</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="n">new</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="n">new</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="k">for</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">new</span><span class="o">.</span><span class="n">bfs</span><span class="p">():</span> -</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">parent</span><span class="p">:</span> -</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a> <span class="n">item</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> -</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> <span class="k">return</span> <span class="n">new</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> -</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="k">def</span> <span class="nf">append</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> -</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a><span class="sd"> Appends value to arg_key if it's a list or sets it as a new list.</span> -</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> -</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a><span class="sd"> Args:</span> -</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a><span class="sd"> arg_key (str): name of the list expression arg</span> -</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a><span class="sd"> value (Any): value to append to the list</span> -</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a><span class="sd"> """</span> -</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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="n">arg_key</span><span class="p">),</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> -</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> -</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> -</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a><span class="sd"> Sets `arg_key` to `value`.</span> -</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> -</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a><span class="sd"> Args:</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a><span class="sd"> arg_key (str): name of the expression arg.</span> -</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a><span class="sd"> value: value to set the arg to.</span> -</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a><span class="sd"> """</span> -</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> -</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> -</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> -</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="k">def</span> <span class="nf">_set_parent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> -</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="n">value</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="n">value</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">arg_key</span> -</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span> -</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="n">v</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="n">v</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">arg_key</span> -</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> -</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="nd">@property</span> -</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a><span class="sd"> Returns the depth of this tree.</span> -</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a><span class="sd"> """</span> -</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> -</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">depth</span> <span class="o">+</span> <span class="mi">1</span> -</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="k">return</span> <span class="mi">0</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> -</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a><span class="sd"> Returns the first node in this tree which matches at least one of</span> -</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a><span class="sd"> the specified types.</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</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 class="k">for</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> +</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> +</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="ow">and</span> <span class="n">_norm_args</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">_norm_args</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> +</span><span id="L-100"><a href="#L-100"><span class="linenos"> 100</span></a> +</span><span id="L-101"><a href="#L-101"><span class="linenos"> 101</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="L-102"><a href="#L-102"><span class="linenos"> 102</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">(</span> +</span><span id="L-103"><a href="#L-103"><span class="linenos"> 103</span></a> <span class="p">(</span> +</span><span id="L-104"><a href="#L-104"><span class="linenos"> 104</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> +</span><span id="L-105"><a href="#L-105"><span class="linenos"> 105</span></a> <span class="nb">tuple</span><span class="p">(</span> +</span><span id="L-106"><a href="#L-106"><span class="linenos"> 106</span></a> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">_norm_args</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-107"><a href="#L-107"><span class="linenos"> 107</span></a> <span class="p">),</span> +</span><span id="L-108"><a href="#L-108"><span class="linenos"> 108</span></a> <span class="p">)</span> +</span><span id="L-109"><a href="#L-109"><span class="linenos"> 109</span></a> <span class="p">)</span> +</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="nd">@property</span> +</span><span id="L-112"><a href="#L-112"><span class="linenos"> 112</span></a> <span class="k">def</span> <span class="nf">this</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-113"><a href="#L-113"><span class="linenos"> 113</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-114"><a href="#L-114"><span class="linenos"> 114</span></a><span class="sd"> Retrieves the argument with key "this".</span> +</span><span id="L-115"><a href="#L-115"><span class="linenos"> 115</span></a><span class="sd"> """</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos"> 116</span></a> <span class="k">return</span> <span class="bp">self</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">"this"</span><span class="p">)</span> +</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="nd">@property</span> +</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a><span class="sd"> Retrieves the argument with key "expression".</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a><span class="sd"> """</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a> <span class="k">return</span> <span class="bp">self</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">"expression"</span><span class="p">)</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> +</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a> <span class="nd">@property</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos"> 126</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a><span class="sd"> Retrieves the argument with key "expressions".</span> +</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a><span class="sd"> """</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> <span class="k">return</span> <span class="bp">self</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">"expressions"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a> +</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a> <span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a><span class="sd"> Returns a textual representation of the argument corresponding to "key". This can only be used</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a><span class="sd"> for args that are strings or leaf Expression instances, such as identifiers and literals.</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a><span class="sd"> """</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</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="n">key</span><span class="p">)</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="k">return</span> <span class="n">field</span> +</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</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">field</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Star</span><span class="p">,</span> <span class="n">Null</span><span class="p">)):</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="k">return</span> <span class="s2">""</span> +</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="nd">@property</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="k">def</span> <span class="nf">is_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a><span class="sd"> Checks whether a Literal expression is a string.</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a><span class="sd"> """</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> +</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="nd">@property</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="k">def</span> <span class="nf">is_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a><span class="sd"> Checks whether a Literal expression is a number.</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a><span class="sd"> """</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> +</span><span id="L-159"><a href="#L-159"><span class="linenos"> 159</span></a> +</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="nd">@property</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="k">def</span> <span class="nf">is_int</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a><span class="sd"> Checks whether a Literal expression is an integer.</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a><span class="sd"> """</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="k">pass</span> +</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="k">return</span> <span class="kc">False</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="nd">@property</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a><span class="w"> </span><span class="sd">"""Checks whether an expression is a star."""</span> +</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Star</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Star</span><span class="p">))</span> +</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a> +</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="nd">@property</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a> <span class="k">def</span> <span class="nf">alias</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a><span class="sd"> Returns the alias of the expression, or an empty string if it's not aliased.</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a><span class="sd"> """</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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">"alias"</span><span class="p">),</span> <span class="n">TableAlias</span><span class="p">):</span> +</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> +</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> <span class="nd">@property</span> +</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> +</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="nd">@property</span> +</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a> <span class="k">def</span> <span class="nf">alias_or_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> +</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="nd">@property</span> +</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a><span class="sd"> Name of the output column if this expression is a selection.</span> +</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> +</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a><span class="sd"> If the Expression has no output name, an empty string is returned.</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="sd"> Example:</span> +</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a><span class="sd"> >>> from sqlglot import parse_one</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a><span class="sd"> >>> parse_one("SELECT a").expressions[0].output_name</span> +</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a><span class="sd"> 'a'</span> +</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a><span class="sd"> >>> parse_one("SELECT b AS c").expressions[0].output_name</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a><span class="sd"> 'c'</span> +</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a><span class="sd"> >>> parse_one("SELECT 1 + 2").expressions[0].output_name</span> +</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a><span class="sd"> ''</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a><span class="sd"> """</span> +</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> +</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="nd">@property</span> +</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">DataType</span><span class="p">]:</span> +</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</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="nd">@type</span><span class="o">.</span><span class="n">setter</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</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">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="k">if</span> <span class="n">dtype</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> +</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> +</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="o">=</span> <span class="n">dtype</span> <span class="c1"># type: ignore</span> +</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> +</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="nd">@property</span> +</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="k">def</span> <span class="nf">meta</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span> +</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> +</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> +</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="k">def</span> <span class="nf">__deepcopy__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">memo</span><span class="p">):</span> +</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">copy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">(</span><span class="o">**</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">))</span> +</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">comments</span><span class="p">)</span> +</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> +</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span><span class="o">.</span><span class="n">copy</span><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">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">_meta</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_meta</span><span class="p">)</span> +</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> +</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> <span class="k">return</span> <span class="n">copy</span> +</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> +</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a><span class="sd"> Returns a deep copy of the expression.</span> +</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a><span class="sd"> """</span> +</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="n">new</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="n">new</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="k">for</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">new</span><span class="o">.</span><span class="n">bfs</span><span class="p">():</span> +</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">parent</span><span class="p">:</span> +</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="n">item</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> +</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="k">return</span> <span class="n">new</span> +</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> +</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="k">def</span> <span class="nf">append</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> +</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a><span class="sd"> Appends value to arg_key if it's a list or sets it as a new list.</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="sd"> Args:</span> +</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a><span class="sd"> arg_key (str): name of the list expression arg</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a><span class="sd"> value (Any): value to append to the list</span> +</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a><span class="sd"> """</span> +</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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="n">arg_key</span><span class="p">),</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> +</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> +</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a><span class="sd"> Sets `arg_key` to `value`.</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> +</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a><span class="sd"> Args:</span> +</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a><span class="sd"> arg_key (str): name of the expression arg.</span> +</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a><span class="sd"> value: value to set the arg to.</span> +</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a><span class="sd"> """</span> +</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> +</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> +</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> +</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="k">def</span> <span class="nf">_set_parent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> +</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="n">value</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="n">value</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">arg_key</span> +</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="n">v</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="n">v</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">arg_key</span> </span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> -</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a><span class="sd"> Args:</span> -</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> -</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a><span class="sd"> Returns:</span> -</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a><span class="sd"> The node which matches the criteria or None if no such node was found.</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a><span class="sd"> """</span> -</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> -</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree and only</span> -</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a><span class="sd"> yields those that match at least one of the specified expression types.</span> -</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> -</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a><span class="sd"> Args:</span> -</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> -</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> -</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a><span class="sd"> Returns:</span> -</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a><span class="sd"> The generator object.</span> -</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a><span class="sd"> """</span> -</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span> -</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> -</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="k">yield</span> <span class="n">expression</span> -</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> -</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="k">def</span> <span class="nf">find_ancestor</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">):</span> -</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a><span class="sd"> Returns a nearest parent matching expression_types.</span> +</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> <span class="nd">@property</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a><span class="sd"> Returns the depth of this tree.</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a><span class="sd"> """</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">depth</span> <span class="o">+</span> <span class="mi">1</span> +</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="k">return</span> <span class="mi">0</span> +</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> +</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a><span class="sd"> Returns the first node in this tree which matches at least one of</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a><span class="sd"> the specified types.</span> +</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> +</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a><span class="sd"> Args:</span> +</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> +</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> +</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a><span class="sd"> Returns:</span> +</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a><span class="sd"> The node which matches the criteria or None if no such node was found.</span> +</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a><span class="sd"> """</span> +</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> +</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree and only</span> +</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a><span class="sd"> yields those that match at least one of the specified expression types.</span> </span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> </span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a><span class="sd"> Args:</span> </span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> </span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> </span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a><span class="sd"> Returns:</span> -</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a><span class="sd"> The parent node.</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a><span class="sd"> The generator object.</span> </span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a><span class="sd"> """</span> -</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="k">while</span> <span class="n">ancestor</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ancestor</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> -</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="n">ancestor</span><span class="o">.</span><span class="n">parent</span> -</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="k">return</span> <span class="n">ancestor</span> -</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> -</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="nd">@property</span> -</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="k">def</span> <span class="nf">parent_select</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a><span class="sd"> Returns the parent select statement.</span> -</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a><span class="sd"> """</span> -</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_ancestor</span><span class="p">(</span><span class="n">Select</span><span class="p">)</span> -</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> -</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree.</span> -</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> -</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a><span class="sd"> Args:</span> -</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a><span class="sd"> bfs (bool): if set to True the BFS traversal order will be applied,</span> -</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a><span class="sd"> otherwise the DFS traversal will be used instead.</span> -</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a><span class="sd"> prune ((node, parent, arg_key) -> bool): callable that returns True if</span> -</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a><span class="sd"> the generator should stop traversing this branch of the tree.</span> -</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> -</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a><span class="sd"> Returns:</span> -</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a><span class="sd"> the generator object.</span> -</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a><span class="sd"> """</span> -</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> <span class="k">if</span> <span class="n">bfs</span><span class="p">:</span> -</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">bfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> -</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> +</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> +</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="k">yield</span> <span class="n">expression</span> +</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> +</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="k">def</span> <span class="nf">find_ancestor</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">):</span> +</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a><span class="sd"> Returns a nearest parent matching expression_types.</span> +</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> +</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a><span class="sd"> Args:</span> +</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> +</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> +</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a><span class="sd"> Returns:</span> +</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a><span class="sd"> The parent node.</span> +</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a><span class="sd"> """</span> +</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="k">while</span> <span class="n">ancestor</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ancestor</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> +</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="n">ancestor</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="k">return</span> <span class="n">ancestor</span> +</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> +</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="nd">@property</span> +</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="k">def</span> <span class="nf">parent_select</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a><span class="sd"> Returns the parent select statement.</span> +</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a><span class="sd"> """</span> +</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_ancestor</span><span class="p">(</span><span class="n">Select</span><span class="p">)</span> +</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> +</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree.</span> </span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> -</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="k">def</span> <span class="nf">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> -</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a><span class="sd"> the DFS (Depth-first) order.</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="sd"> Returns:</span> -</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a><span class="sd"> The generator object.</span> -</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a><span class="sd"> """</span> -</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="k">yield</span> <span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> -</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> -</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="k">return</span> -</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> -</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> -</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="k">yield from</span> <span class="n">node</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">prune</span><span class="p">)</span> -</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> -</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="k">def</span> <span class="nf">bfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> -</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a><span class="sd"> the BFS (Breadth-first) order.</span> -</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> -</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a><span class="sd"> Returns:</span> -</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a><span class="sd"> The generator object.</span> -</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a><span class="sd"> """</span> -</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="n">queue</span> <span class="o">=</span> <span class="n">deque</span><span class="p">([(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="kc">None</span><span class="p">)])</span> -</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> -</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="k">while</span> <span class="n">queue</span><span class="p">:</span> -</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="o">=</span> <span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span> -</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> -</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="k">yield</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> -</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> -</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="k">continue</span> -</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> -</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> -</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">node</span><span class="p">,</span> <span class="n">item</span><span class="p">,</span> <span class="n">k</span><span class="p">))</span> -</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> -</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a><span class="sd"> Returns the first non parenthesis child or self.</span> -</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a><span class="sd"> """</span> -</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Paren</span><span class="p">):</span> -</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> -</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="k">def</span> <span class="nf">unalias</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a><span class="sd"> Returns the inner expression if this is an Alias.</span> -</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a><span class="sd"> """</span> -</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Alias</span><span class="p">):</span> -</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="k">return</span> <span class="bp">self</span> -</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> -</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="k">def</span> <span class="nf">unnest_operands</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a><span class="sd"> Returns unnested operands as a tuple.</span> -</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a><span class="sd"> """</span> -</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">arg</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="n">arg</span><span class="p">)</span> +</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a><span class="sd"> Args:</span> +</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a><span class="sd"> bfs (bool): if set to True the BFS traversal order will be applied,</span> +</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a><span class="sd"> otherwise the DFS traversal will be used instead.</span> +</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a><span class="sd"> prune ((node, parent, arg_key) -> bool): callable that returns True if</span> +</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a><span class="sd"> the generator should stop traversing this branch of the tree.</span> +</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> +</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a><span class="sd"> Returns:</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a><span class="sd"> the generator object.</span> +</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a><span class="sd"> """</span> +</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="k">if</span> <span class="n">bfs</span><span class="p">:</span> +</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">bfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> +</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> +</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> +</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="k">def</span> <span class="nf">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> +</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a><span class="sd"> the DFS (Depth-first) order.</span> +</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> +</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a><span class="sd"> Returns:</span> +</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a><span class="sd"> The generator object.</span> +</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a><span class="sd"> """</span> +</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="k">yield</span> <span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> +</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> +</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="k">return</span> +</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> +</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> +</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="k">yield from</span> <span class="n">node</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">prune</span><span class="p">)</span> +</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> +</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="k">def</span> <span class="nf">bfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> +</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a><span class="sd"> the BFS (Breadth-first) order.</span> +</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> +</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a><span class="sd"> Returns:</span> +</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a><span class="sd"> The generator object.</span> +</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a><span class="sd"> """</span> +</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="n">queue</span> <span class="o">=</span> <span class="n">deque</span><span class="p">([(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="kc">None</span><span class="p">)])</span> +</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> +</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="k">while</span> <span class="n">queue</span><span class="p">:</span> +</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="o">=</span> <span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span> +</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> +</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="k">yield</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> +</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> +</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="k">continue</span> +</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> +</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> +</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">node</span><span class="p">,</span> <span class="n">item</span><span class="p">,</span> <span class="n">k</span><span class="p">))</span> +</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> +</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a><span class="sd"> Returns the first non parenthesis child or self.</span> +</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a><span class="sd"> """</span> +</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Paren</span><span class="p">):</span> +</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="k">return</span> <span class="n">expression</span> </span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> -</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="k">def</span> <span class="nf">flatten</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="k">def</span> <span class="nf">unalias</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> </span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a><span class="sd"> Returns a generator which yields child nodes who's parents are the same class.</span> -</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> -</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a><span class="sd"> A AND B AND C -> [A, B, C]</span> -</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a><span class="sd"> """</span> -</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="n">p</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)):</span> -</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">):</span> -</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="k">yield</span> <span class="n">node</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="n">unnest</span> <span class="k">else</span> <span class="n">node</span> -</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> -</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</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-426"><a href="#L-426"><span class="linenos"> 426</span></a> -</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_to_s</span><span class="p">()</span> -</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> -</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a><span class="sd"> Returns SQL string representation of this tree.</span> -</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> -</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a><span class="sd"> Args:</span> -</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a><span class="sd"> dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a><span class="sd"> opts: other `sqlglot.generator.Generator` options.</span> +</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a><span class="sd"> Returns the inner expression if this is an Alias.</span> +</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a><span class="sd"> """</span> +</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Alias</span><span class="p">):</span> +</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="k">return</span> <span class="bp">self</span> +</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> +</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="k">def</span> <span class="nf">unnest_operands</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a><span class="sd"> Returns unnested operands as a tuple.</span> +</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a><span class="sd"> """</span> +</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">arg</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="n">arg</span><span class="p">)</span> +</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> +</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="k">def</span> <span class="nf">flatten</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a><span class="sd"> Returns a generator which yields child nodes who's parents are the same class.</span> +</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> +</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a><span class="sd"> A AND B AND C -> [A, B, C]</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a><span class="sd"> """</span> +</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="n">p</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)):</span> +</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">):</span> +</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="k">yield</span> <span class="n">node</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="n">unnest</span> <span class="k">else</span> <span class="n">node</span> </span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> -</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a><span class="sd"> Returns:</span> -</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a><span class="sd"> The SQL string.</span> -</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a><span class="sd"> """</span> -</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> -</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> -</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hide_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="n">indent</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">level</span> <span class="k">else</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> -</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="n">indent</span> <span class="o">+=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s2">" "</span><span class="p">]</span> <span class="o">*</span> <span class="n">level</span><span class="p">)</span> -</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="n">left</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> -</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> -</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> <span class="n">k</span><span class="p">:</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="n">v</span><span class="o">.</span><span class="n">_to_s</span><span class="p">(</span><span class="n">hide_missing</span><span class="o">=</span><span class="n">hide_missing</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="n">level</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="s2">"_to_s"</span><span class="p">)</span> -</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> -</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">vs</span><span class="p">)</span> -</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="k">if</span> <span class="n">v</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> -</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="p">)</span> -</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">vs</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="p">}</span> -</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"comments"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> -</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> -</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">hide_missing</span><span class="p">}</span> +</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</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-440"><a href="#L-440"><span class="linenos"> 440</span></a> +</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_to_s</span><span class="p">()</span> +</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> +</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a><span class="sd"> Returns SQL string representation of this tree.</span> +</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> +</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a><span class="sd"> Args:</span> +</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a><span class="sd"> dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a><span class="sd"> opts: other `sqlglot.generator.Generator` options.</span> +</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> +</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a><span class="sd"> Returns:</span> +</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a><span class="sd"> The SQL string.</span> +</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a><span class="sd"> """</span> +</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> +</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> +</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> +</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hide_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="n">indent</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">level</span> <span class="k">else</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> +</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="n">indent</span> <span class="o">+=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s2">" "</span><span class="p">]</span> <span class="o">*</span> <span class="n">level</span><span class="p">)</span> +</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="n">left</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> </span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> -</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="n">right</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">v</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> -</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="n">right</span> <span class="o">+=</span> <span class="s2">")"</span> -</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> -</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="k">return</span> <span class="n">indent</span> <span class="o">+</span> <span class="n">left</span> <span class="o">+</span> <span class="n">right</span> -</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> -</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> -</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a><span class="sd"> Recursively visits all tree nodes (excluding already transformed ones)</span> -</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a><span class="sd"> and applies the given transformation function to each node.</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="sd"> Args:</span> -</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a><span class="sd"> fun (function): a function which takes a node as an argument and returns a</span> -</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a><span class="sd"> new transformed node or the same node without modifications. If the function</span> -</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a><span class="sd"> returns None, then the corresponding node will be removed from the syntax tree.</span> -</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a><span class="sd"> copy (bool): if set to True a new tree instance is constructed, otherwise the tree is</span> -</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a><span class="sd"> modified in place.</span> +</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="n">k</span><span class="p">:</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> <span class="n">v</span><span class="o">.</span><span class="n">_to_s</span><span class="p">(</span><span class="n">hide_missing</span><span class="o">=</span><span class="n">hide_missing</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="n">level</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="s2">"_to_s"</span><span class="p">)</span> +</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> +</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">vs</span><span class="p">)</span> +</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="k">if</span> <span class="n">v</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> +</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="p">)</span> +</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">vs</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="p">}</span> +</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"comments"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> +</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> +</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">hide_missing</span><span class="p">}</span> +</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> +</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="n">right</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">v</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> +</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="n">right</span> <span class="o">+=</span> <span class="s2">")"</span> </span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> -</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a><span class="sd"> Returns:</span> -</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a><span class="sd"> The transformed tree.</span> -</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a><span class="sd"> """</span> -</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="n">node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> -</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> -</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="k">return</span> <span class="n">new_node</span> -</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> -</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="n">new_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">parent</span> -</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="k">return</span> <span class="n">new_node</span> -</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> -</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">child</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> -</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="k">return</span> <span class="n">new_node</span> -</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> -</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="k">def</span> <span class="nf">replace</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-497"><a href="#L-497"><span class="linenos"> 497</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a><span class="sd"> Swap out this expression with a new expression.</span> -</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> -</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a><span class="sd"> For example::</span> -</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> -</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a><span class="sd"> >>> tree = Select().select("x").from_("tbl")</span> -</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a><span class="sd"> >>> tree.find(Column).replace(Column(this="y"))</span> -</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a><span class="sd"> (COLUMN this: y)</span> -</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a><span class="sd"> >>> tree.sql()</span> -</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a><span class="sd"> 'SELECT y FROM tbl'</span> -</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> -</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a><span class="sd"> Args:</span> -</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a><span class="sd"> expression (Expression|None): new node</span> -</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> -</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a><span class="sd"> Returns:</span> -</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a><span class="sd"> The new expression or expressions.</span> -</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a><span class="sd"> """</span> -</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> -</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> -</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> -</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">expression</span> <span class="k">if</span> <span class="n">child</span> <span class="ow">is</span> <span class="bp">self</span> <span class="k">else</span> <span class="n">child</span><span class="p">)</span> -</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> -</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="k">def</span> <span class="nf">pop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a><span class="sd"> Remove this expression from its AST.</span> -</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a><span class="sd"> """</span> -</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> -</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> -</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="k">def</span> <span class="nf">assert_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">):</span> -</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a><span class="sd"> Assert that this `Expression` is an instance of `type_`.</span> -</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> -</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a><span class="sd"> If it is NOT an instance of `type_`, this raises an assertion error.</span> -</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a><span class="sd"> Otherwise, this returns this expression.</span> -</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> -</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a><span class="sd"> Examples:</span> -</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a><span class="sd"> This is useful for type security in chained expressions:</span> -</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> -</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()</span> -</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a><span class="sd"> 'SELECT x, z FROM y'</span> -</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a><span class="sd"> """</span> -</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">)</span> -</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="k">return</span> <span class="bp">self</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">def</span> <span class="nf">error_messages</span><span class="p">(</span><span class="bp">self</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">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></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-547"><a href="#L-547"><span class="linenos"> 547</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a><span class="sd"> Checks if this expression is valid (e.g. all mandatory args are set).</span> +</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="k">return</span> <span class="n">indent</span> <span class="o">+</span> <span class="n">left</span> <span class="o">+</span> <span class="n">right</span> +</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> +</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a><span class="sd"> Recursively visits all tree nodes (excluding already transformed ones)</span> +</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a><span class="sd"> and applies the given transformation function to each node.</span> +</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> +</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a><span class="sd"> Args:</span> +</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a><span class="sd"> fun (function): a function which takes a node as an argument and returns a</span> +</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a><span class="sd"> new transformed node or the same node without modifications. If the function</span> +</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a><span class="sd"> returns None, then the corresponding node will be removed from the syntax tree.</span> +</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a><span class="sd"> copy (bool): if set to True a new tree instance is constructed, otherwise the tree is</span> +</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a><span class="sd"> modified in place.</span> +</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> +</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a><span class="sd"> Returns:</span> +</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a><span class="sd"> The transformed tree.</span> +</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a><span class="sd"> """</span> +</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="n">node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> +</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> +</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> +</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="n">new_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> +</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">child</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> +</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> +</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="k">def</span> <span class="nf">replace</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-511"><a href="#L-511"><span class="linenos"> 511</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a><span class="sd"> Swap out this expression with a new expression.</span> +</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> +</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a><span class="sd"> For example::</span> +</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> +</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a><span class="sd"> >>> tree = Select().select("x").from_("tbl")</span> +</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a><span class="sd"> >>> tree.find(Column).replace(Column(this="y"))</span> +</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a><span class="sd"> (COLUMN this: y)</span> +</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a><span class="sd"> >>> tree.sql()</span> +</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a><span class="sd"> 'SELECT y FROM tbl'</span> +</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> +</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a><span class="sd"> Args:</span> +</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a><span class="sd"> expression (Expression|None): new node</span> +</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> +</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a><span class="sd"> Returns:</span> +</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a><span class="sd"> The new expression or expressions.</span> +</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a><span class="sd"> """</span> +</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> +</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> +</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> +</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">expression</span> <span class="k">if</span> <span class="n">child</span> <span class="ow">is</span> <span class="bp">self</span> <span class="k">else</span> <span class="n">child</span><span class="p">)</span> +</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> +</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="k">def</span> <span class="nf">pop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a><span class="sd"> Remove this expression from its AST.</span> +</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a><span class="sd"> """</span> +</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="kc">None</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">def</span> <span class="nf">assert_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">):</span> +</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a><span class="sd"> Assert that this `Expression` is an instance of `type_`.</span> +</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> +</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a><span class="sd"> If it is NOT an instance of `type_`, this raises an assertion error.</span> +</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a><span class="sd"> Otherwise, this returns this expression.</span> </span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> -</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a><span class="sd"> Args:</span> -</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a><span class="sd"> args: a sequence of values that were used to instantiate a Func expression. This is used</span> -</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a><span class="sd"> to check that the provided arguments don't exceed the function argument limit.</span> -</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> -</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a><span class="sd"> Returns:</span> -</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a><span class="sd"> A list of error messages for all possible errors that were found.</span> +</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a><span class="sd"> Examples:</span> +</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a><span class="sd"> This is useful for type security in chained expressions:</span> +</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> +</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()</span> +</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a><span class="sd"> 'SELECT x, z FROM y'</span> </span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a><span class="sd"> """</span> -</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="n">errors</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-558"><a href="#L-558"><span class="linenos"> 558</span></a> -</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> -</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> -</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unexpected keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">mandatory</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</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="n">k</span><span class="p">)</span> -</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="k">if</span> <span class="n">mandatory</span> <span class="ow">and</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">v</span><span class="p">)):</span> -</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Required keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' missing for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> -</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="n">args</span> -</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Func</span><span class="p">)</span> -</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="ow">and</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="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> -</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_var_len_args</span> -</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="p">):</span> -</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="sa">f</span><span class="s2">"The number of provided arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">) is greater than "</span> -</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="sa">f</span><span class="s2">"the maximum number of supported arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="p">)</span> -</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> -</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="k">return</span> <span class="n">errors</span> -</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> -</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a><span class="sd"> Dump this Expression to a JSON-serializable dict.</span> -</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a><span class="sd"> """</span> -</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">dump</span> -</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> -</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="k">return</span> <span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> -</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="nd">@classmethod</span> -</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> -</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a><span class="sd"> Load a dict (as returned by `Expression.dump`) into an Expression instance.</span> -</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a><span class="sd"> """</span> -</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">load</span> -</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> -</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="k">return</span> <span class="n">load</span><span class="p">(</span><span class="n">obj</span><span class="p">)</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><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a><span class="n">IntoType</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span> -</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">],</span> -</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">]]],</span> -</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a><span class="p">]</span> -</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> -</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> -</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a><span class="k">class</span> <span class="nc">Condition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a><span class="sd"> AND this condition with one or multiple expressions.</span> -</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> -</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a><span class="sd"> Example:</span> -</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a><span class="sd"> >>> condition("x=1").and_("y=1").sql()</span> -</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a><span class="sd"> 'x = 1 AND y = 1'</span> -</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> -</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a><span class="sd"> Args:</span> -</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> -</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a><span class="sd"> Returns:</span> -</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a><span class="sd"> And: the new condition.</span> -</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a><span class="sd"> """</span> -</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="k">return</span> <span class="n">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> -</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a><span class="sd"> OR this condition with one or multiple expressions.</span> -</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> -</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a><span class="sd"> Example:</span> -</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a><span class="sd"> >>> condition("x=1").or_("y=1").sql()</span> -</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a><span class="sd"> 'x = 1 OR y = 1'</span> -</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> -</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a><span class="sd"> Args:</span> -</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">)</span> +</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="k">return</span> <span class="bp">self</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="k">def</span> <span class="nf">error_messages</span><span class="p">(</span><span class="bp">self</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">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></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-561"><a href="#L-561"><span class="linenos"> 561</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a><span class="sd"> Checks if this expression is valid (e.g. all mandatory args are set).</span> +</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> +</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a><span class="sd"> Args:</span> +</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a><span class="sd"> args: a sequence of values that were used to instantiate a Func expression. This is used</span> +</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a><span class="sd"> to check that the provided arguments don't exceed the function argument limit.</span> +</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> +</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a><span class="sd"> Returns:</span> +</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a><span class="sd"> A list of error messages for all possible errors that were found.</span> +</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a><span class="sd"> """</span> +</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="n">errors</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-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">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</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">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> +</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unexpected keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">mandatory</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</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="n">k</span><span class="p">)</span> +</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="k">if</span> <span class="n">mandatory</span> <span class="ow">and</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">v</span><span class="p">)):</span> +</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Required keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' missing for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> +</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="n">args</span> +</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Func</span><span class="p">)</span> +</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="ow">and</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="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> +</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_var_len_args</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="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="sa">f</span><span class="s2">"The number of provided arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">) is greater than "</span> +</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="sa">f</span><span class="s2">"the maximum number of supported arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="p">)</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="k">return</span> <span class="n">errors</span> +</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> +</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a><span class="sd"> Dump this Expression to a JSON-serializable dict.</span> +</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a><span class="sd"> """</span> +</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">dump</span> +</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> +</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="k">return</span> <span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> +</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="nd">@classmethod</span> +</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> +</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a><span class="sd"> Load a dict (as returned by `Expression.dump`) into an Expression instance.</span> +</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a><span class="sd"> """</span> +</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">load</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">return</span> <span class="n">load</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> +</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> +</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> +</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a><span class="n">IntoType</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span> +</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">],</span> +</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">Expression</span><span class="p">]]],</span> +</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a><span class="p">]</span> +</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> +</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> +</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a><span class="k">class</span> <span class="nc">Condition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a><span class="sd"> AND this condition with one or multiple expressions.</span> +</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> +</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a><span class="sd"> Example:</span> +</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a><span class="sd"> >>> condition("x=1").and_("y=1").sql()</span> +</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a><span class="sd"> 'x = 1 AND y = 1'</span> +</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> +</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a><span class="sd"> Args:</span> +</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> +</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a><span class="sd"> Returns:</span> +</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a><span class="sd"> And: the new condition.</span> +</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a><span class="sd"> """</span> +</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="k">return</span> <span class="n">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> -</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a><span class="sd"> Returns:</span> -</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a><span class="sd"> Or: the new condition.</span> -</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a><span class="sd"> """</span> -</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="k">return</span> <span class="n">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> -</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a><span class="sd"> Wrap this condition with NOT.</span> -</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> -</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a><span class="sd"> Example:</span> -</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a><span class="sd"> >>> condition("x=1").not_().sql()</span> -</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a><span class="sd"> 'NOT x = 1'</span> -</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> -</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a><span class="sd"> Returns:</span> -</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a><span class="sd"> Not: the new condition.</span> -</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a><span class="sd"> """</span> -</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="k">return</span> <span class="n">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> +</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a><span class="sd"> OR this condition with one or multiple expressions.</span> +</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> +</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a><span class="sd"> Example:</span> +</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a><span class="sd"> >>> condition("x=1").or_("y=1").sql()</span> +</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a><span class="sd"> 'x = 1 OR y = 1'</span> +</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> +</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a><span class="sd"> Args:</span> +</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> +</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a><span class="sd"> Returns:</span> +</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a><span class="sd"> Or: the new condition.</span> +</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a><span class="sd"> """</span> +</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="k">return</span> <span class="n">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> -</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a><span class="k">class</span> <span class="nc">Predicate</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a><span class="w"> </span><span class="sd">"""Relationships like x = y, x > 1, x >= y."""</span> -</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> +</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a><span class="sd"> Wrap this condition with NOT.</span> </span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> -</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a><span class="k">class</span> <span class="nc">DerivedTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="nd">@property</span> -</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="k">def</span> <span class="nf">alias_column_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</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">"alias"</span><span class="p">)</span> -</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table_alias</span><span class="p">:</span> -</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="n">column_list</span> <span class="o">=</span> <span class="n">table_alias</span><span class="o">.</span><span class="n">assert_is</span><span class="p">(</span><span class="n">TableAlias</span><span class="p">)</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">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">c</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">column_list</span><span class="p">]</span> +</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a><span class="sd"> Example:</span> +</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a><span class="sd"> >>> condition("x=1").not_().sql()</span> +</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a><span class="sd"> 'NOT x = 1'</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="sd"> Returns:</span> +</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a><span class="sd"> Not: the new condition.</span> +</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a><span class="sd"> """</span> +</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="k">return</span> <span class="n">not_</span><span class="p">(</span><span class="bp">self</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="nd">@property</span> -</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</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">"alias"</span><span class="p">)</span> +</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a> +</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a><span class="k">class</span> <span class="nc">Predicate</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a><span class="w"> </span><span class="sd">"""Relationships like x = y, x > 1, x >= y."""</span> </span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> -</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="k">return</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> -</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> -</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="nd">@property</span> -</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">select</span><span class="o">.</span><span class="n">output_name</span> <span class="k">for</span> <span class="n">select</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">selects</span><span class="p">]</span> -</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> -</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> -</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a><span class="k">class</span> <span class="nc">Unionable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="k">def</span> <span class="nf">union</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a><span class="sd"> Builds a UNION expression.</span> +</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> +</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a><span class="k">class</span> <span class="nc">DerivedTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="nd">@property</span> +</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="k">def</span> <span class="nf">alias_column_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</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">"alias"</span><span class="p">)</span> +</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table_alias</span><span class="p">:</span> +</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="n">column_list</span> <span class="o">=</span> <span class="n">table_alias</span><span class="o">.</span><span class="n">assert_is</span><span class="p">(</span><span class="n">TableAlias</span><span class="p">)</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">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">c</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">column_list</span><span class="p">]</span> +</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> +</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="nd">@property</span> +</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</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">"alias"</span><span class="p">)</span> </span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> -</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a><span class="sd"> Example:</span> -</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()</span> -</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</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="sd"> Args:</span> -</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> -</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a><span class="sd"> Returns:</span> -</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a><span class="sd"> Union: the Union expression.</span> -</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a><span class="sd"> """</span> -</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="k">return</span> <span class="n">union</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> -</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="k">def</span> <span class="nf">intersect</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a><span class="sd"> Builds an INTERSECT expression.</span> -</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> -</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a><span class="sd"> Example:</span> -</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()</span> -</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> -</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> -</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a><span class="sd"> Args:</span> -</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> -</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a><span class="sd"> Returns:</span> -</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a><span class="sd"> Intersect: the Intersect expression</span> -</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a><span class="sd"> """</span> -</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="k">return</span> <span class="n">intersect</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> -</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="k">def</span> <span class="nf">except_</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a><span class="sd"> Builds an EXCEPT expression.</span> -</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> -</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a><span class="sd"> Example:</span> -</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()</span> -</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> -</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> -</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a><span class="sd"> Args:</span> -</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> -</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a><span class="sd"> Returns:</span> -</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a><span class="sd"> Except: the Except expression</span> -</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a><span class="sd"> """</span> -</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="k">return</span> <span class="n">except_</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> -</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> -</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a><span class="k">class</span> <span class="nc">UDTF</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">,</span> <span class="n">Unionable</span><span class="p">):</span> -</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="k">pass</span> -</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> -</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> -</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a><span class="k">class</span> <span class="nc">Cache</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="s2">"lazy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="p">}</span> +</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="k">return</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> +</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> +</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="nd">@property</span> +</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">select</span><span class="o">.</span><span class="n">output_name</span> <span class="k">for</span> <span class="n">select</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">selects</span><span class="p">]</span> +</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> +</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> +</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a><span class="k">class</span> <span class="nc">Unionable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="k">def</span> <span class="nf">union</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a><span class="sd"> Builds a UNION expression.</span> +</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> +</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a><span class="sd"> Example:</span> +</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()</span> +</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> +</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> +</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a><span class="sd"> Args:</span> +</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> +</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a><span class="sd"> Returns:</span> +</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a><span class="sd"> Union: the Union expression.</span> +</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a><span class="sd"> """</span> +</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="k">return</span> <span class="n">union</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> +</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="k">def</span> <span class="nf">intersect</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a><span class="sd"> Builds an INTERSECT expression.</span> +</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> +</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a><span class="sd"> Example:</span> +</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()</span> +</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> +</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> +</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a><span class="sd"> Args:</span> +</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> +</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a><span class="sd"> Returns:</span> +</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a><span class="sd"> Intersect: the Intersect expression</span> +</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a><span class="sd"> """</span> +</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="k">return</span> <span class="n">intersect</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> +</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="k">def</span> <span class="nf">except_</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a><span class="sd"> Builds an EXCEPT expression.</span> +</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> +</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a><span class="sd"> Example:</span> +</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()</span> +</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> +</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> +</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a><span class="sd"> Args:</span> +</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> +</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a><span class="sd"> Returns:</span> +</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a><span class="sd"> Except: the Except expression</span> +</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a><span class="sd"> """</span> +</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="k">return</span> <span class="n">except_</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> </span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> -</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a><span class="k">class</span> <span class="nc">Uncache</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a><span class="k">class</span> <span class="nc">UDTF</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">,</span> <span class="n">Unionable</span><span class="p">):</span> +</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="k">pass</span> </span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> </span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> -</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a><span class="k">class</span> <span class="nc">Create</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a><span class="k">class</span> <span class="nc">Cache</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> </span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> </span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="s2">"set"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="s2">"multiset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="s2">"global_temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="s2">"volatile"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="s2">"properties"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="s2">"transient"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="s2">"external"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="s2">"unique"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="s2">"materialized"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="s2">"data"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="s2">"statistics"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="s2">"no_primary_index"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="s2">"indexes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="s2">"no_schema_binding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="s2">"begin"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="p">}</span> -</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> -</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> -</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a><span class="k">class</span> <span class="nc">Describe</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="s2">"lazy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="p">}</span> +</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> +</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> +</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a><span class="k">class</span> <span class="nc">Uncache</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> +</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> +</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a><span class="k">class</span> <span class="nc">Create</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="s2">"properties"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="s2">"unique"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="s2">"indexes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="s2">"no_schema_binding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="s2">"begin"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="p">}</span> +</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> </span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> -</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> -</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a><span class="k">class</span> <span class="nc">Set</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a><span class="k">class</span> <span class="nc">Describe</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> </span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> -</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> -</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a><span class="k">class</span> <span class="nc">SetItem</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="s2">"collate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="c1"># MySQL SET NAMES statement</span> -</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="s2">"global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="p">}</span> -</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> -</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> -</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a><span class="k">class</span> <span class="nc">Show</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> <span class="s2">"target"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="s2">"like"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="s2">"full"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> <span class="s2">"mutex"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="s2">"channel"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="s2">"global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="s2">"log"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="s2">"types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="p">}</span> -</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> -</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> -</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a><span class="k">class</span> <span class="nc">UserDefinedFunction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"wrapped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a><span class="k">class</span> <span class="nc">Set</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> +</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> +</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a><span class="k">class</span> <span class="nc">SetItem</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="s2">"collate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="c1"># MySQL SET NAMES statement</span> +</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="s2">"global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="p">}</span> +</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> +</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> +</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a><span class="k">class</span> <span class="nc">Show</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="s2">"target"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="s2">"like"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="s2">"full"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="s2">"mutex"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="s2">"channel"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="s2">"global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="s2">"log"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="s2">"types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="p">}</span> +</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> </span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> -</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> -</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a><span class="k">class</span> <span class="nc">CharacterSet</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a><span class="k">class</span> <span class="nc">UserDefinedFunction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"wrapped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> </span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> -</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> -</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a><span class="k">class</span> <span class="nc">With</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"recursive"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a><span class="k">class</span> <span class="nc">CharacterSet</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> </span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> -</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="nd">@property</span> -</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="k">def</span> <span class="nf">recursive</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</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">"recursive"</span><span class="p">))</span> -</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> -</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> -</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a><span class="k">class</span> <span class="nc">WithinGroup</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a><span class="k">class</span> <span class="nc">With</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"recursive"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> +</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="nd">@property</span> +</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="k">def</span> <span class="nf">recursive</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</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">"recursive"</span><span class="p">))</span> +</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> </span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> -</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> -</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a><span class="k">class</span> <span class="nc">CTE</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">):</span> -</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a><span class="k">class</span> <span class="nc">WithinGroup</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> </span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> -</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> -</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a><span class="k">class</span> <span class="nc">TableAlias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a><span class="k">class</span> <span class="nc">CTE</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">):</span> +</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> </span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> -</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="nd">@property</span> -</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="k">def</span> <span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="k">return</span> <span class="bp">self</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">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> -</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> -</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a><span class="k">class</span> <span class="nc">BitString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="k">pass</span> +</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a><span class="k">class</span> <span class="nc">TableAlias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> +</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="nd">@property</span> +</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="k">def</span> <span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="k">return</span> <span class="bp">self</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">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> </span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> -</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> -</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a><span class="k">class</span> <span class="nc">HexString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="k">pass</span> +</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a><span class="k">class</span> <span class="nc">BitString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="k">pass</span> +</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> </span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> -</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> -</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a><span class="k">class</span> <span class="nc">ByteString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="k">pass</span> +</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a><span class="k">class</span> <span class="nc">HexString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="k">pass</span> +</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> </span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> -</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> -</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a><span class="k">class</span> <span class="nc">Column</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"catalog"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a><span class="k">class</span> <span class="nc">ByteString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="k">pass</span> +</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> </span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> -</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="nd">@property</span> -</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="k">def</span> <span class="nf">table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"table"</span><span class="p">)</span> -</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> -</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="nd">@property</span> -</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="k">def</span> <span class="nf">db</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">)</span> -</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> -</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="nd">@property</span> -</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="k">def</span> <span class="nf">catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">)</span> -</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> -</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="nd">@property</span> -</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> -</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> -</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a><span class="k">class</span> <span class="nc">ColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="s2">"constraints"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="p">}</span> -</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> -</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> -</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a><span class="k">class</span> <span class="nc">AlterColumn</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="s2">"dtype"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="s2">"collate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="s2">"drop"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="p">}</span> -</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> -</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> -</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a><span class="k">class</span> <span class="nc">RenameTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="k">pass</span> +</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a><span class="k">class</span> <span class="nc">Column</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"catalog"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> +</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="nd">@property</span> +</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="k">def</span> <span class="nf">table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"table"</span><span class="p">)</span> +</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> +</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="nd">@property</span> +</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="k">def</span> <span class="nf">db</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">)</span> +</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> +</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="nd">@property</span> +</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="k">def</span> <span class="nf">catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">)</span> +</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> +</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="nd">@property</span> +</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> +</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> +</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a><span class="k">class</span> <span class="nc">ColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="s2">"constraints"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="p">}</span> +</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> +</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> +</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a><span class="k">class</span> <span class="nc">AlterColumn</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="s2">"dtype"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="s2">"collate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="s2">"drop"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="p">}</span> +</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> </span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> -</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> -</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a><span class="k">class</span> <span class="nc">ColumnConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a><span class="k">class</span> <span class="nc">RenameTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="k">pass</span> +</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> </span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> -</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> -</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a><span class="k">class</span> <span class="nc">ColumnConstraintKind</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="k">pass</span> +</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a><span class="k">class</span> <span class="nc">ColumnConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> </span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> -</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> -</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a><span class="k">class</span> <span class="nc">AutoIncrementColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="k">pass</span> +</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a><span class="k">class</span> <span class="nc">ColumnConstraintKind</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="k">pass</span> +</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> </span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> -</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> -</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a><span class="k">class</span> <span class="nc">CaseSpecificColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"not_"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a><span class="k">class</span> <span class="nc">AutoIncrementColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="k">pass</span> +</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> </span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> -</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> -</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a><span class="k">class</span> <span class="nc">CharacterSetColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a><span class="k">class</span> <span class="nc">CaseSpecificColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"not_"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> </span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> -</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> -</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a><span class="k">class</span> <span class="nc">CheckColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="k">pass</span> +</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a><span class="k">class</span> <span class="nc">CharacterSetColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> </span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> -</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> -</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a><span class="k">class</span> <span class="nc">CollateColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> <span class="k">pass</span> +</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a><span class="k">class</span> <span class="nc">CheckColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="k">pass</span> +</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> </span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> -</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> -</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a><span class="k">class</span> <span class="nc">CommentColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="k">pass</span> +</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a><span class="k">class</span> <span class="nc">CollateColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="k">pass</span> +</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> </span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> -</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> -</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a><span class="k">class</span> <span class="nc">DateFormatColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a><span class="k">class</span> <span class="nc">CommentColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="k">pass</span> +</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> </span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> -</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> -</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a><span class="k">class</span> <span class="nc">DefaultColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="k">pass</span> +</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a><span class="k">class</span> <span class="nc">CompressColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="k">pass</span> +</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> </span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> -</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> -</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a><span class="k">class</span> <span class="nc">EncodeColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="k">pass</span> +</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a><span class="k">class</span> <span class="nc">DateFormatColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> </span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> -</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> -</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a><span class="k">class</span> <span class="nc">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="c1"># this: True -> ALWAYS, this: False -> BY DEFAULT</span> -</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="s2">"increment"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="s2">"minvalue"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="s2">"maxvalue"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="s2">"cycle"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="p">}</span> -</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> -</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> -</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a><span class="k">class</span> <span class="nc">NotNullColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"allow_null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> -</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> -</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a><span class="k">class</span> <span class="nc">PrimaryKeyColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"desc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a><span class="k">class</span> <span class="nc">DefaultColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="k">pass</span> +</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> +</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> +</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a><span class="k">class</span> <span class="nc">EncodeColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="k">pass</span> +</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> +</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> +</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a><span class="k">class</span> <span class="nc">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="c1"># this: True -> ALWAYS, this: False -> BY DEFAULT</span> +</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="s2">"increment"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="s2">"minvalue"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="s2">"maxvalue"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="s2">"cycle"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="p">}</span> +</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> </span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> -</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> -</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a><span class="k">class</span> <span class="nc">TitleColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="k">pass</span> +</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a><span class="k">class</span> <span class="nc">InlineLengthColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="k">pass</span> +</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> </span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> -</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> -</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a><span class="k">class</span> <span class="nc">UniqueColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a><span class="k">class</span> <span class="nc">NotNullColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"allow_null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> </span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> -</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> -</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a><span class="k">class</span> <span class="nc">UppercaseColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a><span class="k">class</span> <span class="nc">PrimaryKeyColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"desc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> </span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> -</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> -</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a><span class="k">class</span> <span class="nc">PathColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="k">pass</span> +</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a><span class="k">class</span> <span class="nc">TitleColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="k">pass</span> +</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> </span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> -</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> -</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a><span class="k">class</span> <span class="nc">Constraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a><span class="k">class</span> <span class="nc">UniqueColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> </span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> -</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> -</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a><span class="k">class</span> <span class="nc">Delete</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a><span class="k">class</span> <span class="nc">UppercaseColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> </span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> -</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> -</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a><span class="k">class</span> <span class="nc">Drop</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="s2">"materialized"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="s2">"cascade"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="p">}</span> +</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a><span class="k">class</span> <span class="nc">PathColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="k">pass</span> +</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> +</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> +</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a><span class="k">class</span> <span class="nc">Constraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> +</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> +</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a><span class="k">class</span> <span class="nc">Delete</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> </span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> -</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a><span class="k">class</span> <span class="nc">Filter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> -</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> -</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a><span class="k">class</span> <span class="nc">Check</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="k">pass</span> -</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> -</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> -</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a><span class="k">class</span> <span class="nc">Directory</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="c1"># https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html</span> -</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"row_format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> -</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> -</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a><span class="k">class</span> <span class="nc">ForeignKey</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="s2">"reference"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="s2">"delete"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="s2">"update"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="p">}</span> -</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> -</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> -</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a><span class="k">class</span> <span class="nc">PrimaryKey</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> -</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> -</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a><span class="k">class</span> <span class="nc">Unique</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> -</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> -</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a><span class="c1"># https://www.postgresql.org/docs/9.1/sql-selectinto.html</span> -</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a><span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/r_SELECT_INTO.html#r_SELECT_INTO-examples</span> -</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a><span class="k">class</span> <span class="nc">Into</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unlogged"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> +</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a><span class="k">class</span> <span class="nc">Drop</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="s2">"materialized"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="s2">"cascade"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="p">}</span> +</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> +</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> +</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a><span class="k">class</span> <span class="nc">Filter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> +</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> +</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a><span class="k">class</span> <span class="nc">Check</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="k">pass</span> +</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> +</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> +</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a><span class="k">class</span> <span class="nc">Directory</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="c1"># https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html</span> +</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"row_format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> +</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> +</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a><span class="k">class</span> <span class="nc">ForeignKey</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="s2">"reference"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="s2">"delete"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="s2">"update"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="p">}</span> +</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> +</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> +</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a><span class="k">class</span> <span class="nc">PrimaryKey</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> -</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a><span class="k">class</span> <span class="nc">From</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> +</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> +</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a><span class="k">class</span> <span class="nc">Unique</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> -</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a><span class="k">class</span> <span class="nc">Having</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="k">pass</span> -</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> -</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> -</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a><span class="k">class</span> <span class="nc">Hint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> +</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a><span class="c1"># https://www.postgresql.org/docs/9.1/sql-selectinto.html</span> +</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a><span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/r_SELECT_INTO.html#r_SELECT_INTO-examples</span> +</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a><span class="k">class</span> <span class="nc">Into</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unlogged"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> </span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> -</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> -</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a><span class="k">class</span> <span class="nc">JoinHint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a><span class="k">class</span> <span class="nc">From</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> </span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> -</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> -</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a><span class="k">class</span> <span class="nc">Identifier</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a><span class="k">class</span> <span class="nc">Having</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="k">pass</span> +</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> </span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> -</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="nd">@property</span> -</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="k">def</span> <span class="nf">quoted</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</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">"quoted"</span><span class="p">))</span> +</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a><span class="k">class</span> <span class="nc">Hint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> </span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> -</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> -</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> <span class="ow">and</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">==</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a><span class="k">class</span> <span class="nc">JoinHint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> -</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span> -</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> -</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> <span class="nd">@property</span> -</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> +</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> +</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a><span class="k">class</span> <span class="nc">Identifier</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> +</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="nd">@property</span> +</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="k">def</span> <span class="nf">quoted</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</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">"quoted"</span><span class="p">))</span> </span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> -</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a><span class="k">class</span> <span class="nc">Index</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="s2">"unique"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="s2">"primary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="s2">"amp"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="c1"># teradata</span> -</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="p">}</span> +</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> +</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> <span class="ow">and</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">==</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> +</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span> +</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> +</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="nd">@property</span> +</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> </span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> -</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> -</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a><span class="k">class</span> <span class="nc">Insert</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="s2">"overwrite"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="s2">"partition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="s2">"alternative"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="p">}</span> +</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a><span class="k">class</span> <span class="nc">Index</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="s2">"unique"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="s2">"primary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="s2">"amp"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="c1"># teradata</span> +</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="p">}</span> +</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> </span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> -</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> -</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a><span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/charset-introducer.html</span> -</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a><span class="k">class</span> <span class="nc">Introducer</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> -</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> -</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a><span class="c1"># national char, like n'utf8'</span> -</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a><span class="k">class</span> <span class="nc">National</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="k">pass</span> -</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> +</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a><span class="k">class</span> <span class="nc">Insert</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="s2">"overwrite"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="s2">"partition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="s2">"alternative"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> <span class="p">}</span> </span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> -</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a><span class="k">class</span> <span class="nc">LoadData</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="s2">"overwrite"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="s2">"inpath"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> <span class="s2">"partition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="s2">"input_format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="s2">"serde"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="p">}</span> +</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> +</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a><span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/charset-introducer.html</span> +</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a><span class="k">class</span> <span class="nc">Introducer</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> +</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> +</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a><span class="c1"># national char, like n'utf8'</span> +</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a><span class="k">class</span> <span class="nc">National</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="k">pass</span> +</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> </span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> -</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> -</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a><span class="k">class</span> <span class="nc">Partition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> -</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> -</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a><span class="k">class</span> <span class="nc">Fetch</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"direction"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> -</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> -</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a><span class="k">class</span> <span class="nc">Group</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a> <span class="s2">"grouping_sets"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> <span class="s2">"cube"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="s2">"rollup"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> <span class="p">}</span> -</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> -</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> -</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a><span class="k">class</span> <span class="nc">Lambda</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> -</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> -</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a><span class="k">class</span> <span class="nc">Limit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> -</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> -</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a><span class="k">class</span> <span class="nc">Literal</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"is_string"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a><span class="k">class</span> <span class="nc">LoadData</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> <span class="s2">"overwrite"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> <span class="s2">"inpath"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="s2">"partition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> <span class="s2">"input_format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> <span class="s2">"serde"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> <span class="p">}</span> +</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> +</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> +</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a><span class="k">class</span> <span class="nc">Partition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> +</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> +</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a><span class="k">class</span> <span class="nc">Fetch</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"direction"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> +</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> +</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a><span class="k">class</span> <span class="nc">Group</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="s2">"grouping_sets"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> <span class="s2">"cube"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="s2">"rollup"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> <span class="p">}</span> +</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> </span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> -</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> -</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> -</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> -</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="p">)</span> +</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a><span class="k">class</span> <span class="nc">Lambda</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> +</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> +</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a><span class="k">class</span> <span class="nc">Limit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> -</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</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">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]))</span> -</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> -</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> <span class="nd">@classmethod</span> -</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> -</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> -</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="nd">@classmethod</span> -</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> -</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">string</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> +</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a><span class="k">class</span> <span class="nc">Literal</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"is_string"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> +</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> +</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> +</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> +</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="p">)</span> </span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> -</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="nd">@property</span> -</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> -</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> -</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a><span class="k">class</span> <span class="nc">Join</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="s2">"natural"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> <span class="p">}</span> +</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</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">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]))</span> +</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> +</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> <span class="nd">@classmethod</span> +</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> +</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> +</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="nd">@classmethod</span> +</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> +</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">string</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> +</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="nd">@property</span> +</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> </span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> -</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> <span class="nd">@property</span> -</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> <span class="k">def</span> <span class="nf">kind</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> -</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> <span class="nd">@property</span> -</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="k">def</span> <span class="nf">side</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"side"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> -</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="nd">@property</span> -</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> <span class="k">def</span> <span class="nf">alias_or_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> -</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> <span class="k">def</span> <span class="nf">on</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a><span class="sd"> Append to or set the ON expressions.</span> -</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> -</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a><span class="sd"> Example:</span> -</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()</span> -</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a><span class="sd"> 'JOIN x ON y = 1'</span> -</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> -</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a><span class="sd"> Args:</span> -</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> -</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> -</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a> -</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a><span class="sd"> Returns:</span> -</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a><span class="sd"> Join: the modified join expression.</span> -</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a><span class="sd"> """</span> -</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"on"</span><span class="p">,</span> -</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> <span class="p">)</span> -</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> -</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> -</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> -</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="k">return</span> <span class="n">join</span> -</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> -</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="k">def</span> <span class="nf">using</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a><span class="sd"> Append to or set the USING expressions.</span> -</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a> -</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a><span class="sd"> Example:</span> -</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()</span> -</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a><span class="sd"> 'JOIN x USING (foo, bla)'</span> +</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> +</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a><span class="k">class</span> <span class="nc">Join</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="s2">"natural"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> <span class="p">}</span> +</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> +</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="nd">@property</span> +</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> <span class="k">def</span> <span class="nf">kind</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> +</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> <span class="nd">@property</span> +</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="k">def</span> <span class="nf">side</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"side"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> +</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> <span class="nd">@property</span> +</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> <span class="k">def</span> <span class="nf">alias_or_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> +</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> <span class="k">def</span> <span class="nf">on</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a><span class="sd"> Append to or set the ON expressions.</span> +</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> +</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a><span class="sd"> Example:</span> +</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()</span> +</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a><span class="sd"> 'JOIN x ON y = 1'</span> +</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> +</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a><span class="sd"> Args:</span> +</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> +</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> +</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> +</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a><span class="sd"> Returns:</span> +</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a><span class="sd"> Join: the modified join expression.</span> +</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a><span class="sd"> """</span> +</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"on"</span><span class="p">,</span> +</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> <span class="p">)</span> +</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> +</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> +</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> </span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> -</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a><span class="sd"> Args:</span> -</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a><span class="sd"> append (bool): if `True`, concatenate the new expressions to the existing "using" list.</span> -</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> -</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a><span class="sd"> Returns:</span> -</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a><span class="sd"> Join: the modified join expression.</span> -</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a><span class="sd"> """</span> -</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> -</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a> <span class="p">)</span> -</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a> -</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> -</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a> -</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a> <span class="k">return</span> <span class="n">join</span> -</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a> -</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a> -</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a><span class="k">class</span> <span class="nc">Lateral</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> -</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"view"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"outer"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> -</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a> -</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a><span class="k">class</span> <span class="nc">MatchRecognize</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> <span class="s2">"partition_by"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a> <span class="s2">"measures"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> <span class="s2">"rows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a> <span class="s2">"after"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> <span class="s2">"pattern"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="s2">"define"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="p">}</span> +</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a> <span class="k">return</span> <span class="n">join</span> +</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a> +</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a> <span class="k">def</span> <span class="nf">using</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a><span class="sd"> Append to or set the USING expressions.</span> +</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a> +</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a><span class="sd"> Example:</span> +</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()</span> +</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a><span class="sd"> 'JOIN x USING (foo, bla)'</span> +</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> +</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a><span class="sd"> Args:</span> +</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a><span class="sd"> append (bool): if `True`, concatenate the new expressions to the existing "using" list.</span> +</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> +</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a><span class="sd"> Returns:</span> +</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a><span class="sd"> Join: the modified join expression.</span> +</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a><span class="sd"> """</span> +</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> +</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a> <span class="p">)</span> +</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a> +</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> +</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> +</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a> <span class="k">return</span> <span class="n">join</span> +</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> +</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a> +</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a><span class="k">class</span> <span class="nc">Lateral</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> +</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"view"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"outer"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> </span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> -</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> -</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a><span class="c1"># Clickhouse FROM FINAL modifier</span> -</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a><span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/select/from/#final-modifier</span> -</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a><span class="k">class</span> <span class="nc">Final</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="k">pass</span> -</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> -</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> -</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a><span class="k">class</span> <span class="nc">Offset</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> +</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a><span class="k">class</span> <span class="nc">MatchRecognize</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="s2">"partition_by"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="s2">"measures"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="s2">"rows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="s2">"after"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> <span class="s2">"pattern"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a> <span class="s2">"define"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="p">}</span> </span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> -</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a><span class="k">class</span> <span class="nc">Order</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a> -</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> -</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a><span class="c1"># hive specific sorts</span> -</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a><span class="c1"># https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy</span> -</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a><span class="k">class</span> <span class="nc">Cluster</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> -</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> <span class="k">pass</span> -</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> +</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> +</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a><span class="c1"># Clickhouse FROM FINAL modifier</span> +</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a><span class="c1"># https://clickhouse.com/docs/en/sql-reference/statements/select/from/#final-modifier</span> +</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a><span class="k">class</span> <span class="nc">Final</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> <span class="k">pass</span> +</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> +</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> +</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a><span class="k">class</span> <span class="nc">Offset</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> -</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a><span class="k">class</span> <span class="nc">Distribute</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> -</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="k">pass</span> -</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> +</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> +</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a><span class="k">class</span> <span class="nc">Order</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> -</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a><span class="k">class</span> <span class="nc">Sort</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> -</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="k">pass</span> -</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> -</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> -</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a><span class="k">class</span> <span class="nc">Ordered</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"nulls_first"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> +</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a><span class="c1"># hive specific sorts</span> +</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a><span class="c1"># https://cwiki.apache.org/confluence/display/Hive/LanguageManual+SortBy</span> +</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a><span class="k">class</span> <span class="nc">Cluster</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> +</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a> <span class="k">pass</span> +</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> </span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> -</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> -</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a><span class="k">class</span> <span class="nc">Property</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a><span class="k">class</span> <span class="nc">Distribute</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> +</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="k">pass</span> +</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a> </span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a> -</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> -</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a><span class="k">class</span> <span class="nc">AlgorithmProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a><span class="k">class</span> <span class="nc">Sort</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> +</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a> <span class="k">pass</span> +</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> </span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> -</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> -</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a><span class="k">class</span> <span class="nc">DefinerProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a><span class="k">class</span> <span class="nc">Ordered</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"nulls_first"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> </span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> -</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> -</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a><span class="k">class</span> <span class="nc">SqlSecurityProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"definer"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a><span class="k">class</span> <span class="nc">Property</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> </span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a> -</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a> -</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a><span class="k">class</span> <span class="nc">TableFormatProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a><span class="k">class</span> <span class="nc">AfterJournalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"dual"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> </span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a> -</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a> -</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a><span class="k">class</span> <span class="nc">PartitionedByProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a><span class="k">class</span> <span class="nc">AlgorithmProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a> </span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a> -</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> -</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a><span class="k">class</span> <span class="nc">FileFormatProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a><span class="k">class</span> <span class="nc">AutoIncrementProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> </span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a> -</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a> -</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a><span class="k">class</span> <span class="nc">DistKeyProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a><span class="k">class</span> <span class="nc">BlockCompressionProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"autotemp"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"always"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"manual"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"never"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> </span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a> -</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> -</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a><span class="k">class</span> <span class="nc">SortKeyProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"compound"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a><span class="k">class</span> <span class="nc">CharacterSetProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> </span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a> -</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a> -</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a><span class="k">class</span> <span class="nc">DistStyleProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a><span class="k">class</span> <span class="nc">ChecksumProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> </span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a> -</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a> -</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a><span class="k">class</span> <span class="nc">LikeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a><span class="k">class</span> <span class="nc">CollateProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a> </span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a> -</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a> -</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a><span class="k">class</span> <span class="nc">LocationProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a><span class="k">class</span> <span class="nc">DataBlocksizeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"size"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"units"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> </span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a> -</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a> -</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a><span class="k">class</span> <span class="nc">EngineProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a><span class="k">class</span> <span class="nc">DefinerProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a> </span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a> -</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a> -</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a><span class="k">class</span> <span class="nc">AutoIncrementProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a><span class="k">class</span> <span class="nc">DistKeyProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a> </span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a> -</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a> -</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a><span class="k">class</span> <span class="nc">CharacterSetProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a><span class="k">class</span> <span class="nc">DistStyleProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a> </span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a> -</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a> -</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a><span class="k">class</span> <span class="nc">CollateProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a><span class="k">class</span> <span class="nc">EngineProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a> </span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a> -</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a> -</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a><span class="k">class</span> <span class="nc">SchemaCommentProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a><span class="k">class</span> <span class="nc">ExecuteAsProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> </span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> -</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> -</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a><span class="k">class</span> <span class="nc">ReturnsProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"is_table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a><span class="k">class</span> <span class="nc">ExternalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> </span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a> -</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a> -</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a><span class="k">class</span> <span class="nc">LanguageProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a><span class="k">class</span> <span class="nc">FallbackProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"protection"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> </span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a> -</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a> -</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a><span class="k">class</span> <span class="nc">ExecuteAsProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a><span class="k">class</span> <span class="nc">FileFormatProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a> </span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a> -</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a> -</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a><span class="k">class</span> <span class="nc">VolatilityProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a><span class="k">class</span> <span class="nc">FreespaceProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a> </span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a> -</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a> -</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a><span class="k">class</span> <span class="nc">RowFormatDelimitedProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a> <span class="c1"># https://cwiki.apache.org/confluence/display/hive/languagemanual+dml</span> -</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="s2">"fields"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a> <span class="s2">"escaped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a> <span class="s2">"collection_items"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a> <span class="s2">"map_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a> <span class="s2">"lines"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a> <span class="s2">"serde"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a> <span class="p">}</span> +</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a><span class="k">class</span> <span class="nc">IsolatedLoadingProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a> <span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="s2">"concurrent"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="s2">"for_all"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a> <span class="s2">"for_insert"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a> <span class="s2">"for_none"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a> <span class="p">}</span> +</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a> +</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a> +</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a><span class="k">class</span> <span class="nc">JournalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"dual"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"before"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a> </span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a> -</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a><span class="k">class</span> <span class="nc">RowFormatSerdeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a><span class="k">class</span> <span class="nc">LanguageProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> </span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> </span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> -</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a><span class="k">class</span> <span class="nc">SerdeProperties</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a><span class="k">class</span> <span class="nc">LikeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a> </span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> -</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a><span class="k">class</span> <span class="nc">FallbackProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"protection"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a><span class="k">class</span> <span class="nc">LocationProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> </span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a> -</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a><span class="k">class</span> <span class="nc">WithJournalTableProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> -</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> -</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a><span class="k">class</span> <span class="nc">LogProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> -</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> -</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a><span class="k">class</span> <span class="nc">JournalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"dual"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"before"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a> -</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a> -</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a><span class="k">class</span> <span class="nc">AfterJournalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"dual"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a> -</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a> -</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a><span class="k">class</span> <span class="nc">ChecksumProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a> -</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a> -</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a><span class="k">class</span> <span class="nc">FreespaceProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a> -</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a> -</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a><span class="k">class</span> <span class="nc">MergeBlockRatioProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a> -</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a> -</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a><span class="k">class</span> <span class="nc">DataBlocksizeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"size"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"units"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a> -</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> -</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a><span class="k">class</span> <span class="nc">BlockCompressionProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"autotemp"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"always"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"manual"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"never"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a> -</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a> -</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a><span class="k">class</span> <span class="nc">IsolatedLoadingProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a> <span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a> <span class="s2">"concurrent"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a> <span class="s2">"for_all"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a> <span class="s2">"for_insert"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a> <span class="s2">"for_none"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> <span class="p">}</span> -</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> -</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> -</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a><span class="k">class</span> <span class="nc">LockingProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> <span class="s2">"for_or_in"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="s2">"lock_type"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="s2">"override"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="p">}</span> +</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a><span class="k">class</span> <span class="nc">LockingProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a> <span class="s2">"for_or_in"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="s2">"lock_type"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> <span class="s2">"override"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> <span class="p">}</span> +</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> +</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> +</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a><span class="k">class</span> <span class="nc">LogProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a> +</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a> +</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a><span class="k">class</span> <span class="nc">MaterializedProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a> +</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a> +</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a><span class="k">class</span> <span class="nc">MergeBlockRatioProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a> +</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a> +</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a><span class="k">class</span> <span class="nc">NoPrimaryIndexProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a> +</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a> +</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a><span class="k">class</span> <span class="nc">OnCommitProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a> <span class="n">arg_type</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a> +</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a> +</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a><span class="k">class</span> <span class="nc">PartitionedByProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a> +</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a> +</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a><span class="k">class</span> <span class="nc">ReturnsProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"is_table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a> +</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a> +</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a><span class="k">class</span> <span class="nc">RowFormatDelimitedProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a> <span class="c1"># https://cwiki.apache.org/confluence/display/hive/languagemanual+dml</span> +</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a> <span class="s2">"fields"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a> <span class="s2">"escaped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> <span class="s2">"collection_items"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> <span class="s2">"map_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> <span class="s2">"lines"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a> <span class="s2">"serde"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a> <span class="p">}</span> +</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> +</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> +</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a><span class="k">class</span> <span class="nc">RowFormatSerdeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> </span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> -</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a> -</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a><span class="k">class</span> <span class="nc">Properties</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a><span class="k">class</span> <span class="nc">SchemaCommentProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> </span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a> -</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> <span class="n">NAME_TO_PROPERTY</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="n">AlgorithmProperty</span><span class="p">,</span> -</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">AutoIncrementProperty</span><span class="p">,</span> -</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">CharacterSetProperty</span><span class="p">,</span> -</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">CollateProperty</span><span class="p">,</span> -</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="n">SchemaCommentProperty</span><span class="p">,</span> -</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="n">DefinerProperty</span><span class="p">,</span> -</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="n">DistKeyProperty</span><span class="p">,</span> -</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="n">DistStyleProperty</span><span class="p">,</span> -</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a> <span class="s2">"ENGINE"</span><span class="p">:</span> <span class="n">EngineProperty</span><span class="p">,</span> -</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="s2">"EXECUTE AS"</span><span class="p">:</span> <span class="n">ExecuteAsProperty</span><span class="p">,</span> -</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">FileFormatProperty</span><span class="p">,</span> -</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="n">LanguageProperty</span><span class="p">,</span> -</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="n">LocationProperty</span><span class="p">,</span> -</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">PartitionedByProperty</span><span class="p">,</span> -</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="n">ReturnsProperty</span><span class="p">,</span> -</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="n">SortKeyProperty</span><span class="p">,</span> -</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="s2">"TABLE_FORMAT"</span><span class="p">:</span> <span class="n">TableFormatProperty</span><span class="p">,</span> -</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="p">}</span> +</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a><span class="k">class</span> <span class="nc">SerdeProperties</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> +</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> +</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a><span class="k">class</span> <span class="nc">SetProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"multi"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> +</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a> +</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a><span class="k">class</span> <span class="nc">SortKeyProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"compound"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> +</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> +</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a><span class="k">class</span> <span class="nc">SqlSecurityProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"definer"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> +</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> +</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a><span class="k">class</span> <span class="nc">TableFormatProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> </span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a> -</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> <span class="n">PROPERTY_TO_NAME</span> <span class="o">=</span> <span class="p">{</span><span class="n">v</span><span class="p">:</span> <span class="n">k</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a> -</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> <span class="c1"># CREATE property locations</span> -</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> <span class="c1"># Form: schema specified</span> -</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a> <span class="c1"># create [POST_CREATE]</span> -</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> <span class="c1"># table a [POST_NAME]</span> -</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a> <span class="c1"># (b int) [POST_SCHEMA]</span> -</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> <span class="c1"># with ([POST_WITH])</span> -</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a> <span class="c1"># index (b) [POST_INDEX]</span> -</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a> <span class="c1">#</span> -</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> <span class="c1"># Form: alias selection</span> -</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> <span class="c1"># create [POST_CREATE]</span> -</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a> <span class="c1"># table a [POST_NAME]</span> -</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="c1"># as [POST_ALIAS] (select * from b)</span> -</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a> <span class="c1"># index (c) [POST_INDEX]</span> -</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> <span class="k">class</span> <span class="nc">Location</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> -</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a> <span class="n">POST_CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> <span class="n">POST_NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> <span class="n">POST_SCHEMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a> <span class="n">POST_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> <span class="n">POST_ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> <span class="n">POST_INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a> <span class="n">UNSUPPORTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> -</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="nd">@classmethod</span> -</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a> <span class="k">def</span> <span class="nf">from_dict</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">properties_dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">Properties</span><span class="p">:</span> -</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">properties_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="k">if</span> <span class="n">property_cls</span><span class="p">:</span> -</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">property_cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> -</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> -</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> -</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> -</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> -</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a><span class="k">class</span> <span class="nc">Qualify</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="k">pass</span> -</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> -</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> -</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a><span class="c1"># https://www.ibm.com/docs/en/ias?topic=procedures-return-statement-in-sql</span> -</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a><span class="k">class</span> <span class="nc">Return</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> <span class="k">pass</span> +</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a><span class="k">class</span> <span class="nc">TemporaryProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"global_"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> +</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> +</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a><span class="k">class</span> <span class="nc">TransientProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a> +</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> +</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a><span class="k">class</span> <span class="nc">VolatilityProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> +</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> +</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a><span class="k">class</span> <span class="nc">WithDataProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"statistics"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a> +</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> +</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a><span class="k">class</span> <span class="nc">WithJournalTableProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> +</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a> +</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a><span class="k">class</span> <span class="nc">Properties</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a> +</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> <span class="n">NAME_TO_PROPERTY</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="n">AlgorithmProperty</span><span class="p">,</span> +</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">AutoIncrementProperty</span><span class="p">,</span> +</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">CharacterSetProperty</span><span class="p">,</span> +</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">CollateProperty</span><span class="p">,</span> +</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="n">SchemaCommentProperty</span><span class="p">,</span> +</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="n">DefinerProperty</span><span class="p">,</span> +</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="n">DistKeyProperty</span><span class="p">,</span> +</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="n">DistStyleProperty</span><span class="p">,</span> +</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="s2">"ENGINE"</span><span class="p">:</span> <span class="n">EngineProperty</span><span class="p">,</span> +</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> <span class="s2">"EXECUTE AS"</span><span class="p">:</span> <span class="n">ExecuteAsProperty</span><span class="p">,</span> +</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">FileFormatProperty</span><span class="p">,</span> +</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="n">LanguageProperty</span><span class="p">,</span> +</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="n">LocationProperty</span><span class="p">,</span> +</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">PartitionedByProperty</span><span class="p">,</span> +</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="n">ReturnsProperty</span><span class="p">,</span> +</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="n">SortKeyProperty</span><span class="p">,</span> +</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> <span class="s2">"TABLE_FORMAT"</span><span class="p">:</span> <span class="n">TableFormatProperty</span><span class="p">,</span> +</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a> <span class="p">}</span> +</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> +</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> <span class="n">PROPERTY_TO_NAME</span> <span class="o">=</span> <span class="p">{</span><span class="n">v</span><span class="p">:</span> <span class="n">k</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> </span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a> -</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> -</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a><span class="k">class</span> <span class="nc">Reference</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> -</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> -</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a><span class="k">class</span> <span class="nc">Tuple</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a> -</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</span></a> -</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a><span class="k">class</span> <span class="nc">Subqueryable</span><span class="p">(</span><span class="n">Unionable</span><span class="p">):</span> -</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a> <span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Subquery</span><span class="p">:</span> -</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a><span class="sd"> Convert this expression to an aliased expression that can be used as a Subquery.</span> -</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a> -</span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a><span class="sd"> Example:</span> -</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a><span class="sd"> >>> subquery = Select().select("x").from_("tbl").subquery()</span> -</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a><span class="sd"> >>> Select().select("x").from_(subquery).sql()</span> -</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl)'</span> -</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> -</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a><span class="sd"> Args:</span> -</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a><span class="sd"> alias (str | Identifier): an optional alias for the subquery</span> -</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> <span class="c1"># CREATE property locations</span> +</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a> <span class="c1"># Form: schema specified</span> +</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> <span class="c1"># create [POST_CREATE]</span> +</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> <span class="c1"># table a [POST_NAME]</span> +</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> <span class="c1"># (b int) [POST_SCHEMA]</span> +</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a> <span class="c1"># with ([POST_WITH])</span> +</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> <span class="c1"># index (b) [POST_INDEX]</span> +</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a> <span class="c1">#</span> +</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</span></a> <span class="c1"># Form: alias selection</span> +</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> <span class="c1"># create [POST_CREATE]</span> +</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a> <span class="c1"># table a [POST_NAME]</span> +</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a> <span class="c1"># as [POST_ALIAS] (select * from b) [POST_EXPRESSION]</span> +</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a> <span class="c1"># index (c) [POST_INDEX]</span> +</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a> <span class="k">class</span> <span class="nc">Location</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> +</span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a> <span class="n">POST_CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a> <span class="n">POST_NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a> <span class="n">POST_SCHEMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a> <span class="n">POST_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> <span class="n">POST_ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a> <span class="n">POST_EXPRESSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a> <span class="n">POST_INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a> <span class="n">UNSUPPORTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a> -</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a><span class="sd"> Returns:</span> -</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a><span class="sd"> Alias: the subquery</span> -</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a><span class="sd"> """</span> -</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> <span class="k">return</span> <span class="n">Subquery</span><span class="p">(</span> -</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="n">this</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> -</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)),</span> -</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> <span class="p">)</span> -</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> -</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span> +</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a> <span class="nd">@classmethod</span> +</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a> <span class="k">def</span> <span class="nf">from_dict</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">properties_dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">Properties</span><span class="p">:</span> +</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">properties_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="k">if</span> <span class="n">property_cls</span><span class="p">:</span> +</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">property_cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> +</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> +</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> +</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> </span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a> -</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a> <span class="nd">@property</span> -</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</span></a> <span class="k">def</span> <span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</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">"with"</span><span class="p">)</span> -</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">with_</span><span class="p">:</span> -</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a> <span class="k">return</span> <span class="n">with_</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a> -</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a> <span class="nd">@property</span> -</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Subqueryable objects must implement `selects`"</span><span class="p">)</span> -</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a> -</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a> <span class="nd">@property</span> -</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Subqueryable objects must implement `named_selects`"</span><span class="p">)</span> -</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a> -</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> <span class="k">def</span> <span class="nf">with_</span><span class="p">(</span> -</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="n">alias</span><span class="p">,</span> -</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> <span class="n">as_</span><span class="p">,</span> -</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="n">recursive</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a> <span class="p">):</span> -</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a><span class="sd"> Append to or set the common table expressions.</span> +</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a> +</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</span></a><span class="k">class</span> <span class="nc">Qualify</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a> <span class="k">pass</span> +</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a> +</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a> +</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a><span class="c1"># https://www.ibm.com/docs/en/ias?topic=procedures-return-statement-in-sql</span> +</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a><span class="k">class</span> <span class="nc">Return</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a> <span class="k">pass</span> +</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a> +</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a> +</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a><span class="k">class</span> <span class="nc">Reference</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a> +</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a> +</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a><span class="k">class</span> <span class="nc">Tuple</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> +</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> +</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a><span class="k">class</span> <span class="nc">Subqueryable</span><span class="p">(</span><span class="n">Unionable</span><span class="p">):</span> +</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Subquery</span><span class="p">:</span> +</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a><span class="sd"> Convert this expression to an aliased expression that can be used as a Subquery.</span> +</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a> +</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a><span class="sd"> Example:</span> +</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a><span class="sd"> >>> subquery = Select().select("x").from_("tbl").subquery()</span> +</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a><span class="sd"> >>> Select().select("x").from_(subquery).sql()</span> +</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl)'</span> </span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a> -</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a><span class="sd"> Example:</span> -</span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a><span class="sd"> >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()</span> -</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a><span class="sd"> 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'</span> +</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a><span class="sd"> Args:</span> +</span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a><span class="sd"> alias (str | Identifier): an optional alias for the subquery</span> +</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> </span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a> -</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a><span class="sd"> Args:</span> -</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a><span class="sd"> alias (str | Expression): the SQL code string to parse as the table name.</span> -</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a><span class="sd"> If an `Expression` instance is passed, this is used as-is.</span> -</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a><span class="sd"> as_ (str | Expression): the SQL code string to parse as the table expression.</span> -</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a><span class="sd"> recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.</span> -</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a><span class="sd"> Returns:</span> +</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a><span class="sd"> Alias: the subquery</span> +</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a><span class="sd"> """</span> +</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a> <span class="k">return</span> <span class="n">Subquery</span><span class="p">(</span> +</span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a> <span class="n">this</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> +</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)),</span> +</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a> <span class="p">)</span> +</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a> +</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span> </span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a> -</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a><span class="sd"> Returns:</span> -</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a><span class="sd"> """</span> -</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a> <span class="n">alias_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="n">alias</span><span class="p">,</span> -</span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a> <span class="n">into</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">,</span> -</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a> <span class="p">)</span> -</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a> <span class="n">as_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a> <span class="n">as_</span><span class="p">,</span> -</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> <span class="p">)</span> -</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">CTE</span><span class="p">(</span> -</span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a> <span class="n">this</span><span class="o">=</span><span class="n">as_expression</span><span class="p">,</span> -</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias_expression</span><span class="p">,</span> -</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="p">)</span> -</span><span id="L-1657"><a href="#L-1657"><span class="linenos">1657</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a> <span class="n">cte</span><span class="p">,</span> -</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"with"</span><span class="p">,</span> -</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> <span class="n">into</span><span class="o">=</span><span class="n">With</span><span class="p">,</span> -</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> <span class="n">properties</span><span class="o">=</span><span class="p">{</span><span class="s2">"recursive"</span><span class="p">:</span> <span class="n">recursive</span> <span class="ow">or</span> <span class="kc">False</span><span class="p">},</span> -</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="p">)</span> +</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a> <span class="nd">@property</span> +</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a> <span class="k">def</span> <span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</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">"with"</span><span class="p">)</span> +</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">with_</span><span class="p">:</span> +</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a> <span class="k">return</span> <span class="n">with_</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a> +</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a> <span class="nd">@property</span> +</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Subqueryable objects must implement `selects`"</span><span class="p">)</span> +</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a> +</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a> <span class="nd">@property</span> +</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Subqueryable objects must implement `named_selects`"</span><span class="p">)</span> +</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> +</span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a> <span class="k">def</span> <span class="nf">with_</span><span class="p">(</span> +</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="n">alias</span><span class="p">,</span> +</span><span id="L-1657"><a href="#L-1657"><span class="linenos">1657</span></a> <span class="n">as_</span><span class="p">,</span> +</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a> <span class="n">recursive</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> <span class="p">):</span> +</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a><span class="sd"> Append to or set the common table expressions.</span> </span><span id="L-1666"><a href="#L-1666"><span class="linenos">1666</span></a> -</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a> -</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a><span class="n">QUERY_MODIFIERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1669"><a href="#L-1669"><span class="linenos">1669</span></a> <span class="s2">"match"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1670"><a href="#L-1670"><span class="linenos">1670</span></a> <span class="s2">"laterals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1671"><a href="#L-1671"><span class="linenos">1671</span></a> <span class="s2">"joins"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1672"><a href="#L-1672"><span class="linenos">1672</span></a> <span class="s2">"pivots"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1673"><a href="#L-1673"><span class="linenos">1673</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1674"><a href="#L-1674"><span class="linenos">1674</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1675"><a href="#L-1675"><span class="linenos">1675</span></a> <span class="s2">"having"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1676"><a href="#L-1676"><span class="linenos">1676</span></a> <span class="s2">"qualify"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1677"><a href="#L-1677"><span class="linenos">1677</span></a> <span class="s2">"windows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1678"><a href="#L-1678"><span class="linenos">1678</span></a> <span class="s2">"distribute"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1679"><a href="#L-1679"><span class="linenos">1679</span></a> <span class="s2">"sort"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1680"><a href="#L-1680"><span class="linenos">1680</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1681"><a href="#L-1681"><span class="linenos">1681</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1682"><a href="#L-1682"><span class="linenos">1682</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1683"><a href="#L-1683"><span class="linenos">1683</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1684"><a href="#L-1684"><span class="linenos">1684</span></a> <span class="s2">"lock"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1685"><a href="#L-1685"><span class="linenos">1685</span></a><span class="p">}</span> -</span><span id="L-1686"><a href="#L-1686"><span class="linenos">1686</span></a> -</span><span id="L-1687"><a href="#L-1687"><span class="linenos">1687</span></a> -</span><span id="L-1688"><a href="#L-1688"><span class="linenos">1688</span></a><span class="k">class</span> <span class="nc">Table</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1689"><a href="#L-1689"><span class="linenos">1689</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1690"><a href="#L-1690"><span class="linenos">1690</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1691"><a href="#L-1691"><span class="linenos">1691</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1692"><a href="#L-1692"><span class="linenos">1692</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1693"><a href="#L-1693"><span class="linenos">1693</span></a> <span class="s2">"catalog"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1694"><a href="#L-1694"><span class="linenos">1694</span></a> <span class="s2">"laterals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1695"><a href="#L-1695"><span class="linenos">1695</span></a> <span class="s2">"joins"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1696"><a href="#L-1696"><span class="linenos">1696</span></a> <span class="s2">"pivots"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1697"><a href="#L-1697"><span class="linenos">1697</span></a> <span class="s2">"hints"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1698"><a href="#L-1698"><span class="linenos">1698</span></a> <span class="s2">"system_time"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1699"><a href="#L-1699"><span class="linenos">1699</span></a> <span class="p">}</span> -</span><span id="L-1700"><a href="#L-1700"><span class="linenos">1700</span></a> -</span><span id="L-1701"><a href="#L-1701"><span class="linenos">1701</span></a> <span class="nd">@property</span> -</span><span id="L-1702"><a href="#L-1702"><span class="linenos">1702</span></a> <span class="k">def</span> <span class="nf">db</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1703"><a href="#L-1703"><span class="linenos">1703</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">)</span> -</span><span id="L-1704"><a href="#L-1704"><span class="linenos">1704</span></a> -</span><span id="L-1705"><a href="#L-1705"><span class="linenos">1705</span></a> <span class="nd">@property</span> -</span><span id="L-1706"><a href="#L-1706"><span class="linenos">1706</span></a> <span class="k">def</span> <span class="nf">catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1707"><a href="#L-1707"><span class="linenos">1707</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">)</span> -</span><span id="L-1708"><a href="#L-1708"><span class="linenos">1708</span></a> -</span><span id="L-1709"><a href="#L-1709"><span class="linenos">1709</span></a> -</span><span id="L-1710"><a href="#L-1710"><span class="linenos">1710</span></a><span class="c1"># See the TSQL "Querying data in a system-versioned temporal table" page</span> -</span><span id="L-1711"><a href="#L-1711"><span class="linenos">1711</span></a><span class="k">class</span> <span class="nc">SystemTime</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1712"><a href="#L-1712"><span class="linenos">1712</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1713"><a href="#L-1713"><span class="linenos">1713</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1714"><a href="#L-1714"><span class="linenos">1714</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1715"><a href="#L-1715"><span class="linenos">1715</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1716"><a href="#L-1716"><span class="linenos">1716</span></a> <span class="p">}</span> -</span><span id="L-1717"><a href="#L-1717"><span class="linenos">1717</span></a> -</span><span id="L-1718"><a href="#L-1718"><span class="linenos">1718</span></a> -</span><span id="L-1719"><a href="#L-1719"><span class="linenos">1719</span></a><span class="k">class</span> <span class="nc">Union</span><span class="p">(</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="L-1720"><a href="#L-1720"><span class="linenos">1720</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1721"><a href="#L-1721"><span class="linenos">1721</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1722"><a href="#L-1722"><span class="linenos">1722</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1723"><a href="#L-1723"><span class="linenos">1723</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1724"><a href="#L-1724"><span class="linenos">1724</span></a> <span class="s2">"distinct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1725"><a href="#L-1725"><span class="linenos">1725</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> -</span><span id="L-1726"><a href="#L-1726"><span class="linenos">1726</span></a> <span class="p">}</span> -</span><span id="L-1727"><a href="#L-1727"><span class="linenos">1727</span></a> -</span><span id="L-1728"><a href="#L-1728"><span class="linenos">1728</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-1729"><a href="#L-1729"><span class="linenos">1729</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1730"><a href="#L-1730"><span class="linenos">1730</span></a><span class="sd"> Set the LIMIT expression.</span> +</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a><span class="sd"> Example:</span> +</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a><span class="sd"> >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()</span> +</span><span id="L-1669"><a href="#L-1669"><span class="linenos">1669</span></a><span class="sd"> 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'</span> +</span><span id="L-1670"><a href="#L-1670"><span class="linenos">1670</span></a> +</span><span id="L-1671"><a href="#L-1671"><span class="linenos">1671</span></a><span class="sd"> Args:</span> +</span><span id="L-1672"><a href="#L-1672"><span class="linenos">1672</span></a><span class="sd"> alias (str | Expression): the SQL code string to parse as the table name.</span> +</span><span id="L-1673"><a href="#L-1673"><span class="linenos">1673</span></a><span class="sd"> If an `Expression` instance is passed, this is used as-is.</span> +</span><span id="L-1674"><a href="#L-1674"><span class="linenos">1674</span></a><span class="sd"> as_ (str | Expression): the SQL code string to parse as the table expression.</span> +</span><span id="L-1675"><a href="#L-1675"><span class="linenos">1675</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-1676"><a href="#L-1676"><span class="linenos">1676</span></a><span class="sd"> recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.</span> +</span><span id="L-1677"><a href="#L-1677"><span class="linenos">1677</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="L-1678"><a href="#L-1678"><span class="linenos">1678</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="L-1679"><a href="#L-1679"><span class="linenos">1679</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-1680"><a href="#L-1680"><span class="linenos">1680</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-1681"><a href="#L-1681"><span class="linenos">1681</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-1682"><a href="#L-1682"><span class="linenos">1682</span></a> +</span><span id="L-1683"><a href="#L-1683"><span class="linenos">1683</span></a><span class="sd"> Returns:</span> +</span><span id="L-1684"><a href="#L-1684"><span class="linenos">1684</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-1685"><a href="#L-1685"><span class="linenos">1685</span></a><span class="sd"> """</span> +</span><span id="L-1686"><a href="#L-1686"><span class="linenos">1686</span></a> <span class="n">alias_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-1687"><a href="#L-1687"><span class="linenos">1687</span></a> <span class="n">alias</span><span class="p">,</span> +</span><span id="L-1688"><a href="#L-1688"><span class="linenos">1688</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-1689"><a href="#L-1689"><span class="linenos">1689</span></a> <span class="n">into</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">,</span> +</span><span id="L-1690"><a href="#L-1690"><span class="linenos">1690</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-1691"><a href="#L-1691"><span class="linenos">1691</span></a> <span class="p">)</span> +</span><span id="L-1692"><a href="#L-1692"><span class="linenos">1692</span></a> <span class="n">as_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-1693"><a href="#L-1693"><span class="linenos">1693</span></a> <span class="n">as_</span><span class="p">,</span> +</span><span id="L-1694"><a href="#L-1694"><span class="linenos">1694</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-1695"><a href="#L-1695"><span class="linenos">1695</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-1696"><a href="#L-1696"><span class="linenos">1696</span></a> <span class="p">)</span> +</span><span id="L-1697"><a href="#L-1697"><span class="linenos">1697</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">CTE</span><span class="p">(</span> +</span><span id="L-1698"><a href="#L-1698"><span class="linenos">1698</span></a> <span class="n">this</span><span class="o">=</span><span class="n">as_expression</span><span class="p">,</span> +</span><span id="L-1699"><a href="#L-1699"><span class="linenos">1699</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias_expression</span><span class="p">,</span> +</span><span id="L-1700"><a href="#L-1700"><span class="linenos">1700</span></a> <span class="p">)</span> +</span><span id="L-1701"><a href="#L-1701"><span class="linenos">1701</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="L-1702"><a href="#L-1702"><span class="linenos">1702</span></a> <span class="n">cte</span><span class="p">,</span> +</span><span id="L-1703"><a href="#L-1703"><span class="linenos">1703</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-1704"><a href="#L-1704"><span class="linenos">1704</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"with"</span><span class="p">,</span> +</span><span id="L-1705"><a href="#L-1705"><span class="linenos">1705</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-1706"><a href="#L-1706"><span class="linenos">1706</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-1707"><a href="#L-1707"><span class="linenos">1707</span></a> <span class="n">into</span><span class="o">=</span><span class="n">With</span><span class="p">,</span> +</span><span id="L-1708"><a href="#L-1708"><span class="linenos">1708</span></a> <span class="n">properties</span><span class="o">=</span><span class="p">{</span><span class="s2">"recursive"</span><span class="p">:</span> <span class="n">recursive</span> <span class="ow">or</span> <span class="kc">False</span><span class="p">},</span> +</span><span id="L-1709"><a href="#L-1709"><span class="linenos">1709</span></a> <span class="p">)</span> +</span><span id="L-1710"><a href="#L-1710"><span class="linenos">1710</span></a> +</span><span id="L-1711"><a href="#L-1711"><span class="linenos">1711</span></a> +</span><span id="L-1712"><a href="#L-1712"><span class="linenos">1712</span></a><span class="n">QUERY_MODIFIERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1713"><a href="#L-1713"><span class="linenos">1713</span></a> <span class="s2">"match"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1714"><a href="#L-1714"><span class="linenos">1714</span></a> <span class="s2">"laterals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1715"><a href="#L-1715"><span class="linenos">1715</span></a> <span class="s2">"joins"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1716"><a href="#L-1716"><span class="linenos">1716</span></a> <span class="s2">"pivots"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1717"><a href="#L-1717"><span class="linenos">1717</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1718"><a href="#L-1718"><span class="linenos">1718</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1719"><a href="#L-1719"><span class="linenos">1719</span></a> <span class="s2">"having"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1720"><a href="#L-1720"><span class="linenos">1720</span></a> <span class="s2">"qualify"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1721"><a href="#L-1721"><span class="linenos">1721</span></a> <span class="s2">"windows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1722"><a href="#L-1722"><span class="linenos">1722</span></a> <span class="s2">"distribute"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1723"><a href="#L-1723"><span class="linenos">1723</span></a> <span class="s2">"sort"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1724"><a href="#L-1724"><span class="linenos">1724</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1725"><a href="#L-1725"><span class="linenos">1725</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1726"><a href="#L-1726"><span class="linenos">1726</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1727"><a href="#L-1727"><span class="linenos">1727</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1728"><a href="#L-1728"><span class="linenos">1728</span></a> <span class="s2">"lock"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1729"><a href="#L-1729"><span class="linenos">1729</span></a><span class="p">}</span> +</span><span id="L-1730"><a href="#L-1730"><span class="linenos">1730</span></a> </span><span id="L-1731"><a href="#L-1731"><span class="linenos">1731</span></a> -</span><span id="L-1732"><a href="#L-1732"><span class="linenos">1732</span></a><span class="sd"> Example:</span> -</span><span id="L-1733"><a href="#L-1733"><span class="linenos">1733</span></a><span class="sd"> >>> select("1").union(select("1")).limit(1).sql()</span> -</span><span id="L-1734"><a href="#L-1734"><span class="linenos">1734</span></a><span class="sd"> 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'</span> -</span><span id="L-1735"><a href="#L-1735"><span class="linenos">1735</span></a> -</span><span id="L-1736"><a href="#L-1736"><span class="linenos">1736</span></a><span class="sd"> Args:</span> -</span><span id="L-1737"><a href="#L-1737"><span class="linenos">1737</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> -</span><span id="L-1738"><a href="#L-1738"><span class="linenos">1738</span></a><span class="sd"> This can also be an integer.</span> -</span><span id="L-1739"><a href="#L-1739"><span class="linenos">1739</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> -</span><span id="L-1740"><a href="#L-1740"><span class="linenos">1740</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> -</span><span id="L-1741"><a href="#L-1741"><span class="linenos">1741</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-1742"><a href="#L-1742"><span class="linenos">1742</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-1743"><a href="#L-1743"><span class="linenos">1743</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-1732"><a href="#L-1732"><span class="linenos">1732</span></a><span class="k">class</span> <span class="nc">Table</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1733"><a href="#L-1733"><span class="linenos">1733</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1734"><a href="#L-1734"><span class="linenos">1734</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1735"><a href="#L-1735"><span class="linenos">1735</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1736"><a href="#L-1736"><span class="linenos">1736</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1737"><a href="#L-1737"><span class="linenos">1737</span></a> <span class="s2">"catalog"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1738"><a href="#L-1738"><span class="linenos">1738</span></a> <span class="s2">"laterals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1739"><a href="#L-1739"><span class="linenos">1739</span></a> <span class="s2">"joins"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1740"><a href="#L-1740"><span class="linenos">1740</span></a> <span class="s2">"pivots"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1741"><a href="#L-1741"><span class="linenos">1741</span></a> <span class="s2">"hints"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1742"><a href="#L-1742"><span class="linenos">1742</span></a> <span class="s2">"system_time"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1743"><a href="#L-1743"><span class="linenos">1743</span></a> <span class="p">}</span> </span><span id="L-1744"><a href="#L-1744"><span class="linenos">1744</span></a> -</span><span id="L-1745"><a href="#L-1745"><span class="linenos">1745</span></a><span class="sd"> Returns:</span> -</span><span id="L-1746"><a href="#L-1746"><span class="linenos">1746</span></a><span class="sd"> Select: The limited subqueryable.</span> -</span><span id="L-1747"><a href="#L-1747"><span class="linenos">1747</span></a><span class="sd"> """</span> -</span><span id="L-1748"><a href="#L-1748"><span class="linenos">1748</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="L-1749"><a href="#L-1749"><span class="linenos">1749</span></a> <span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> -</span><span id="L-1750"><a href="#L-1750"><span class="linenos">1750</span></a> <span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_l_0"</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> -</span><span id="L-1751"><a href="#L-1751"><span class="linenos">1751</span></a> <span class="o">.</span><span class="n">limit</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="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-1752"><a href="#L-1752"><span class="linenos">1752</span></a> <span class="p">)</span> +</span><span id="L-1745"><a href="#L-1745"><span class="linenos">1745</span></a> <span class="nd">@property</span> +</span><span id="L-1746"><a href="#L-1746"><span class="linenos">1746</span></a> <span class="k">def</span> <span class="nf">db</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1747"><a href="#L-1747"><span class="linenos">1747</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">)</span> +</span><span id="L-1748"><a href="#L-1748"><span class="linenos">1748</span></a> +</span><span id="L-1749"><a href="#L-1749"><span class="linenos">1749</span></a> <span class="nd">@property</span> +</span><span id="L-1750"><a href="#L-1750"><span class="linenos">1750</span></a> <span class="k">def</span> <span class="nf">catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1751"><a href="#L-1751"><span class="linenos">1751</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">)</span> +</span><span id="L-1752"><a href="#L-1752"><span class="linenos">1752</span></a> </span><span id="L-1753"><a href="#L-1753"><span class="linenos">1753</span></a> -</span><span id="L-1754"><a href="#L-1754"><span class="linenos">1754</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> -</span><span id="L-1755"><a href="#L-1755"><span class="linenos">1755</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1756"><a href="#L-1756"><span class="linenos">1756</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="L-1757"><a href="#L-1757"><span class="linenos">1757</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1758"><a href="#L-1758"><span class="linenos">1758</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-1759"><a href="#L-1759"><span class="linenos">1759</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1760"><a href="#L-1760"><span class="linenos">1760</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1761"><a href="#L-1761"><span class="linenos">1761</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> -</span><span id="L-1762"><a href="#L-1762"><span class="linenos">1762</span></a><span class="w"> </span><span class="sd">"""Append to or set the SELECT of the union recursively.</span> -</span><span id="L-1763"><a href="#L-1763"><span class="linenos">1763</span></a> -</span><span id="L-1764"><a href="#L-1764"><span class="linenos">1764</span></a><span class="sd"> Example:</span> -</span><span id="L-1765"><a href="#L-1765"><span class="linenos">1765</span></a><span class="sd"> >>> from sqlglot import parse_one</span> -</span><span id="L-1766"><a href="#L-1766"><span class="linenos">1766</span></a><span class="sd"> >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()</span> -</span><span id="L-1767"><a href="#L-1767"><span class="linenos">1767</span></a><span class="sd"> 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'</span> -</span><span id="L-1768"><a href="#L-1768"><span class="linenos">1768</span></a> -</span><span id="L-1769"><a href="#L-1769"><span class="linenos">1769</span></a><span class="sd"> Args:</span> -</span><span id="L-1770"><a href="#L-1770"><span class="linenos">1770</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="L-1771"><a href="#L-1771"><span class="linenos">1771</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-1772"><a href="#L-1772"><span class="linenos">1772</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> -</span><span id="L-1773"><a href="#L-1773"><span class="linenos">1773</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="L-1774"><a href="#L-1774"><span class="linenos">1774</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="L-1775"><a href="#L-1775"><span class="linenos">1775</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> -</span><span id="L-1776"><a href="#L-1776"><span class="linenos">1776</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="L-1777"><a href="#L-1777"><span class="linenos">1777</span></a> -</span><span id="L-1778"><a href="#L-1778"><span class="linenos">1778</span></a><span class="sd"> Returns:</span> -</span><span id="L-1779"><a href="#L-1779"><span class="linenos">1779</span></a><span class="sd"> Union: the modified expression.</span> -</span><span id="L-1780"><a href="#L-1780"><span class="linenos">1780</span></a><span class="sd"> """</span> -</span><span id="L-1781"><a href="#L-1781"><span class="linenos">1781</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> -</span><span id="L-1782"><a href="#L-1782"><span class="linenos">1782</span></a> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-1783"><a href="#L-1783"><span class="linenos">1783</span></a> <span class="n">this</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span> -</span><span id="L-1784"><a href="#L-1784"><span class="linenos">1784</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="L-1785"><a href="#L-1785"><span class="linenos">1785</span></a> <span class="p">)</span> -</span><span id="L-1786"><a href="#L-1786"><span class="linenos">1786</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-1787"><a href="#L-1787"><span class="linenos">1787</span></a> -</span><span id="L-1788"><a href="#L-1788"><span class="linenos">1788</span></a> <span class="nd">@property</span> -</span><span id="L-1789"><a href="#L-1789"><span class="linenos">1789</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1790"><a href="#L-1790"><span class="linenos">1790</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">named_selects</span> -</span><span id="L-1791"><a href="#L-1791"><span class="linenos">1791</span></a> -</span><span id="L-1792"><a href="#L-1792"><span class="linenos">1792</span></a> <span class="nd">@property</span> -</span><span id="L-1793"><a href="#L-1793"><span class="linenos">1793</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1794"><a href="#L-1794"><span class="linenos">1794</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">selects</span> -</span><span id="L-1795"><a href="#L-1795"><span class="linenos">1795</span></a> -</span><span id="L-1796"><a href="#L-1796"><span class="linenos">1796</span></a> <span class="nd">@property</span> -</span><span id="L-1797"><a href="#L-1797"><span class="linenos">1797</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1798"><a href="#L-1798"><span class="linenos">1798</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-1799"><a href="#L-1799"><span class="linenos">1799</span></a> -</span><span id="L-1800"><a href="#L-1800"><span class="linenos">1800</span></a> <span class="nd">@property</span> -</span><span id="L-1801"><a href="#L-1801"><span class="linenos">1801</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-1802"><a href="#L-1802"><span class="linenos">1802</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> -</span><span id="L-1803"><a href="#L-1803"><span class="linenos">1803</span></a> -</span><span id="L-1804"><a href="#L-1804"><span class="linenos">1804</span></a> -</span><span id="L-1805"><a href="#L-1805"><span class="linenos">1805</span></a><span class="k">class</span> <span class="nc">Except</span><span class="p">(</span><span class="n">Union</span><span class="p">):</span> -</span><span id="L-1806"><a href="#L-1806"><span class="linenos">1806</span></a> <span class="k">pass</span> +</span><span id="L-1754"><a href="#L-1754"><span class="linenos">1754</span></a><span class="c1"># See the TSQL "Querying data in a system-versioned temporal table" page</span> +</span><span id="L-1755"><a href="#L-1755"><span class="linenos">1755</span></a><span class="k">class</span> <span class="nc">SystemTime</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1756"><a href="#L-1756"><span class="linenos">1756</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1757"><a href="#L-1757"><span class="linenos">1757</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1758"><a href="#L-1758"><span class="linenos">1758</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1759"><a href="#L-1759"><span class="linenos">1759</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1760"><a href="#L-1760"><span class="linenos">1760</span></a> <span class="p">}</span> +</span><span id="L-1761"><a href="#L-1761"><span class="linenos">1761</span></a> +</span><span id="L-1762"><a href="#L-1762"><span class="linenos">1762</span></a> +</span><span id="L-1763"><a href="#L-1763"><span class="linenos">1763</span></a><span class="k">class</span> <span class="nc">Union</span><span class="p">(</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="L-1764"><a href="#L-1764"><span class="linenos">1764</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1765"><a href="#L-1765"><span class="linenos">1765</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1766"><a href="#L-1766"><span class="linenos">1766</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1767"><a href="#L-1767"><span class="linenos">1767</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1768"><a href="#L-1768"><span class="linenos">1768</span></a> <span class="s2">"distinct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1769"><a href="#L-1769"><span class="linenos">1769</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> +</span><span id="L-1770"><a href="#L-1770"><span class="linenos">1770</span></a> <span class="p">}</span> +</span><span id="L-1771"><a href="#L-1771"><span class="linenos">1771</span></a> +</span><span id="L-1772"><a href="#L-1772"><span class="linenos">1772</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-1773"><a href="#L-1773"><span class="linenos">1773</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1774"><a href="#L-1774"><span class="linenos">1774</span></a><span class="sd"> Set the LIMIT expression.</span> +</span><span id="L-1775"><a href="#L-1775"><span class="linenos">1775</span></a> +</span><span id="L-1776"><a href="#L-1776"><span class="linenos">1776</span></a><span class="sd"> Example:</span> +</span><span id="L-1777"><a href="#L-1777"><span class="linenos">1777</span></a><span class="sd"> >>> select("1").union(select("1")).limit(1).sql()</span> +</span><span id="L-1778"><a href="#L-1778"><span class="linenos">1778</span></a><span class="sd"> 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'</span> +</span><span id="L-1779"><a href="#L-1779"><span class="linenos">1779</span></a> +</span><span id="L-1780"><a href="#L-1780"><span class="linenos">1780</span></a><span class="sd"> Args:</span> +</span><span id="L-1781"><a href="#L-1781"><span class="linenos">1781</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> +</span><span id="L-1782"><a href="#L-1782"><span class="linenos">1782</span></a><span class="sd"> This can also be an integer.</span> +</span><span id="L-1783"><a href="#L-1783"><span class="linenos">1783</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> +</span><span id="L-1784"><a href="#L-1784"><span class="linenos">1784</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> +</span><span id="L-1785"><a href="#L-1785"><span class="linenos">1785</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-1786"><a href="#L-1786"><span class="linenos">1786</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-1787"><a href="#L-1787"><span class="linenos">1787</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-1788"><a href="#L-1788"><span class="linenos">1788</span></a> +</span><span id="L-1789"><a href="#L-1789"><span class="linenos">1789</span></a><span class="sd"> Returns:</span> +</span><span id="L-1790"><a href="#L-1790"><span class="linenos">1790</span></a><span class="sd"> Select: The limited subqueryable.</span> +</span><span id="L-1791"><a href="#L-1791"><span class="linenos">1791</span></a><span class="sd"> """</span> +</span><span id="L-1792"><a href="#L-1792"><span class="linenos">1792</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="L-1793"><a href="#L-1793"><span class="linenos">1793</span></a> <span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> +</span><span id="L-1794"><a href="#L-1794"><span class="linenos">1794</span></a> <span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_l_0"</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> +</span><span id="L-1795"><a href="#L-1795"><span class="linenos">1795</span></a> <span class="o">.</span><span class="n">limit</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="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-1796"><a href="#L-1796"><span class="linenos">1796</span></a> <span class="p">)</span> +</span><span id="L-1797"><a href="#L-1797"><span class="linenos">1797</span></a> +</span><span id="L-1798"><a href="#L-1798"><span class="linenos">1798</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> +</span><span id="L-1799"><a href="#L-1799"><span class="linenos">1799</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1800"><a href="#L-1800"><span class="linenos">1800</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="L-1801"><a href="#L-1801"><span class="linenos">1801</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1802"><a href="#L-1802"><span class="linenos">1802</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-1803"><a href="#L-1803"><span class="linenos">1803</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1804"><a href="#L-1804"><span class="linenos">1804</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-1805"><a href="#L-1805"><span class="linenos">1805</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> +</span><span id="L-1806"><a href="#L-1806"><span class="linenos">1806</span></a><span class="w"> </span><span class="sd">"""Append to or set the SELECT of the union recursively.</span> </span><span id="L-1807"><a href="#L-1807"><span class="linenos">1807</span></a> -</span><span id="L-1808"><a href="#L-1808"><span class="linenos">1808</span></a> -</span><span id="L-1809"><a href="#L-1809"><span class="linenos">1809</span></a><span class="k">class</span> <span class="nc">Intersect</span><span class="p">(</span><span class="n">Union</span><span class="p">):</span> -</span><span id="L-1810"><a href="#L-1810"><span class="linenos">1810</span></a> <span class="k">pass</span> -</span><span id="L-1811"><a href="#L-1811"><span class="linenos">1811</span></a> +</span><span id="L-1808"><a href="#L-1808"><span class="linenos">1808</span></a><span class="sd"> Example:</span> +</span><span id="L-1809"><a href="#L-1809"><span class="linenos">1809</span></a><span class="sd"> >>> from sqlglot import parse_one</span> +</span><span id="L-1810"><a href="#L-1810"><span class="linenos">1810</span></a><span class="sd"> >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()</span> +</span><span id="L-1811"><a href="#L-1811"><span class="linenos">1811</span></a><span class="sd"> 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'</span> </span><span id="L-1812"><a href="#L-1812"><span class="linenos">1812</span></a> -</span><span id="L-1813"><a href="#L-1813"><span class="linenos">1813</span></a><span class="k">class</span> <span class="nc">Unnest</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> -</span><span id="L-1814"><a href="#L-1814"><span class="linenos">1814</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1815"><a href="#L-1815"><span class="linenos">1815</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1816"><a href="#L-1816"><span class="linenos">1816</span></a> <span class="s2">"ordinality"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1817"><a href="#L-1817"><span class="linenos">1817</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1818"><a href="#L-1818"><span class="linenos">1818</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1819"><a href="#L-1819"><span class="linenos">1819</span></a> <span class="p">}</span> -</span><span id="L-1820"><a href="#L-1820"><span class="linenos">1820</span></a> +</span><span id="L-1813"><a href="#L-1813"><span class="linenos">1813</span></a><span class="sd"> Args:</span> +</span><span id="L-1814"><a href="#L-1814"><span class="linenos">1814</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="L-1815"><a href="#L-1815"><span class="linenos">1815</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-1816"><a href="#L-1816"><span class="linenos">1816</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> +</span><span id="L-1817"><a href="#L-1817"><span class="linenos">1817</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="L-1818"><a href="#L-1818"><span class="linenos">1818</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="L-1819"><a href="#L-1819"><span class="linenos">1819</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="L-1820"><a href="#L-1820"><span class="linenos">1820</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> </span><span id="L-1821"><a href="#L-1821"><span class="linenos">1821</span></a> -</span><span id="L-1822"><a href="#L-1822"><span class="linenos">1822</span></a><span class="k">class</span> <span class="nc">Update</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1823"><a href="#L-1823"><span class="linenos">1823</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1824"><a href="#L-1824"><span class="linenos">1824</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1825"><a href="#L-1825"><span class="linenos">1825</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1826"><a href="#L-1826"><span class="linenos">1826</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1827"><a href="#L-1827"><span class="linenos">1827</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1828"><a href="#L-1828"><span class="linenos">1828</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1829"><a href="#L-1829"><span class="linenos">1829</span></a> <span class="p">}</span> -</span><span id="L-1830"><a href="#L-1830"><span class="linenos">1830</span></a> +</span><span id="L-1822"><a href="#L-1822"><span class="linenos">1822</span></a><span class="sd"> Returns:</span> +</span><span id="L-1823"><a href="#L-1823"><span class="linenos">1823</span></a><span class="sd"> Union: the modified expression.</span> +</span><span id="L-1824"><a href="#L-1824"><span class="linenos">1824</span></a><span class="sd"> """</span> +</span><span id="L-1825"><a href="#L-1825"><span class="linenos">1825</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> +</span><span id="L-1826"><a href="#L-1826"><span class="linenos">1826</span></a> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-1827"><a href="#L-1827"><span class="linenos">1827</span></a> <span class="n">this</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span> +</span><span id="L-1828"><a href="#L-1828"><span class="linenos">1828</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="L-1829"><a href="#L-1829"><span class="linenos">1829</span></a> <span class="p">)</span> +</span><span id="L-1830"><a href="#L-1830"><span class="linenos">1830</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-1831"><a href="#L-1831"><span class="linenos">1831</span></a> -</span><span id="L-1832"><a href="#L-1832"><span class="linenos">1832</span></a><span class="k">class</span> <span class="nc">Values</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> -</span><span id="L-1833"><a href="#L-1833"><span class="linenos">1833</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1834"><a href="#L-1834"><span class="linenos">1834</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1835"><a href="#L-1835"><span class="linenos">1835</span></a> <span class="s2">"ordinality"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1836"><a href="#L-1836"><span class="linenos">1836</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1837"><a href="#L-1837"><span class="linenos">1837</span></a> <span class="p">}</span> -</span><span id="L-1838"><a href="#L-1838"><span class="linenos">1838</span></a> +</span><span id="L-1832"><a href="#L-1832"><span class="linenos">1832</span></a> <span class="nd">@property</span> +</span><span id="L-1833"><a href="#L-1833"><span class="linenos">1833</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1834"><a href="#L-1834"><span class="linenos">1834</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">named_selects</span> +</span><span id="L-1835"><a href="#L-1835"><span class="linenos">1835</span></a> +</span><span id="L-1836"><a href="#L-1836"><span class="linenos">1836</span></a> <span class="nd">@property</span> +</span><span id="L-1837"><a href="#L-1837"><span class="linenos">1837</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-1838"><a href="#L-1838"><span class="linenos">1838</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_star</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> </span><span id="L-1839"><a href="#L-1839"><span class="linenos">1839</span></a> -</span><span id="L-1840"><a href="#L-1840"><span class="linenos">1840</span></a><span class="k">class</span> <span class="nc">Var</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1841"><a href="#L-1841"><span class="linenos">1841</span></a> <span class="k">pass</span> -</span><span id="L-1842"><a href="#L-1842"><span class="linenos">1842</span></a> +</span><span id="L-1840"><a href="#L-1840"><span class="linenos">1840</span></a> <span class="nd">@property</span> +</span><span id="L-1841"><a href="#L-1841"><span class="linenos">1841</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1842"><a href="#L-1842"><span class="linenos">1842</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">selects</span> </span><span id="L-1843"><a href="#L-1843"><span class="linenos">1843</span></a> -</span><span id="L-1844"><a href="#L-1844"><span class="linenos">1844</span></a><span class="k">class</span> <span class="nc">Schema</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1845"><a href="#L-1845"><span class="linenos">1845</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-1846"><a href="#L-1846"><span class="linenos">1846</span></a> +</span><span id="L-1844"><a href="#L-1844"><span class="linenos">1844</span></a> <span class="nd">@property</span> +</span><span id="L-1845"><a href="#L-1845"><span class="linenos">1845</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1846"><a href="#L-1846"><span class="linenos">1846</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> </span><span id="L-1847"><a href="#L-1847"><span class="linenos">1847</span></a> -</span><span id="L-1848"><a href="#L-1848"><span class="linenos">1848</span></a><span class="c1"># Used to represent the FOR UPDATE and FOR SHARE locking read types.</span> -</span><span id="L-1849"><a href="#L-1849"><span class="linenos">1849</span></a><span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html</span> -</span><span id="L-1850"><a href="#L-1850"><span class="linenos">1850</span></a><span class="k">class</span> <span class="nc">Lock</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-1851"><a href="#L-1851"><span class="linenos">1851</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"update"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1848"><a href="#L-1848"><span class="linenos">1848</span></a> <span class="nd">@property</span> +</span><span id="L-1849"><a href="#L-1849"><span class="linenos">1849</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-1850"><a href="#L-1850"><span class="linenos">1850</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> +</span><span id="L-1851"><a href="#L-1851"><span class="linenos">1851</span></a> </span><span id="L-1852"><a href="#L-1852"><span class="linenos">1852</span></a> -</span><span id="L-1853"><a href="#L-1853"><span class="linenos">1853</span></a> -</span><span id="L-1854"><a href="#L-1854"><span class="linenos">1854</span></a><span class="k">class</span> <span class="nc">Select</span><span class="p">(</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="L-1855"><a href="#L-1855"><span class="linenos">1855</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-1856"><a href="#L-1856"><span class="linenos">1856</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1857"><a href="#L-1857"><span class="linenos">1857</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1858"><a href="#L-1858"><span class="linenos">1858</span></a> <span class="s2">"hint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1859"><a href="#L-1859"><span class="linenos">1859</span></a> <span class="s2">"distinct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1860"><a href="#L-1860"><span class="linenos">1860</span></a> <span class="s2">"into"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1861"><a href="#L-1861"><span class="linenos">1861</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1862"><a href="#L-1862"><span class="linenos">1862</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> -</span><span id="L-1863"><a href="#L-1863"><span class="linenos">1863</span></a> <span class="p">}</span> -</span><span id="L-1864"><a href="#L-1864"><span class="linenos">1864</span></a> -</span><span id="L-1865"><a href="#L-1865"><span class="linenos">1865</span></a> <span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-1866"><a href="#L-1866"><span class="linenos">1866</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1867"><a href="#L-1867"><span class="linenos">1867</span></a><span class="sd"> Set the FROM expression.</span> +</span><span id="L-1853"><a href="#L-1853"><span class="linenos">1853</span></a><span class="k">class</span> <span class="nc">Except</span><span class="p">(</span><span class="n">Union</span><span class="p">):</span> +</span><span id="L-1854"><a href="#L-1854"><span class="linenos">1854</span></a> <span class="k">pass</span> +</span><span id="L-1855"><a href="#L-1855"><span class="linenos">1855</span></a> +</span><span id="L-1856"><a href="#L-1856"><span class="linenos">1856</span></a> +</span><span id="L-1857"><a href="#L-1857"><span class="linenos">1857</span></a><span class="k">class</span> <span class="nc">Intersect</span><span class="p">(</span><span class="n">Union</span><span class="p">):</span> +</span><span id="L-1858"><a href="#L-1858"><span class="linenos">1858</span></a> <span class="k">pass</span> +</span><span id="L-1859"><a href="#L-1859"><span class="linenos">1859</span></a> +</span><span id="L-1860"><a href="#L-1860"><span class="linenos">1860</span></a> +</span><span id="L-1861"><a href="#L-1861"><span class="linenos">1861</span></a><span class="k">class</span> <span class="nc">Unnest</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> +</span><span id="L-1862"><a href="#L-1862"><span class="linenos">1862</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1863"><a href="#L-1863"><span class="linenos">1863</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1864"><a href="#L-1864"><span class="linenos">1864</span></a> <span class="s2">"ordinality"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1865"><a href="#L-1865"><span class="linenos">1865</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1866"><a href="#L-1866"><span class="linenos">1866</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1867"><a href="#L-1867"><span class="linenos">1867</span></a> <span class="p">}</span> </span><span id="L-1868"><a href="#L-1868"><span class="linenos">1868</span></a> -</span><span id="L-1869"><a href="#L-1869"><span class="linenos">1869</span></a><span class="sd"> Example:</span> -</span><span id="L-1870"><a href="#L-1870"><span class="linenos">1870</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sql()</span> -</span><span id="L-1871"><a href="#L-1871"><span class="linenos">1871</span></a><span class="sd"> 'SELECT x FROM tbl'</span> -</span><span id="L-1872"><a href="#L-1872"><span class="linenos">1872</span></a> -</span><span id="L-1873"><a href="#L-1873"><span class="linenos">1873</span></a><span class="sd"> Args:</span> -</span><span id="L-1874"><a href="#L-1874"><span class="linenos">1874</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-1875"><a href="#L-1875"><span class="linenos">1875</span></a><span class="sd"> If a `From` instance is passed, this is used as-is.</span> -</span><span id="L-1876"><a href="#L-1876"><span class="linenos">1876</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `From`.</span> -</span><span id="L-1877"><a href="#L-1877"><span class="linenos">1877</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="L-1878"><a href="#L-1878"><span class="linenos">1878</span></a><span class="sd"> Otherwise, this flattens all the `From` expression into a single expression.</span> -</span><span id="L-1879"><a href="#L-1879"><span class="linenos">1879</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-1880"><a href="#L-1880"><span class="linenos">1880</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-1881"><a href="#L-1881"><span class="linenos">1881</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-1882"><a href="#L-1882"><span class="linenos">1882</span></a> -</span><span id="L-1883"><a href="#L-1883"><span class="linenos">1883</span></a><span class="sd"> Returns:</span> -</span><span id="L-1884"><a href="#L-1884"><span class="linenos">1884</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-1885"><a href="#L-1885"><span class="linenos">1885</span></a><span class="sd"> """</span> -</span><span id="L-1886"><a href="#L-1886"><span class="linenos">1886</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="L-1887"><a href="#L-1887"><span class="linenos">1887</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-1888"><a href="#L-1888"><span class="linenos">1888</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-1889"><a href="#L-1889"><span class="linenos">1889</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"from"</span><span class="p">,</span> -</span><span id="L-1890"><a href="#L-1890"><span class="linenos">1890</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-1891"><a href="#L-1891"><span class="linenos">1891</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-1892"><a href="#L-1892"><span class="linenos">1892</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> -</span><span id="L-1893"><a href="#L-1893"><span class="linenos">1893</span></a> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> -</span><span id="L-1894"><a href="#L-1894"><span class="linenos">1894</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-1895"><a href="#L-1895"><span class="linenos">1895</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1896"><a href="#L-1896"><span class="linenos">1896</span></a> <span class="p">)</span> -</span><span id="L-1897"><a href="#L-1897"><span class="linenos">1897</span></a> -</span><span id="L-1898"><a href="#L-1898"><span class="linenos">1898</span></a> <span class="k">def</span> <span class="nf">group_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-1899"><a href="#L-1899"><span class="linenos">1899</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1900"><a href="#L-1900"><span class="linenos">1900</span></a><span class="sd"> Set the GROUP BY expression.</span> +</span><span id="L-1869"><a href="#L-1869"><span class="linenos">1869</span></a> +</span><span id="L-1870"><a href="#L-1870"><span class="linenos">1870</span></a><span class="k">class</span> <span class="nc">Update</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1871"><a href="#L-1871"><span class="linenos">1871</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1872"><a href="#L-1872"><span class="linenos">1872</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1873"><a href="#L-1873"><span class="linenos">1873</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1874"><a href="#L-1874"><span class="linenos">1874</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1875"><a href="#L-1875"><span class="linenos">1875</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1876"><a href="#L-1876"><span class="linenos">1876</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1877"><a href="#L-1877"><span class="linenos">1877</span></a> <span class="p">}</span> +</span><span id="L-1878"><a href="#L-1878"><span class="linenos">1878</span></a> +</span><span id="L-1879"><a href="#L-1879"><span class="linenos">1879</span></a> +</span><span id="L-1880"><a href="#L-1880"><span class="linenos">1880</span></a><span class="k">class</span> <span class="nc">Values</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> +</span><span id="L-1881"><a href="#L-1881"><span class="linenos">1881</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1882"><a href="#L-1882"><span class="linenos">1882</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1883"><a href="#L-1883"><span class="linenos">1883</span></a> <span class="s2">"ordinality"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1884"><a href="#L-1884"><span class="linenos">1884</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1885"><a href="#L-1885"><span class="linenos">1885</span></a> <span class="p">}</span> +</span><span id="L-1886"><a href="#L-1886"><span class="linenos">1886</span></a> +</span><span id="L-1887"><a href="#L-1887"><span class="linenos">1887</span></a> +</span><span id="L-1888"><a href="#L-1888"><span class="linenos">1888</span></a><span class="k">class</span> <span class="nc">Var</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1889"><a href="#L-1889"><span class="linenos">1889</span></a> <span class="k">pass</span> +</span><span id="L-1890"><a href="#L-1890"><span class="linenos">1890</span></a> +</span><span id="L-1891"><a href="#L-1891"><span class="linenos">1891</span></a> +</span><span id="L-1892"><a href="#L-1892"><span class="linenos">1892</span></a><span class="k">class</span> <span class="nc">Schema</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1893"><a href="#L-1893"><span class="linenos">1893</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-1894"><a href="#L-1894"><span class="linenos">1894</span></a> +</span><span id="L-1895"><a href="#L-1895"><span class="linenos">1895</span></a> +</span><span id="L-1896"><a href="#L-1896"><span class="linenos">1896</span></a><span class="c1"># Used to represent the FOR UPDATE and FOR SHARE locking read types.</span> +</span><span id="L-1897"><a href="#L-1897"><span class="linenos">1897</span></a><span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html</span> +</span><span id="L-1898"><a href="#L-1898"><span class="linenos">1898</span></a><span class="k">class</span> <span class="nc">Lock</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-1899"><a href="#L-1899"><span class="linenos">1899</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"update"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-1900"><a href="#L-1900"><span class="linenos">1900</span></a> </span><span id="L-1901"><a href="#L-1901"><span class="linenos">1901</span></a> -</span><span id="L-1902"><a href="#L-1902"><span class="linenos">1902</span></a><span class="sd"> Example:</span> -</span><span id="L-1903"><a href="#L-1903"><span class="linenos">1903</span></a><span class="sd"> >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()</span> -</span><span id="L-1904"><a href="#L-1904"><span class="linenos">1904</span></a><span class="sd"> 'SELECT x, COUNT(1) FROM tbl GROUP BY x'</span> -</span><span id="L-1905"><a href="#L-1905"><span class="linenos">1905</span></a> -</span><span id="L-1906"><a href="#L-1906"><span class="linenos">1906</span></a><span class="sd"> Args:</span> -</span><span id="L-1907"><a href="#L-1907"><span class="linenos">1907</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-1908"><a href="#L-1908"><span class="linenos">1908</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="L-1909"><a href="#L-1909"><span class="linenos">1909</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Group`.</span> -</span><span id="L-1910"><a href="#L-1910"><span class="linenos">1910</span></a><span class="sd"> If nothing is passed in then a group by is not applied to the expression</span> -</span><span id="L-1911"><a href="#L-1911"><span class="linenos">1911</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="L-1912"><a href="#L-1912"><span class="linenos">1912</span></a><span class="sd"> Otherwise, this flattens all the `Group` expression into a single expression.</span> -</span><span id="L-1913"><a href="#L-1913"><span class="linenos">1913</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-1914"><a href="#L-1914"><span class="linenos">1914</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-1915"><a href="#L-1915"><span class="linenos">1915</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-1902"><a href="#L-1902"><span class="linenos">1902</span></a><span class="k">class</span> <span class="nc">Select</span><span class="p">(</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="L-1903"><a href="#L-1903"><span class="linenos">1903</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-1904"><a href="#L-1904"><span class="linenos">1904</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1905"><a href="#L-1905"><span class="linenos">1905</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1906"><a href="#L-1906"><span class="linenos">1906</span></a> <span class="s2">"hint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1907"><a href="#L-1907"><span class="linenos">1907</span></a> <span class="s2">"distinct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1908"><a href="#L-1908"><span class="linenos">1908</span></a> <span class="s2">"into"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1909"><a href="#L-1909"><span class="linenos">1909</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1910"><a href="#L-1910"><span class="linenos">1910</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> +</span><span id="L-1911"><a href="#L-1911"><span class="linenos">1911</span></a> <span class="p">}</span> +</span><span id="L-1912"><a href="#L-1912"><span class="linenos">1912</span></a> +</span><span id="L-1913"><a href="#L-1913"><span class="linenos">1913</span></a> <span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-1914"><a href="#L-1914"><span class="linenos">1914</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1915"><a href="#L-1915"><span class="linenos">1915</span></a><span class="sd"> Set the FROM expression.</span> </span><span id="L-1916"><a href="#L-1916"><span class="linenos">1916</span></a> -</span><span id="L-1917"><a href="#L-1917"><span class="linenos">1917</span></a><span class="sd"> Returns:</span> -</span><span id="L-1918"><a href="#L-1918"><span class="linenos">1918</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-1919"><a href="#L-1919"><span class="linenos">1919</span></a><span class="sd"> """</span> -</span><span id="L-1920"><a href="#L-1920"><span class="linenos">1920</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-1921"><a href="#L-1921"><span class="linenos">1921</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-1922"><a href="#L-1922"><span class="linenos">1922</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="L-1923"><a href="#L-1923"><span class="linenos">1923</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-1924"><a href="#L-1924"><span class="linenos">1924</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-1925"><a href="#L-1925"><span class="linenos">1925</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"group"</span><span class="p">,</span> -</span><span id="L-1926"><a href="#L-1926"><span class="linenos">1926</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-1927"><a href="#L-1927"><span class="linenos">1927</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-1928"><a href="#L-1928"><span class="linenos">1928</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"GROUP BY"</span><span class="p">,</span> -</span><span id="L-1929"><a href="#L-1929"><span class="linenos">1929</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Group</span><span class="p">,</span> -</span><span id="L-1930"><a href="#L-1930"><span class="linenos">1930</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-1931"><a href="#L-1931"><span class="linenos">1931</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1932"><a href="#L-1932"><span class="linenos">1932</span></a> <span class="p">)</span> -</span><span id="L-1933"><a href="#L-1933"><span class="linenos">1933</span></a> -</span><span id="L-1934"><a href="#L-1934"><span class="linenos">1934</span></a> <span class="k">def</span> <span class="nf">order_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-1935"><a href="#L-1935"><span class="linenos">1935</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1936"><a href="#L-1936"><span class="linenos">1936</span></a><span class="sd"> Set the ORDER BY expression.</span> -</span><span id="L-1937"><a href="#L-1937"><span class="linenos">1937</span></a> -</span><span id="L-1938"><a href="#L-1938"><span class="linenos">1938</span></a><span class="sd"> Example:</span> -</span><span id="L-1939"><a href="#L-1939"><span class="linenos">1939</span></a><span class="sd"> >>> Select().from_("tbl").select("x").order_by("x DESC").sql()</span> -</span><span id="L-1940"><a href="#L-1940"><span class="linenos">1940</span></a><span class="sd"> 'SELECT x FROM tbl ORDER BY x DESC'</span> -</span><span id="L-1941"><a href="#L-1941"><span class="linenos">1941</span></a> -</span><span id="L-1942"><a href="#L-1942"><span class="linenos">1942</span></a><span class="sd"> Args:</span> -</span><span id="L-1943"><a href="#L-1943"><span class="linenos">1943</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-1944"><a href="#L-1944"><span class="linenos">1944</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="L-1945"><a href="#L-1945"><span class="linenos">1945</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Order`.</span> -</span><span id="L-1946"><a href="#L-1946"><span class="linenos">1946</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="L-1947"><a href="#L-1947"><span class="linenos">1947</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> -</span><span id="L-1948"><a href="#L-1948"><span class="linenos">1948</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-1949"><a href="#L-1949"><span class="linenos">1949</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-1950"><a href="#L-1950"><span class="linenos">1950</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-1951"><a href="#L-1951"><span class="linenos">1951</span></a> -</span><span id="L-1952"><a href="#L-1952"><span class="linenos">1952</span></a><span class="sd"> Returns:</span> -</span><span id="L-1953"><a href="#L-1953"><span class="linenos">1953</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-1954"><a href="#L-1954"><span class="linenos">1954</span></a><span class="sd"> """</span> -</span><span id="L-1955"><a href="#L-1955"><span class="linenos">1955</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="L-1956"><a href="#L-1956"><span class="linenos">1956</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-1957"><a href="#L-1957"><span class="linenos">1957</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-1958"><a href="#L-1958"><span class="linenos">1958</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"order"</span><span class="p">,</span> -</span><span id="L-1959"><a href="#L-1959"><span class="linenos">1959</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-1960"><a href="#L-1960"><span class="linenos">1960</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-1961"><a href="#L-1961"><span class="linenos">1961</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ORDER BY"</span><span class="p">,</span> -</span><span id="L-1962"><a href="#L-1962"><span class="linenos">1962</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Order</span><span class="p">,</span> -</span><span id="L-1963"><a href="#L-1963"><span class="linenos">1963</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-1964"><a href="#L-1964"><span class="linenos">1964</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1965"><a href="#L-1965"><span class="linenos">1965</span></a> <span class="p">)</span> -</span><span id="L-1966"><a href="#L-1966"><span class="linenos">1966</span></a> -</span><span id="L-1967"><a href="#L-1967"><span class="linenos">1967</span></a> <span class="k">def</span> <span class="nf">sort_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-1968"><a href="#L-1968"><span class="linenos">1968</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-1969"><a href="#L-1969"><span class="linenos">1969</span></a><span class="sd"> Set the SORT BY expression.</span> -</span><span id="L-1970"><a href="#L-1970"><span class="linenos">1970</span></a> -</span><span id="L-1971"><a href="#L-1971"><span class="linenos">1971</span></a><span class="sd"> Example:</span> -</span><span id="L-1972"><a href="#L-1972"><span class="linenos">1972</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()</span> -</span><span id="L-1973"><a href="#L-1973"><span class="linenos">1973</span></a><span class="sd"> 'SELECT x FROM tbl SORT BY x DESC'</span> -</span><span id="L-1974"><a href="#L-1974"><span class="linenos">1974</span></a> -</span><span id="L-1975"><a href="#L-1975"><span class="linenos">1975</span></a><span class="sd"> Args:</span> -</span><span id="L-1976"><a href="#L-1976"><span class="linenos">1976</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-1977"><a href="#L-1977"><span class="linenos">1977</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="L-1978"><a href="#L-1978"><span class="linenos">1978</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `SORT`.</span> -</span><span id="L-1979"><a href="#L-1979"><span class="linenos">1979</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="L-1980"><a href="#L-1980"><span class="linenos">1980</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> -</span><span id="L-1981"><a href="#L-1981"><span class="linenos">1981</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-1982"><a href="#L-1982"><span class="linenos">1982</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-1983"><a href="#L-1983"><span class="linenos">1983</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-1984"><a href="#L-1984"><span class="linenos">1984</span></a> -</span><span id="L-1985"><a href="#L-1985"><span class="linenos">1985</span></a><span class="sd"> Returns:</span> -</span><span id="L-1986"><a href="#L-1986"><span class="linenos">1986</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-1987"><a href="#L-1987"><span class="linenos">1987</span></a><span class="sd"> """</span> -</span><span id="L-1988"><a href="#L-1988"><span class="linenos">1988</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="L-1989"><a href="#L-1989"><span class="linenos">1989</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-1990"><a href="#L-1990"><span class="linenos">1990</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-1991"><a href="#L-1991"><span class="linenos">1991</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"sort"</span><span class="p">,</span> -</span><span id="L-1992"><a href="#L-1992"><span class="linenos">1992</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-1993"><a href="#L-1993"><span class="linenos">1993</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-1994"><a href="#L-1994"><span class="linenos">1994</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"SORT BY"</span><span class="p">,</span> -</span><span id="L-1995"><a href="#L-1995"><span class="linenos">1995</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Sort</span><span class="p">,</span> -</span><span id="L-1996"><a href="#L-1996"><span class="linenos">1996</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-1997"><a href="#L-1997"><span class="linenos">1997</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-1998"><a href="#L-1998"><span class="linenos">1998</span></a> <span class="p">)</span> +</span><span id="L-1917"><a href="#L-1917"><span class="linenos">1917</span></a><span class="sd"> Example:</span> +</span><span id="L-1918"><a href="#L-1918"><span class="linenos">1918</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sql()</span> +</span><span id="L-1919"><a href="#L-1919"><span class="linenos">1919</span></a><span class="sd"> 'SELECT x FROM tbl'</span> +</span><span id="L-1920"><a href="#L-1920"><span class="linenos">1920</span></a> +</span><span id="L-1921"><a href="#L-1921"><span class="linenos">1921</span></a><span class="sd"> Args:</span> +</span><span id="L-1922"><a href="#L-1922"><span class="linenos">1922</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-1923"><a href="#L-1923"><span class="linenos">1923</span></a><span class="sd"> If a `From` instance is passed, this is used as-is.</span> +</span><span id="L-1924"><a href="#L-1924"><span class="linenos">1924</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `From`.</span> +</span><span id="L-1925"><a href="#L-1925"><span class="linenos">1925</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="L-1926"><a href="#L-1926"><span class="linenos">1926</span></a><span class="sd"> Otherwise, this flattens all the `From` expression into a single expression.</span> +</span><span id="L-1927"><a href="#L-1927"><span class="linenos">1927</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-1928"><a href="#L-1928"><span class="linenos">1928</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-1929"><a href="#L-1929"><span class="linenos">1929</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-1930"><a href="#L-1930"><span class="linenos">1930</span></a> +</span><span id="L-1931"><a href="#L-1931"><span class="linenos">1931</span></a><span class="sd"> Returns:</span> +</span><span id="L-1932"><a href="#L-1932"><span class="linenos">1932</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-1933"><a href="#L-1933"><span class="linenos">1933</span></a><span class="sd"> """</span> +</span><span id="L-1934"><a href="#L-1934"><span class="linenos">1934</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="L-1935"><a href="#L-1935"><span class="linenos">1935</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-1936"><a href="#L-1936"><span class="linenos">1936</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-1937"><a href="#L-1937"><span class="linenos">1937</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"from"</span><span class="p">,</span> +</span><span id="L-1938"><a href="#L-1938"><span class="linenos">1938</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-1939"><a href="#L-1939"><span class="linenos">1939</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-1940"><a href="#L-1940"><span class="linenos">1940</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> +</span><span id="L-1941"><a href="#L-1941"><span class="linenos">1941</span></a> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> +</span><span id="L-1942"><a href="#L-1942"><span class="linenos">1942</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-1943"><a href="#L-1943"><span class="linenos">1943</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-1944"><a href="#L-1944"><span class="linenos">1944</span></a> <span class="p">)</span> +</span><span id="L-1945"><a href="#L-1945"><span class="linenos">1945</span></a> +</span><span id="L-1946"><a href="#L-1946"><span class="linenos">1946</span></a> <span class="k">def</span> <span class="nf">group_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-1947"><a href="#L-1947"><span class="linenos">1947</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1948"><a href="#L-1948"><span class="linenos">1948</span></a><span class="sd"> Set the GROUP BY expression.</span> +</span><span id="L-1949"><a href="#L-1949"><span class="linenos">1949</span></a> +</span><span id="L-1950"><a href="#L-1950"><span class="linenos">1950</span></a><span class="sd"> Example:</span> +</span><span id="L-1951"><a href="#L-1951"><span class="linenos">1951</span></a><span class="sd"> >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()</span> +</span><span id="L-1952"><a href="#L-1952"><span class="linenos">1952</span></a><span class="sd"> 'SELECT x, COUNT(1) FROM tbl GROUP BY x'</span> +</span><span id="L-1953"><a href="#L-1953"><span class="linenos">1953</span></a> +</span><span id="L-1954"><a href="#L-1954"><span class="linenos">1954</span></a><span class="sd"> Args:</span> +</span><span id="L-1955"><a href="#L-1955"><span class="linenos">1955</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-1956"><a href="#L-1956"><span class="linenos">1956</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="L-1957"><a href="#L-1957"><span class="linenos">1957</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Group`.</span> +</span><span id="L-1958"><a href="#L-1958"><span class="linenos">1958</span></a><span class="sd"> If nothing is passed in then a group by is not applied to the expression</span> +</span><span id="L-1959"><a href="#L-1959"><span class="linenos">1959</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="L-1960"><a href="#L-1960"><span class="linenos">1960</span></a><span class="sd"> Otherwise, this flattens all the `Group` expression into a single expression.</span> +</span><span id="L-1961"><a href="#L-1961"><span class="linenos">1961</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-1962"><a href="#L-1962"><span class="linenos">1962</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-1963"><a href="#L-1963"><span class="linenos">1963</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-1964"><a href="#L-1964"><span class="linenos">1964</span></a> +</span><span id="L-1965"><a href="#L-1965"><span class="linenos">1965</span></a><span class="sd"> Returns:</span> +</span><span id="L-1966"><a href="#L-1966"><span class="linenos">1966</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-1967"><a href="#L-1967"><span class="linenos">1967</span></a><span class="sd"> """</span> +</span><span id="L-1968"><a href="#L-1968"><span class="linenos">1968</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-1969"><a href="#L-1969"><span class="linenos">1969</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-1970"><a href="#L-1970"><span class="linenos">1970</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="L-1971"><a href="#L-1971"><span class="linenos">1971</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-1972"><a href="#L-1972"><span class="linenos">1972</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-1973"><a href="#L-1973"><span class="linenos">1973</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"group"</span><span class="p">,</span> +</span><span id="L-1974"><a href="#L-1974"><span class="linenos">1974</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-1975"><a href="#L-1975"><span class="linenos">1975</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-1976"><a href="#L-1976"><span class="linenos">1976</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"GROUP BY"</span><span class="p">,</span> +</span><span id="L-1977"><a href="#L-1977"><span class="linenos">1977</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Group</span><span class="p">,</span> +</span><span id="L-1978"><a href="#L-1978"><span class="linenos">1978</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-1979"><a href="#L-1979"><span class="linenos">1979</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-1980"><a href="#L-1980"><span class="linenos">1980</span></a> <span class="p">)</span> +</span><span id="L-1981"><a href="#L-1981"><span class="linenos">1981</span></a> +</span><span id="L-1982"><a href="#L-1982"><span class="linenos">1982</span></a> <span class="k">def</span> <span class="nf">order_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-1983"><a href="#L-1983"><span class="linenos">1983</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-1984"><a href="#L-1984"><span class="linenos">1984</span></a><span class="sd"> Set the ORDER BY expression.</span> +</span><span id="L-1985"><a href="#L-1985"><span class="linenos">1985</span></a> +</span><span id="L-1986"><a href="#L-1986"><span class="linenos">1986</span></a><span class="sd"> Example:</span> +</span><span id="L-1987"><a href="#L-1987"><span class="linenos">1987</span></a><span class="sd"> >>> Select().from_("tbl").select("x").order_by("x DESC").sql()</span> +</span><span id="L-1988"><a href="#L-1988"><span class="linenos">1988</span></a><span class="sd"> 'SELECT x FROM tbl ORDER BY x DESC'</span> +</span><span id="L-1989"><a href="#L-1989"><span class="linenos">1989</span></a> +</span><span id="L-1990"><a href="#L-1990"><span class="linenos">1990</span></a><span class="sd"> Args:</span> +</span><span id="L-1991"><a href="#L-1991"><span class="linenos">1991</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-1992"><a href="#L-1992"><span class="linenos">1992</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="L-1993"><a href="#L-1993"><span class="linenos">1993</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Order`.</span> +</span><span id="L-1994"><a href="#L-1994"><span class="linenos">1994</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="L-1995"><a href="#L-1995"><span class="linenos">1995</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> +</span><span id="L-1996"><a href="#L-1996"><span class="linenos">1996</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-1997"><a href="#L-1997"><span class="linenos">1997</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-1998"><a href="#L-1998"><span class="linenos">1998</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> </span><span id="L-1999"><a href="#L-1999"><span class="linenos">1999</span></a> -</span><span id="L-2000"><a href="#L-2000"><span class="linenos">2000</span></a> <span class="k">def</span> <span class="nf">cluster_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2001"><a href="#L-2001"><span class="linenos">2001</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2002"><a href="#L-2002"><span class="linenos">2002</span></a><span class="sd"> Set the CLUSTER BY expression.</span> -</span><span id="L-2003"><a href="#L-2003"><span class="linenos">2003</span></a> -</span><span id="L-2004"><a href="#L-2004"><span class="linenos">2004</span></a><span class="sd"> Example:</span> -</span><span id="L-2005"><a href="#L-2005"><span class="linenos">2005</span></a><span class="sd"> >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()</span> -</span><span id="L-2006"><a href="#L-2006"><span class="linenos">2006</span></a><span class="sd"> 'SELECT x FROM tbl CLUSTER BY x DESC'</span> -</span><span id="L-2007"><a href="#L-2007"><span class="linenos">2007</span></a> -</span><span id="L-2008"><a href="#L-2008"><span class="linenos">2008</span></a><span class="sd"> Args:</span> -</span><span id="L-2009"><a href="#L-2009"><span class="linenos">2009</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-2010"><a href="#L-2010"><span class="linenos">2010</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="L-2011"><a href="#L-2011"><span class="linenos">2011</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Cluster`.</span> -</span><span id="L-2012"><a href="#L-2012"><span class="linenos">2012</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="L-2013"><a href="#L-2013"><span class="linenos">2013</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> -</span><span id="L-2014"><a href="#L-2014"><span class="linenos">2014</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-2015"><a href="#L-2015"><span class="linenos">2015</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-2016"><a href="#L-2016"><span class="linenos">2016</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-2017"><a href="#L-2017"><span class="linenos">2017</span></a> -</span><span id="L-2018"><a href="#L-2018"><span class="linenos">2018</span></a><span class="sd"> Returns:</span> -</span><span id="L-2019"><a href="#L-2019"><span class="linenos">2019</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-2020"><a href="#L-2020"><span class="linenos">2020</span></a><span class="sd"> """</span> -</span><span id="L-2021"><a href="#L-2021"><span class="linenos">2021</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="L-2022"><a href="#L-2022"><span class="linenos">2022</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2023"><a href="#L-2023"><span class="linenos">2023</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-2024"><a href="#L-2024"><span class="linenos">2024</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"cluster"</span><span class="p">,</span> -</span><span id="L-2025"><a href="#L-2025"><span class="linenos">2025</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-2026"><a href="#L-2026"><span class="linenos">2026</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2027"><a href="#L-2027"><span class="linenos">2027</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> -</span><span id="L-2028"><a href="#L-2028"><span class="linenos">2028</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Cluster</span><span class="p">,</span> -</span><span id="L-2029"><a href="#L-2029"><span class="linenos">2029</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-2030"><a href="#L-2030"><span class="linenos">2030</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2031"><a href="#L-2031"><span class="linenos">2031</span></a> <span class="p">)</span> +</span><span id="L-2000"><a href="#L-2000"><span class="linenos">2000</span></a><span class="sd"> Returns:</span> +</span><span id="L-2001"><a href="#L-2001"><span class="linenos">2001</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2002"><a href="#L-2002"><span class="linenos">2002</span></a><span class="sd"> """</span> +</span><span id="L-2003"><a href="#L-2003"><span class="linenos">2003</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="L-2004"><a href="#L-2004"><span class="linenos">2004</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2005"><a href="#L-2005"><span class="linenos">2005</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2006"><a href="#L-2006"><span class="linenos">2006</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"order"</span><span class="p">,</span> +</span><span id="L-2007"><a href="#L-2007"><span class="linenos">2007</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2008"><a href="#L-2008"><span class="linenos">2008</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2009"><a href="#L-2009"><span class="linenos">2009</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ORDER BY"</span><span class="p">,</span> +</span><span id="L-2010"><a href="#L-2010"><span class="linenos">2010</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Order</span><span class="p">,</span> +</span><span id="L-2011"><a href="#L-2011"><span class="linenos">2011</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2012"><a href="#L-2012"><span class="linenos">2012</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2013"><a href="#L-2013"><span class="linenos">2013</span></a> <span class="p">)</span> +</span><span id="L-2014"><a href="#L-2014"><span class="linenos">2014</span></a> +</span><span id="L-2015"><a href="#L-2015"><span class="linenos">2015</span></a> <span class="k">def</span> <span class="nf">sort_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2016"><a href="#L-2016"><span class="linenos">2016</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2017"><a href="#L-2017"><span class="linenos">2017</span></a><span class="sd"> Set the SORT BY expression.</span> +</span><span id="L-2018"><a href="#L-2018"><span class="linenos">2018</span></a> +</span><span id="L-2019"><a href="#L-2019"><span class="linenos">2019</span></a><span class="sd"> Example:</span> +</span><span id="L-2020"><a href="#L-2020"><span class="linenos">2020</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()</span> +</span><span id="L-2021"><a href="#L-2021"><span class="linenos">2021</span></a><span class="sd"> 'SELECT x FROM tbl SORT BY x DESC'</span> +</span><span id="L-2022"><a href="#L-2022"><span class="linenos">2022</span></a> +</span><span id="L-2023"><a href="#L-2023"><span class="linenos">2023</span></a><span class="sd"> Args:</span> +</span><span id="L-2024"><a href="#L-2024"><span class="linenos">2024</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-2025"><a href="#L-2025"><span class="linenos">2025</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="L-2026"><a href="#L-2026"><span class="linenos">2026</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `SORT`.</span> +</span><span id="L-2027"><a href="#L-2027"><span class="linenos">2027</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="L-2028"><a href="#L-2028"><span class="linenos">2028</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> +</span><span id="L-2029"><a href="#L-2029"><span class="linenos">2029</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-2030"><a href="#L-2030"><span class="linenos">2030</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2031"><a href="#L-2031"><span class="linenos">2031</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> </span><span id="L-2032"><a href="#L-2032"><span class="linenos">2032</span></a> -</span><span id="L-2033"><a href="#L-2033"><span class="linenos">2033</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2034"><a href="#L-2034"><span class="linenos">2034</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2035"><a href="#L-2035"><span class="linenos">2035</span></a><span class="sd"> Set the LIMIT expression.</span> -</span><span id="L-2036"><a href="#L-2036"><span class="linenos">2036</span></a> -</span><span id="L-2037"><a href="#L-2037"><span class="linenos">2037</span></a><span class="sd"> Example:</span> -</span><span id="L-2038"><a href="#L-2038"><span class="linenos">2038</span></a><span class="sd"> >>> Select().from_("tbl").select("x").limit(10).sql()</span> -</span><span id="L-2039"><a href="#L-2039"><span class="linenos">2039</span></a><span class="sd"> 'SELECT x FROM tbl LIMIT 10'</span> -</span><span id="L-2040"><a href="#L-2040"><span class="linenos">2040</span></a> -</span><span id="L-2041"><a href="#L-2041"><span class="linenos">2041</span></a><span class="sd"> Args:</span> -</span><span id="L-2042"><a href="#L-2042"><span class="linenos">2042</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> -</span><span id="L-2043"><a href="#L-2043"><span class="linenos">2043</span></a><span class="sd"> This can also be an integer.</span> -</span><span id="L-2044"><a href="#L-2044"><span class="linenos">2044</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> -</span><span id="L-2045"><a href="#L-2045"><span class="linenos">2045</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> -</span><span id="L-2046"><a href="#L-2046"><span class="linenos">2046</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-2047"><a href="#L-2047"><span class="linenos">2047</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-2048"><a href="#L-2048"><span class="linenos">2048</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-2049"><a href="#L-2049"><span class="linenos">2049</span></a> -</span><span id="L-2050"><a href="#L-2050"><span class="linenos">2050</span></a><span class="sd"> Returns:</span> -</span><span id="L-2051"><a href="#L-2051"><span class="linenos">2051</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-2052"><a href="#L-2052"><span class="linenos">2052</span></a><span class="sd"> """</span> -</span><span id="L-2053"><a href="#L-2053"><span class="linenos">2053</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> -</span><span id="L-2054"><a href="#L-2054"><span class="linenos">2054</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-2055"><a href="#L-2055"><span class="linenos">2055</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-2056"><a href="#L-2056"><span class="linenos">2056</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"limit"</span><span class="p">,</span> -</span><span id="L-2057"><a href="#L-2057"><span class="linenos">2057</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Limit</span><span class="p">,</span> -</span><span id="L-2058"><a href="#L-2058"><span class="linenos">2058</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LIMIT"</span><span class="p">,</span> -</span><span id="L-2059"><a href="#L-2059"><span class="linenos">2059</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-2060"><a href="#L-2060"><span class="linenos">2060</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2061"><a href="#L-2061"><span class="linenos">2061</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2062"><a href="#L-2062"><span class="linenos">2062</span></a> <span class="p">)</span> -</span><span id="L-2063"><a href="#L-2063"><span class="linenos">2063</span></a> -</span><span id="L-2064"><a href="#L-2064"><span class="linenos">2064</span></a> <span class="k">def</span> <span class="nf">offset</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2065"><a href="#L-2065"><span class="linenos">2065</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2066"><a href="#L-2066"><span class="linenos">2066</span></a><span class="sd"> Set the OFFSET expression.</span> -</span><span id="L-2067"><a href="#L-2067"><span class="linenos">2067</span></a> -</span><span id="L-2068"><a href="#L-2068"><span class="linenos">2068</span></a><span class="sd"> Example:</span> -</span><span id="L-2069"><a href="#L-2069"><span class="linenos">2069</span></a><span class="sd"> >>> Select().from_("tbl").select("x").offset(10).sql()</span> -</span><span id="L-2070"><a href="#L-2070"><span class="linenos">2070</span></a><span class="sd"> 'SELECT x FROM tbl OFFSET 10'</span> -</span><span id="L-2071"><a href="#L-2071"><span class="linenos">2071</span></a> -</span><span id="L-2072"><a href="#L-2072"><span class="linenos">2072</span></a><span class="sd"> Args:</span> -</span><span id="L-2073"><a href="#L-2073"><span class="linenos">2073</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> -</span><span id="L-2074"><a href="#L-2074"><span class="linenos">2074</span></a><span class="sd"> This can also be an integer.</span> -</span><span id="L-2075"><a href="#L-2075"><span class="linenos">2075</span></a><span class="sd"> If a `Offset` instance is passed, this is used as-is.</span> -</span><span id="L-2076"><a href="#L-2076"><span class="linenos">2076</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Offset`.</span> -</span><span id="L-2077"><a href="#L-2077"><span class="linenos">2077</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-2078"><a href="#L-2078"><span class="linenos">2078</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-2079"><a href="#L-2079"><span class="linenos">2079</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-2033"><a href="#L-2033"><span class="linenos">2033</span></a><span class="sd"> Returns:</span> +</span><span id="L-2034"><a href="#L-2034"><span class="linenos">2034</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2035"><a href="#L-2035"><span class="linenos">2035</span></a><span class="sd"> """</span> +</span><span id="L-2036"><a href="#L-2036"><span class="linenos">2036</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="L-2037"><a href="#L-2037"><span class="linenos">2037</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2038"><a href="#L-2038"><span class="linenos">2038</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2039"><a href="#L-2039"><span class="linenos">2039</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"sort"</span><span class="p">,</span> +</span><span id="L-2040"><a href="#L-2040"><span class="linenos">2040</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2041"><a href="#L-2041"><span class="linenos">2041</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2042"><a href="#L-2042"><span class="linenos">2042</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"SORT BY"</span><span class="p">,</span> +</span><span id="L-2043"><a href="#L-2043"><span class="linenos">2043</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Sort</span><span class="p">,</span> +</span><span id="L-2044"><a href="#L-2044"><span class="linenos">2044</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2045"><a href="#L-2045"><span class="linenos">2045</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2046"><a href="#L-2046"><span class="linenos">2046</span></a> <span class="p">)</span> +</span><span id="L-2047"><a href="#L-2047"><span class="linenos">2047</span></a> +</span><span id="L-2048"><a href="#L-2048"><span class="linenos">2048</span></a> <span class="k">def</span> <span class="nf">cluster_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2049"><a href="#L-2049"><span class="linenos">2049</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2050"><a href="#L-2050"><span class="linenos">2050</span></a><span class="sd"> Set the CLUSTER BY expression.</span> +</span><span id="L-2051"><a href="#L-2051"><span class="linenos">2051</span></a> +</span><span id="L-2052"><a href="#L-2052"><span class="linenos">2052</span></a><span class="sd"> Example:</span> +</span><span id="L-2053"><a href="#L-2053"><span class="linenos">2053</span></a><span class="sd"> >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()</span> +</span><span id="L-2054"><a href="#L-2054"><span class="linenos">2054</span></a><span class="sd"> 'SELECT x FROM tbl CLUSTER BY x DESC'</span> +</span><span id="L-2055"><a href="#L-2055"><span class="linenos">2055</span></a> +</span><span id="L-2056"><a href="#L-2056"><span class="linenos">2056</span></a><span class="sd"> Args:</span> +</span><span id="L-2057"><a href="#L-2057"><span class="linenos">2057</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-2058"><a href="#L-2058"><span class="linenos">2058</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="L-2059"><a href="#L-2059"><span class="linenos">2059</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Cluster`.</span> +</span><span id="L-2060"><a href="#L-2060"><span class="linenos">2060</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="L-2061"><a href="#L-2061"><span class="linenos">2061</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> +</span><span id="L-2062"><a href="#L-2062"><span class="linenos">2062</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-2063"><a href="#L-2063"><span class="linenos">2063</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2064"><a href="#L-2064"><span class="linenos">2064</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-2065"><a href="#L-2065"><span class="linenos">2065</span></a> +</span><span id="L-2066"><a href="#L-2066"><span class="linenos">2066</span></a><span class="sd"> Returns:</span> +</span><span id="L-2067"><a href="#L-2067"><span class="linenos">2067</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2068"><a href="#L-2068"><span class="linenos">2068</span></a><span class="sd"> """</span> +</span><span id="L-2069"><a href="#L-2069"><span class="linenos">2069</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="L-2070"><a href="#L-2070"><span class="linenos">2070</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2071"><a href="#L-2071"><span class="linenos">2071</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2072"><a href="#L-2072"><span class="linenos">2072</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"cluster"</span><span class="p">,</span> +</span><span id="L-2073"><a href="#L-2073"><span class="linenos">2073</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2074"><a href="#L-2074"><span class="linenos">2074</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2075"><a href="#L-2075"><span class="linenos">2075</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> +</span><span id="L-2076"><a href="#L-2076"><span class="linenos">2076</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Cluster</span><span class="p">,</span> +</span><span id="L-2077"><a href="#L-2077"><span class="linenos">2077</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2078"><a href="#L-2078"><span class="linenos">2078</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2079"><a href="#L-2079"><span class="linenos">2079</span></a> <span class="p">)</span> </span><span id="L-2080"><a href="#L-2080"><span class="linenos">2080</span></a> -</span><span id="L-2081"><a href="#L-2081"><span class="linenos">2081</span></a><span class="sd"> Returns:</span> -</span><span id="L-2082"><a href="#L-2082"><span class="linenos">2082</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-2083"><a href="#L-2083"><span class="linenos">2083</span></a><span class="sd"> """</span> -</span><span id="L-2084"><a href="#L-2084"><span class="linenos">2084</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> -</span><span id="L-2085"><a href="#L-2085"><span class="linenos">2085</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-2086"><a href="#L-2086"><span class="linenos">2086</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-2087"><a href="#L-2087"><span class="linenos">2087</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"offset"</span><span class="p">,</span> -</span><span id="L-2088"><a href="#L-2088"><span class="linenos">2088</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Offset</span><span class="p">,</span> -</span><span id="L-2089"><a href="#L-2089"><span class="linenos">2089</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"OFFSET"</span><span class="p">,</span> -</span><span id="L-2090"><a href="#L-2090"><span class="linenos">2090</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-2091"><a href="#L-2091"><span class="linenos">2091</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2092"><a href="#L-2092"><span class="linenos">2092</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2093"><a href="#L-2093"><span class="linenos">2093</span></a> <span class="p">)</span> -</span><span id="L-2094"><a href="#L-2094"><span class="linenos">2094</span></a> -</span><span id="L-2095"><a href="#L-2095"><span class="linenos">2095</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> -</span><span id="L-2096"><a href="#L-2096"><span class="linenos">2096</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-2097"><a href="#L-2097"><span class="linenos">2097</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="L-2098"><a href="#L-2098"><span class="linenos">2098</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2099"><a href="#L-2099"><span class="linenos">2099</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-2100"><a href="#L-2100"><span class="linenos">2100</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2101"><a href="#L-2101"><span class="linenos">2101</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2102"><a href="#L-2102"><span class="linenos">2102</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2103"><a href="#L-2103"><span class="linenos">2103</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2104"><a href="#L-2104"><span class="linenos">2104</span></a><span class="sd"> Append to or set the SELECT expressions.</span> -</span><span id="L-2105"><a href="#L-2105"><span class="linenos">2105</span></a> -</span><span id="L-2106"><a href="#L-2106"><span class="linenos">2106</span></a><span class="sd"> Example:</span> -</span><span id="L-2107"><a href="#L-2107"><span class="linenos">2107</span></a><span class="sd"> >>> Select().select("x", "y").sql()</span> -</span><span id="L-2108"><a href="#L-2108"><span class="linenos">2108</span></a><span class="sd"> 'SELECT x, y'</span> -</span><span id="L-2109"><a href="#L-2109"><span class="linenos">2109</span></a> -</span><span id="L-2110"><a href="#L-2110"><span class="linenos">2110</span></a><span class="sd"> Args:</span> -</span><span id="L-2111"><a href="#L-2111"><span class="linenos">2111</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="L-2112"><a href="#L-2112"><span class="linenos">2112</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-2113"><a href="#L-2113"><span class="linenos">2113</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> -</span><span id="L-2114"><a href="#L-2114"><span class="linenos">2114</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="L-2115"><a href="#L-2115"><span class="linenos">2115</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="L-2116"><a href="#L-2116"><span class="linenos">2116</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> -</span><span id="L-2117"><a href="#L-2117"><span class="linenos">2117</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="L-2118"><a href="#L-2118"><span class="linenos">2118</span></a> -</span><span id="L-2119"><a href="#L-2119"><span class="linenos">2119</span></a><span class="sd"> Returns:</span> -</span><span id="L-2120"><a href="#L-2120"><span class="linenos">2120</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-2121"><a href="#L-2121"><span class="linenos">2121</span></a><span class="sd"> """</span> -</span><span id="L-2122"><a href="#L-2122"><span class="linenos">2122</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="L-2123"><a href="#L-2123"><span class="linenos">2123</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2124"><a href="#L-2124"><span class="linenos">2124</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-2125"><a href="#L-2125"><span class="linenos">2125</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">,</span> -</span><span id="L-2126"><a href="#L-2126"><span class="linenos">2126</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-2127"><a href="#L-2127"><span class="linenos">2127</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-2128"><a href="#L-2128"><span class="linenos">2128</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2129"><a href="#L-2129"><span class="linenos">2129</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2130"><a href="#L-2130"><span class="linenos">2130</span></a> <span class="p">)</span> -</span><span id="L-2131"><a href="#L-2131"><span class="linenos">2131</span></a> -</span><span id="L-2132"><a href="#L-2132"><span class="linenos">2132</span></a> <span class="k">def</span> <span class="nf">lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2133"><a href="#L-2133"><span class="linenos">2133</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2134"><a href="#L-2134"><span class="linenos">2134</span></a><span class="sd"> Append to or set the LATERAL expressions.</span> -</span><span id="L-2135"><a href="#L-2135"><span class="linenos">2135</span></a> -</span><span id="L-2136"><a href="#L-2136"><span class="linenos">2136</span></a><span class="sd"> Example:</span> -</span><span id="L-2137"><a href="#L-2137"><span class="linenos">2137</span></a><span class="sd"> >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()</span> -</span><span id="L-2138"><a href="#L-2138"><span class="linenos">2138</span></a><span class="sd"> 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'</span> -</span><span id="L-2139"><a href="#L-2139"><span class="linenos">2139</span></a> -</span><span id="L-2140"><a href="#L-2140"><span class="linenos">2140</span></a><span class="sd"> Args:</span> -</span><span id="L-2141"><a href="#L-2141"><span class="linenos">2141</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-2142"><a href="#L-2142"><span class="linenos">2142</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-2143"><a href="#L-2143"><span class="linenos">2143</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="L-2144"><a href="#L-2144"><span class="linenos">2144</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="L-2145"><a href="#L-2145"><span class="linenos">2145</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="L-2146"><a href="#L-2146"><span class="linenos">2146</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-2147"><a href="#L-2147"><span class="linenos">2147</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-2148"><a href="#L-2148"><span class="linenos">2148</span></a> -</span><span id="L-2149"><a href="#L-2149"><span class="linenos">2149</span></a><span class="sd"> Returns:</span> -</span><span id="L-2150"><a href="#L-2150"><span class="linenos">2150</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-2151"><a href="#L-2151"><span class="linenos">2151</span></a><span class="sd"> """</span> -</span><span id="L-2152"><a href="#L-2152"><span class="linenos">2152</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="L-2153"><a href="#L-2153"><span class="linenos">2153</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2154"><a href="#L-2154"><span class="linenos">2154</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-2155"><a href="#L-2155"><span class="linenos">2155</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> -</span><span id="L-2156"><a href="#L-2156"><span class="linenos">2156</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-2157"><a href="#L-2157"><span class="linenos">2157</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Lateral</span><span class="p">,</span> -</span><span id="L-2158"><a href="#L-2158"><span class="linenos">2158</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LATERAL VIEW"</span><span class="p">,</span> -</span><span id="L-2159"><a href="#L-2159"><span class="linenos">2159</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-2160"><a href="#L-2160"><span class="linenos">2160</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2161"><a href="#L-2161"><span class="linenos">2161</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2162"><a href="#L-2162"><span class="linenos">2162</span></a> <span class="p">)</span> -</span><span id="L-2163"><a href="#L-2163"><span class="linenos">2163</span></a> -</span><span id="L-2164"><a href="#L-2164"><span class="linenos">2164</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> -</span><span id="L-2165"><a href="#L-2165"><span class="linenos">2165</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-2166"><a href="#L-2166"><span class="linenos">2166</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-2167"><a href="#L-2167"><span class="linenos">2167</span></a> <span class="n">on</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-2168"><a href="#L-2168"><span class="linenos">2168</span></a> <span class="n">using</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-2169"><a href="#L-2169"><span class="linenos">2169</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-2170"><a href="#L-2170"><span class="linenos">2170</span></a> <span class="n">join_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-2171"><a href="#L-2171"><span class="linenos">2171</span></a> <span class="n">join_alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-2172"><a href="#L-2172"><span class="linenos">2172</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-2173"><a href="#L-2173"><span class="linenos">2173</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-2174"><a href="#L-2174"><span class="linenos">2174</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2175"><a href="#L-2175"><span class="linenos">2175</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2176"><a href="#L-2176"><span class="linenos">2176</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2177"><a href="#L-2177"><span class="linenos">2177</span></a><span class="sd"> Append to or set the JOIN expressions.</span> -</span><span id="L-2178"><a href="#L-2178"><span class="linenos">2178</span></a> -</span><span id="L-2179"><a href="#L-2179"><span class="linenos">2179</span></a><span class="sd"> Example:</span> -</span><span id="L-2180"><a href="#L-2180"><span class="linenos">2180</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()</span> -</span><span id="L-2181"><a href="#L-2181"><span class="linenos">2181</span></a><span class="sd"> 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'</span> -</span><span id="L-2182"><a href="#L-2182"><span class="linenos">2182</span></a> -</span><span id="L-2183"><a href="#L-2183"><span class="linenos">2183</span></a><span class="sd"> >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()</span> -</span><span id="L-2184"><a href="#L-2184"><span class="linenos">2184</span></a><span class="sd"> 'SELECT 1 FROM a JOIN b USING (x, y, z)'</span> -</span><span id="L-2185"><a href="#L-2185"><span class="linenos">2185</span></a> -</span><span id="L-2186"><a href="#L-2186"><span class="linenos">2186</span></a><span class="sd"> Use `join_type` to change the type of join:</span> +</span><span id="L-2081"><a href="#L-2081"><span class="linenos">2081</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2082"><a href="#L-2082"><span class="linenos">2082</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2083"><a href="#L-2083"><span class="linenos">2083</span></a><span class="sd"> Set the LIMIT expression.</span> +</span><span id="L-2084"><a href="#L-2084"><span class="linenos">2084</span></a> +</span><span id="L-2085"><a href="#L-2085"><span class="linenos">2085</span></a><span class="sd"> Example:</span> +</span><span id="L-2086"><a href="#L-2086"><span class="linenos">2086</span></a><span class="sd"> >>> Select().from_("tbl").select("x").limit(10).sql()</span> +</span><span id="L-2087"><a href="#L-2087"><span class="linenos">2087</span></a><span class="sd"> 'SELECT x FROM tbl LIMIT 10'</span> +</span><span id="L-2088"><a href="#L-2088"><span class="linenos">2088</span></a> +</span><span id="L-2089"><a href="#L-2089"><span class="linenos">2089</span></a><span class="sd"> Args:</span> +</span><span id="L-2090"><a href="#L-2090"><span class="linenos">2090</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> +</span><span id="L-2091"><a href="#L-2091"><span class="linenos">2091</span></a><span class="sd"> This can also be an integer.</span> +</span><span id="L-2092"><a href="#L-2092"><span class="linenos">2092</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> +</span><span id="L-2093"><a href="#L-2093"><span class="linenos">2093</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> +</span><span id="L-2094"><a href="#L-2094"><span class="linenos">2094</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-2095"><a href="#L-2095"><span class="linenos">2095</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2096"><a href="#L-2096"><span class="linenos">2096</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-2097"><a href="#L-2097"><span class="linenos">2097</span></a> +</span><span id="L-2098"><a href="#L-2098"><span class="linenos">2098</span></a><span class="sd"> Returns:</span> +</span><span id="L-2099"><a href="#L-2099"><span class="linenos">2099</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2100"><a href="#L-2100"><span class="linenos">2100</span></a><span class="sd"> """</span> +</span><span id="L-2101"><a href="#L-2101"><span class="linenos">2101</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> +</span><span id="L-2102"><a href="#L-2102"><span class="linenos">2102</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-2103"><a href="#L-2103"><span class="linenos">2103</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2104"><a href="#L-2104"><span class="linenos">2104</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"limit"</span><span class="p">,</span> +</span><span id="L-2105"><a href="#L-2105"><span class="linenos">2105</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Limit</span><span class="p">,</span> +</span><span id="L-2106"><a href="#L-2106"><span class="linenos">2106</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LIMIT"</span><span class="p">,</span> +</span><span id="L-2107"><a href="#L-2107"><span class="linenos">2107</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2108"><a href="#L-2108"><span class="linenos">2108</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2109"><a href="#L-2109"><span class="linenos">2109</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2110"><a href="#L-2110"><span class="linenos">2110</span></a> <span class="p">)</span> +</span><span id="L-2111"><a href="#L-2111"><span class="linenos">2111</span></a> +</span><span id="L-2112"><a href="#L-2112"><span class="linenos">2112</span></a> <span class="k">def</span> <span class="nf">offset</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2113"><a href="#L-2113"><span class="linenos">2113</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2114"><a href="#L-2114"><span class="linenos">2114</span></a><span class="sd"> Set the OFFSET expression.</span> +</span><span id="L-2115"><a href="#L-2115"><span class="linenos">2115</span></a> +</span><span id="L-2116"><a href="#L-2116"><span class="linenos">2116</span></a><span class="sd"> Example:</span> +</span><span id="L-2117"><a href="#L-2117"><span class="linenos">2117</span></a><span class="sd"> >>> Select().from_("tbl").select("x").offset(10).sql()</span> +</span><span id="L-2118"><a href="#L-2118"><span class="linenos">2118</span></a><span class="sd"> 'SELECT x FROM tbl OFFSET 10'</span> +</span><span id="L-2119"><a href="#L-2119"><span class="linenos">2119</span></a> +</span><span id="L-2120"><a href="#L-2120"><span class="linenos">2120</span></a><span class="sd"> Args:</span> +</span><span id="L-2121"><a href="#L-2121"><span class="linenos">2121</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> +</span><span id="L-2122"><a href="#L-2122"><span class="linenos">2122</span></a><span class="sd"> This can also be an integer.</span> +</span><span id="L-2123"><a href="#L-2123"><span class="linenos">2123</span></a><span class="sd"> If a `Offset` instance is passed, this is used as-is.</span> +</span><span id="L-2124"><a href="#L-2124"><span class="linenos">2124</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Offset`.</span> +</span><span id="L-2125"><a href="#L-2125"><span class="linenos">2125</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-2126"><a href="#L-2126"><span class="linenos">2126</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2127"><a href="#L-2127"><span class="linenos">2127</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-2128"><a href="#L-2128"><span class="linenos">2128</span></a> +</span><span id="L-2129"><a href="#L-2129"><span class="linenos">2129</span></a><span class="sd"> Returns:</span> +</span><span id="L-2130"><a href="#L-2130"><span class="linenos">2130</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2131"><a href="#L-2131"><span class="linenos">2131</span></a><span class="sd"> """</span> +</span><span id="L-2132"><a href="#L-2132"><span class="linenos">2132</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> +</span><span id="L-2133"><a href="#L-2133"><span class="linenos">2133</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-2134"><a href="#L-2134"><span class="linenos">2134</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2135"><a href="#L-2135"><span class="linenos">2135</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"offset"</span><span class="p">,</span> +</span><span id="L-2136"><a href="#L-2136"><span class="linenos">2136</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Offset</span><span class="p">,</span> +</span><span id="L-2137"><a href="#L-2137"><span class="linenos">2137</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"OFFSET"</span><span class="p">,</span> +</span><span id="L-2138"><a href="#L-2138"><span class="linenos">2138</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2139"><a href="#L-2139"><span class="linenos">2139</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2140"><a href="#L-2140"><span class="linenos">2140</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2141"><a href="#L-2141"><span class="linenos">2141</span></a> <span class="p">)</span> +</span><span id="L-2142"><a href="#L-2142"><span class="linenos">2142</span></a> +</span><span id="L-2143"><a href="#L-2143"><span class="linenos">2143</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> +</span><span id="L-2144"><a href="#L-2144"><span class="linenos">2144</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-2145"><a href="#L-2145"><span class="linenos">2145</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="L-2146"><a href="#L-2146"><span class="linenos">2146</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2147"><a href="#L-2147"><span class="linenos">2147</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-2148"><a href="#L-2148"><span class="linenos">2148</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2149"><a href="#L-2149"><span class="linenos">2149</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2150"><a href="#L-2150"><span class="linenos">2150</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2151"><a href="#L-2151"><span class="linenos">2151</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2152"><a href="#L-2152"><span class="linenos">2152</span></a><span class="sd"> Append to or set the SELECT expressions.</span> +</span><span id="L-2153"><a href="#L-2153"><span class="linenos">2153</span></a> +</span><span id="L-2154"><a href="#L-2154"><span class="linenos">2154</span></a><span class="sd"> Example:</span> +</span><span id="L-2155"><a href="#L-2155"><span class="linenos">2155</span></a><span class="sd"> >>> Select().select("x", "y").sql()</span> +</span><span id="L-2156"><a href="#L-2156"><span class="linenos">2156</span></a><span class="sd"> 'SELECT x, y'</span> +</span><span id="L-2157"><a href="#L-2157"><span class="linenos">2157</span></a> +</span><span id="L-2158"><a href="#L-2158"><span class="linenos">2158</span></a><span class="sd"> Args:</span> +</span><span id="L-2159"><a href="#L-2159"><span class="linenos">2159</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="L-2160"><a href="#L-2160"><span class="linenos">2160</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-2161"><a href="#L-2161"><span class="linenos">2161</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> +</span><span id="L-2162"><a href="#L-2162"><span class="linenos">2162</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="L-2163"><a href="#L-2163"><span class="linenos">2163</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="L-2164"><a href="#L-2164"><span class="linenos">2164</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="L-2165"><a href="#L-2165"><span class="linenos">2165</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="L-2166"><a href="#L-2166"><span class="linenos">2166</span></a> +</span><span id="L-2167"><a href="#L-2167"><span class="linenos">2167</span></a><span class="sd"> Returns:</span> +</span><span id="L-2168"><a href="#L-2168"><span class="linenos">2168</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2169"><a href="#L-2169"><span class="linenos">2169</span></a><span class="sd"> """</span> +</span><span id="L-2170"><a href="#L-2170"><span class="linenos">2170</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="L-2171"><a href="#L-2171"><span class="linenos">2171</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2172"><a href="#L-2172"><span class="linenos">2172</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2173"><a href="#L-2173"><span class="linenos">2173</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">,</span> +</span><span id="L-2174"><a href="#L-2174"><span class="linenos">2174</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2175"><a href="#L-2175"><span class="linenos">2175</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2176"><a href="#L-2176"><span class="linenos">2176</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2177"><a href="#L-2177"><span class="linenos">2177</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2178"><a href="#L-2178"><span class="linenos">2178</span></a> <span class="p">)</span> +</span><span id="L-2179"><a href="#L-2179"><span class="linenos">2179</span></a> +</span><span id="L-2180"><a href="#L-2180"><span class="linenos">2180</span></a> <span class="k">def</span> <span class="nf">lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2181"><a href="#L-2181"><span class="linenos">2181</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2182"><a href="#L-2182"><span class="linenos">2182</span></a><span class="sd"> Append to or set the LATERAL expressions.</span> +</span><span id="L-2183"><a href="#L-2183"><span class="linenos">2183</span></a> +</span><span id="L-2184"><a href="#L-2184"><span class="linenos">2184</span></a><span class="sd"> Example:</span> +</span><span id="L-2185"><a href="#L-2185"><span class="linenos">2185</span></a><span class="sd"> >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()</span> +</span><span id="L-2186"><a href="#L-2186"><span class="linenos">2186</span></a><span class="sd"> 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'</span> </span><span id="L-2187"><a href="#L-2187"><span class="linenos">2187</span></a> -</span><span id="L-2188"><a href="#L-2188"><span class="linenos">2188</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()</span> -</span><span id="L-2189"><a href="#L-2189"><span class="linenos">2189</span></a><span class="sd"> 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'</span> -</span><span id="L-2190"><a href="#L-2190"><span class="linenos">2190</span></a> -</span><span id="L-2191"><a href="#L-2191"><span class="linenos">2191</span></a><span class="sd"> Args:</span> -</span><span id="L-2192"><a href="#L-2192"><span class="linenos">2192</span></a><span class="sd"> expression (str | Expression): the SQL code string to parse.</span> -</span><span id="L-2193"><a href="#L-2193"><span class="linenos">2193</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-2194"><a href="#L-2194"><span class="linenos">2194</span></a><span class="sd"> on (str | Expression): optionally specify the join "on" criteria as a SQL string.</span> -</span><span id="L-2195"><a href="#L-2195"><span class="linenos">2195</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-2196"><a href="#L-2196"><span class="linenos">2196</span></a><span class="sd"> using (str | Expression): optionally specify the join "using" criteria as a SQL string.</span> -</span><span id="L-2197"><a href="#L-2197"><span class="linenos">2197</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-2198"><a href="#L-2198"><span class="linenos">2198</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="L-2199"><a href="#L-2199"><span class="linenos">2199</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="L-2200"><a href="#L-2200"><span class="linenos">2200</span></a><span class="sd"> join_type (str): If set, alter the parsed join type</span> -</span><span id="L-2201"><a href="#L-2201"><span class="linenos">2201</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="L-2202"><a href="#L-2202"><span class="linenos">2202</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-2203"><a href="#L-2203"><span class="linenos">2203</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-2204"><a href="#L-2204"><span class="linenos">2204</span></a> -</span><span id="L-2205"><a href="#L-2205"><span class="linenos">2205</span></a><span class="sd"> Returns:</span> -</span><span id="L-2206"><a href="#L-2206"><span class="linenos">2206</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-2207"><a href="#L-2207"><span class="linenos">2207</span></a><span class="sd"> """</span> -</span><span id="L-2208"><a href="#L-2208"><span class="linenos">2208</span></a> <span class="n">parse_args</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">}</span> -</span><span id="L-2209"><a href="#L-2209"><span class="linenos">2209</span></a> -</span><span id="L-2210"><a href="#L-2210"><span class="linenos">2210</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-2211"><a href="#L-2211"><span class="linenos">2211</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Join</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"JOIN"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> -</span><span id="L-2212"><a href="#L-2212"><span class="linenos">2212</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="L-2213"><a href="#L-2213"><span class="linenos">2213</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="p">(</span><span class="n">Join</span><span class="p">,</span> <span class="n">Expression</span><span class="p">),</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> -</span><span id="L-2214"><a href="#L-2214"><span class="linenos">2214</span></a> -</span><span id="L-2215"><a href="#L-2215"><span class="linenos">2215</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">expression</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Join</span><span class="p">)</span> <span class="k">else</span> <span class="n">Join</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-2216"><a href="#L-2216"><span class="linenos">2216</span></a> -</span><span id="L-2217"><a href="#L-2217"><span class="linenos">2217</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Select</span><span class="p">):</span> -</span><span id="L-2218"><a href="#L-2218"><span class="linenos">2218</span></a> <span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">subquery</span><span class="p">())</span> -</span><span id="L-2219"><a href="#L-2219"><span class="linenos">2219</span></a> -</span><span id="L-2220"><a href="#L-2220"><span class="linenos">2220</span></a> <span class="k">if</span> <span class="n">join_type</span><span class="p">:</span> -</span><span id="L-2221"><a href="#L-2221"><span class="linenos">2221</span></a> <span class="n">natural</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> -</span><span id="L-2222"><a href="#L-2222"><span class="linenos">2222</span></a> <span class="n">side</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> -</span><span id="L-2223"><a href="#L-2223"><span class="linenos">2223</span></a> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> -</span><span id="L-2224"><a href="#L-2224"><span class="linenos">2224</span></a> -</span><span id="L-2225"><a href="#L-2225"><span class="linenos">2225</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">join_type</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="s2">"JOIN_TYPE"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-2188"><a href="#L-2188"><span class="linenos">2188</span></a><span class="sd"> Args:</span> +</span><span id="L-2189"><a href="#L-2189"><span class="linenos">2189</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-2190"><a href="#L-2190"><span class="linenos">2190</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-2191"><a href="#L-2191"><span class="linenos">2191</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="L-2192"><a href="#L-2192"><span class="linenos">2192</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="L-2193"><a href="#L-2193"><span class="linenos">2193</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="L-2194"><a href="#L-2194"><span class="linenos">2194</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2195"><a href="#L-2195"><span class="linenos">2195</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-2196"><a href="#L-2196"><span class="linenos">2196</span></a> +</span><span id="L-2197"><a href="#L-2197"><span class="linenos">2197</span></a><span class="sd"> Returns:</span> +</span><span id="L-2198"><a href="#L-2198"><span class="linenos">2198</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2199"><a href="#L-2199"><span class="linenos">2199</span></a><span class="sd"> """</span> +</span><span id="L-2200"><a href="#L-2200"><span class="linenos">2200</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="L-2201"><a href="#L-2201"><span class="linenos">2201</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2202"><a href="#L-2202"><span class="linenos">2202</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2203"><a href="#L-2203"><span class="linenos">2203</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> +</span><span id="L-2204"><a href="#L-2204"><span class="linenos">2204</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2205"><a href="#L-2205"><span class="linenos">2205</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Lateral</span><span class="p">,</span> +</span><span id="L-2206"><a href="#L-2206"><span class="linenos">2206</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LATERAL VIEW"</span><span class="p">,</span> +</span><span id="L-2207"><a href="#L-2207"><span class="linenos">2207</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2208"><a href="#L-2208"><span class="linenos">2208</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2209"><a href="#L-2209"><span class="linenos">2209</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2210"><a href="#L-2210"><span class="linenos">2210</span></a> <span class="p">)</span> +</span><span id="L-2211"><a href="#L-2211"><span class="linenos">2211</span></a> +</span><span id="L-2212"><a href="#L-2212"><span class="linenos">2212</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> +</span><span id="L-2213"><a href="#L-2213"><span class="linenos">2213</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-2214"><a href="#L-2214"><span class="linenos">2214</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-2215"><a href="#L-2215"><span class="linenos">2215</span></a> <span class="n">on</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-2216"><a href="#L-2216"><span class="linenos">2216</span></a> <span class="n">using</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-2217"><a href="#L-2217"><span class="linenos">2217</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-2218"><a href="#L-2218"><span class="linenos">2218</span></a> <span class="n">join_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-2219"><a href="#L-2219"><span class="linenos">2219</span></a> <span class="n">join_alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-2220"><a href="#L-2220"><span class="linenos">2220</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-2221"><a href="#L-2221"><span class="linenos">2221</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-2222"><a href="#L-2222"><span class="linenos">2222</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2223"><a href="#L-2223"><span class="linenos">2223</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2224"><a href="#L-2224"><span class="linenos">2224</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2225"><a href="#L-2225"><span class="linenos">2225</span></a><span class="sd"> Append to or set the JOIN expressions.</span> </span><span id="L-2226"><a href="#L-2226"><span class="linenos">2226</span></a> -</span><span id="L-2227"><a href="#L-2227"><span class="linenos">2227</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> -</span><span id="L-2228"><a href="#L-2228"><span class="linenos">2228</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"natural"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="L-2229"><a href="#L-2229"><span class="linenos">2229</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> -</span><span id="L-2230"><a href="#L-2230"><span class="linenos">2230</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"side"</span><span class="p">,</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-2231"><a href="#L-2231"><span class="linenos">2231</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-2232"><a href="#L-2232"><span class="linenos">2232</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-2227"><a href="#L-2227"><span class="linenos">2227</span></a><span class="sd"> Example:</span> +</span><span id="L-2228"><a href="#L-2228"><span class="linenos">2228</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()</span> +</span><span id="L-2229"><a href="#L-2229"><span class="linenos">2229</span></a><span class="sd"> 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'</span> +</span><span id="L-2230"><a href="#L-2230"><span class="linenos">2230</span></a> +</span><span id="L-2231"><a href="#L-2231"><span class="linenos">2231</span></a><span class="sd"> >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()</span> +</span><span id="L-2232"><a href="#L-2232"><span class="linenos">2232</span></a><span class="sd"> 'SELECT 1 FROM a JOIN b USING (x, y, z)'</span> </span><span id="L-2233"><a href="#L-2233"><span class="linenos">2233</span></a> -</span><span id="L-2234"><a href="#L-2234"><span class="linenos">2234</span></a> <span class="k">if</span> <span class="n">on</span><span class="p">:</span> -</span><span id="L-2235"><a href="#L-2235"><span class="linenos">2235</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">on</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-2236"><a href="#L-2236"><span class="linenos">2236</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="n">on</span><span class="p">)</span> -</span><span id="L-2237"><a href="#L-2237"><span class="linenos">2237</span></a> -</span><span id="L-2238"><a href="#L-2238"><span class="linenos">2238</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> -</span><span id="L-2239"><a href="#L-2239"><span class="linenos">2239</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="L-2240"><a href="#L-2240"><span class="linenos">2240</span></a> <span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">using</span><span class="p">),</span> -</span><span id="L-2241"><a href="#L-2241"><span class="linenos">2241</span></a> <span class="n">instance</span><span class="o">=</span><span class="n">join</span><span class="p">,</span> -</span><span id="L-2242"><a href="#L-2242"><span class="linenos">2242</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> -</span><span id="L-2243"><a href="#L-2243"><span class="linenos">2243</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-2244"><a href="#L-2244"><span class="linenos">2244</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2245"><a href="#L-2245"><span class="linenos">2245</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2246"><a href="#L-2246"><span class="linenos">2246</span></a> <span class="p">)</span> -</span><span id="L-2247"><a href="#L-2247"><span class="linenos">2247</span></a> -</span><span id="L-2248"><a href="#L-2248"><span class="linenos">2248</span></a> <span class="k">if</span> <span class="n">join_alias</span><span class="p">:</span> -</span><span id="L-2249"><a href="#L-2249"><span class="linenos">2249</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">alias_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">join_alias</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-2250"><a href="#L-2250"><span class="linenos">2250</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="L-2251"><a href="#L-2251"><span class="linenos">2251</span></a> <span class="n">join</span><span class="p">,</span> -</span><span id="L-2252"><a href="#L-2252"><span class="linenos">2252</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-2253"><a href="#L-2253"><span class="linenos">2253</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> -</span><span id="L-2254"><a href="#L-2254"><span class="linenos">2254</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-2255"><a href="#L-2255"><span class="linenos">2255</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2256"><a href="#L-2256"><span class="linenos">2256</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2257"><a href="#L-2257"><span class="linenos">2257</span></a> <span class="p">)</span> -</span><span id="L-2258"><a href="#L-2258"><span class="linenos">2258</span></a> -</span><span id="L-2259"><a href="#L-2259"><span class="linenos">2259</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2260"><a href="#L-2260"><span class="linenos">2260</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2261"><a href="#L-2261"><span class="linenos">2261</span></a><span class="sd"> Append to or set the WHERE expressions.</span> +</span><span id="L-2234"><a href="#L-2234"><span class="linenos">2234</span></a><span class="sd"> Use `join_type` to change the type of join:</span> +</span><span id="L-2235"><a href="#L-2235"><span class="linenos">2235</span></a> +</span><span id="L-2236"><a href="#L-2236"><span class="linenos">2236</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()</span> +</span><span id="L-2237"><a href="#L-2237"><span class="linenos">2237</span></a><span class="sd"> 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'</span> +</span><span id="L-2238"><a href="#L-2238"><span class="linenos">2238</span></a> +</span><span id="L-2239"><a href="#L-2239"><span class="linenos">2239</span></a><span class="sd"> Args:</span> +</span><span id="L-2240"><a href="#L-2240"><span class="linenos">2240</span></a><span class="sd"> expression (str | Expression): the SQL code string to parse.</span> +</span><span id="L-2241"><a href="#L-2241"><span class="linenos">2241</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-2242"><a href="#L-2242"><span class="linenos">2242</span></a><span class="sd"> on (str | Expression): optionally specify the join "on" criteria as a SQL string.</span> +</span><span id="L-2243"><a href="#L-2243"><span class="linenos">2243</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-2244"><a href="#L-2244"><span class="linenos">2244</span></a><span class="sd"> using (str | Expression): optionally specify the join "using" criteria as a SQL string.</span> +</span><span id="L-2245"><a href="#L-2245"><span class="linenos">2245</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-2246"><a href="#L-2246"><span class="linenos">2246</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="L-2247"><a href="#L-2247"><span class="linenos">2247</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="L-2248"><a href="#L-2248"><span class="linenos">2248</span></a><span class="sd"> join_type (str): If set, alter the parsed join type</span> +</span><span id="L-2249"><a href="#L-2249"><span class="linenos">2249</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="L-2250"><a href="#L-2250"><span class="linenos">2250</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2251"><a href="#L-2251"><span class="linenos">2251</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-2252"><a href="#L-2252"><span class="linenos">2252</span></a> +</span><span id="L-2253"><a href="#L-2253"><span class="linenos">2253</span></a><span class="sd"> Returns:</span> +</span><span id="L-2254"><a href="#L-2254"><span class="linenos">2254</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2255"><a href="#L-2255"><span class="linenos">2255</span></a><span class="sd"> """</span> +</span><span id="L-2256"><a href="#L-2256"><span class="linenos">2256</span></a> <span class="n">parse_args</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">}</span> +</span><span id="L-2257"><a href="#L-2257"><span class="linenos">2257</span></a> +</span><span id="L-2258"><a href="#L-2258"><span class="linenos">2258</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-2259"><a href="#L-2259"><span class="linenos">2259</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Join</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"JOIN"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> +</span><span id="L-2260"><a href="#L-2260"><span class="linenos">2260</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="L-2261"><a href="#L-2261"><span class="linenos">2261</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="p">(</span><span class="n">Join</span><span class="p">,</span> <span class="n">Expression</span><span class="p">),</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> </span><span id="L-2262"><a href="#L-2262"><span class="linenos">2262</span></a> -</span><span id="L-2263"><a href="#L-2263"><span class="linenos">2263</span></a><span class="sd"> Example:</span> -</span><span id="L-2264"><a href="#L-2264"><span class="linenos">2264</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()</span> -</span><span id="L-2265"><a href="#L-2265"><span class="linenos">2265</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"</span> -</span><span id="L-2266"><a href="#L-2266"><span class="linenos">2266</span></a> -</span><span id="L-2267"><a href="#L-2267"><span class="linenos">2267</span></a><span class="sd"> Args:</span> -</span><span id="L-2268"><a href="#L-2268"><span class="linenos">2268</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-2269"><a href="#L-2269"><span class="linenos">2269</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-2270"><a href="#L-2270"><span class="linenos">2270</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> -</span><span id="L-2271"><a href="#L-2271"><span class="linenos">2271</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> -</span><span id="L-2272"><a href="#L-2272"><span class="linenos">2272</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="L-2273"><a href="#L-2273"><span class="linenos">2273</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="L-2274"><a href="#L-2274"><span class="linenos">2274</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-2275"><a href="#L-2275"><span class="linenos">2275</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-2276"><a href="#L-2276"><span class="linenos">2276</span></a> -</span><span id="L-2277"><a href="#L-2277"><span class="linenos">2277</span></a><span class="sd"> Returns:</span> -</span><span id="L-2278"><a href="#L-2278"><span class="linenos">2278</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-2279"><a href="#L-2279"><span class="linenos">2279</span></a><span class="sd"> """</span> -</span><span id="L-2280"><a href="#L-2280"><span class="linenos">2280</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="L-2281"><a href="#L-2281"><span class="linenos">2281</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2282"><a href="#L-2282"><span class="linenos">2282</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-2283"><a href="#L-2283"><span class="linenos">2283</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"where"</span><span class="p">,</span> -</span><span id="L-2284"><a href="#L-2284"><span class="linenos">2284</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-2285"><a href="#L-2285"><span class="linenos">2285</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> -</span><span id="L-2286"><a href="#L-2286"><span class="linenos">2286</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-2287"><a href="#L-2287"><span class="linenos">2287</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2288"><a href="#L-2288"><span class="linenos">2288</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2289"><a href="#L-2289"><span class="linenos">2289</span></a> <span class="p">)</span> -</span><span id="L-2290"><a href="#L-2290"><span class="linenos">2290</span></a> -</span><span id="L-2291"><a href="#L-2291"><span class="linenos">2291</span></a> <span class="k">def</span> <span class="nf">having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2292"><a href="#L-2292"><span class="linenos">2292</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2293"><a href="#L-2293"><span class="linenos">2293</span></a><span class="sd"> Append to or set the HAVING expressions.</span> -</span><span id="L-2294"><a href="#L-2294"><span class="linenos">2294</span></a> -</span><span id="L-2295"><a href="#L-2295"><span class="linenos">2295</span></a><span class="sd"> Example:</span> -</span><span id="L-2296"><a href="#L-2296"><span class="linenos">2296</span></a><span class="sd"> >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()</span> -</span><span id="L-2297"><a href="#L-2297"><span class="linenos">2297</span></a><span class="sd"> 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'</span> -</span><span id="L-2298"><a href="#L-2298"><span class="linenos">2298</span></a> -</span><span id="L-2299"><a href="#L-2299"><span class="linenos">2299</span></a><span class="sd"> Args:</span> -</span><span id="L-2300"><a href="#L-2300"><span class="linenos">2300</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-2301"><a href="#L-2301"><span class="linenos">2301</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-2302"><a href="#L-2302"><span class="linenos">2302</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> -</span><span id="L-2303"><a href="#L-2303"><span class="linenos">2303</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> -</span><span id="L-2304"><a href="#L-2304"><span class="linenos">2304</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="L-2305"><a href="#L-2305"><span class="linenos">2305</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="L-2306"><a href="#L-2306"><span class="linenos">2306</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-2307"><a href="#L-2307"><span class="linenos">2307</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-2308"><a href="#L-2308"><span class="linenos">2308</span></a> -</span><span id="L-2309"><a href="#L-2309"><span class="linenos">2309</span></a><span class="sd"> Returns:</span> -</span><span id="L-2310"><a href="#L-2310"><span class="linenos">2310</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-2311"><a href="#L-2311"><span class="linenos">2311</span></a><span class="sd"> """</span> -</span><span id="L-2312"><a href="#L-2312"><span class="linenos">2312</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="L-2313"><a href="#L-2313"><span class="linenos">2313</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2314"><a href="#L-2314"><span class="linenos">2314</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-2315"><a href="#L-2315"><span class="linenos">2315</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"having"</span><span class="p">,</span> -</span><span id="L-2316"><a href="#L-2316"><span class="linenos">2316</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-2317"><a href="#L-2317"><span class="linenos">2317</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Having</span><span class="p">,</span> -</span><span id="L-2318"><a href="#L-2318"><span class="linenos">2318</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-2319"><a href="#L-2319"><span class="linenos">2319</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2320"><a href="#L-2320"><span class="linenos">2320</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2321"><a href="#L-2321"><span class="linenos">2321</span></a> <span class="p">)</span> -</span><span id="L-2322"><a href="#L-2322"><span class="linenos">2322</span></a> -</span><span id="L-2323"><a href="#L-2323"><span class="linenos">2323</span></a> <span class="k">def</span> <span class="nf">window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2324"><a href="#L-2324"><span class="linenos">2324</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="L-2325"><a href="#L-2325"><span class="linenos">2325</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2326"><a href="#L-2326"><span class="linenos">2326</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="L-2327"><a href="#L-2327"><span class="linenos">2327</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"windows"</span><span class="p">,</span> -</span><span id="L-2328"><a href="#L-2328"><span class="linenos">2328</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="L-2329"><a href="#L-2329"><span class="linenos">2329</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Window</span><span class="p">,</span> -</span><span id="L-2330"><a href="#L-2330"><span class="linenos">2330</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-2331"><a href="#L-2331"><span class="linenos">2331</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="L-2332"><a href="#L-2332"><span class="linenos">2332</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2333"><a href="#L-2333"><span class="linenos">2333</span></a> <span class="p">)</span> -</span><span id="L-2334"><a href="#L-2334"><span class="linenos">2334</span></a> -</span><span id="L-2335"><a href="#L-2335"><span class="linenos">2335</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2336"><a href="#L-2336"><span class="linenos">2336</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2337"><a href="#L-2337"><span class="linenos">2337</span></a><span class="sd"> Set the OFFSET expression.</span> +</span><span id="L-2263"><a href="#L-2263"><span class="linenos">2263</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">expression</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Join</span><span class="p">)</span> <span class="k">else</span> <span class="n">Join</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-2264"><a href="#L-2264"><span class="linenos">2264</span></a> +</span><span id="L-2265"><a href="#L-2265"><span class="linenos">2265</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Select</span><span class="p">):</span> +</span><span id="L-2266"><a href="#L-2266"><span class="linenos">2266</span></a> <span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">subquery</span><span class="p">())</span> +</span><span id="L-2267"><a href="#L-2267"><span class="linenos">2267</span></a> +</span><span id="L-2268"><a href="#L-2268"><span class="linenos">2268</span></a> <span class="k">if</span> <span class="n">join_type</span><span class="p">:</span> +</span><span id="L-2269"><a href="#L-2269"><span class="linenos">2269</span></a> <span class="n">natural</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> +</span><span id="L-2270"><a href="#L-2270"><span class="linenos">2270</span></a> <span class="n">side</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> +</span><span id="L-2271"><a href="#L-2271"><span class="linenos">2271</span></a> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> +</span><span id="L-2272"><a href="#L-2272"><span class="linenos">2272</span></a> +</span><span id="L-2273"><a href="#L-2273"><span class="linenos">2273</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">join_type</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="s2">"JOIN_TYPE"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-2274"><a href="#L-2274"><span class="linenos">2274</span></a> +</span><span id="L-2275"><a href="#L-2275"><span class="linenos">2275</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> +</span><span id="L-2276"><a href="#L-2276"><span class="linenos">2276</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"natural"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="L-2277"><a href="#L-2277"><span class="linenos">2277</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> +</span><span id="L-2278"><a href="#L-2278"><span class="linenos">2278</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"side"</span><span class="p">,</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-2279"><a href="#L-2279"><span class="linenos">2279</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-2280"><a href="#L-2280"><span class="linenos">2280</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-2281"><a href="#L-2281"><span class="linenos">2281</span></a> +</span><span id="L-2282"><a href="#L-2282"><span class="linenos">2282</span></a> <span class="k">if</span> <span class="n">on</span><span class="p">:</span> +</span><span id="L-2283"><a href="#L-2283"><span class="linenos">2283</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">on</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-2284"><a href="#L-2284"><span class="linenos">2284</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="n">on</span><span class="p">)</span> +</span><span id="L-2285"><a href="#L-2285"><span class="linenos">2285</span></a> +</span><span id="L-2286"><a href="#L-2286"><span class="linenos">2286</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> +</span><span id="L-2287"><a href="#L-2287"><span class="linenos">2287</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="L-2288"><a href="#L-2288"><span class="linenos">2288</span></a> <span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">using</span><span class="p">),</span> +</span><span id="L-2289"><a href="#L-2289"><span class="linenos">2289</span></a> <span class="n">instance</span><span class="o">=</span><span class="n">join</span><span class="p">,</span> +</span><span id="L-2290"><a href="#L-2290"><span class="linenos">2290</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> +</span><span id="L-2291"><a href="#L-2291"><span class="linenos">2291</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2292"><a href="#L-2292"><span class="linenos">2292</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2293"><a href="#L-2293"><span class="linenos">2293</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2294"><a href="#L-2294"><span class="linenos">2294</span></a> <span class="p">)</span> +</span><span id="L-2295"><a href="#L-2295"><span class="linenos">2295</span></a> +</span><span id="L-2296"><a href="#L-2296"><span class="linenos">2296</span></a> <span class="k">if</span> <span class="n">join_alias</span><span class="p">:</span> +</span><span id="L-2297"><a href="#L-2297"><span class="linenos">2297</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">alias_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">join_alias</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-2298"><a href="#L-2298"><span class="linenos">2298</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="L-2299"><a href="#L-2299"><span class="linenos">2299</span></a> <span class="n">join</span><span class="p">,</span> +</span><span id="L-2300"><a href="#L-2300"><span class="linenos">2300</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2301"><a href="#L-2301"><span class="linenos">2301</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> +</span><span id="L-2302"><a href="#L-2302"><span class="linenos">2302</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2303"><a href="#L-2303"><span class="linenos">2303</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2304"><a href="#L-2304"><span class="linenos">2304</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2305"><a href="#L-2305"><span class="linenos">2305</span></a> <span class="p">)</span> +</span><span id="L-2306"><a href="#L-2306"><span class="linenos">2306</span></a> +</span><span id="L-2307"><a href="#L-2307"><span class="linenos">2307</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2308"><a href="#L-2308"><span class="linenos">2308</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2309"><a href="#L-2309"><span class="linenos">2309</span></a><span class="sd"> Append to or set the WHERE expressions.</span> +</span><span id="L-2310"><a href="#L-2310"><span class="linenos">2310</span></a> +</span><span id="L-2311"><a href="#L-2311"><span class="linenos">2311</span></a><span class="sd"> Example:</span> +</span><span id="L-2312"><a href="#L-2312"><span class="linenos">2312</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()</span> +</span><span id="L-2313"><a href="#L-2313"><span class="linenos">2313</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"</span> +</span><span id="L-2314"><a href="#L-2314"><span class="linenos">2314</span></a> +</span><span id="L-2315"><a href="#L-2315"><span class="linenos">2315</span></a><span class="sd"> Args:</span> +</span><span id="L-2316"><a href="#L-2316"><span class="linenos">2316</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-2317"><a href="#L-2317"><span class="linenos">2317</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-2318"><a href="#L-2318"><span class="linenos">2318</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> +</span><span id="L-2319"><a href="#L-2319"><span class="linenos">2319</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> +</span><span id="L-2320"><a href="#L-2320"><span class="linenos">2320</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="L-2321"><a href="#L-2321"><span class="linenos">2321</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="L-2322"><a href="#L-2322"><span class="linenos">2322</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2323"><a href="#L-2323"><span class="linenos">2323</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-2324"><a href="#L-2324"><span class="linenos">2324</span></a> +</span><span id="L-2325"><a href="#L-2325"><span class="linenos">2325</span></a><span class="sd"> Returns:</span> +</span><span id="L-2326"><a href="#L-2326"><span class="linenos">2326</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2327"><a href="#L-2327"><span class="linenos">2327</span></a><span class="sd"> """</span> +</span><span id="L-2328"><a href="#L-2328"><span class="linenos">2328</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="L-2329"><a href="#L-2329"><span class="linenos">2329</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2330"><a href="#L-2330"><span class="linenos">2330</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2331"><a href="#L-2331"><span class="linenos">2331</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"where"</span><span class="p">,</span> +</span><span id="L-2332"><a href="#L-2332"><span class="linenos">2332</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2333"><a href="#L-2333"><span class="linenos">2333</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> +</span><span id="L-2334"><a href="#L-2334"><span class="linenos">2334</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2335"><a href="#L-2335"><span class="linenos">2335</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2336"><a href="#L-2336"><span class="linenos">2336</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2337"><a href="#L-2337"><span class="linenos">2337</span></a> <span class="p">)</span> </span><span id="L-2338"><a href="#L-2338"><span class="linenos">2338</span></a> -</span><span id="L-2339"><a href="#L-2339"><span class="linenos">2339</span></a><span class="sd"> Example:</span> -</span><span id="L-2340"><a href="#L-2340"><span class="linenos">2340</span></a><span class="sd"> >>> Select().from_("tbl").select("x").distinct().sql()</span> -</span><span id="L-2341"><a href="#L-2341"><span class="linenos">2341</span></a><span class="sd"> 'SELECT DISTINCT x FROM tbl'</span> +</span><span id="L-2339"><a href="#L-2339"><span class="linenos">2339</span></a> <span class="k">def</span> <span class="nf">having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2340"><a href="#L-2340"><span class="linenos">2340</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2341"><a href="#L-2341"><span class="linenos">2341</span></a><span class="sd"> Append to or set the HAVING expressions.</span> </span><span id="L-2342"><a href="#L-2342"><span class="linenos">2342</span></a> -</span><span id="L-2343"><a href="#L-2343"><span class="linenos">2343</span></a><span class="sd"> Args:</span> -</span><span id="L-2344"><a href="#L-2344"><span class="linenos">2344</span></a><span class="sd"> distinct (bool): whether the Select should be distinct</span> -</span><span id="L-2345"><a href="#L-2345"><span class="linenos">2345</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2343"><a href="#L-2343"><span class="linenos">2343</span></a><span class="sd"> Example:</span> +</span><span id="L-2344"><a href="#L-2344"><span class="linenos">2344</span></a><span class="sd"> >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()</span> +</span><span id="L-2345"><a href="#L-2345"><span class="linenos">2345</span></a><span class="sd"> 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'</span> </span><span id="L-2346"><a href="#L-2346"><span class="linenos">2346</span></a> -</span><span id="L-2347"><a href="#L-2347"><span class="linenos">2347</span></a><span class="sd"> Returns:</span> -</span><span id="L-2348"><a href="#L-2348"><span class="linenos">2348</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="L-2349"><a href="#L-2349"><span class="linenos">2349</span></a><span class="sd"> """</span> -</span><span id="L-2350"><a href="#L-2350"><span class="linenos">2350</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-2351"><a href="#L-2351"><span class="linenos">2351</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">,</span> <span class="n">Distinct</span><span class="p">()</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-2352"><a href="#L-2352"><span class="linenos">2352</span></a> <span class="k">return</span> <span class="n">instance</span> -</span><span id="L-2353"><a href="#L-2353"><span class="linenos">2353</span></a> -</span><span id="L-2354"><a href="#L-2354"><span class="linenos">2354</span></a> <span class="k">def</span> <span class="nf">ctas</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Create</span><span class="p">:</span> -</span><span id="L-2355"><a href="#L-2355"><span class="linenos">2355</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2356"><a href="#L-2356"><span class="linenos">2356</span></a><span class="sd"> Convert this expression to a CREATE TABLE AS statement.</span> -</span><span id="L-2357"><a href="#L-2357"><span class="linenos">2357</span></a> -</span><span id="L-2358"><a href="#L-2358"><span class="linenos">2358</span></a><span class="sd"> Example:</span> -</span><span id="L-2359"><a href="#L-2359"><span class="linenos">2359</span></a><span class="sd"> >>> Select().select("*").from_("tbl").ctas("x").sql()</span> -</span><span id="L-2360"><a href="#L-2360"><span class="linenos">2360</span></a><span class="sd"> 'CREATE TABLE x AS SELECT * FROM tbl'</span> -</span><span id="L-2361"><a href="#L-2361"><span class="linenos">2361</span></a> -</span><span id="L-2362"><a href="#L-2362"><span class="linenos">2362</span></a><span class="sd"> Args:</span> -</span><span id="L-2363"><a href="#L-2363"><span class="linenos">2363</span></a><span class="sd"> table (str | Expression): the SQL code string to parse as the table name.</span> -</span><span id="L-2364"><a href="#L-2364"><span class="linenos">2364</span></a><span class="sd"> If another `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-2365"><a href="#L-2365"><span class="linenos">2365</span></a><span class="sd"> properties (dict): an optional mapping of table properties</span> -</span><span id="L-2366"><a href="#L-2366"><span class="linenos">2366</span></a><span class="sd"> dialect (str): the dialect used to parse the input table.</span> -</span><span id="L-2367"><a href="#L-2367"><span class="linenos">2367</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="L-2368"><a href="#L-2368"><span class="linenos">2368</span></a><span class="sd"> opts (kwargs): other options to use to parse the input table.</span> -</span><span id="L-2369"><a href="#L-2369"><span class="linenos">2369</span></a> -</span><span id="L-2370"><a href="#L-2370"><span class="linenos">2370</span></a><span class="sd"> Returns:</span> -</span><span id="L-2371"><a href="#L-2371"><span class="linenos">2371</span></a><span class="sd"> Create: the CREATE TABLE AS expression</span> -</span><span id="L-2372"><a href="#L-2372"><span class="linenos">2372</span></a><span class="sd"> """</span> -</span><span id="L-2373"><a href="#L-2373"><span class="linenos">2373</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-2374"><a href="#L-2374"><span class="linenos">2374</span></a> <span class="n">table_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-2375"><a href="#L-2375"><span class="linenos">2375</span></a> <span class="n">table</span><span class="p">,</span> -</span><span id="L-2376"><a href="#L-2376"><span class="linenos">2376</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> -</span><span id="L-2377"><a href="#L-2377"><span class="linenos">2377</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-2378"><a href="#L-2378"><span class="linenos">2378</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-2379"><a href="#L-2379"><span class="linenos">2379</span></a> <span class="p">)</span> -</span><span id="L-2380"><a href="#L-2380"><span class="linenos">2380</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2381"><a href="#L-2381"><span class="linenos">2381</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> -</span><span id="L-2382"><a href="#L-2382"><span class="linenos">2382</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> -</span><span id="L-2383"><a href="#L-2383"><span class="linenos">2383</span></a> -</span><span id="L-2384"><a href="#L-2384"><span class="linenos">2384</span></a> <span class="k">return</span> <span class="n">Create</span><span class="p">(</span> -</span><span id="L-2385"><a href="#L-2385"><span class="linenos">2385</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table_expression</span><span class="p">,</span> -</span><span id="L-2386"><a href="#L-2386"><span class="linenos">2386</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"table"</span><span class="p">,</span> -</span><span id="L-2387"><a href="#L-2387"><span class="linenos">2387</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> -</span><span id="L-2388"><a href="#L-2388"><span class="linenos">2388</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties_expression</span><span class="p">,</span> -</span><span id="L-2389"><a href="#L-2389"><span class="linenos">2389</span></a> <span class="p">)</span> +</span><span id="L-2347"><a href="#L-2347"><span class="linenos">2347</span></a><span class="sd"> Args:</span> +</span><span id="L-2348"><a href="#L-2348"><span class="linenos">2348</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-2349"><a href="#L-2349"><span class="linenos">2349</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-2350"><a href="#L-2350"><span class="linenos">2350</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> +</span><span id="L-2351"><a href="#L-2351"><span class="linenos">2351</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> +</span><span id="L-2352"><a href="#L-2352"><span class="linenos">2352</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="L-2353"><a href="#L-2353"><span class="linenos">2353</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="L-2354"><a href="#L-2354"><span class="linenos">2354</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2355"><a href="#L-2355"><span class="linenos">2355</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-2356"><a href="#L-2356"><span class="linenos">2356</span></a> +</span><span id="L-2357"><a href="#L-2357"><span class="linenos">2357</span></a><span class="sd"> Returns:</span> +</span><span id="L-2358"><a href="#L-2358"><span class="linenos">2358</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2359"><a href="#L-2359"><span class="linenos">2359</span></a><span class="sd"> """</span> +</span><span id="L-2360"><a href="#L-2360"><span class="linenos">2360</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="L-2361"><a href="#L-2361"><span class="linenos">2361</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2362"><a href="#L-2362"><span class="linenos">2362</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2363"><a href="#L-2363"><span class="linenos">2363</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"having"</span><span class="p">,</span> +</span><span id="L-2364"><a href="#L-2364"><span class="linenos">2364</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2365"><a href="#L-2365"><span class="linenos">2365</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Having</span><span class="p">,</span> +</span><span id="L-2366"><a href="#L-2366"><span class="linenos">2366</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2367"><a href="#L-2367"><span class="linenos">2367</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2368"><a href="#L-2368"><span class="linenos">2368</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2369"><a href="#L-2369"><span class="linenos">2369</span></a> <span class="p">)</span> +</span><span id="L-2370"><a href="#L-2370"><span class="linenos">2370</span></a> +</span><span id="L-2371"><a href="#L-2371"><span class="linenos">2371</span></a> <span class="k">def</span> <span class="nf">window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2372"><a href="#L-2372"><span class="linenos">2372</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="L-2373"><a href="#L-2373"><span class="linenos">2373</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2374"><a href="#L-2374"><span class="linenos">2374</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="L-2375"><a href="#L-2375"><span class="linenos">2375</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"windows"</span><span class="p">,</span> +</span><span id="L-2376"><a href="#L-2376"><span class="linenos">2376</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="L-2377"><a href="#L-2377"><span class="linenos">2377</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Window</span><span class="p">,</span> +</span><span id="L-2378"><a href="#L-2378"><span class="linenos">2378</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2379"><a href="#L-2379"><span class="linenos">2379</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="L-2380"><a href="#L-2380"><span class="linenos">2380</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2381"><a href="#L-2381"><span class="linenos">2381</span></a> <span class="p">)</span> +</span><span id="L-2382"><a href="#L-2382"><span class="linenos">2382</span></a> +</span><span id="L-2383"><a href="#L-2383"><span class="linenos">2383</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2384"><a href="#L-2384"><span class="linenos">2384</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2385"><a href="#L-2385"><span class="linenos">2385</span></a><span class="sd"> Set the OFFSET expression.</span> +</span><span id="L-2386"><a href="#L-2386"><span class="linenos">2386</span></a> +</span><span id="L-2387"><a href="#L-2387"><span class="linenos">2387</span></a><span class="sd"> Example:</span> +</span><span id="L-2388"><a href="#L-2388"><span class="linenos">2388</span></a><span class="sd"> >>> Select().from_("tbl").select("x").distinct().sql()</span> +</span><span id="L-2389"><a href="#L-2389"><span class="linenos">2389</span></a><span class="sd"> 'SELECT DISTINCT x FROM tbl'</span> </span><span id="L-2390"><a href="#L-2390"><span class="linenos">2390</span></a> -</span><span id="L-2391"><a href="#L-2391"><span class="linenos">2391</span></a> <span class="k">def</span> <span class="nf">lock</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">update</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-2392"><a href="#L-2392"><span class="linenos">2392</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2393"><a href="#L-2393"><span class="linenos">2393</span></a><span class="sd"> Set the locking read mode for this expression.</span> +</span><span id="L-2391"><a href="#L-2391"><span class="linenos">2391</span></a><span class="sd"> Args:</span> +</span><span id="L-2392"><a href="#L-2392"><span class="linenos">2392</span></a><span class="sd"> distinct (bool): whether the Select should be distinct</span> +</span><span id="L-2393"><a href="#L-2393"><span class="linenos">2393</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> </span><span id="L-2394"><a href="#L-2394"><span class="linenos">2394</span></a> -</span><span id="L-2395"><a href="#L-2395"><span class="linenos">2395</span></a><span class="sd"> Examples:</span> -</span><span id="L-2396"><a href="#L-2396"><span class="linenos">2396</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")</span> -</span><span id="L-2397"><a href="#L-2397"><span class="linenos">2397</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"</span> -</span><span id="L-2398"><a href="#L-2398"><span class="linenos">2398</span></a> -</span><span id="L-2399"><a href="#L-2399"><span class="linenos">2399</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")</span> -</span><span id="L-2400"><a href="#L-2400"><span class="linenos">2400</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"</span> +</span><span id="L-2395"><a href="#L-2395"><span class="linenos">2395</span></a><span class="sd"> Returns:</span> +</span><span id="L-2396"><a href="#L-2396"><span class="linenos">2396</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="L-2397"><a href="#L-2397"><span class="linenos">2397</span></a><span class="sd"> """</span> +</span><span id="L-2398"><a href="#L-2398"><span class="linenos">2398</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-2399"><a href="#L-2399"><span class="linenos">2399</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">,</span> <span class="n">Distinct</span><span class="p">()</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-2400"><a href="#L-2400"><span class="linenos">2400</span></a> <span class="k">return</span> <span class="n">instance</span> </span><span id="L-2401"><a href="#L-2401"><span class="linenos">2401</span></a> -</span><span id="L-2402"><a href="#L-2402"><span class="linenos">2402</span></a><span class="sd"> Args:</span> -</span><span id="L-2403"><a href="#L-2403"><span class="linenos">2403</span></a><span class="sd"> update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.</span> -</span><span id="L-2404"><a href="#L-2404"><span class="linenos">2404</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="L-2402"><a href="#L-2402"><span class="linenos">2402</span></a> <span class="k">def</span> <span class="nf">ctas</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Create</span><span class="p">:</span> +</span><span id="L-2403"><a href="#L-2403"><span class="linenos">2403</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2404"><a href="#L-2404"><span class="linenos">2404</span></a><span class="sd"> Convert this expression to a CREATE TABLE AS statement.</span> </span><span id="L-2405"><a href="#L-2405"><span class="linenos">2405</span></a> -</span><span id="L-2406"><a href="#L-2406"><span class="linenos">2406</span></a><span class="sd"> Returns:</span> -</span><span id="L-2407"><a href="#L-2407"><span class="linenos">2407</span></a><span class="sd"> The modified expression.</span> -</span><span id="L-2408"><a href="#L-2408"><span class="linenos">2408</span></a><span class="sd"> """</span> +</span><span id="L-2406"><a href="#L-2406"><span class="linenos">2406</span></a><span class="sd"> Example:</span> +</span><span id="L-2407"><a href="#L-2407"><span class="linenos">2407</span></a><span class="sd"> >>> Select().select("*").from_("tbl").ctas("x").sql()</span> +</span><span id="L-2408"><a href="#L-2408"><span class="linenos">2408</span></a><span class="sd"> 'CREATE TABLE x AS SELECT * FROM tbl'</span> </span><span id="L-2409"><a href="#L-2409"><span class="linenos">2409</span></a> -</span><span id="L-2410"><a href="#L-2410"><span class="linenos">2410</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-2411"><a href="#L-2411"><span class="linenos">2411</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"lock"</span><span class="p">,</span> <span class="n">Lock</span><span class="p">(</span><span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">))</span> -</span><span id="L-2412"><a href="#L-2412"><span class="linenos">2412</span></a> -</span><span id="L-2413"><a href="#L-2413"><span class="linenos">2413</span></a> <span class="k">return</span> <span class="n">inst</span> -</span><span id="L-2414"><a href="#L-2414"><span class="linenos">2414</span></a> -</span><span id="L-2415"><a href="#L-2415"><span class="linenos">2415</span></a> <span class="nd">@property</span> -</span><span id="L-2416"><a href="#L-2416"><span class="linenos">2416</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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-2417"><a href="#L-2417"><span class="linenos">2417</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">output_name</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> -</span><span id="L-2418"><a href="#L-2418"><span class="linenos">2418</span></a> -</span><span id="L-2419"><a href="#L-2419"><span class="linenos">2419</span></a> <span class="nd">@property</span> -</span><span id="L-2420"><a href="#L-2420"><span class="linenos">2420</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2421"><a href="#L-2421"><span class="linenos">2421</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="L-2422"><a href="#L-2422"><span class="linenos">2422</span></a> -</span><span id="L-2423"><a href="#L-2423"><span class="linenos">2423</span></a> -</span><span id="L-2424"><a href="#L-2424"><span class="linenos">2424</span></a><span class="k">class</span> <span class="nc">Subquery</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">,</span> <span class="n">Unionable</span><span class="p">):</span> -</span><span id="L-2425"><a href="#L-2425"><span class="linenos">2425</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2426"><a href="#L-2426"><span class="linenos">2426</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2427"><a href="#L-2427"><span class="linenos">2427</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2428"><a href="#L-2428"><span class="linenos">2428</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2429"><a href="#L-2429"><span class="linenos">2429</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> -</span><span id="L-2430"><a href="#L-2430"><span class="linenos">2430</span></a> <span class="p">}</span> +</span><span id="L-2410"><a href="#L-2410"><span class="linenos">2410</span></a><span class="sd"> Args:</span> +</span><span id="L-2411"><a href="#L-2411"><span class="linenos">2411</span></a><span class="sd"> table (str | Expression): the SQL code string to parse as the table name.</span> +</span><span id="L-2412"><a href="#L-2412"><span class="linenos">2412</span></a><span class="sd"> If another `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-2413"><a href="#L-2413"><span class="linenos">2413</span></a><span class="sd"> properties (dict): an optional mapping of table properties</span> +</span><span id="L-2414"><a href="#L-2414"><span class="linenos">2414</span></a><span class="sd"> dialect (str): the dialect used to parse the input table.</span> +</span><span id="L-2415"><a href="#L-2415"><span class="linenos">2415</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="L-2416"><a href="#L-2416"><span class="linenos">2416</span></a><span class="sd"> opts (kwargs): other options to use to parse the input table.</span> +</span><span id="L-2417"><a href="#L-2417"><span class="linenos">2417</span></a> +</span><span id="L-2418"><a href="#L-2418"><span class="linenos">2418</span></a><span class="sd"> Returns:</span> +</span><span id="L-2419"><a href="#L-2419"><span class="linenos">2419</span></a><span class="sd"> Create: the CREATE TABLE AS expression</span> +</span><span id="L-2420"><a href="#L-2420"><span class="linenos">2420</span></a><span class="sd"> """</span> +</span><span id="L-2421"><a href="#L-2421"><span class="linenos">2421</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-2422"><a href="#L-2422"><span class="linenos">2422</span></a> <span class="n">table_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-2423"><a href="#L-2423"><span class="linenos">2423</span></a> <span class="n">table</span><span class="p">,</span> +</span><span id="L-2424"><a href="#L-2424"><span class="linenos">2424</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> +</span><span id="L-2425"><a href="#L-2425"><span class="linenos">2425</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-2426"><a href="#L-2426"><span class="linenos">2426</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-2427"><a href="#L-2427"><span class="linenos">2427</span></a> <span class="p">)</span> +</span><span id="L-2428"><a href="#L-2428"><span class="linenos">2428</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2429"><a href="#L-2429"><span class="linenos">2429</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> +</span><span id="L-2430"><a href="#L-2430"><span class="linenos">2430</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> </span><span id="L-2431"><a href="#L-2431"><span class="linenos">2431</span></a> -</span><span id="L-2432"><a href="#L-2432"><span class="linenos">2432</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-2433"><a href="#L-2433"><span class="linenos">2433</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2434"><a href="#L-2434"><span class="linenos">2434</span></a><span class="sd"> Returns the first non subquery.</span> -</span><span id="L-2435"><a href="#L-2435"><span class="linenos">2435</span></a><span class="sd"> """</span> -</span><span id="L-2436"><a href="#L-2436"><span class="linenos">2436</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="L-2437"><a href="#L-2437"><span class="linenos">2437</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Subquery</span><span class="p">):</span> -</span><span id="L-2438"><a href="#L-2438"><span class="linenos">2438</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-2439"><a href="#L-2439"><span class="linenos">2439</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-2440"><a href="#L-2440"><span class="linenos">2440</span></a> -</span><span id="L-2441"><a href="#L-2441"><span class="linenos">2441</span></a> <span class="nd">@property</span> -</span><span id="L-2442"><a href="#L-2442"><span class="linenos">2442</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-2443"><a href="#L-2443"><span class="linenos">2443</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> -</span><span id="L-2444"><a href="#L-2444"><span class="linenos">2444</span></a> -</span><span id="L-2445"><a href="#L-2445"><span class="linenos">2445</span></a> -</span><span id="L-2446"><a href="#L-2446"><span class="linenos">2446</span></a><span class="k">class</span> <span class="nc">TableSample</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2447"><a href="#L-2447"><span class="linenos">2447</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2448"><a href="#L-2448"><span class="linenos">2448</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2449"><a href="#L-2449"><span class="linenos">2449</span></a> <span class="s2">"method"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2450"><a href="#L-2450"><span class="linenos">2450</span></a> <span class="s2">"bucket_numerator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2451"><a href="#L-2451"><span class="linenos">2451</span></a> <span class="s2">"bucket_denominator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2452"><a href="#L-2452"><span class="linenos">2452</span></a> <span class="s2">"bucket_field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2453"><a href="#L-2453"><span class="linenos">2453</span></a> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2454"><a href="#L-2454"><span class="linenos">2454</span></a> <span class="s2">"rows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2455"><a href="#L-2455"><span class="linenos">2455</span></a> <span class="s2">"size"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2456"><a href="#L-2456"><span class="linenos">2456</span></a> <span class="s2">"seed"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2457"><a href="#L-2457"><span class="linenos">2457</span></a> <span class="p">}</span> -</span><span id="L-2458"><a href="#L-2458"><span class="linenos">2458</span></a> -</span><span id="L-2459"><a href="#L-2459"><span class="linenos">2459</span></a> -</span><span id="L-2460"><a href="#L-2460"><span class="linenos">2460</span></a><span class="k">class</span> <span class="nc">Tag</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2461"><a href="#L-2461"><span class="linenos">2461</span></a><span class="w"> </span><span class="sd">"""Tags are used for generating arbitrary sql like SELECT <span>x</span>."""</span> +</span><span id="L-2432"><a href="#L-2432"><span class="linenos">2432</span></a> <span class="k">return</span> <span class="n">Create</span><span class="p">(</span> +</span><span id="L-2433"><a href="#L-2433"><span class="linenos">2433</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table_expression</span><span class="p">,</span> +</span><span id="L-2434"><a href="#L-2434"><span class="linenos">2434</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"table"</span><span class="p">,</span> +</span><span id="L-2435"><a href="#L-2435"><span class="linenos">2435</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> +</span><span id="L-2436"><a href="#L-2436"><span class="linenos">2436</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties_expression</span><span class="p">,</span> +</span><span id="L-2437"><a href="#L-2437"><span class="linenos">2437</span></a> <span class="p">)</span> +</span><span id="L-2438"><a href="#L-2438"><span class="linenos">2438</span></a> +</span><span id="L-2439"><a href="#L-2439"><span class="linenos">2439</span></a> <span class="k">def</span> <span class="nf">lock</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">update</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-2440"><a href="#L-2440"><span class="linenos">2440</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2441"><a href="#L-2441"><span class="linenos">2441</span></a><span class="sd"> Set the locking read mode for this expression.</span> +</span><span id="L-2442"><a href="#L-2442"><span class="linenos">2442</span></a> +</span><span id="L-2443"><a href="#L-2443"><span class="linenos">2443</span></a><span class="sd"> Examples:</span> +</span><span id="L-2444"><a href="#L-2444"><span class="linenos">2444</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")</span> +</span><span id="L-2445"><a href="#L-2445"><span class="linenos">2445</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"</span> +</span><span id="L-2446"><a href="#L-2446"><span class="linenos">2446</span></a> +</span><span id="L-2447"><a href="#L-2447"><span class="linenos">2447</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")</span> +</span><span id="L-2448"><a href="#L-2448"><span class="linenos">2448</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"</span> +</span><span id="L-2449"><a href="#L-2449"><span class="linenos">2449</span></a> +</span><span id="L-2450"><a href="#L-2450"><span class="linenos">2450</span></a><span class="sd"> Args:</span> +</span><span id="L-2451"><a href="#L-2451"><span class="linenos">2451</span></a><span class="sd"> update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.</span> +</span><span id="L-2452"><a href="#L-2452"><span class="linenos">2452</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="L-2453"><a href="#L-2453"><span class="linenos">2453</span></a> +</span><span id="L-2454"><a href="#L-2454"><span class="linenos">2454</span></a><span class="sd"> Returns:</span> +</span><span id="L-2455"><a href="#L-2455"><span class="linenos">2455</span></a><span class="sd"> The modified expression.</span> +</span><span id="L-2456"><a href="#L-2456"><span class="linenos">2456</span></a><span class="sd"> """</span> +</span><span id="L-2457"><a href="#L-2457"><span class="linenos">2457</span></a> +</span><span id="L-2458"><a href="#L-2458"><span class="linenos">2458</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-2459"><a href="#L-2459"><span class="linenos">2459</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"lock"</span><span class="p">,</span> <span class="n">Lock</span><span class="p">(</span><span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">))</span> +</span><span id="L-2460"><a href="#L-2460"><span class="linenos">2460</span></a> +</span><span id="L-2461"><a href="#L-2461"><span class="linenos">2461</span></a> <span class="k">return</span> <span class="n">inst</span> </span><span id="L-2462"><a href="#L-2462"><span class="linenos">2462</span></a> -</span><span id="L-2463"><a href="#L-2463"><span class="linenos">2463</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2464"><a href="#L-2464"><span class="linenos">2464</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2465"><a href="#L-2465"><span class="linenos">2465</span></a> <span class="s2">"prefix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2466"><a href="#L-2466"><span class="linenos">2466</span></a> <span class="s2">"postfix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2467"><a href="#L-2467"><span class="linenos">2467</span></a> <span class="p">}</span> -</span><span id="L-2468"><a href="#L-2468"><span class="linenos">2468</span></a> -</span><span id="L-2469"><a href="#L-2469"><span class="linenos">2469</span></a> -</span><span id="L-2470"><a href="#L-2470"><span class="linenos">2470</span></a><span class="k">class</span> <span class="nc">Pivot</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2471"><a href="#L-2471"><span class="linenos">2471</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2472"><a href="#L-2472"><span class="linenos">2472</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2473"><a href="#L-2473"><span class="linenos">2473</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2474"><a href="#L-2474"><span class="linenos">2474</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2475"><a href="#L-2475"><span class="linenos">2475</span></a> <span class="s2">"unpivot"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2476"><a href="#L-2476"><span class="linenos">2476</span></a> <span class="p">}</span> -</span><span id="L-2477"><a href="#L-2477"><span class="linenos">2477</span></a> -</span><span id="L-2478"><a href="#L-2478"><span class="linenos">2478</span></a> -</span><span id="L-2479"><a href="#L-2479"><span class="linenos">2479</span></a><span class="k">class</span> <span class="nc">Window</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2480"><a href="#L-2480"><span class="linenos">2480</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2481"><a href="#L-2481"><span class="linenos">2481</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2482"><a href="#L-2482"><span class="linenos">2482</span></a> <span class="s2">"partition_by"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2483"><a href="#L-2483"><span class="linenos">2483</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2484"><a href="#L-2484"><span class="linenos">2484</span></a> <span class="s2">"spec"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2485"><a href="#L-2485"><span class="linenos">2485</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2486"><a href="#L-2486"><span class="linenos">2486</span></a> <span class="p">}</span> -</span><span id="L-2487"><a href="#L-2487"><span class="linenos">2487</span></a> -</span><span id="L-2488"><a href="#L-2488"><span class="linenos">2488</span></a> -</span><span id="L-2489"><a href="#L-2489"><span class="linenos">2489</span></a><span class="k">class</span> <span class="nc">WindowSpec</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2490"><a href="#L-2490"><span class="linenos">2490</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2491"><a href="#L-2491"><span class="linenos">2491</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2492"><a href="#L-2492"><span class="linenos">2492</span></a> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2493"><a href="#L-2493"><span class="linenos">2493</span></a> <span class="s2">"start_side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2494"><a href="#L-2494"><span class="linenos">2494</span></a> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2495"><a href="#L-2495"><span class="linenos">2495</span></a> <span class="s2">"end_side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2496"><a href="#L-2496"><span class="linenos">2496</span></a> <span class="p">}</span> -</span><span id="L-2497"><a href="#L-2497"><span class="linenos">2497</span></a> -</span><span id="L-2498"><a href="#L-2498"><span class="linenos">2498</span></a> -</span><span id="L-2499"><a href="#L-2499"><span class="linenos">2499</span></a><span class="k">class</span> <span class="nc">Where</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2500"><a href="#L-2500"><span class="linenos">2500</span></a> <span class="k">pass</span> +</span><span id="L-2463"><a href="#L-2463"><span class="linenos">2463</span></a> <span class="nd">@property</span> +</span><span id="L-2464"><a href="#L-2464"><span class="linenos">2464</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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-2465"><a href="#L-2465"><span class="linenos">2465</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">output_name</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> +</span><span id="L-2466"><a href="#L-2466"><span class="linenos">2466</span></a> +</span><span id="L-2467"><a href="#L-2467"><span class="linenos">2467</span></a> <span class="nd">@property</span> +</span><span id="L-2468"><a href="#L-2468"><span class="linenos">2468</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-2469"><a href="#L-2469"><span class="linenos">2469</span></a> <span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2470"><a href="#L-2470"><span class="linenos">2470</span></a> +</span><span id="L-2471"><a href="#L-2471"><span class="linenos">2471</span></a> <span class="nd">@property</span> +</span><span id="L-2472"><a href="#L-2472"><span class="linenos">2472</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2473"><a href="#L-2473"><span class="linenos">2473</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-2474"><a href="#L-2474"><span class="linenos">2474</span></a> +</span><span id="L-2475"><a href="#L-2475"><span class="linenos">2475</span></a> +</span><span id="L-2476"><a href="#L-2476"><span class="linenos">2476</span></a><span class="k">class</span> <span class="nc">Subquery</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">,</span> <span class="n">Unionable</span><span class="p">):</span> +</span><span id="L-2477"><a href="#L-2477"><span class="linenos">2477</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2478"><a href="#L-2478"><span class="linenos">2478</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2479"><a href="#L-2479"><span class="linenos">2479</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2480"><a href="#L-2480"><span class="linenos">2480</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2481"><a href="#L-2481"><span class="linenos">2481</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> +</span><span id="L-2482"><a href="#L-2482"><span class="linenos">2482</span></a> <span class="p">}</span> +</span><span id="L-2483"><a href="#L-2483"><span class="linenos">2483</span></a> +</span><span id="L-2484"><a href="#L-2484"><span class="linenos">2484</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-2485"><a href="#L-2485"><span class="linenos">2485</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-2486"><a href="#L-2486"><span class="linenos">2486</span></a><span class="sd"> Returns the first non subquery.</span> +</span><span id="L-2487"><a href="#L-2487"><span class="linenos">2487</span></a><span class="sd"> """</span> +</span><span id="L-2488"><a href="#L-2488"><span class="linenos">2488</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="L-2489"><a href="#L-2489"><span class="linenos">2489</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Subquery</span><span class="p">):</span> +</span><span id="L-2490"><a href="#L-2490"><span class="linenos">2490</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-2491"><a href="#L-2491"><span class="linenos">2491</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-2492"><a href="#L-2492"><span class="linenos">2492</span></a> +</span><span id="L-2493"><a href="#L-2493"><span class="linenos">2493</span></a> <span class="nd">@property</span> +</span><span id="L-2494"><a href="#L-2494"><span class="linenos">2494</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-2495"><a href="#L-2495"><span class="linenos">2495</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_star</span> +</span><span id="L-2496"><a href="#L-2496"><span class="linenos">2496</span></a> +</span><span id="L-2497"><a href="#L-2497"><span class="linenos">2497</span></a> <span class="nd">@property</span> +</span><span id="L-2498"><a href="#L-2498"><span class="linenos">2498</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-2499"><a href="#L-2499"><span class="linenos">2499</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> +</span><span id="L-2500"><a href="#L-2500"><span class="linenos">2500</span></a> </span><span id="L-2501"><a href="#L-2501"><span class="linenos">2501</span></a> -</span><span id="L-2502"><a href="#L-2502"><span class="linenos">2502</span></a> -</span><span id="L-2503"><a href="#L-2503"><span class="linenos">2503</span></a><span class="k">class</span> <span class="nc">Star</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2504"><a href="#L-2504"><span class="linenos">2504</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"except"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2505"><a href="#L-2505"><span class="linenos">2505</span></a> -</span><span id="L-2506"><a href="#L-2506"><span class="linenos">2506</span></a> <span class="nd">@property</span> -</span><span id="L-2507"><a href="#L-2507"><span class="linenos">2507</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-2508"><a href="#L-2508"><span class="linenos">2508</span></a> <span class="k">return</span> <span class="s2">"*"</span> -</span><span id="L-2509"><a href="#L-2509"><span class="linenos">2509</span></a> -</span><span id="L-2510"><a href="#L-2510"><span class="linenos">2510</span></a> <span class="nd">@property</span> -</span><span id="L-2511"><a href="#L-2511"><span class="linenos">2511</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-2512"><a href="#L-2512"><span class="linenos">2512</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-2513"><a href="#L-2513"><span class="linenos">2513</span></a> +</span><span id="L-2502"><a href="#L-2502"><span class="linenos">2502</span></a><span class="k">class</span> <span class="nc">TableSample</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2503"><a href="#L-2503"><span class="linenos">2503</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2504"><a href="#L-2504"><span class="linenos">2504</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2505"><a href="#L-2505"><span class="linenos">2505</span></a> <span class="s2">"method"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2506"><a href="#L-2506"><span class="linenos">2506</span></a> <span class="s2">"bucket_numerator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2507"><a href="#L-2507"><span class="linenos">2507</span></a> <span class="s2">"bucket_denominator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2508"><a href="#L-2508"><span class="linenos">2508</span></a> <span class="s2">"bucket_field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2509"><a href="#L-2509"><span class="linenos">2509</span></a> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2510"><a href="#L-2510"><span class="linenos">2510</span></a> <span class="s2">"rows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2511"><a href="#L-2511"><span class="linenos">2511</span></a> <span class="s2">"size"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2512"><a href="#L-2512"><span class="linenos">2512</span></a> <span class="s2">"seed"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2513"><a href="#L-2513"><span class="linenos">2513</span></a> <span class="p">}</span> </span><span id="L-2514"><a href="#L-2514"><span class="linenos">2514</span></a> -</span><span id="L-2515"><a href="#L-2515"><span class="linenos">2515</span></a><span class="k">class</span> <span class="nc">Parameter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2516"><a href="#L-2516"><span class="linenos">2516</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"wrapped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2517"><a href="#L-2517"><span class="linenos">2517</span></a> +</span><span id="L-2515"><a href="#L-2515"><span class="linenos">2515</span></a> +</span><span id="L-2516"><a href="#L-2516"><span class="linenos">2516</span></a><span class="k">class</span> <span class="nc">Tag</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2517"><a href="#L-2517"><span class="linenos">2517</span></a><span class="w"> </span><span class="sd">"""Tags are used for generating arbitrary sql like SELECT <span>x</span>."""</span> </span><span id="L-2518"><a href="#L-2518"><span class="linenos">2518</span></a> -</span><span id="L-2519"><a href="#L-2519"><span class="linenos">2519</span></a><span class="k">class</span> <span class="nc">SessionParameter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2520"><a href="#L-2520"><span class="linenos">2520</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2521"><a href="#L-2521"><span class="linenos">2521</span></a> -</span><span id="L-2522"><a href="#L-2522"><span class="linenos">2522</span></a> -</span><span id="L-2523"><a href="#L-2523"><span class="linenos">2523</span></a><span class="k">class</span> <span class="nc">Placeholder</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2524"><a href="#L-2524"><span class="linenos">2524</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2519"><a href="#L-2519"><span class="linenos">2519</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2520"><a href="#L-2520"><span class="linenos">2520</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2521"><a href="#L-2521"><span class="linenos">2521</span></a> <span class="s2">"prefix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2522"><a href="#L-2522"><span class="linenos">2522</span></a> <span class="s2">"postfix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2523"><a href="#L-2523"><span class="linenos">2523</span></a> <span class="p">}</span> +</span><span id="L-2524"><a href="#L-2524"><span class="linenos">2524</span></a> </span><span id="L-2525"><a href="#L-2525"><span class="linenos">2525</span></a> -</span><span id="L-2526"><a href="#L-2526"><span class="linenos">2526</span></a> -</span><span id="L-2527"><a href="#L-2527"><span class="linenos">2527</span></a><span class="k">class</span> <span class="nc">Null</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-2528"><a href="#L-2528"><span class="linenos">2528</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-2529"><a href="#L-2529"><span class="linenos">2529</span></a> -</span><span id="L-2530"><a href="#L-2530"><span class="linenos">2530</span></a> <span class="nd">@property</span> -</span><span id="L-2531"><a href="#L-2531"><span class="linenos">2531</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-2532"><a href="#L-2532"><span class="linenos">2532</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> -</span><span id="L-2533"><a href="#L-2533"><span class="linenos">2533</span></a> +</span><span id="L-2526"><a href="#L-2526"><span class="linenos">2526</span></a><span class="k">class</span> <span class="nc">Pivot</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2527"><a href="#L-2527"><span class="linenos">2527</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2528"><a href="#L-2528"><span class="linenos">2528</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2529"><a href="#L-2529"><span class="linenos">2529</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2530"><a href="#L-2530"><span class="linenos">2530</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2531"><a href="#L-2531"><span class="linenos">2531</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2532"><a href="#L-2532"><span class="linenos">2532</span></a> <span class="s2">"unpivot"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2533"><a href="#L-2533"><span class="linenos">2533</span></a> <span class="p">}</span> </span><span id="L-2534"><a href="#L-2534"><span class="linenos">2534</span></a> -</span><span id="L-2535"><a href="#L-2535"><span class="linenos">2535</span></a><span class="k">class</span> <span class="nc">Boolean</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-2536"><a href="#L-2536"><span class="linenos">2536</span></a> <span class="k">pass</span> -</span><span id="L-2537"><a href="#L-2537"><span class="linenos">2537</span></a> -</span><span id="L-2538"><a href="#L-2538"><span class="linenos">2538</span></a> -</span><span id="L-2539"><a href="#L-2539"><span class="linenos">2539</span></a><span class="k">class</span> <span class="nc">DataType</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2540"><a href="#L-2540"><span class="linenos">2540</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2541"><a href="#L-2541"><span class="linenos">2541</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2542"><a href="#L-2542"><span class="linenos">2542</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2543"><a href="#L-2543"><span class="linenos">2543</span></a> <span class="s2">"nested"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2544"><a href="#L-2544"><span class="linenos">2544</span></a> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2545"><a href="#L-2545"><span class="linenos">2545</span></a> <span class="s2">"prefix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2546"><a href="#L-2546"><span class="linenos">2546</span></a> <span class="p">}</span> -</span><span id="L-2547"><a href="#L-2547"><span class="linenos">2547</span></a> -</span><span id="L-2548"><a href="#L-2548"><span class="linenos">2548</span></a> <span class="k">class</span> <span class="nc">Type</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> -</span><span id="L-2549"><a href="#L-2549"><span class="linenos">2549</span></a> <span class="n">CHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2550"><a href="#L-2550"><span class="linenos">2550</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2551"><a href="#L-2551"><span class="linenos">2551</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2552"><a href="#L-2552"><span class="linenos">2552</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2553"><a href="#L-2553"><span class="linenos">2553</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2554"><a href="#L-2554"><span class="linenos">2554</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2555"><a href="#L-2555"><span class="linenos">2555</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2556"><a href="#L-2556"><span class="linenos">2556</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2557"><a href="#L-2557"><span class="linenos">2557</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2558"><a href="#L-2558"><span class="linenos">2558</span></a> <span class="n">BINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2559"><a href="#L-2559"><span class="linenos">2559</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2560"><a href="#L-2560"><span class="linenos">2560</span></a> <span class="n">INT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2561"><a href="#L-2561"><span class="linenos">2561</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2562"><a href="#L-2562"><span class="linenos">2562</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2563"><a href="#L-2563"><span class="linenos">2563</span></a> <span class="n">BIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2564"><a href="#L-2564"><span class="linenos">2564</span></a> <span class="n">FLOAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2565"><a href="#L-2565"><span class="linenos">2565</span></a> <span class="n">DOUBLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2566"><a href="#L-2566"><span class="linenos">2566</span></a> <span class="n">DECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2567"><a href="#L-2567"><span class="linenos">2567</span></a> <span class="n">BOOLEAN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2568"><a href="#L-2568"><span class="linenos">2568</span></a> <span class="n">JSON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2569"><a href="#L-2569"><span class="linenos">2569</span></a> <span class="n">JSONB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2570"><a href="#L-2570"><span class="linenos">2570</span></a> <span class="n">INTERVAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2571"><a href="#L-2571"><span class="linenos">2571</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2572"><a href="#L-2572"><span class="linenos">2572</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2573"><a href="#L-2573"><span class="linenos">2573</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2574"><a href="#L-2574"><span class="linenos">2574</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2575"><a href="#L-2575"><span class="linenos">2575</span></a> <span class="n">DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2576"><a href="#L-2576"><span class="linenos">2576</span></a> <span class="n">DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2577"><a href="#L-2577"><span class="linenos">2577</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2578"><a href="#L-2578"><span class="linenos">2578</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2579"><a href="#L-2579"><span class="linenos">2579</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2580"><a href="#L-2580"><span class="linenos">2580</span></a> <span class="n">GEOGRAPHY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2581"><a href="#L-2581"><span class="linenos">2581</span></a> <span class="n">GEOMETRY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2582"><a href="#L-2582"><span class="linenos">2582</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2583"><a href="#L-2583"><span class="linenos">2583</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2584"><a href="#L-2584"><span class="linenos">2584</span></a> <span class="n">HLLSKETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2585"><a href="#L-2585"><span class="linenos">2585</span></a> <span class="n">HSTORE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2586"><a href="#L-2586"><span class="linenos">2586</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2587"><a href="#L-2587"><span class="linenos">2587</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2588"><a href="#L-2588"><span class="linenos">2588</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2589"><a href="#L-2589"><span class="linenos">2589</span></a> <span class="n">BIGSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2590"><a href="#L-2590"><span class="linenos">2590</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2591"><a href="#L-2591"><span class="linenos">2591</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2592"><a href="#L-2592"><span class="linenos">2592</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2593"><a href="#L-2593"><span class="linenos">2593</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2594"><a href="#L-2594"><span class="linenos">2594</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2595"><a href="#L-2595"><span class="linenos">2595</span></a> <span class="n">IMAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2596"><a href="#L-2596"><span class="linenos">2596</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2597"><a href="#L-2597"><span class="linenos">2597</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2598"><a href="#L-2598"><span class="linenos">2598</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-2599"><a href="#L-2599"><span class="linenos">2599</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> -</span><span id="L-2600"><a href="#L-2600"><span class="linenos">2600</span></a> -</span><span id="L-2601"><a href="#L-2601"><span class="linenos">2601</span></a> <span class="n">TEXT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2602"><a href="#L-2602"><span class="linenos">2602</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="L-2603"><a href="#L-2603"><span class="linenos">2603</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="L-2604"><a href="#L-2604"><span class="linenos">2604</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="L-2605"><a href="#L-2605"><span class="linenos">2605</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="L-2606"><a href="#L-2606"><span class="linenos">2606</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="L-2607"><a href="#L-2607"><span class="linenos">2607</span></a> <span class="p">}</span> -</span><span id="L-2608"><a href="#L-2608"><span class="linenos">2608</span></a> -</span><span id="L-2609"><a href="#L-2609"><span class="linenos">2609</span></a> <span class="n">INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2610"><a href="#L-2610"><span class="linenos">2610</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="L-2611"><a href="#L-2611"><span class="linenos">2611</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="L-2612"><a href="#L-2612"><span class="linenos">2612</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-2613"><a href="#L-2613"><span class="linenos">2613</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-2614"><a href="#L-2614"><span class="linenos">2614</span></a> <span class="p">}</span> -</span><span id="L-2615"><a href="#L-2615"><span class="linenos">2615</span></a> -</span><span id="L-2616"><a href="#L-2616"><span class="linenos">2616</span></a> <span class="n">FLOAT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2617"><a href="#L-2617"><span class="linenos">2617</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="L-2618"><a href="#L-2618"><span class="linenos">2618</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-2619"><a href="#L-2619"><span class="linenos">2619</span></a> <span class="p">}</span> -</span><span id="L-2620"><a href="#L-2620"><span class="linenos">2620</span></a> -</span><span id="L-2621"><a href="#L-2621"><span class="linenos">2621</span></a> <span class="n">NUMERIC_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">INTEGER_TYPES</span><span class="p">,</span> <span class="o">*</span><span class="n">FLOAT_TYPES</span><span class="p">}</span> -</span><span id="L-2622"><a href="#L-2622"><span class="linenos">2622</span></a> -</span><span id="L-2623"><a href="#L-2623"><span class="linenos">2623</span></a> <span class="n">TEMPORAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2624"><a href="#L-2624"><span class="linenos">2624</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-2625"><a href="#L-2625"><span class="linenos">2625</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-2626"><a href="#L-2626"><span class="linenos">2626</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="L-2627"><a href="#L-2627"><span class="linenos">2627</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="L-2628"><a href="#L-2628"><span class="linenos">2628</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="L-2629"><a href="#L-2629"><span class="linenos">2629</span></a> <span class="p">}</span> -</span><span id="L-2630"><a href="#L-2630"><span class="linenos">2630</span></a> -</span><span id="L-2631"><a href="#L-2631"><span class="linenos">2631</span></a> <span class="nd">@classmethod</span> -</span><span id="L-2632"><a href="#L-2632"><span class="linenos">2632</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> -</span><span id="L-2633"><a href="#L-2633"><span class="linenos">2633</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="L-2634"><a href="#L-2634"><span class="linenos">2634</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="L-2635"><a href="#L-2635"><span class="linenos">2635</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> -</span><span id="L-2636"><a href="#L-2636"><span class="linenos">2636</span></a> -</span><span id="L-2637"><a href="#L-2637"><span class="linenos">2637</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-2638"><a href="#L-2638"><span class="linenos">2638</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">__members__</span><span class="p">:</span> -</span><span id="L-2639"><a href="#L-2639"><span class="linenos">2639</span></a> <span class="n">data_type_exp</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> -</span><span id="L-2640"><a href="#L-2640"><span class="linenos">2640</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2641"><a href="#L-2641"><span class="linenos">2641</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">DataType</span><span class="p">)</span> -</span><span id="L-2642"><a href="#L-2642"><span class="linenos">2642</span></a> <span class="k">if</span> <span class="n">data_type_exp</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-2643"><a href="#L-2643"><span class="linenos">2643</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unparsable data type value: </span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-2644"><a href="#L-2644"><span class="linenos">2644</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> -</span><span id="L-2645"><a href="#L-2645"><span class="linenos">2645</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> -</span><span id="L-2646"><a href="#L-2646"><span class="linenos">2646</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> -</span><span id="L-2647"><a href="#L-2647"><span class="linenos">2647</span></a> <span class="k">return</span> <span class="n">dtype</span> -</span><span id="L-2648"><a href="#L-2648"><span class="linenos">2648</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2649"><a href="#L-2649"><span class="linenos">2649</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> -</span><span id="L-2650"><a href="#L-2650"><span class="linenos">2650</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> -</span><span id="L-2651"><a href="#L-2651"><span class="linenos">2651</span></a> -</span><span id="L-2652"><a href="#L-2652"><span class="linenos">2652</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-2653"><a href="#L-2653"><span class="linenos">2653</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">dtype</span> -</span><span id="L-2654"><a href="#L-2654"><span class="linenos">2654</span></a> -</span><span id="L-2655"><a href="#L-2655"><span class="linenos">2655</span></a> -</span><span id="L-2656"><a href="#L-2656"><span class="linenos">2656</span></a><span class="c1"># https://www.postgresql.org/docs/15/datatype-pseudo.html</span> -</span><span id="L-2657"><a href="#L-2657"><span class="linenos">2657</span></a><span class="k">class</span> <span class="nc">PseudoType</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2658"><a href="#L-2658"><span class="linenos">2658</span></a> <span class="k">pass</span> -</span><span id="L-2659"><a href="#L-2659"><span class="linenos">2659</span></a> -</span><span id="L-2660"><a href="#L-2660"><span class="linenos">2660</span></a> -</span><span id="L-2661"><a href="#L-2661"><span class="linenos">2661</span></a><span class="k">class</span> <span class="nc">StructKwarg</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2662"><a href="#L-2662"><span class="linenos">2662</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-2663"><a href="#L-2663"><span class="linenos">2663</span></a> -</span><span id="L-2664"><a href="#L-2664"><span class="linenos">2664</span></a> -</span><span id="L-2665"><a href="#L-2665"><span class="linenos">2665</span></a><span class="c1"># WHERE x <OP> EXISTS|ALL|ANY|SOME(SELECT ...)</span> -</span><span id="L-2666"><a href="#L-2666"><span class="linenos">2666</span></a><span class="k">class</span> <span class="nc">SubqueryPredicate</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2667"><a href="#L-2667"><span class="linenos">2667</span></a> <span class="k">pass</span> -</span><span id="L-2668"><a href="#L-2668"><span class="linenos">2668</span></a> -</span><span id="L-2669"><a href="#L-2669"><span class="linenos">2669</span></a> -</span><span id="L-2670"><a href="#L-2670"><span class="linenos">2670</span></a><span class="k">class</span> <span class="nc">All</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="L-2671"><a href="#L-2671"><span class="linenos">2671</span></a> <span class="k">pass</span> -</span><span id="L-2672"><a href="#L-2672"><span class="linenos">2672</span></a> +</span><span id="L-2535"><a href="#L-2535"><span class="linenos">2535</span></a> +</span><span id="L-2536"><a href="#L-2536"><span class="linenos">2536</span></a><span class="k">class</span> <span class="nc">Window</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2537"><a href="#L-2537"><span class="linenos">2537</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2538"><a href="#L-2538"><span class="linenos">2538</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2539"><a href="#L-2539"><span class="linenos">2539</span></a> <span class="s2">"partition_by"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2540"><a href="#L-2540"><span class="linenos">2540</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2541"><a href="#L-2541"><span class="linenos">2541</span></a> <span class="s2">"spec"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2542"><a href="#L-2542"><span class="linenos">2542</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2543"><a href="#L-2543"><span class="linenos">2543</span></a> <span class="p">}</span> +</span><span id="L-2544"><a href="#L-2544"><span class="linenos">2544</span></a> +</span><span id="L-2545"><a href="#L-2545"><span class="linenos">2545</span></a> +</span><span id="L-2546"><a href="#L-2546"><span class="linenos">2546</span></a><span class="k">class</span> <span class="nc">WindowSpec</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2547"><a href="#L-2547"><span class="linenos">2547</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2548"><a href="#L-2548"><span class="linenos">2548</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2549"><a href="#L-2549"><span class="linenos">2549</span></a> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2550"><a href="#L-2550"><span class="linenos">2550</span></a> <span class="s2">"start_side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2551"><a href="#L-2551"><span class="linenos">2551</span></a> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2552"><a href="#L-2552"><span class="linenos">2552</span></a> <span class="s2">"end_side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2553"><a href="#L-2553"><span class="linenos">2553</span></a> <span class="p">}</span> +</span><span id="L-2554"><a href="#L-2554"><span class="linenos">2554</span></a> +</span><span id="L-2555"><a href="#L-2555"><span class="linenos">2555</span></a> +</span><span id="L-2556"><a href="#L-2556"><span class="linenos">2556</span></a><span class="k">class</span> <span class="nc">Where</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2557"><a href="#L-2557"><span class="linenos">2557</span></a> <span class="k">pass</span> +</span><span id="L-2558"><a href="#L-2558"><span class="linenos">2558</span></a> +</span><span id="L-2559"><a href="#L-2559"><span class="linenos">2559</span></a> +</span><span id="L-2560"><a href="#L-2560"><span class="linenos">2560</span></a><span class="k">class</span> <span class="nc">Star</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2561"><a href="#L-2561"><span class="linenos">2561</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"except"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2562"><a href="#L-2562"><span class="linenos">2562</span></a> +</span><span id="L-2563"><a href="#L-2563"><span class="linenos">2563</span></a> <span class="nd">@property</span> +</span><span id="L-2564"><a href="#L-2564"><span class="linenos">2564</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-2565"><a href="#L-2565"><span class="linenos">2565</span></a> <span class="k">return</span> <span class="s2">"*"</span> +</span><span id="L-2566"><a href="#L-2566"><span class="linenos">2566</span></a> +</span><span id="L-2567"><a href="#L-2567"><span class="linenos">2567</span></a> <span class="nd">@property</span> +</span><span id="L-2568"><a href="#L-2568"><span class="linenos">2568</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-2569"><a href="#L-2569"><span class="linenos">2569</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-2570"><a href="#L-2570"><span class="linenos">2570</span></a> +</span><span id="L-2571"><a href="#L-2571"><span class="linenos">2571</span></a> +</span><span id="L-2572"><a href="#L-2572"><span class="linenos">2572</span></a><span class="k">class</span> <span class="nc">Parameter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2573"><a href="#L-2573"><span class="linenos">2573</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"wrapped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2574"><a href="#L-2574"><span class="linenos">2574</span></a> +</span><span id="L-2575"><a href="#L-2575"><span class="linenos">2575</span></a> +</span><span id="L-2576"><a href="#L-2576"><span class="linenos">2576</span></a><span class="k">class</span> <span class="nc">SessionParameter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2577"><a href="#L-2577"><span class="linenos">2577</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2578"><a href="#L-2578"><span class="linenos">2578</span></a> +</span><span id="L-2579"><a href="#L-2579"><span class="linenos">2579</span></a> +</span><span id="L-2580"><a href="#L-2580"><span class="linenos">2580</span></a><span class="k">class</span> <span class="nc">Placeholder</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2581"><a href="#L-2581"><span class="linenos">2581</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2582"><a href="#L-2582"><span class="linenos">2582</span></a> +</span><span id="L-2583"><a href="#L-2583"><span class="linenos">2583</span></a> +</span><span id="L-2584"><a href="#L-2584"><span class="linenos">2584</span></a><span class="k">class</span> <span class="nc">Null</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-2585"><a href="#L-2585"><span class="linenos">2585</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-2586"><a href="#L-2586"><span class="linenos">2586</span></a> +</span><span id="L-2587"><a href="#L-2587"><span class="linenos">2587</span></a> <span class="nd">@property</span> +</span><span id="L-2588"><a href="#L-2588"><span class="linenos">2588</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-2589"><a href="#L-2589"><span class="linenos">2589</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> +</span><span id="L-2590"><a href="#L-2590"><span class="linenos">2590</span></a> +</span><span id="L-2591"><a href="#L-2591"><span class="linenos">2591</span></a> +</span><span id="L-2592"><a href="#L-2592"><span class="linenos">2592</span></a><span class="k">class</span> <span class="nc">Boolean</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-2593"><a href="#L-2593"><span class="linenos">2593</span></a> <span class="k">pass</span> +</span><span id="L-2594"><a href="#L-2594"><span class="linenos">2594</span></a> +</span><span id="L-2595"><a href="#L-2595"><span class="linenos">2595</span></a> +</span><span id="L-2596"><a href="#L-2596"><span class="linenos">2596</span></a><span class="k">class</span> <span class="nc">DataType</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2597"><a href="#L-2597"><span class="linenos">2597</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2598"><a href="#L-2598"><span class="linenos">2598</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2599"><a href="#L-2599"><span class="linenos">2599</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2600"><a href="#L-2600"><span class="linenos">2600</span></a> <span class="s2">"nested"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2601"><a href="#L-2601"><span class="linenos">2601</span></a> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2602"><a href="#L-2602"><span class="linenos">2602</span></a> <span class="s2">"prefix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2603"><a href="#L-2603"><span class="linenos">2603</span></a> <span class="p">}</span> +</span><span id="L-2604"><a href="#L-2604"><span class="linenos">2604</span></a> +</span><span id="L-2605"><a href="#L-2605"><span class="linenos">2605</span></a> <span class="k">class</span> <span class="nc">Type</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> +</span><span id="L-2606"><a href="#L-2606"><span class="linenos">2606</span></a> <span class="n">CHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2607"><a href="#L-2607"><span class="linenos">2607</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2608"><a href="#L-2608"><span class="linenos">2608</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2609"><a href="#L-2609"><span class="linenos">2609</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2610"><a href="#L-2610"><span class="linenos">2610</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2611"><a href="#L-2611"><span class="linenos">2611</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2612"><a href="#L-2612"><span class="linenos">2612</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2613"><a href="#L-2613"><span class="linenos">2613</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2614"><a href="#L-2614"><span class="linenos">2614</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2615"><a href="#L-2615"><span class="linenos">2615</span></a> <span class="n">BINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2616"><a href="#L-2616"><span class="linenos">2616</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2617"><a href="#L-2617"><span class="linenos">2617</span></a> <span class="n">INT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2618"><a href="#L-2618"><span class="linenos">2618</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2619"><a href="#L-2619"><span class="linenos">2619</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2620"><a href="#L-2620"><span class="linenos">2620</span></a> <span class="n">BIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2621"><a href="#L-2621"><span class="linenos">2621</span></a> <span class="n">FLOAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2622"><a href="#L-2622"><span class="linenos">2622</span></a> <span class="n">DOUBLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2623"><a href="#L-2623"><span class="linenos">2623</span></a> <span class="n">DECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2624"><a href="#L-2624"><span class="linenos">2624</span></a> <span class="n">BOOLEAN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2625"><a href="#L-2625"><span class="linenos">2625</span></a> <span class="n">JSON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2626"><a href="#L-2626"><span class="linenos">2626</span></a> <span class="n">JSONB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2627"><a href="#L-2627"><span class="linenos">2627</span></a> <span class="n">INTERVAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2628"><a href="#L-2628"><span class="linenos">2628</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2629"><a href="#L-2629"><span class="linenos">2629</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2630"><a href="#L-2630"><span class="linenos">2630</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2631"><a href="#L-2631"><span class="linenos">2631</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2632"><a href="#L-2632"><span class="linenos">2632</span></a> <span class="n">DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2633"><a href="#L-2633"><span class="linenos">2633</span></a> <span class="n">DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2634"><a href="#L-2634"><span class="linenos">2634</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2635"><a href="#L-2635"><span class="linenos">2635</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2636"><a href="#L-2636"><span class="linenos">2636</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2637"><a href="#L-2637"><span class="linenos">2637</span></a> <span class="n">GEOGRAPHY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2638"><a href="#L-2638"><span class="linenos">2638</span></a> <span class="n">GEOMETRY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2639"><a href="#L-2639"><span class="linenos">2639</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2640"><a href="#L-2640"><span class="linenos">2640</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2641"><a href="#L-2641"><span class="linenos">2641</span></a> <span class="n">HLLSKETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2642"><a href="#L-2642"><span class="linenos">2642</span></a> <span class="n">HSTORE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2643"><a href="#L-2643"><span class="linenos">2643</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2644"><a href="#L-2644"><span class="linenos">2644</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2645"><a href="#L-2645"><span class="linenos">2645</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2646"><a href="#L-2646"><span class="linenos">2646</span></a> <span class="n">BIGSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2647"><a href="#L-2647"><span class="linenos">2647</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2648"><a href="#L-2648"><span class="linenos">2648</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2649"><a href="#L-2649"><span class="linenos">2649</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2650"><a href="#L-2650"><span class="linenos">2650</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2651"><a href="#L-2651"><span class="linenos">2651</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2652"><a href="#L-2652"><span class="linenos">2652</span></a> <span class="n">IMAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2653"><a href="#L-2653"><span class="linenos">2653</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2654"><a href="#L-2654"><span class="linenos">2654</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2655"><a href="#L-2655"><span class="linenos">2655</span></a> <span class="n">INET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2656"><a href="#L-2656"><span class="linenos">2656</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-2657"><a href="#L-2657"><span class="linenos">2657</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> +</span><span id="L-2658"><a href="#L-2658"><span class="linenos">2658</span></a> +</span><span id="L-2659"><a href="#L-2659"><span class="linenos">2659</span></a> <span class="n">TEXT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2660"><a href="#L-2660"><span class="linenos">2660</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="L-2661"><a href="#L-2661"><span class="linenos">2661</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="L-2662"><a href="#L-2662"><span class="linenos">2662</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="L-2663"><a href="#L-2663"><span class="linenos">2663</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="L-2664"><a href="#L-2664"><span class="linenos">2664</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="L-2665"><a href="#L-2665"><span class="linenos">2665</span></a> <span class="p">}</span> +</span><span id="L-2666"><a href="#L-2666"><span class="linenos">2666</span></a> +</span><span id="L-2667"><a href="#L-2667"><span class="linenos">2667</span></a> <span class="n">INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2668"><a href="#L-2668"><span class="linenos">2668</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="L-2669"><a href="#L-2669"><span class="linenos">2669</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="L-2670"><a href="#L-2670"><span class="linenos">2670</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-2671"><a href="#L-2671"><span class="linenos">2671</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-2672"><a href="#L-2672"><span class="linenos">2672</span></a> <span class="p">}</span> </span><span id="L-2673"><a href="#L-2673"><span class="linenos">2673</span></a> -</span><span id="L-2674"><a href="#L-2674"><span class="linenos">2674</span></a><span class="k">class</span> <span class="nc">Any</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="L-2675"><a href="#L-2675"><span class="linenos">2675</span></a> <span class="k">pass</span> -</span><span id="L-2676"><a href="#L-2676"><span class="linenos">2676</span></a> -</span><span id="L-2677"><a href="#L-2677"><span class="linenos">2677</span></a> -</span><span id="L-2678"><a href="#L-2678"><span class="linenos">2678</span></a><span class="k">class</span> <span class="nc">Exists</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="L-2679"><a href="#L-2679"><span class="linenos">2679</span></a> <span class="k">pass</span> +</span><span id="L-2674"><a href="#L-2674"><span class="linenos">2674</span></a> <span class="n">FLOAT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2675"><a href="#L-2675"><span class="linenos">2675</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="L-2676"><a href="#L-2676"><span class="linenos">2676</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-2677"><a href="#L-2677"><span class="linenos">2677</span></a> <span class="p">}</span> +</span><span id="L-2678"><a href="#L-2678"><span class="linenos">2678</span></a> +</span><span id="L-2679"><a href="#L-2679"><span class="linenos">2679</span></a> <span class="n">NUMERIC_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">INTEGER_TYPES</span><span class="p">,</span> <span class="o">*</span><span class="n">FLOAT_TYPES</span><span class="p">}</span> </span><span id="L-2680"><a href="#L-2680"><span class="linenos">2680</span></a> -</span><span id="L-2681"><a href="#L-2681"><span class="linenos">2681</span></a> -</span><span id="L-2682"><a href="#L-2682"><span class="linenos">2682</span></a><span class="c1"># Commands to interact with the databases or engines. For most of the command</span> -</span><span id="L-2683"><a href="#L-2683"><span class="linenos">2683</span></a><span class="c1"># expressions we parse whatever comes after the command's name as a string.</span> -</span><span id="L-2684"><a href="#L-2684"><span class="linenos">2684</span></a><span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2685"><a href="#L-2685"><span class="linenos">2685</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2686"><a href="#L-2686"><span class="linenos">2686</span></a> -</span><span id="L-2687"><a href="#L-2687"><span class="linenos">2687</span></a> -</span><span id="L-2688"><a href="#L-2688"><span class="linenos">2688</span></a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2689"><a href="#L-2689"><span class="linenos">2689</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"modes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2690"><a href="#L-2690"><span class="linenos">2690</span></a> -</span><span id="L-2691"><a href="#L-2691"><span class="linenos">2691</span></a> -</span><span id="L-2692"><a href="#L-2692"><span class="linenos">2692</span></a><span class="k">class</span> <span class="nc">Commit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2693"><a href="#L-2693"><span class="linenos">2693</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"chain"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2681"><a href="#L-2681"><span class="linenos">2681</span></a> <span class="n">TEMPORAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2682"><a href="#L-2682"><span class="linenos">2682</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-2683"><a href="#L-2683"><span class="linenos">2683</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-2684"><a href="#L-2684"><span class="linenos">2684</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="L-2685"><a href="#L-2685"><span class="linenos">2685</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="L-2686"><a href="#L-2686"><span class="linenos">2686</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="L-2687"><a href="#L-2687"><span class="linenos">2687</span></a> <span class="p">}</span> +</span><span id="L-2688"><a href="#L-2688"><span class="linenos">2688</span></a> +</span><span id="L-2689"><a href="#L-2689"><span class="linenos">2689</span></a> <span class="nd">@classmethod</span> +</span><span id="L-2690"><a href="#L-2690"><span class="linenos">2690</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> +</span><span id="L-2691"><a href="#L-2691"><span class="linenos">2691</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="L-2692"><a href="#L-2692"><span class="linenos">2692</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="L-2693"><a href="#L-2693"><span class="linenos">2693</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> </span><span id="L-2694"><a href="#L-2694"><span class="linenos">2694</span></a> -</span><span id="L-2695"><a href="#L-2695"><span class="linenos">2695</span></a> -</span><span id="L-2696"><a href="#L-2696"><span class="linenos">2696</span></a><span class="k">class</span> <span class="nc">Rollback</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2697"><a href="#L-2697"><span class="linenos">2697</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"savepoint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2698"><a href="#L-2698"><span class="linenos">2698</span></a> -</span><span id="L-2699"><a href="#L-2699"><span class="linenos">2699</span></a> -</span><span id="L-2700"><a href="#L-2700"><span class="linenos">2700</span></a><span class="k">class</span> <span class="nc">AlterTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2701"><a href="#L-2701"><span class="linenos">2701</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2702"><a href="#L-2702"><span class="linenos">2702</span></a> -</span><span id="L-2703"><a href="#L-2703"><span class="linenos">2703</span></a> -</span><span id="L-2704"><a href="#L-2704"><span class="linenos">2704</span></a><span class="k">class</span> <span class="nc">AddConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2705"><a href="#L-2705"><span class="linenos">2705</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"enforced"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2706"><a href="#L-2706"><span class="linenos">2706</span></a> -</span><span id="L-2707"><a href="#L-2707"><span class="linenos">2707</span></a> -</span><span id="L-2708"><a href="#L-2708"><span class="linenos">2708</span></a><span class="k">class</span> <span class="nc">DropPartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2709"><a href="#L-2709"><span class="linenos">2709</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2710"><a href="#L-2710"><span class="linenos">2710</span></a> -</span><span id="L-2711"><a href="#L-2711"><span class="linenos">2711</span></a> -</span><span id="L-2712"><a href="#L-2712"><span class="linenos">2712</span></a><span class="c1"># Binary expressions like (ADD a b)</span> -</span><span id="L-2713"><a href="#L-2713"><span class="linenos">2713</span></a><span class="k">class</span> <span class="nc">Binary</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2714"><a href="#L-2714"><span class="linenos">2714</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-2715"><a href="#L-2715"><span class="linenos">2715</span></a> -</span><span id="L-2716"><a href="#L-2716"><span class="linenos">2716</span></a> <span class="nd">@property</span> -</span><span id="L-2717"><a href="#L-2717"><span class="linenos">2717</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-2718"><a href="#L-2718"><span class="linenos">2718</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-2719"><a href="#L-2719"><span class="linenos">2719</span></a> -</span><span id="L-2720"><a href="#L-2720"><span class="linenos">2720</span></a> <span class="nd">@property</span> -</span><span id="L-2721"><a href="#L-2721"><span class="linenos">2721</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-2722"><a href="#L-2722"><span class="linenos">2722</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> -</span><span id="L-2723"><a href="#L-2723"><span class="linenos">2723</span></a> -</span><span id="L-2724"><a href="#L-2724"><span class="linenos">2724</span></a> -</span><span id="L-2725"><a href="#L-2725"><span class="linenos">2725</span></a><span class="k">class</span> <span class="nc">Add</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2726"><a href="#L-2726"><span class="linenos">2726</span></a> <span class="k">pass</span> +</span><span id="L-2695"><a href="#L-2695"><span class="linenos">2695</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-2696"><a href="#L-2696"><span class="linenos">2696</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">__members__</span><span class="p">:</span> +</span><span id="L-2697"><a href="#L-2697"><span class="linenos">2697</span></a> <span class="n">data_type_exp</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> +</span><span id="L-2698"><a href="#L-2698"><span class="linenos">2698</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2699"><a href="#L-2699"><span class="linenos">2699</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">DataType</span><span class="p">)</span> +</span><span id="L-2700"><a href="#L-2700"><span class="linenos">2700</span></a> <span class="k">if</span> <span class="n">data_type_exp</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-2701"><a href="#L-2701"><span class="linenos">2701</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unparsable data type value: </span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-2702"><a href="#L-2702"><span class="linenos">2702</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> +</span><span id="L-2703"><a href="#L-2703"><span class="linenos">2703</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> +</span><span id="L-2704"><a href="#L-2704"><span class="linenos">2704</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> +</span><span id="L-2705"><a href="#L-2705"><span class="linenos">2705</span></a> <span class="k">return</span> <span class="n">dtype</span> +</span><span id="L-2706"><a href="#L-2706"><span class="linenos">2706</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2707"><a href="#L-2707"><span class="linenos">2707</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> +</span><span id="L-2708"><a href="#L-2708"><span class="linenos">2708</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> +</span><span id="L-2709"><a href="#L-2709"><span class="linenos">2709</span></a> +</span><span id="L-2710"><a href="#L-2710"><span class="linenos">2710</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-2711"><a href="#L-2711"><span class="linenos">2711</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">dtype</span> +</span><span id="L-2712"><a href="#L-2712"><span class="linenos">2712</span></a> +</span><span id="L-2713"><a href="#L-2713"><span class="linenos">2713</span></a> +</span><span id="L-2714"><a href="#L-2714"><span class="linenos">2714</span></a><span class="c1"># https://www.postgresql.org/docs/15/datatype-pseudo.html</span> +</span><span id="L-2715"><a href="#L-2715"><span class="linenos">2715</span></a><span class="k">class</span> <span class="nc">PseudoType</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2716"><a href="#L-2716"><span class="linenos">2716</span></a> <span class="k">pass</span> +</span><span id="L-2717"><a href="#L-2717"><span class="linenos">2717</span></a> +</span><span id="L-2718"><a href="#L-2718"><span class="linenos">2718</span></a> +</span><span id="L-2719"><a href="#L-2719"><span class="linenos">2719</span></a><span class="k">class</span> <span class="nc">StructKwarg</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2720"><a href="#L-2720"><span class="linenos">2720</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-2721"><a href="#L-2721"><span class="linenos">2721</span></a> +</span><span id="L-2722"><a href="#L-2722"><span class="linenos">2722</span></a> +</span><span id="L-2723"><a href="#L-2723"><span class="linenos">2723</span></a><span class="c1"># WHERE x <OP> EXISTS|ALL|ANY|SOME(SELECT ...)</span> +</span><span id="L-2724"><a href="#L-2724"><span class="linenos">2724</span></a><span class="k">class</span> <span class="nc">SubqueryPredicate</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2725"><a href="#L-2725"><span class="linenos">2725</span></a> <span class="k">pass</span> +</span><span id="L-2726"><a href="#L-2726"><span class="linenos">2726</span></a> </span><span id="L-2727"><a href="#L-2727"><span class="linenos">2727</span></a> -</span><span id="L-2728"><a href="#L-2728"><span class="linenos">2728</span></a> -</span><span id="L-2729"><a href="#L-2729"><span class="linenos">2729</span></a><span class="k">class</span> <span class="nc">Connector</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> -</span><span id="L-2730"><a href="#L-2730"><span class="linenos">2730</span></a> <span class="k">pass</span> +</span><span id="L-2728"><a href="#L-2728"><span class="linenos">2728</span></a><span class="k">class</span> <span class="nc">All</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="L-2729"><a href="#L-2729"><span class="linenos">2729</span></a> <span class="k">pass</span> +</span><span id="L-2730"><a href="#L-2730"><span class="linenos">2730</span></a> </span><span id="L-2731"><a href="#L-2731"><span class="linenos">2731</span></a> -</span><span id="L-2732"><a href="#L-2732"><span class="linenos">2732</span></a> -</span><span id="L-2733"><a href="#L-2733"><span class="linenos">2733</span></a><span class="k">class</span> <span class="nc">And</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> -</span><span id="L-2734"><a href="#L-2734"><span class="linenos">2734</span></a> <span class="k">pass</span> +</span><span id="L-2732"><a href="#L-2732"><span class="linenos">2732</span></a><span class="k">class</span> <span class="nc">Any</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="L-2733"><a href="#L-2733"><span class="linenos">2733</span></a> <span class="k">pass</span> +</span><span id="L-2734"><a href="#L-2734"><span class="linenos">2734</span></a> </span><span id="L-2735"><a href="#L-2735"><span class="linenos">2735</span></a> -</span><span id="L-2736"><a href="#L-2736"><span class="linenos">2736</span></a> -</span><span id="L-2737"><a href="#L-2737"><span class="linenos">2737</span></a><span class="k">class</span> <span class="nc">Or</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> -</span><span id="L-2738"><a href="#L-2738"><span class="linenos">2738</span></a> <span class="k">pass</span> +</span><span id="L-2736"><a href="#L-2736"><span class="linenos">2736</span></a><span class="k">class</span> <span class="nc">Exists</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="L-2737"><a href="#L-2737"><span class="linenos">2737</span></a> <span class="k">pass</span> +</span><span id="L-2738"><a href="#L-2738"><span class="linenos">2738</span></a> </span><span id="L-2739"><a href="#L-2739"><span class="linenos">2739</span></a> -</span><span id="L-2740"><a href="#L-2740"><span class="linenos">2740</span></a> -</span><span id="L-2741"><a href="#L-2741"><span class="linenos">2741</span></a><span class="k">class</span> <span class="nc">BitwiseAnd</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2742"><a href="#L-2742"><span class="linenos">2742</span></a> <span class="k">pass</span> -</span><span id="L-2743"><a href="#L-2743"><span class="linenos">2743</span></a> +</span><span id="L-2740"><a href="#L-2740"><span class="linenos">2740</span></a><span class="c1"># Commands to interact with the databases or engines. For most of the command</span> +</span><span id="L-2741"><a href="#L-2741"><span class="linenos">2741</span></a><span class="c1"># expressions we parse whatever comes after the command's name as a string.</span> +</span><span id="L-2742"><a href="#L-2742"><span class="linenos">2742</span></a><span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2743"><a href="#L-2743"><span class="linenos">2743</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-2744"><a href="#L-2744"><span class="linenos">2744</span></a> -</span><span id="L-2745"><a href="#L-2745"><span class="linenos">2745</span></a><span class="k">class</span> <span class="nc">BitwiseLeftShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2746"><a href="#L-2746"><span class="linenos">2746</span></a> <span class="k">pass</span> -</span><span id="L-2747"><a href="#L-2747"><span class="linenos">2747</span></a> +</span><span id="L-2745"><a href="#L-2745"><span class="linenos">2745</span></a> +</span><span id="L-2746"><a href="#L-2746"><span class="linenos">2746</span></a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2747"><a href="#L-2747"><span class="linenos">2747</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"modes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-2748"><a href="#L-2748"><span class="linenos">2748</span></a> -</span><span id="L-2749"><a href="#L-2749"><span class="linenos">2749</span></a><span class="k">class</span> <span class="nc">BitwiseOr</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2750"><a href="#L-2750"><span class="linenos">2750</span></a> <span class="k">pass</span> -</span><span id="L-2751"><a href="#L-2751"><span class="linenos">2751</span></a> +</span><span id="L-2749"><a href="#L-2749"><span class="linenos">2749</span></a> +</span><span id="L-2750"><a href="#L-2750"><span class="linenos">2750</span></a><span class="k">class</span> <span class="nc">Commit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2751"><a href="#L-2751"><span class="linenos">2751</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"chain"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-2752"><a href="#L-2752"><span class="linenos">2752</span></a> -</span><span id="L-2753"><a href="#L-2753"><span class="linenos">2753</span></a><span class="k">class</span> <span class="nc">BitwiseRightShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2754"><a href="#L-2754"><span class="linenos">2754</span></a> <span class="k">pass</span> -</span><span id="L-2755"><a href="#L-2755"><span class="linenos">2755</span></a> +</span><span id="L-2753"><a href="#L-2753"><span class="linenos">2753</span></a> +</span><span id="L-2754"><a href="#L-2754"><span class="linenos">2754</span></a><span class="k">class</span> <span class="nc">Rollback</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2755"><a href="#L-2755"><span class="linenos">2755</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"savepoint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-2756"><a href="#L-2756"><span class="linenos">2756</span></a> -</span><span id="L-2757"><a href="#L-2757"><span class="linenos">2757</span></a><span class="k">class</span> <span class="nc">BitwiseXor</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2758"><a href="#L-2758"><span class="linenos">2758</span></a> <span class="k">pass</span> -</span><span id="L-2759"><a href="#L-2759"><span class="linenos">2759</span></a> +</span><span id="L-2757"><a href="#L-2757"><span class="linenos">2757</span></a> +</span><span id="L-2758"><a href="#L-2758"><span class="linenos">2758</span></a><span class="k">class</span> <span class="nc">AlterTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2759"><a href="#L-2759"><span class="linenos">2759</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-2760"><a href="#L-2760"><span class="linenos">2760</span></a> -</span><span id="L-2761"><a href="#L-2761"><span class="linenos">2761</span></a><span class="k">class</span> <span class="nc">Div</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2762"><a href="#L-2762"><span class="linenos">2762</span></a> <span class="k">pass</span> -</span><span id="L-2763"><a href="#L-2763"><span class="linenos">2763</span></a> +</span><span id="L-2761"><a href="#L-2761"><span class="linenos">2761</span></a> +</span><span id="L-2762"><a href="#L-2762"><span class="linenos">2762</span></a><span class="k">class</span> <span class="nc">AddConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2763"><a href="#L-2763"><span class="linenos">2763</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"enforced"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-2764"><a href="#L-2764"><span class="linenos">2764</span></a> -</span><span id="L-2765"><a href="#L-2765"><span class="linenos">2765</span></a><span class="k">class</span> <span class="nc">Dot</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2766"><a href="#L-2766"><span class="linenos">2766</span></a> <span class="nd">@property</span> -</span><span id="L-2767"><a href="#L-2767"><span class="linenos">2767</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-2768"><a href="#L-2768"><span class="linenos">2768</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-2765"><a href="#L-2765"><span class="linenos">2765</span></a> +</span><span id="L-2766"><a href="#L-2766"><span class="linenos">2766</span></a><span class="k">class</span> <span class="nc">DropPartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2767"><a href="#L-2767"><span class="linenos">2767</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2768"><a href="#L-2768"><span class="linenos">2768</span></a> </span><span id="L-2769"><a href="#L-2769"><span class="linenos">2769</span></a> -</span><span id="L-2770"><a href="#L-2770"><span class="linenos">2770</span></a> -</span><span id="L-2771"><a href="#L-2771"><span class="linenos">2771</span></a><span class="k">class</span> <span class="nc">DPipe</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2772"><a href="#L-2772"><span class="linenos">2772</span></a> <span class="k">pass</span> +</span><span id="L-2770"><a href="#L-2770"><span class="linenos">2770</span></a><span class="c1"># Binary expressions like (ADD a b)</span> +</span><span id="L-2771"><a href="#L-2771"><span class="linenos">2771</span></a><span class="k">class</span> <span class="nc">Binary</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2772"><a href="#L-2772"><span class="linenos">2772</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-2773"><a href="#L-2773"><span class="linenos">2773</span></a> -</span><span id="L-2774"><a href="#L-2774"><span class="linenos">2774</span></a> -</span><span id="L-2775"><a href="#L-2775"><span class="linenos">2775</span></a><span class="k">class</span> <span class="nc">EQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2776"><a href="#L-2776"><span class="linenos">2776</span></a> <span class="k">pass</span> +</span><span id="L-2774"><a href="#L-2774"><span class="linenos">2774</span></a> <span class="nd">@property</span> +</span><span id="L-2775"><a href="#L-2775"><span class="linenos">2775</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-2776"><a href="#L-2776"><span class="linenos">2776</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> </span><span id="L-2777"><a href="#L-2777"><span class="linenos">2777</span></a> -</span><span id="L-2778"><a href="#L-2778"><span class="linenos">2778</span></a> -</span><span id="L-2779"><a href="#L-2779"><span class="linenos">2779</span></a><span class="k">class</span> <span class="nc">NullSafeEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2780"><a href="#L-2780"><span class="linenos">2780</span></a> <span class="k">pass</span> +</span><span id="L-2778"><a href="#L-2778"><span class="linenos">2778</span></a> <span class="nd">@property</span> +</span><span id="L-2779"><a href="#L-2779"><span class="linenos">2779</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-2780"><a href="#L-2780"><span class="linenos">2780</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> </span><span id="L-2781"><a href="#L-2781"><span class="linenos">2781</span></a> </span><span id="L-2782"><a href="#L-2782"><span class="linenos">2782</span></a> -</span><span id="L-2783"><a href="#L-2783"><span class="linenos">2783</span></a><span class="k">class</span> <span class="nc">NullSafeNEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2783"><a href="#L-2783"><span class="linenos">2783</span></a><span class="k">class</span> <span class="nc">Add</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> </span><span id="L-2784"><a href="#L-2784"><span class="linenos">2784</span></a> <span class="k">pass</span> </span><span id="L-2785"><a href="#L-2785"><span class="linenos">2785</span></a> </span><span id="L-2786"><a href="#L-2786"><span class="linenos">2786</span></a> -</span><span id="L-2787"><a href="#L-2787"><span class="linenos">2787</span></a><span class="k">class</span> <span class="nc">Distance</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2787"><a href="#L-2787"><span class="linenos">2787</span></a><span class="k">class</span> <span class="nc">Connector</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> </span><span id="L-2788"><a href="#L-2788"><span class="linenos">2788</span></a> <span class="k">pass</span> </span><span id="L-2789"><a href="#L-2789"><span class="linenos">2789</span></a> </span><span id="L-2790"><a href="#L-2790"><span class="linenos">2790</span></a> -</span><span id="L-2791"><a href="#L-2791"><span class="linenos">2791</span></a><span class="k">class</span> <span class="nc">Escape</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2791"><a href="#L-2791"><span class="linenos">2791</span></a><span class="k">class</span> <span class="nc">And</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> </span><span id="L-2792"><a href="#L-2792"><span class="linenos">2792</span></a> <span class="k">pass</span> </span><span id="L-2793"><a href="#L-2793"><span class="linenos">2793</span></a> </span><span id="L-2794"><a href="#L-2794"><span class="linenos">2794</span></a> -</span><span id="L-2795"><a href="#L-2795"><span class="linenos">2795</span></a><span class="k">class</span> <span class="nc">Glob</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2795"><a href="#L-2795"><span class="linenos">2795</span></a><span class="k">class</span> <span class="nc">Or</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> </span><span id="L-2796"><a href="#L-2796"><span class="linenos">2796</span></a> <span class="k">pass</span> </span><span id="L-2797"><a href="#L-2797"><span class="linenos">2797</span></a> </span><span id="L-2798"><a href="#L-2798"><span class="linenos">2798</span></a> -</span><span id="L-2799"><a href="#L-2799"><span class="linenos">2799</span></a><span class="k">class</span> <span class="nc">GT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2799"><a href="#L-2799"><span class="linenos">2799</span></a><span class="k">class</span> <span class="nc">BitwiseAnd</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> </span><span id="L-2800"><a href="#L-2800"><span class="linenos">2800</span></a> <span class="k">pass</span> </span><span id="L-2801"><a href="#L-2801"><span class="linenos">2801</span></a> </span><span id="L-2802"><a href="#L-2802"><span class="linenos">2802</span></a> -</span><span id="L-2803"><a href="#L-2803"><span class="linenos">2803</span></a><span class="k">class</span> <span class="nc">GTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2803"><a href="#L-2803"><span class="linenos">2803</span></a><span class="k">class</span> <span class="nc">BitwiseLeftShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> </span><span id="L-2804"><a href="#L-2804"><span class="linenos">2804</span></a> <span class="k">pass</span> </span><span id="L-2805"><a href="#L-2805"><span class="linenos">2805</span></a> </span><span id="L-2806"><a href="#L-2806"><span class="linenos">2806</span></a> -</span><span id="L-2807"><a href="#L-2807"><span class="linenos">2807</span></a><span class="k">class</span> <span class="nc">ILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2807"><a href="#L-2807"><span class="linenos">2807</span></a><span class="k">class</span> <span class="nc">BitwiseOr</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> </span><span id="L-2808"><a href="#L-2808"><span class="linenos">2808</span></a> <span class="k">pass</span> </span><span id="L-2809"><a href="#L-2809"><span class="linenos">2809</span></a> </span><span id="L-2810"><a href="#L-2810"><span class="linenos">2810</span></a> -</span><span id="L-2811"><a href="#L-2811"><span class="linenos">2811</span></a><span class="k">class</span> <span class="nc">ILikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2811"><a href="#L-2811"><span class="linenos">2811</span></a><span class="k">class</span> <span class="nc">BitwiseRightShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> </span><span id="L-2812"><a href="#L-2812"><span class="linenos">2812</span></a> <span class="k">pass</span> </span><span id="L-2813"><a href="#L-2813"><span class="linenos">2813</span></a> </span><span id="L-2814"><a href="#L-2814"><span class="linenos">2814</span></a> -</span><span id="L-2815"><a href="#L-2815"><span class="linenos">2815</span></a><span class="k">class</span> <span class="nc">IntDiv</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2815"><a href="#L-2815"><span class="linenos">2815</span></a><span class="k">class</span> <span class="nc">BitwiseXor</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> </span><span id="L-2816"><a href="#L-2816"><span class="linenos">2816</span></a> <span class="k">pass</span> </span><span id="L-2817"><a href="#L-2817"><span class="linenos">2817</span></a> </span><span id="L-2818"><a href="#L-2818"><span class="linenos">2818</span></a> -</span><span id="L-2819"><a href="#L-2819"><span class="linenos">2819</span></a><span class="k">class</span> <span class="nc">Is</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2819"><a href="#L-2819"><span class="linenos">2819</span></a><span class="k">class</span> <span class="nc">Div</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> </span><span id="L-2820"><a href="#L-2820"><span class="linenos">2820</span></a> <span class="k">pass</span> </span><span id="L-2821"><a href="#L-2821"><span class="linenos">2821</span></a> </span><span id="L-2822"><a href="#L-2822"><span class="linenos">2822</span></a> -</span><span id="L-2823"><a href="#L-2823"><span class="linenos">2823</span></a><span class="k">class</span> <span class="nc">Kwarg</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2824"><a href="#L-2824"><span class="linenos">2824</span></a><span class="w"> </span><span class="sd">"""Kwarg in special functions like func(kwarg => y)."""</span> -</span><span id="L-2825"><a href="#L-2825"><span class="linenos">2825</span></a> -</span><span id="L-2826"><a href="#L-2826"><span class="linenos">2826</span></a> -</span><span id="L-2827"><a href="#L-2827"><span class="linenos">2827</span></a><span class="k">class</span> <span class="nc">Like</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2828"><a href="#L-2828"><span class="linenos">2828</span></a> <span class="k">pass</span> -</span><span id="L-2829"><a href="#L-2829"><span class="linenos">2829</span></a> -</span><span id="L-2830"><a href="#L-2830"><span class="linenos">2830</span></a> -</span><span id="L-2831"><a href="#L-2831"><span class="linenos">2831</span></a><span class="k">class</span> <span class="nc">LikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2832"><a href="#L-2832"><span class="linenos">2832</span></a> <span class="k">pass</span> -</span><span id="L-2833"><a href="#L-2833"><span class="linenos">2833</span></a> -</span><span id="L-2834"><a href="#L-2834"><span class="linenos">2834</span></a> -</span><span id="L-2835"><a href="#L-2835"><span class="linenos">2835</span></a><span class="k">class</span> <span class="nc">LT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2836"><a href="#L-2836"><span class="linenos">2836</span></a> <span class="k">pass</span> -</span><span id="L-2837"><a href="#L-2837"><span class="linenos">2837</span></a> -</span><span id="L-2838"><a href="#L-2838"><span class="linenos">2838</span></a> -</span><span id="L-2839"><a href="#L-2839"><span class="linenos">2839</span></a><span class="k">class</span> <span class="nc">LTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2840"><a href="#L-2840"><span class="linenos">2840</span></a> <span class="k">pass</span> -</span><span id="L-2841"><a href="#L-2841"><span class="linenos">2841</span></a> -</span><span id="L-2842"><a href="#L-2842"><span class="linenos">2842</span></a> -</span><span id="L-2843"><a href="#L-2843"><span class="linenos">2843</span></a><span class="k">class</span> <span class="nc">Mod</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2844"><a href="#L-2844"><span class="linenos">2844</span></a> <span class="k">pass</span> -</span><span id="L-2845"><a href="#L-2845"><span class="linenos">2845</span></a> -</span><span id="L-2846"><a href="#L-2846"><span class="linenos">2846</span></a> -</span><span id="L-2847"><a href="#L-2847"><span class="linenos">2847</span></a><span class="k">class</span> <span class="nc">Mul</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2848"><a href="#L-2848"><span class="linenos">2848</span></a> <span class="k">pass</span> -</span><span id="L-2849"><a href="#L-2849"><span class="linenos">2849</span></a> -</span><span id="L-2850"><a href="#L-2850"><span class="linenos">2850</span></a> -</span><span id="L-2851"><a href="#L-2851"><span class="linenos">2851</span></a><span class="k">class</span> <span class="nc">NEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2852"><a href="#L-2852"><span class="linenos">2852</span></a> <span class="k">pass</span> -</span><span id="L-2853"><a href="#L-2853"><span class="linenos">2853</span></a> -</span><span id="L-2854"><a href="#L-2854"><span class="linenos">2854</span></a> -</span><span id="L-2855"><a href="#L-2855"><span class="linenos">2855</span></a><span class="k">class</span> <span class="nc">SimilarTo</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2856"><a href="#L-2856"><span class="linenos">2856</span></a> <span class="k">pass</span> -</span><span id="L-2857"><a href="#L-2857"><span class="linenos">2857</span></a> -</span><span id="L-2858"><a href="#L-2858"><span class="linenos">2858</span></a> -</span><span id="L-2859"><a href="#L-2859"><span class="linenos">2859</span></a><span class="k">class</span> <span class="nc">Slice</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2860"><a href="#L-2860"><span class="linenos">2860</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2861"><a href="#L-2861"><span class="linenos">2861</span></a> -</span><span id="L-2862"><a href="#L-2862"><span class="linenos">2862</span></a> -</span><span id="L-2863"><a href="#L-2863"><span class="linenos">2863</span></a><span class="k">class</span> <span class="nc">Sub</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-2864"><a href="#L-2864"><span class="linenos">2864</span></a> <span class="k">pass</span> -</span><span id="L-2865"><a href="#L-2865"><span class="linenos">2865</span></a> -</span><span id="L-2866"><a href="#L-2866"><span class="linenos">2866</span></a> -</span><span id="L-2867"><a href="#L-2867"><span class="linenos">2867</span></a><span class="c1"># Unary Expressions</span> -</span><span id="L-2868"><a href="#L-2868"><span class="linenos">2868</span></a><span class="c1"># (NOT a)</span> -</span><span id="L-2869"><a href="#L-2869"><span class="linenos">2869</span></a><span class="k">class</span> <span class="nc">Unary</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2823"><a href="#L-2823"><span class="linenos">2823</span></a><span class="k">class</span> <span class="nc">Dot</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2824"><a href="#L-2824"><span class="linenos">2824</span></a> <span class="nd">@property</span> +</span><span id="L-2825"><a href="#L-2825"><span class="linenos">2825</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-2826"><a href="#L-2826"><span class="linenos">2826</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-2827"><a href="#L-2827"><span class="linenos">2827</span></a> +</span><span id="L-2828"><a href="#L-2828"><span class="linenos">2828</span></a> +</span><span id="L-2829"><a href="#L-2829"><span class="linenos">2829</span></a><span class="k">class</span> <span class="nc">DPipe</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2830"><a href="#L-2830"><span class="linenos">2830</span></a> <span class="k">pass</span> +</span><span id="L-2831"><a href="#L-2831"><span class="linenos">2831</span></a> +</span><span id="L-2832"><a href="#L-2832"><span class="linenos">2832</span></a> +</span><span id="L-2833"><a href="#L-2833"><span class="linenos">2833</span></a><span class="k">class</span> <span class="nc">EQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2834"><a href="#L-2834"><span class="linenos">2834</span></a> <span class="k">pass</span> +</span><span id="L-2835"><a href="#L-2835"><span class="linenos">2835</span></a> +</span><span id="L-2836"><a href="#L-2836"><span class="linenos">2836</span></a> +</span><span id="L-2837"><a href="#L-2837"><span class="linenos">2837</span></a><span class="k">class</span> <span class="nc">NullSafeEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2838"><a href="#L-2838"><span class="linenos">2838</span></a> <span class="k">pass</span> +</span><span id="L-2839"><a href="#L-2839"><span class="linenos">2839</span></a> +</span><span id="L-2840"><a href="#L-2840"><span class="linenos">2840</span></a> +</span><span id="L-2841"><a href="#L-2841"><span class="linenos">2841</span></a><span class="k">class</span> <span class="nc">NullSafeNEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2842"><a href="#L-2842"><span class="linenos">2842</span></a> <span class="k">pass</span> +</span><span id="L-2843"><a href="#L-2843"><span class="linenos">2843</span></a> +</span><span id="L-2844"><a href="#L-2844"><span class="linenos">2844</span></a> +</span><span id="L-2845"><a href="#L-2845"><span class="linenos">2845</span></a><span class="k">class</span> <span class="nc">Distance</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2846"><a href="#L-2846"><span class="linenos">2846</span></a> <span class="k">pass</span> +</span><span id="L-2847"><a href="#L-2847"><span class="linenos">2847</span></a> +</span><span id="L-2848"><a href="#L-2848"><span class="linenos">2848</span></a> +</span><span id="L-2849"><a href="#L-2849"><span class="linenos">2849</span></a><span class="k">class</span> <span class="nc">Escape</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2850"><a href="#L-2850"><span class="linenos">2850</span></a> <span class="k">pass</span> +</span><span id="L-2851"><a href="#L-2851"><span class="linenos">2851</span></a> +</span><span id="L-2852"><a href="#L-2852"><span class="linenos">2852</span></a> +</span><span id="L-2853"><a href="#L-2853"><span class="linenos">2853</span></a><span class="k">class</span> <span class="nc">Glob</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2854"><a href="#L-2854"><span class="linenos">2854</span></a> <span class="k">pass</span> +</span><span id="L-2855"><a href="#L-2855"><span class="linenos">2855</span></a> +</span><span id="L-2856"><a href="#L-2856"><span class="linenos">2856</span></a> +</span><span id="L-2857"><a href="#L-2857"><span class="linenos">2857</span></a><span class="k">class</span> <span class="nc">GT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2858"><a href="#L-2858"><span class="linenos">2858</span></a> <span class="k">pass</span> +</span><span id="L-2859"><a href="#L-2859"><span class="linenos">2859</span></a> +</span><span id="L-2860"><a href="#L-2860"><span class="linenos">2860</span></a> +</span><span id="L-2861"><a href="#L-2861"><span class="linenos">2861</span></a><span class="k">class</span> <span class="nc">GTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2862"><a href="#L-2862"><span class="linenos">2862</span></a> <span class="k">pass</span> +</span><span id="L-2863"><a href="#L-2863"><span class="linenos">2863</span></a> +</span><span id="L-2864"><a href="#L-2864"><span class="linenos">2864</span></a> +</span><span id="L-2865"><a href="#L-2865"><span class="linenos">2865</span></a><span class="k">class</span> <span class="nc">ILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2866"><a href="#L-2866"><span class="linenos">2866</span></a> <span class="k">pass</span> +</span><span id="L-2867"><a href="#L-2867"><span class="linenos">2867</span></a> +</span><span id="L-2868"><a href="#L-2868"><span class="linenos">2868</span></a> +</span><span id="L-2869"><a href="#L-2869"><span class="linenos">2869</span></a><span class="k">class</span> <span class="nc">ILikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> </span><span id="L-2870"><a href="#L-2870"><span class="linenos">2870</span></a> <span class="k">pass</span> </span><span id="L-2871"><a href="#L-2871"><span class="linenos">2871</span></a> </span><span id="L-2872"><a href="#L-2872"><span class="linenos">2872</span></a> -</span><span id="L-2873"><a href="#L-2873"><span class="linenos">2873</span></a><span class="k">class</span> <span class="nc">BitwiseNot</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="L-2873"><a href="#L-2873"><span class="linenos">2873</span></a><span class="k">class</span> <span class="nc">IntDiv</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> </span><span id="L-2874"><a href="#L-2874"><span class="linenos">2874</span></a> <span class="k">pass</span> </span><span id="L-2875"><a href="#L-2875"><span class="linenos">2875</span></a> </span><span id="L-2876"><a href="#L-2876"><span class="linenos">2876</span></a> -</span><span id="L-2877"><a href="#L-2877"><span class="linenos">2877</span></a><span class="k">class</span> <span class="nc">Not</span><span class="p">(</span><span class="n">Unary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="L-2877"><a href="#L-2877"><span class="linenos">2877</span></a><span class="k">class</span> <span class="nc">Is</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> </span><span id="L-2878"><a href="#L-2878"><span class="linenos">2878</span></a> <span class="k">pass</span> </span><span id="L-2879"><a href="#L-2879"><span class="linenos">2879</span></a> </span><span id="L-2880"><a href="#L-2880"><span class="linenos">2880</span></a> -</span><span id="L-2881"><a href="#L-2881"><span class="linenos">2881</span></a><span class="k">class</span> <span class="nc">Paren</span><span class="p">(</span><span class="n">Unary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> -</span><span id="L-2882"><a href="#L-2882"><span class="linenos">2882</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2881"><a href="#L-2881"><span class="linenos">2881</span></a><span class="k">class</span> <span class="nc">Kwarg</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2882"><a href="#L-2882"><span class="linenos">2882</span></a><span class="w"> </span><span class="sd">"""Kwarg in special functions like func(kwarg => y)."""</span> </span><span id="L-2883"><a href="#L-2883"><span class="linenos">2883</span></a> </span><span id="L-2884"><a href="#L-2884"><span class="linenos">2884</span></a> -</span><span id="L-2885"><a href="#L-2885"><span class="linenos">2885</span></a><span class="k">class</span> <span class="nc">Neg</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="L-2885"><a href="#L-2885"><span class="linenos">2885</span></a><span class="k">class</span> <span class="nc">Like</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> </span><span id="L-2886"><a href="#L-2886"><span class="linenos">2886</span></a> <span class="k">pass</span> </span><span id="L-2887"><a href="#L-2887"><span class="linenos">2887</span></a> </span><span id="L-2888"><a href="#L-2888"><span class="linenos">2888</span></a> -</span><span id="L-2889"><a href="#L-2889"><span class="linenos">2889</span></a><span class="c1"># Special Functions</span> -</span><span id="L-2890"><a href="#L-2890"><span class="linenos">2890</span></a><span class="k">class</span> <span class="nc">Alias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2891"><a href="#L-2891"><span class="linenos">2891</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2889"><a href="#L-2889"><span class="linenos">2889</span></a><span class="k">class</span> <span class="nc">LikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2890"><a href="#L-2890"><span class="linenos">2890</span></a> <span class="k">pass</span> +</span><span id="L-2891"><a href="#L-2891"><span class="linenos">2891</span></a> </span><span id="L-2892"><a href="#L-2892"><span class="linenos">2892</span></a> -</span><span id="L-2893"><a href="#L-2893"><span class="linenos">2893</span></a> <span class="nd">@property</span> -</span><span id="L-2894"><a href="#L-2894"><span class="linenos">2894</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-2895"><a href="#L-2895"><span class="linenos">2895</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> +</span><span id="L-2893"><a href="#L-2893"><span class="linenos">2893</span></a><span class="k">class</span> <span class="nc">LT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2894"><a href="#L-2894"><span class="linenos">2894</span></a> <span class="k">pass</span> +</span><span id="L-2895"><a href="#L-2895"><span class="linenos">2895</span></a> </span><span id="L-2896"><a href="#L-2896"><span class="linenos">2896</span></a> -</span><span id="L-2897"><a href="#L-2897"><span class="linenos">2897</span></a> -</span><span id="L-2898"><a href="#L-2898"><span class="linenos">2898</span></a><span class="k">class</span> <span class="nc">Aliases</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2899"><a href="#L-2899"><span class="linenos">2899</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-2897"><a href="#L-2897"><span class="linenos">2897</span></a><span class="k">class</span> <span class="nc">LTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2898"><a href="#L-2898"><span class="linenos">2898</span></a> <span class="k">pass</span> +</span><span id="L-2899"><a href="#L-2899"><span class="linenos">2899</span></a> </span><span id="L-2900"><a href="#L-2900"><span class="linenos">2900</span></a> -</span><span id="L-2901"><a href="#L-2901"><span class="linenos">2901</span></a> <span class="nd">@property</span> -</span><span id="L-2902"><a href="#L-2902"><span class="linenos">2902</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-2903"><a href="#L-2903"><span class="linenos">2903</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-2901"><a href="#L-2901"><span class="linenos">2901</span></a><span class="k">class</span> <span class="nc">Mod</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2902"><a href="#L-2902"><span class="linenos">2902</span></a> <span class="k">pass</span> +</span><span id="L-2903"><a href="#L-2903"><span class="linenos">2903</span></a> </span><span id="L-2904"><a href="#L-2904"><span class="linenos">2904</span></a> -</span><span id="L-2905"><a href="#L-2905"><span class="linenos">2905</span></a> -</span><span id="L-2906"><a href="#L-2906"><span class="linenos">2906</span></a><span class="k">class</span> <span class="nc">AtTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2907"><a href="#L-2907"><span class="linenos">2907</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-2905"><a href="#L-2905"><span class="linenos">2905</span></a><span class="k">class</span> <span class="nc">Mul</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2906"><a href="#L-2906"><span class="linenos">2906</span></a> <span class="k">pass</span> +</span><span id="L-2907"><a href="#L-2907"><span class="linenos">2907</span></a> </span><span id="L-2908"><a href="#L-2908"><span class="linenos">2908</span></a> -</span><span id="L-2909"><a href="#L-2909"><span class="linenos">2909</span></a> -</span><span id="L-2910"><a href="#L-2910"><span class="linenos">2910</span></a><span class="k">class</span> <span class="nc">Between</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2911"><a href="#L-2911"><span class="linenos">2911</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"low"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"high"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-2909"><a href="#L-2909"><span class="linenos">2909</span></a><span class="k">class</span> <span class="nc">NEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2910"><a href="#L-2910"><span class="linenos">2910</span></a> <span class="k">pass</span> +</span><span id="L-2911"><a href="#L-2911"><span class="linenos">2911</span></a> </span><span id="L-2912"><a href="#L-2912"><span class="linenos">2912</span></a> -</span><span id="L-2913"><a href="#L-2913"><span class="linenos">2913</span></a> -</span><span id="L-2914"><a href="#L-2914"><span class="linenos">2914</span></a><span class="k">class</span> <span class="nc">Bracket</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-2915"><a href="#L-2915"><span class="linenos">2915</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-2913"><a href="#L-2913"><span class="linenos">2913</span></a><span class="k">class</span> <span class="nc">SimilarTo</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2914"><a href="#L-2914"><span class="linenos">2914</span></a> <span class="k">pass</span> +</span><span id="L-2915"><a href="#L-2915"><span class="linenos">2915</span></a> </span><span id="L-2916"><a href="#L-2916"><span class="linenos">2916</span></a> -</span><span id="L-2917"><a href="#L-2917"><span class="linenos">2917</span></a> -</span><span id="L-2918"><a href="#L-2918"><span class="linenos">2918</span></a><span class="k">class</span> <span class="nc">Distinct</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2919"><a href="#L-2919"><span class="linenos">2919</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2917"><a href="#L-2917"><span class="linenos">2917</span></a><span class="k">class</span> <span class="nc">Slice</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2918"><a href="#L-2918"><span class="linenos">2918</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2919"><a href="#L-2919"><span class="linenos">2919</span></a> </span><span id="L-2920"><a href="#L-2920"><span class="linenos">2920</span></a> -</span><span id="L-2921"><a href="#L-2921"><span class="linenos">2921</span></a> -</span><span id="L-2922"><a href="#L-2922"><span class="linenos">2922</span></a><span class="k">class</span> <span class="nc">In</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="L-2923"><a href="#L-2923"><span class="linenos">2923</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-2924"><a href="#L-2924"><span class="linenos">2924</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-2925"><a href="#L-2925"><span class="linenos">2925</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2926"><a href="#L-2926"><span class="linenos">2926</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2927"><a href="#L-2927"><span class="linenos">2927</span></a> <span class="s2">"unnest"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2928"><a href="#L-2928"><span class="linenos">2928</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2929"><a href="#L-2929"><span class="linenos">2929</span></a> <span class="s2">"is_global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-2930"><a href="#L-2930"><span class="linenos">2930</span></a> <span class="p">}</span> -</span><span id="L-2931"><a href="#L-2931"><span class="linenos">2931</span></a> -</span><span id="L-2932"><a href="#L-2932"><span class="linenos">2932</span></a> -</span><span id="L-2933"><a href="#L-2933"><span class="linenos">2933</span></a><span class="k">class</span> <span class="nc">TimeUnit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2934"><a href="#L-2934"><span class="linenos">2934</span></a><span class="w"> </span><span class="sd">"""Automatically converts unit arg into a var."""</span> -</span><span id="L-2935"><a href="#L-2935"><span class="linenos">2935</span></a> -</span><span id="L-2936"><a href="#L-2936"><span class="linenos">2936</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2921"><a href="#L-2921"><span class="linenos">2921</span></a><span class="k">class</span> <span class="nc">Sub</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-2922"><a href="#L-2922"><span class="linenos">2922</span></a> <span class="k">pass</span> +</span><span id="L-2923"><a href="#L-2923"><span class="linenos">2923</span></a> +</span><span id="L-2924"><a href="#L-2924"><span class="linenos">2924</span></a> +</span><span id="L-2925"><a href="#L-2925"><span class="linenos">2925</span></a><span class="c1"># Unary Expressions</span> +</span><span id="L-2926"><a href="#L-2926"><span class="linenos">2926</span></a><span class="c1"># (NOT a)</span> +</span><span id="L-2927"><a href="#L-2927"><span class="linenos">2927</span></a><span class="k">class</span> <span class="nc">Unary</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2928"><a href="#L-2928"><span class="linenos">2928</span></a> <span class="k">pass</span> +</span><span id="L-2929"><a href="#L-2929"><span class="linenos">2929</span></a> +</span><span id="L-2930"><a href="#L-2930"><span class="linenos">2930</span></a> +</span><span id="L-2931"><a href="#L-2931"><span class="linenos">2931</span></a><span class="k">class</span> <span class="nc">BitwiseNot</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="L-2932"><a href="#L-2932"><span class="linenos">2932</span></a> <span class="k">pass</span> +</span><span id="L-2933"><a href="#L-2933"><span class="linenos">2933</span></a> +</span><span id="L-2934"><a href="#L-2934"><span class="linenos">2934</span></a> +</span><span id="L-2935"><a href="#L-2935"><span class="linenos">2935</span></a><span class="k">class</span> <span class="nc">Not</span><span class="p">(</span><span class="n">Unary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="L-2936"><a href="#L-2936"><span class="linenos">2936</span></a> <span class="k">pass</span> </span><span id="L-2937"><a href="#L-2937"><span class="linenos">2937</span></a> -</span><span id="L-2938"><a href="#L-2938"><span class="linenos">2938</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> -</span><span id="L-2939"><a href="#L-2939"><span class="linenos">2939</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> -</span><span id="L-2940"><a href="#L-2940"><span class="linenos">2940</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> -</span><span id="L-2941"><a href="#L-2941"><span class="linenos">2941</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-2942"><a href="#L-2942"><span class="linenos">2942</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> -</span><span id="L-2943"><a href="#L-2943"><span class="linenos">2943</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> -</span><span id="L-2944"><a href="#L-2944"><span class="linenos">2944</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-2938"><a href="#L-2938"><span class="linenos">2938</span></a> +</span><span id="L-2939"><a href="#L-2939"><span class="linenos">2939</span></a><span class="k">class</span> <span class="nc">Paren</span><span class="p">(</span><span class="n">Unary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="L-2940"><a href="#L-2940"><span class="linenos">2940</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2941"><a href="#L-2941"><span class="linenos">2941</span></a> +</span><span id="L-2942"><a href="#L-2942"><span class="linenos">2942</span></a> +</span><span id="L-2943"><a href="#L-2943"><span class="linenos">2943</span></a><span class="k">class</span> <span class="nc">Neg</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="L-2944"><a href="#L-2944"><span class="linenos">2944</span></a> <span class="k">pass</span> </span><span id="L-2945"><a href="#L-2945"><span class="linenos">2945</span></a> </span><span id="L-2946"><a href="#L-2946"><span class="linenos">2946</span></a> -</span><span id="L-2947"><a href="#L-2947"><span class="linenos">2947</span></a><span class="k">class</span> <span class="nc">Interval</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-2948"><a href="#L-2948"><span class="linenos">2948</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-2949"><a href="#L-2949"><span class="linenos">2949</span></a> +</span><span id="L-2947"><a href="#L-2947"><span class="linenos">2947</span></a><span class="c1"># Special Functions</span> +</span><span id="L-2948"><a href="#L-2948"><span class="linenos">2948</span></a><span class="k">class</span> <span class="nc">Alias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2949"><a href="#L-2949"><span class="linenos">2949</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-2950"><a href="#L-2950"><span class="linenos">2950</span></a> -</span><span id="L-2951"><a href="#L-2951"><span class="linenos">2951</span></a><span class="k">class</span> <span class="nc">IgnoreNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2952"><a href="#L-2952"><span class="linenos">2952</span></a> <span class="k">pass</span> -</span><span id="L-2953"><a href="#L-2953"><span class="linenos">2953</span></a> +</span><span id="L-2951"><a href="#L-2951"><span class="linenos">2951</span></a> <span class="nd">@property</span> +</span><span id="L-2952"><a href="#L-2952"><span class="linenos">2952</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-2953"><a href="#L-2953"><span class="linenos">2953</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> </span><span id="L-2954"><a href="#L-2954"><span class="linenos">2954</span></a> -</span><span id="L-2955"><a href="#L-2955"><span class="linenos">2955</span></a><span class="k">class</span> <span class="nc">RespectNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-2956"><a href="#L-2956"><span class="linenos">2956</span></a> <span class="k">pass</span> -</span><span id="L-2957"><a href="#L-2957"><span class="linenos">2957</span></a> +</span><span id="L-2955"><a href="#L-2955"><span class="linenos">2955</span></a> +</span><span id="L-2956"><a href="#L-2956"><span class="linenos">2956</span></a><span class="k">class</span> <span class="nc">Aliases</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2957"><a href="#L-2957"><span class="linenos">2957</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-2958"><a href="#L-2958"><span class="linenos">2958</span></a> -</span><span id="L-2959"><a href="#L-2959"><span class="linenos">2959</span></a><span class="c1"># Functions</span> -</span><span id="L-2960"><a href="#L-2960"><span class="linenos">2960</span></a><span class="k">class</span> <span class="nc">Func</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="L-2961"><a href="#L-2961"><span class="linenos">2961</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-2962"><a href="#L-2962"><span class="linenos">2962</span></a><span class="sd"> The base class for all function expressions.</span> +</span><span id="L-2959"><a href="#L-2959"><span class="linenos">2959</span></a> <span class="nd">@property</span> +</span><span id="L-2960"><a href="#L-2960"><span class="linenos">2960</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-2961"><a href="#L-2961"><span class="linenos">2961</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="L-2962"><a href="#L-2962"><span class="linenos">2962</span></a> </span><span id="L-2963"><a href="#L-2963"><span class="linenos">2963</span></a> -</span><span id="L-2964"><a href="#L-2964"><span class="linenos">2964</span></a><span class="sd"> Attributes:</span> -</span><span id="L-2965"><a href="#L-2965"><span class="linenos">2965</span></a><span class="sd"> is_var_len_args (bool): if set to True the last argument defined in arg_types will be</span> -</span><span id="L-2966"><a href="#L-2966"><span class="linenos">2966</span></a><span class="sd"> treated as a variable length argument and the argument's value will be stored as a list.</span> -</span><span id="L-2967"><a href="#L-2967"><span class="linenos">2967</span></a><span class="sd"> _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)</span> -</span><span id="L-2968"><a href="#L-2968"><span class="linenos">2968</span></a><span class="sd"> for this function expression. These values are used to map this node to a name during parsing</span> -</span><span id="L-2969"><a href="#L-2969"><span class="linenos">2969</span></a><span class="sd"> as well as to provide the function's name during SQL string generation. By default the SQL</span> -</span><span id="L-2970"><a href="#L-2970"><span class="linenos">2970</span></a><span class="sd"> name is set to the expression's class name transformed to snake case.</span> -</span><span id="L-2971"><a href="#L-2971"><span class="linenos">2971</span></a><span class="sd"> """</span> -</span><span id="L-2972"><a href="#L-2972"><span class="linenos">2972</span></a> -</span><span id="L-2973"><a href="#L-2973"><span class="linenos">2973</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2964"><a href="#L-2964"><span class="linenos">2964</span></a><span class="k">class</span> <span class="nc">AtTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2965"><a href="#L-2965"><span class="linenos">2965</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-2966"><a href="#L-2966"><span class="linenos">2966</span></a> +</span><span id="L-2967"><a href="#L-2967"><span class="linenos">2967</span></a> +</span><span id="L-2968"><a href="#L-2968"><span class="linenos">2968</span></a><span class="k">class</span> <span class="nc">Between</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2969"><a href="#L-2969"><span class="linenos">2969</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"low"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"high"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-2970"><a href="#L-2970"><span class="linenos">2970</span></a> +</span><span id="L-2971"><a href="#L-2971"><span class="linenos">2971</span></a> +</span><span id="L-2972"><a href="#L-2972"><span class="linenos">2972</span></a><span class="k">class</span> <span class="nc">Bracket</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-2973"><a href="#L-2973"><span class="linenos">2973</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-2974"><a href="#L-2974"><span class="linenos">2974</span></a> -</span><span id="L-2975"><a href="#L-2975"><span class="linenos">2975</span></a> <span class="nd">@classmethod</span> -</span><span id="L-2976"><a href="#L-2976"><span class="linenos">2976</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> -</span><span id="L-2977"><a href="#L-2977"><span class="linenos">2977</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> -</span><span id="L-2978"><a href="#L-2978"><span class="linenos">2978</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> -</span><span id="L-2979"><a href="#L-2979"><span class="linenos">2979</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> -</span><span id="L-2980"><a href="#L-2980"><span class="linenos">2980</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</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="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> -</span><span id="L-2981"><a href="#L-2981"><span class="linenos">2981</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> -</span><span id="L-2982"><a href="#L-2982"><span class="linenos">2982</span></a> -</span><span id="L-2983"><a href="#L-2983"><span class="linenos">2983</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> -</span><span id="L-2984"><a href="#L-2984"><span class="linenos">2984</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> -</span><span id="L-2985"><a href="#L-2985"><span class="linenos">2985</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2986"><a href="#L-2986"><span class="linenos">2986</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> -</span><span id="L-2987"><a href="#L-2987"><span class="linenos">2987</span></a> -</span><span id="L-2988"><a href="#L-2988"><span class="linenos">2988</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> +</span><span id="L-2975"><a href="#L-2975"><span class="linenos">2975</span></a> +</span><span id="L-2976"><a href="#L-2976"><span class="linenos">2976</span></a><span class="k">class</span> <span class="nc">Distinct</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2977"><a href="#L-2977"><span class="linenos">2977</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2978"><a href="#L-2978"><span class="linenos">2978</span></a> +</span><span id="L-2979"><a href="#L-2979"><span class="linenos">2979</span></a> +</span><span id="L-2980"><a href="#L-2980"><span class="linenos">2980</span></a><span class="k">class</span> <span class="nc">In</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="L-2981"><a href="#L-2981"><span class="linenos">2981</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-2982"><a href="#L-2982"><span class="linenos">2982</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-2983"><a href="#L-2983"><span class="linenos">2983</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2984"><a href="#L-2984"><span class="linenos">2984</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2985"><a href="#L-2985"><span class="linenos">2985</span></a> <span class="s2">"unnest"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2986"><a href="#L-2986"><span class="linenos">2986</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2987"><a href="#L-2987"><span class="linenos">2987</span></a> <span class="s2">"is_global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-2988"><a href="#L-2988"><span class="linenos">2988</span></a> <span class="p">}</span> </span><span id="L-2989"><a href="#L-2989"><span class="linenos">2989</span></a> -</span><span id="L-2990"><a href="#L-2990"><span class="linenos">2990</span></a> <span class="nd">@classmethod</span> -</span><span id="L-2991"><a href="#L-2991"><span class="linenos">2991</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="L-2992"><a href="#L-2992"><span class="linenos">2992</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> -</span><span id="L-2993"><a href="#L-2993"><span class="linenos">2993</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> -</span><span id="L-2994"><a href="#L-2994"><span class="linenos">2994</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> -</span><span id="L-2995"><a href="#L-2995"><span class="linenos">2995</span></a> <span class="p">)</span> -</span><span id="L-2996"><a href="#L-2996"><span class="linenos">2996</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> -</span><span id="L-2997"><a href="#L-2997"><span class="linenos">2997</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> -</span><span id="L-2998"><a href="#L-2998"><span class="linenos">2998</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> -</span><span id="L-2999"><a href="#L-2999"><span class="linenos">2999</span></a> -</span><span id="L-3000"><a href="#L-3000"><span class="linenos">3000</span></a> <span class="nd">@classmethod</span> -</span><span id="L-3001"><a href="#L-3001"><span class="linenos">3001</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="L-3002"><a href="#L-3002"><span class="linenos">3002</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-2990"><a href="#L-2990"><span class="linenos">2990</span></a> +</span><span id="L-2991"><a href="#L-2991"><span class="linenos">2991</span></a><span class="k">class</span> <span class="nc">TimeUnit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-2992"><a href="#L-2992"><span class="linenos">2992</span></a><span class="w"> </span><span class="sd">"""Automatically converts unit arg into a var."""</span> +</span><span id="L-2993"><a href="#L-2993"><span class="linenos">2993</span></a> +</span><span id="L-2994"><a href="#L-2994"><span class="linenos">2994</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-2995"><a href="#L-2995"><span class="linenos">2995</span></a> +</span><span id="L-2996"><a href="#L-2996"><span class="linenos">2996</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> +</span><span id="L-2997"><a href="#L-2997"><span class="linenos">2997</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> +</span><span id="L-2998"><a href="#L-2998"><span class="linenos">2998</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> +</span><span id="L-2999"><a href="#L-2999"><span class="linenos">2999</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-3000"><a href="#L-3000"><span class="linenos">3000</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> +</span><span id="L-3001"><a href="#L-3001"><span class="linenos">3001</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> +</span><span id="L-3002"><a href="#L-3002"><span class="linenos">3002</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> </span><span id="L-3003"><a href="#L-3003"><span class="linenos">3003</span></a> -</span><span id="L-3004"><a href="#L-3004"><span class="linenos">3004</span></a> <span class="nd">@classmethod</span> -</span><span id="L-3005"><a href="#L-3005"><span class="linenos">3005</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="L-3006"><a href="#L-3006"><span class="linenos">3006</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> +</span><span id="L-3004"><a href="#L-3004"><span class="linenos">3004</span></a> +</span><span id="L-3005"><a href="#L-3005"><span class="linenos">3005</span></a><span class="k">class</span> <span class="nc">Interval</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3006"><a href="#L-3006"><span class="linenos">3006</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3007"><a href="#L-3007"><span class="linenos">3007</span></a> </span><span id="L-3008"><a href="#L-3008"><span class="linenos">3008</span></a> -</span><span id="L-3009"><a href="#L-3009"><span class="linenos">3009</span></a><span class="k">class</span> <span class="nc">AggFunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3009"><a href="#L-3009"><span class="linenos">3009</span></a><span class="k">class</span> <span class="nc">IgnoreNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> </span><span id="L-3010"><a href="#L-3010"><span class="linenos">3010</span></a> <span class="k">pass</span> </span><span id="L-3011"><a href="#L-3011"><span class="linenos">3011</span></a> </span><span id="L-3012"><a href="#L-3012"><span class="linenos">3012</span></a> -</span><span id="L-3013"><a href="#L-3013"><span class="linenos">3013</span></a><span class="k">class</span> <span class="nc">Abs</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3013"><a href="#L-3013"><span class="linenos">3013</span></a><span class="k">class</span> <span class="nc">RespectNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> </span><span id="L-3014"><a href="#L-3014"><span class="linenos">3014</span></a> <span class="k">pass</span> </span><span id="L-3015"><a href="#L-3015"><span class="linenos">3015</span></a> </span><span id="L-3016"><a href="#L-3016"><span class="linenos">3016</span></a> -</span><span id="L-3017"><a href="#L-3017"><span class="linenos">3017</span></a><span class="k">class</span> <span class="nc">Anonymous</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3018"><a href="#L-3018"><span class="linenos">3018</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3019"><a href="#L-3019"><span class="linenos">3019</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3020"><a href="#L-3020"><span class="linenos">3020</span></a> +</span><span id="L-3017"><a href="#L-3017"><span class="linenos">3017</span></a><span class="c1"># Functions</span> +</span><span id="L-3018"><a href="#L-3018"><span class="linenos">3018</span></a><span class="k">class</span> <span class="nc">Func</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="L-3019"><a href="#L-3019"><span class="linenos">3019</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-3020"><a href="#L-3020"><span class="linenos">3020</span></a><span class="sd"> The base class for all function expressions.</span> </span><span id="L-3021"><a href="#L-3021"><span class="linenos">3021</span></a> -</span><span id="L-3022"><a href="#L-3022"><span class="linenos">3022</span></a><span class="k">class</span> <span class="nc">ApproxDistinct</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3023"><a href="#L-3023"><span class="linenos">3023</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3024"><a href="#L-3024"><span class="linenos">3024</span></a> -</span><span id="L-3025"><a href="#L-3025"><span class="linenos">3025</span></a> -</span><span id="L-3026"><a href="#L-3026"><span class="linenos">3026</span></a><span class="k">class</span> <span class="nc">Array</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3027"><a href="#L-3027"><span class="linenos">3027</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3028"><a href="#L-3028"><span class="linenos">3028</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3029"><a href="#L-3029"><span class="linenos">3029</span></a> +</span><span id="L-3022"><a href="#L-3022"><span class="linenos">3022</span></a><span class="sd"> Attributes:</span> +</span><span id="L-3023"><a href="#L-3023"><span class="linenos">3023</span></a><span class="sd"> is_var_len_args (bool): if set to True the last argument defined in arg_types will be</span> +</span><span id="L-3024"><a href="#L-3024"><span class="linenos">3024</span></a><span class="sd"> treated as a variable length argument and the argument's value will be stored as a list.</span> +</span><span id="L-3025"><a href="#L-3025"><span class="linenos">3025</span></a><span class="sd"> _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)</span> +</span><span id="L-3026"><a href="#L-3026"><span class="linenos">3026</span></a><span class="sd"> for this function expression. These values are used to map this node to a name during parsing</span> +</span><span id="L-3027"><a href="#L-3027"><span class="linenos">3027</span></a><span class="sd"> as well as to provide the function's name during SQL string generation. By default the SQL</span> +</span><span id="L-3028"><a href="#L-3028"><span class="linenos">3028</span></a><span class="sd"> name is set to the expression's class name transformed to snake case.</span> +</span><span id="L-3029"><a href="#L-3029"><span class="linenos">3029</span></a><span class="sd"> """</span> </span><span id="L-3030"><a href="#L-3030"><span class="linenos">3030</span></a> -</span><span id="L-3031"><a href="#L-3031"><span class="linenos">3031</span></a><span class="k">class</span> <span class="nc">GenerateSeries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3032"><a href="#L-3032"><span class="linenos">3032</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3033"><a href="#L-3033"><span class="linenos">3033</span></a> -</span><span id="L-3034"><a href="#L-3034"><span class="linenos">3034</span></a> -</span><span id="L-3035"><a href="#L-3035"><span class="linenos">3035</span></a><span class="k">class</span> <span class="nc">ArrayAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3036"><a href="#L-3036"><span class="linenos">3036</span></a> <span class="k">pass</span> -</span><span id="L-3037"><a href="#L-3037"><span class="linenos">3037</span></a> -</span><span id="L-3038"><a href="#L-3038"><span class="linenos">3038</span></a> -</span><span id="L-3039"><a href="#L-3039"><span class="linenos">3039</span></a><span class="k">class</span> <span class="nc">ArrayAll</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3040"><a href="#L-3040"><span class="linenos">3040</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3041"><a href="#L-3041"><span class="linenos">3041</span></a> -</span><span id="L-3042"><a href="#L-3042"><span class="linenos">3042</span></a> -</span><span id="L-3043"><a href="#L-3043"><span class="linenos">3043</span></a><span class="k">class</span> <span class="nc">ArrayAny</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3044"><a href="#L-3044"><span class="linenos">3044</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3031"><a href="#L-3031"><span class="linenos">3031</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3032"><a href="#L-3032"><span class="linenos">3032</span></a> +</span><span id="L-3033"><a href="#L-3033"><span class="linenos">3033</span></a> <span class="nd">@classmethod</span> +</span><span id="L-3034"><a href="#L-3034"><span class="linenos">3034</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> +</span><span id="L-3035"><a href="#L-3035"><span class="linenos">3035</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> +</span><span id="L-3036"><a href="#L-3036"><span class="linenos">3036</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> +</span><span id="L-3037"><a href="#L-3037"><span class="linenos">3037</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> +</span><span id="L-3038"><a href="#L-3038"><span class="linenos">3038</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</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="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> +</span><span id="L-3039"><a href="#L-3039"><span class="linenos">3039</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> +</span><span id="L-3040"><a href="#L-3040"><span class="linenos">3040</span></a> +</span><span id="L-3041"><a href="#L-3041"><span class="linenos">3041</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> +</span><span id="L-3042"><a href="#L-3042"><span class="linenos">3042</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> +</span><span id="L-3043"><a href="#L-3043"><span class="linenos">3043</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3044"><a href="#L-3044"><span class="linenos">3044</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> </span><span id="L-3045"><a href="#L-3045"><span class="linenos">3045</span></a> -</span><span id="L-3046"><a href="#L-3046"><span class="linenos">3046</span></a> -</span><span id="L-3047"><a href="#L-3047"><span class="linenos">3047</span></a><span class="k">class</span> <span class="nc">ArrayConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3048"><a href="#L-3048"><span class="linenos">3048</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3049"><a href="#L-3049"><span class="linenos">3049</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3050"><a href="#L-3050"><span class="linenos">3050</span></a> -</span><span id="L-3051"><a href="#L-3051"><span class="linenos">3051</span></a> -</span><span id="L-3052"><a href="#L-3052"><span class="linenos">3052</span></a><span class="k">class</span> <span class="nc">ArrayContains</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3053"><a href="#L-3053"><span class="linenos">3053</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3054"><a href="#L-3054"><span class="linenos">3054</span></a> -</span><span id="L-3055"><a href="#L-3055"><span class="linenos">3055</span></a> -</span><span id="L-3056"><a href="#L-3056"><span class="linenos">3056</span></a><span class="k">class</span> <span class="nc">ArrayFilter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3057"><a href="#L-3057"><span class="linenos">3057</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3058"><a href="#L-3058"><span class="linenos">3058</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"FILTER"</span><span class="p">,</span> <span class="s2">"ARRAY_FILTER"</span><span class="p">]</span> -</span><span id="L-3059"><a href="#L-3059"><span class="linenos">3059</span></a> -</span><span id="L-3060"><a href="#L-3060"><span class="linenos">3060</span></a> -</span><span id="L-3061"><a href="#L-3061"><span class="linenos">3061</span></a><span class="k">class</span> <span class="nc">ArraySize</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3062"><a href="#L-3062"><span class="linenos">3062</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3063"><a href="#L-3063"><span class="linenos">3063</span></a> -</span><span id="L-3064"><a href="#L-3064"><span class="linenos">3064</span></a> -</span><span id="L-3065"><a href="#L-3065"><span class="linenos">3065</span></a><span class="k">class</span> <span class="nc">ArraySort</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3066"><a href="#L-3066"><span class="linenos">3066</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3067"><a href="#L-3067"><span class="linenos">3067</span></a> -</span><span id="L-3068"><a href="#L-3068"><span class="linenos">3068</span></a> -</span><span id="L-3069"><a href="#L-3069"><span class="linenos">3069</span></a><span class="k">class</span> <span class="nc">ArraySum</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3070"><a href="#L-3070"><span class="linenos">3070</span></a> <span class="k">pass</span> -</span><span id="L-3071"><a href="#L-3071"><span class="linenos">3071</span></a> -</span><span id="L-3072"><a href="#L-3072"><span class="linenos">3072</span></a> -</span><span id="L-3073"><a href="#L-3073"><span class="linenos">3073</span></a><span class="k">class</span> <span class="nc">ArrayUnionAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3074"><a href="#L-3074"><span class="linenos">3074</span></a> <span class="k">pass</span> -</span><span id="L-3075"><a href="#L-3075"><span class="linenos">3075</span></a> -</span><span id="L-3076"><a href="#L-3076"><span class="linenos">3076</span></a> -</span><span id="L-3077"><a href="#L-3077"><span class="linenos">3077</span></a><span class="k">class</span> <span class="nc">Avg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3078"><a href="#L-3078"><span class="linenos">3078</span></a> <span class="k">pass</span> +</span><span id="L-3046"><a href="#L-3046"><span class="linenos">3046</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> +</span><span id="L-3047"><a href="#L-3047"><span class="linenos">3047</span></a> +</span><span id="L-3048"><a href="#L-3048"><span class="linenos">3048</span></a> <span class="nd">@classmethod</span> +</span><span id="L-3049"><a href="#L-3049"><span class="linenos">3049</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="L-3050"><a href="#L-3050"><span class="linenos">3050</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> +</span><span id="L-3051"><a href="#L-3051"><span class="linenos">3051</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> +</span><span id="L-3052"><a href="#L-3052"><span class="linenos">3052</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> +</span><span id="L-3053"><a href="#L-3053"><span class="linenos">3053</span></a> <span class="p">)</span> +</span><span id="L-3054"><a href="#L-3054"><span class="linenos">3054</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> +</span><span id="L-3055"><a href="#L-3055"><span class="linenos">3055</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> +</span><span id="L-3056"><a href="#L-3056"><span class="linenos">3056</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> +</span><span id="L-3057"><a href="#L-3057"><span class="linenos">3057</span></a> +</span><span id="L-3058"><a href="#L-3058"><span class="linenos">3058</span></a> <span class="nd">@classmethod</span> +</span><span id="L-3059"><a href="#L-3059"><span class="linenos">3059</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="L-3060"><a href="#L-3060"><span class="linenos">3060</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-3061"><a href="#L-3061"><span class="linenos">3061</span></a> +</span><span id="L-3062"><a href="#L-3062"><span class="linenos">3062</span></a> <span class="nd">@classmethod</span> +</span><span id="L-3063"><a href="#L-3063"><span class="linenos">3063</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="L-3064"><a href="#L-3064"><span class="linenos">3064</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> +</span><span id="L-3065"><a href="#L-3065"><span class="linenos">3065</span></a> +</span><span id="L-3066"><a href="#L-3066"><span class="linenos">3066</span></a> +</span><span id="L-3067"><a href="#L-3067"><span class="linenos">3067</span></a><span class="k">class</span> <span class="nc">AggFunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3068"><a href="#L-3068"><span class="linenos">3068</span></a> <span class="k">pass</span> +</span><span id="L-3069"><a href="#L-3069"><span class="linenos">3069</span></a> +</span><span id="L-3070"><a href="#L-3070"><span class="linenos">3070</span></a> +</span><span id="L-3071"><a href="#L-3071"><span class="linenos">3071</span></a><span class="k">class</span> <span class="nc">Abs</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3072"><a href="#L-3072"><span class="linenos">3072</span></a> <span class="k">pass</span> +</span><span id="L-3073"><a href="#L-3073"><span class="linenos">3073</span></a> +</span><span id="L-3074"><a href="#L-3074"><span class="linenos">3074</span></a> +</span><span id="L-3075"><a href="#L-3075"><span class="linenos">3075</span></a><span class="k">class</span> <span class="nc">Anonymous</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3076"><a href="#L-3076"><span class="linenos">3076</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3077"><a href="#L-3077"><span class="linenos">3077</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3078"><a href="#L-3078"><span class="linenos">3078</span></a> </span><span id="L-3079"><a href="#L-3079"><span class="linenos">3079</span></a> -</span><span id="L-3080"><a href="#L-3080"><span class="linenos">3080</span></a> -</span><span id="L-3081"><a href="#L-3081"><span class="linenos">3081</span></a><span class="k">class</span> <span class="nc">AnyValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3082"><a href="#L-3082"><span class="linenos">3082</span></a> <span class="k">pass</span> +</span><span id="L-3080"><a href="#L-3080"><span class="linenos">3080</span></a><span class="k">class</span> <span class="nc">ApproxDistinct</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3081"><a href="#L-3081"><span class="linenos">3081</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3082"><a href="#L-3082"><span class="linenos">3082</span></a> </span><span id="L-3083"><a href="#L-3083"><span class="linenos">3083</span></a> -</span><span id="L-3084"><a href="#L-3084"><span class="linenos">3084</span></a> -</span><span id="L-3085"><a href="#L-3085"><span class="linenos">3085</span></a><span class="k">class</span> <span class="nc">Case</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3086"><a href="#L-3086"><span class="linenos">3086</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"ifs"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3084"><a href="#L-3084"><span class="linenos">3084</span></a><span class="k">class</span> <span class="nc">Array</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3085"><a href="#L-3085"><span class="linenos">3085</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3086"><a href="#L-3086"><span class="linenos">3086</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-3087"><a href="#L-3087"><span class="linenos">3087</span></a> </span><span id="L-3088"><a href="#L-3088"><span class="linenos">3088</span></a> -</span><span id="L-3089"><a href="#L-3089"><span class="linenos">3089</span></a><span class="k">class</span> <span class="nc">Cast</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3090"><a href="#L-3090"><span class="linenos">3090</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3089"><a href="#L-3089"><span class="linenos">3089</span></a><span class="k">class</span> <span class="nc">GenerateSeries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3090"><a href="#L-3090"><span class="linenos">3090</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3091"><a href="#L-3091"><span class="linenos">3091</span></a> -</span><span id="L-3092"><a href="#L-3092"><span class="linenos">3092</span></a> <span class="nd">@property</span> -</span><span id="L-3093"><a href="#L-3093"><span class="linenos">3093</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-3094"><a href="#L-3094"><span class="linenos">3094</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-3092"><a href="#L-3092"><span class="linenos">3092</span></a> +</span><span id="L-3093"><a href="#L-3093"><span class="linenos">3093</span></a><span class="k">class</span> <span class="nc">ArrayAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3094"><a href="#L-3094"><span class="linenos">3094</span></a> <span class="k">pass</span> </span><span id="L-3095"><a href="#L-3095"><span class="linenos">3095</span></a> -</span><span id="L-3096"><a href="#L-3096"><span class="linenos">3096</span></a> <span class="nd">@property</span> -</span><span id="L-3097"><a href="#L-3097"><span class="linenos">3097</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-3098"><a href="#L-3098"><span class="linenos">3098</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> +</span><span id="L-3096"><a href="#L-3096"><span class="linenos">3096</span></a> +</span><span id="L-3097"><a href="#L-3097"><span class="linenos">3097</span></a><span class="k">class</span> <span class="nc">ArrayAll</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3098"><a href="#L-3098"><span class="linenos">3098</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3099"><a href="#L-3099"><span class="linenos">3099</span></a> -</span><span id="L-3100"><a href="#L-3100"><span class="linenos">3100</span></a> <span class="nd">@property</span> -</span><span id="L-3101"><a href="#L-3101"><span class="linenos">3101</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-3102"><a href="#L-3102"><span class="linenos">3102</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-3100"><a href="#L-3100"><span class="linenos">3100</span></a> +</span><span id="L-3101"><a href="#L-3101"><span class="linenos">3101</span></a><span class="k">class</span> <span class="nc">ArrayAny</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3102"><a href="#L-3102"><span class="linenos">3102</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3103"><a href="#L-3103"><span class="linenos">3103</span></a> -</span><span id="L-3104"><a href="#L-3104"><span class="linenos">3104</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-3105"><a href="#L-3105"><span class="linenos">3105</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> -</span><span id="L-3106"><a href="#L-3106"><span class="linenos">3106</span></a> -</span><span id="L-3107"><a href="#L-3107"><span class="linenos">3107</span></a> -</span><span id="L-3108"><a href="#L-3108"><span class="linenos">3108</span></a><span class="k">class</span> <span class="nc">Collate</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-3109"><a href="#L-3109"><span class="linenos">3109</span></a> <span class="k">pass</span> -</span><span id="L-3110"><a href="#L-3110"><span class="linenos">3110</span></a> -</span><span id="L-3111"><a href="#L-3111"><span class="linenos">3111</span></a> -</span><span id="L-3112"><a href="#L-3112"><span class="linenos">3112</span></a><span class="k">class</span> <span class="nc">TryCast</span><span class="p">(</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="L-3113"><a href="#L-3113"><span class="linenos">3113</span></a> <span class="k">pass</span> -</span><span id="L-3114"><a href="#L-3114"><span class="linenos">3114</span></a> -</span><span id="L-3115"><a href="#L-3115"><span class="linenos">3115</span></a> -</span><span id="L-3116"><a href="#L-3116"><span class="linenos">3116</span></a><span class="k">class</span> <span class="nc">Ceil</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3117"><a href="#L-3117"><span class="linenos">3117</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3118"><a href="#L-3118"><span class="linenos">3118</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CEIL"</span><span class="p">,</span> <span class="s2">"CEILING"</span><span class="p">]</span> -</span><span id="L-3119"><a href="#L-3119"><span class="linenos">3119</span></a> -</span><span id="L-3120"><a href="#L-3120"><span class="linenos">3120</span></a> -</span><span id="L-3121"><a href="#L-3121"><span class="linenos">3121</span></a><span class="k">class</span> <span class="nc">Coalesce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3122"><a href="#L-3122"><span class="linenos">3122</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3123"><a href="#L-3123"><span class="linenos">3123</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3124"><a href="#L-3124"><span class="linenos">3124</span></a> +</span><span id="L-3104"><a href="#L-3104"><span class="linenos">3104</span></a> +</span><span id="L-3105"><a href="#L-3105"><span class="linenos">3105</span></a><span class="k">class</span> <span class="nc">ArrayConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3106"><a href="#L-3106"><span class="linenos">3106</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3107"><a href="#L-3107"><span class="linenos">3107</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3108"><a href="#L-3108"><span class="linenos">3108</span></a> +</span><span id="L-3109"><a href="#L-3109"><span class="linenos">3109</span></a> +</span><span id="L-3110"><a href="#L-3110"><span class="linenos">3110</span></a><span class="k">class</span> <span class="nc">ArrayContains</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3111"><a href="#L-3111"><span class="linenos">3111</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3112"><a href="#L-3112"><span class="linenos">3112</span></a> +</span><span id="L-3113"><a href="#L-3113"><span class="linenos">3113</span></a> +</span><span id="L-3114"><a href="#L-3114"><span class="linenos">3114</span></a><span class="k">class</span> <span class="nc">ArrayFilter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3115"><a href="#L-3115"><span class="linenos">3115</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3116"><a href="#L-3116"><span class="linenos">3116</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"FILTER"</span><span class="p">,</span> <span class="s2">"ARRAY_FILTER"</span><span class="p">]</span> +</span><span id="L-3117"><a href="#L-3117"><span class="linenos">3117</span></a> +</span><span id="L-3118"><a href="#L-3118"><span class="linenos">3118</span></a> +</span><span id="L-3119"><a href="#L-3119"><span class="linenos">3119</span></a><span class="k">class</span> <span class="nc">ArraySize</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3120"><a href="#L-3120"><span class="linenos">3120</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3121"><a href="#L-3121"><span class="linenos">3121</span></a> +</span><span id="L-3122"><a href="#L-3122"><span class="linenos">3122</span></a> +</span><span id="L-3123"><a href="#L-3123"><span class="linenos">3123</span></a><span class="k">class</span> <span class="nc">ArraySort</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3124"><a href="#L-3124"><span class="linenos">3124</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3125"><a href="#L-3125"><span class="linenos">3125</span></a> -</span><span id="L-3126"><a href="#L-3126"><span class="linenos">3126</span></a><span class="k">class</span> <span class="nc">Concat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3127"><a href="#L-3127"><span class="linenos">3127</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3128"><a href="#L-3128"><span class="linenos">3128</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3126"><a href="#L-3126"><span class="linenos">3126</span></a> +</span><span id="L-3127"><a href="#L-3127"><span class="linenos">3127</span></a><span class="k">class</span> <span class="nc">ArraySum</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3128"><a href="#L-3128"><span class="linenos">3128</span></a> <span class="k">pass</span> </span><span id="L-3129"><a href="#L-3129"><span class="linenos">3129</span></a> </span><span id="L-3130"><a href="#L-3130"><span class="linenos">3130</span></a> -</span><span id="L-3131"><a href="#L-3131"><span class="linenos">3131</span></a><span class="k">class</span> <span class="nc">ConcatWs</span><span class="p">(</span><span class="n">Concat</span><span class="p">):</span> -</span><span id="L-3132"><a href="#L-3132"><span class="linenos">3132</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CONCAT_WS"</span><span class="p">]</span> +</span><span id="L-3131"><a href="#L-3131"><span class="linenos">3131</span></a><span class="k">class</span> <span class="nc">ArrayUnionAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3132"><a href="#L-3132"><span class="linenos">3132</span></a> <span class="k">pass</span> </span><span id="L-3133"><a href="#L-3133"><span class="linenos">3133</span></a> </span><span id="L-3134"><a href="#L-3134"><span class="linenos">3134</span></a> -</span><span id="L-3135"><a href="#L-3135"><span class="linenos">3135</span></a><span class="k">class</span> <span class="nc">Count</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3136"><a href="#L-3136"><span class="linenos">3136</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3135"><a href="#L-3135"><span class="linenos">3135</span></a><span class="k">class</span> <span class="nc">Avg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3136"><a href="#L-3136"><span class="linenos">3136</span></a> <span class="k">pass</span> </span><span id="L-3137"><a href="#L-3137"><span class="linenos">3137</span></a> </span><span id="L-3138"><a href="#L-3138"><span class="linenos">3138</span></a> -</span><span id="L-3139"><a href="#L-3139"><span class="linenos">3139</span></a><span class="k">class</span> <span class="nc">CurrentDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3140"><a href="#L-3140"><span class="linenos">3140</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3139"><a href="#L-3139"><span class="linenos">3139</span></a><span class="k">class</span> <span class="nc">AnyValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3140"><a href="#L-3140"><span class="linenos">3140</span></a> <span class="k">pass</span> </span><span id="L-3141"><a href="#L-3141"><span class="linenos">3141</span></a> </span><span id="L-3142"><a href="#L-3142"><span class="linenos">3142</span></a> -</span><span id="L-3143"><a href="#L-3143"><span class="linenos">3143</span></a><span class="k">class</span> <span class="nc">CurrentDatetime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3144"><a href="#L-3144"><span class="linenos">3144</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3143"><a href="#L-3143"><span class="linenos">3143</span></a><span class="k">class</span> <span class="nc">Case</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3144"><a href="#L-3144"><span class="linenos">3144</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"ifs"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3145"><a href="#L-3145"><span class="linenos">3145</span></a> </span><span id="L-3146"><a href="#L-3146"><span class="linenos">3146</span></a> -</span><span id="L-3147"><a href="#L-3147"><span class="linenos">3147</span></a><span class="k">class</span> <span class="nc">CurrentTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3148"><a href="#L-3148"><span class="linenos">3148</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3147"><a href="#L-3147"><span class="linenos">3147</span></a><span class="k">class</span> <span class="nc">Cast</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3148"><a href="#L-3148"><span class="linenos">3148</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3149"><a href="#L-3149"><span class="linenos">3149</span></a> -</span><span id="L-3150"><a href="#L-3150"><span class="linenos">3150</span></a> -</span><span id="L-3151"><a href="#L-3151"><span class="linenos">3151</span></a><span class="k">class</span> <span class="nc">CurrentTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3152"><a href="#L-3152"><span class="linenos">3152</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3150"><a href="#L-3150"><span class="linenos">3150</span></a> <span class="nd">@property</span> +</span><span id="L-3151"><a href="#L-3151"><span class="linenos">3151</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-3152"><a href="#L-3152"><span class="linenos">3152</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> </span><span id="L-3153"><a href="#L-3153"><span class="linenos">3153</span></a> -</span><span id="L-3154"><a href="#L-3154"><span class="linenos">3154</span></a> -</span><span id="L-3155"><a href="#L-3155"><span class="linenos">3155</span></a><span class="k">class</span> <span class="nc">DateAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3156"><a href="#L-3156"><span class="linenos">3156</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3154"><a href="#L-3154"><span class="linenos">3154</span></a> <span class="nd">@property</span> +</span><span id="L-3155"><a href="#L-3155"><span class="linenos">3155</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-3156"><a href="#L-3156"><span class="linenos">3156</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> </span><span id="L-3157"><a href="#L-3157"><span class="linenos">3157</span></a> -</span><span id="L-3158"><a href="#L-3158"><span class="linenos">3158</span></a> -</span><span id="L-3159"><a href="#L-3159"><span class="linenos">3159</span></a><span class="k">class</span> <span class="nc">DateSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3160"><a href="#L-3160"><span class="linenos">3160</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3158"><a href="#L-3158"><span class="linenos">3158</span></a> <span class="nd">@property</span> +</span><span id="L-3159"><a href="#L-3159"><span class="linenos">3159</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-3160"><a href="#L-3160"><span class="linenos">3160</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> </span><span id="L-3161"><a href="#L-3161"><span class="linenos">3161</span></a> -</span><span id="L-3162"><a href="#L-3162"><span class="linenos">3162</span></a> -</span><span id="L-3163"><a href="#L-3163"><span class="linenos">3163</span></a><span class="k">class</span> <span class="nc">DateDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3164"><a href="#L-3164"><span class="linenos">3164</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3162"><a href="#L-3162"><span class="linenos">3162</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-3163"><a href="#L-3163"><span class="linenos">3163</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> +</span><span id="L-3164"><a href="#L-3164"><span class="linenos">3164</span></a> </span><span id="L-3165"><a href="#L-3165"><span class="linenos">3165</span></a> -</span><span id="L-3166"><a href="#L-3166"><span class="linenos">3166</span></a> -</span><span id="L-3167"><a href="#L-3167"><span class="linenos">3167</span></a><span class="k">class</span> <span class="nc">DateTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3168"><a href="#L-3168"><span class="linenos">3168</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3166"><a href="#L-3166"><span class="linenos">3166</span></a><span class="k">class</span> <span class="nc">Collate</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-3167"><a href="#L-3167"><span class="linenos">3167</span></a> <span class="k">pass</span> +</span><span id="L-3168"><a href="#L-3168"><span class="linenos">3168</span></a> </span><span id="L-3169"><a href="#L-3169"><span class="linenos">3169</span></a> -</span><span id="L-3170"><a href="#L-3170"><span class="linenos">3170</span></a> -</span><span id="L-3171"><a href="#L-3171"><span class="linenos">3171</span></a><span class="k">class</span> <span class="nc">DatetimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3172"><a href="#L-3172"><span class="linenos">3172</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3170"><a href="#L-3170"><span class="linenos">3170</span></a><span class="k">class</span> <span class="nc">TryCast</span><span class="p">(</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="L-3171"><a href="#L-3171"><span class="linenos">3171</span></a> <span class="k">pass</span> +</span><span id="L-3172"><a href="#L-3172"><span class="linenos">3172</span></a> </span><span id="L-3173"><a href="#L-3173"><span class="linenos">3173</span></a> -</span><span id="L-3174"><a href="#L-3174"><span class="linenos">3174</span></a> -</span><span id="L-3175"><a href="#L-3175"><span class="linenos">3175</span></a><span class="k">class</span> <span class="nc">DatetimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3176"><a href="#L-3176"><span class="linenos">3176</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3174"><a href="#L-3174"><span class="linenos">3174</span></a><span class="k">class</span> <span class="nc">Ceil</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3175"><a href="#L-3175"><span class="linenos">3175</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3176"><a href="#L-3176"><span class="linenos">3176</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CEIL"</span><span class="p">,</span> <span class="s2">"CEILING"</span><span class="p">]</span> </span><span id="L-3177"><a href="#L-3177"><span class="linenos">3177</span></a> </span><span id="L-3178"><a href="#L-3178"><span class="linenos">3178</span></a> -</span><span id="L-3179"><a href="#L-3179"><span class="linenos">3179</span></a><span class="k">class</span> <span class="nc">DatetimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3180"><a href="#L-3180"><span class="linenos">3180</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3181"><a href="#L-3181"><span class="linenos">3181</span></a> +</span><span id="L-3179"><a href="#L-3179"><span class="linenos">3179</span></a><span class="k">class</span> <span class="nc">Coalesce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3180"><a href="#L-3180"><span class="linenos">3180</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3181"><a href="#L-3181"><span class="linenos">3181</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-3182"><a href="#L-3182"><span class="linenos">3182</span></a> -</span><span id="L-3183"><a href="#L-3183"><span class="linenos">3183</span></a><span class="k">class</span> <span class="nc">DatetimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3184"><a href="#L-3184"><span class="linenos">3184</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3185"><a href="#L-3185"><span class="linenos">3185</span></a> -</span><span id="L-3186"><a href="#L-3186"><span class="linenos">3186</span></a> -</span><span id="L-3187"><a href="#L-3187"><span class="linenos">3187</span></a><span class="k">class</span> <span class="nc">DayOfWeek</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3188"><a href="#L-3188"><span class="linenos">3188</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_WEEK"</span><span class="p">,</span> <span class="s2">"DAYOFWEEK"</span><span class="p">]</span> -</span><span id="L-3189"><a href="#L-3189"><span class="linenos">3189</span></a> -</span><span id="L-3190"><a href="#L-3190"><span class="linenos">3190</span></a> -</span><span id="L-3191"><a href="#L-3191"><span class="linenos">3191</span></a><span class="k">class</span> <span class="nc">DayOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3192"><a href="#L-3192"><span class="linenos">3192</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_MONTH"</span><span class="p">,</span> <span class="s2">"DAYOFMONTH"</span><span class="p">]</span> -</span><span id="L-3193"><a href="#L-3193"><span class="linenos">3193</span></a> -</span><span id="L-3194"><a href="#L-3194"><span class="linenos">3194</span></a> -</span><span id="L-3195"><a href="#L-3195"><span class="linenos">3195</span></a><span class="k">class</span> <span class="nc">DayOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3196"><a href="#L-3196"><span class="linenos">3196</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_YEAR"</span><span class="p">,</span> <span class="s2">"DAYOFYEAR"</span><span class="p">]</span> -</span><span id="L-3197"><a href="#L-3197"><span class="linenos">3197</span></a> -</span><span id="L-3198"><a href="#L-3198"><span class="linenos">3198</span></a> -</span><span id="L-3199"><a href="#L-3199"><span class="linenos">3199</span></a><span class="k">class</span> <span class="nc">WeekOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3200"><a href="#L-3200"><span class="linenos">3200</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"WEEK_OF_YEAR"</span><span class="p">,</span> <span class="s2">"WEEKOFYEAR"</span><span class="p">]</span> -</span><span id="L-3201"><a href="#L-3201"><span class="linenos">3201</span></a> -</span><span id="L-3202"><a href="#L-3202"><span class="linenos">3202</span></a> -</span><span id="L-3203"><a href="#L-3203"><span class="linenos">3203</span></a><span class="k">class</span> <span class="nc">LastDateOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3204"><a href="#L-3204"><span class="linenos">3204</span></a> <span class="k">pass</span> -</span><span id="L-3205"><a href="#L-3205"><span class="linenos">3205</span></a> -</span><span id="L-3206"><a href="#L-3206"><span class="linenos">3206</span></a> -</span><span id="L-3207"><a href="#L-3207"><span class="linenos">3207</span></a><span class="k">class</span> <span class="nc">Extract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3208"><a href="#L-3208"><span class="linenos">3208</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3209"><a href="#L-3209"><span class="linenos">3209</span></a> -</span><span id="L-3210"><a href="#L-3210"><span class="linenos">3210</span></a> -</span><span id="L-3211"><a href="#L-3211"><span class="linenos">3211</span></a><span class="k">class</span> <span class="nc">TimestampAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3212"><a href="#L-3212"><span class="linenos">3212</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3213"><a href="#L-3213"><span class="linenos">3213</span></a> -</span><span id="L-3214"><a href="#L-3214"><span class="linenos">3214</span></a> -</span><span id="L-3215"><a href="#L-3215"><span class="linenos">3215</span></a><span class="k">class</span> <span class="nc">TimestampSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3216"><a href="#L-3216"><span class="linenos">3216</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3217"><a href="#L-3217"><span class="linenos">3217</span></a> -</span><span id="L-3218"><a href="#L-3218"><span class="linenos">3218</span></a> -</span><span id="L-3219"><a href="#L-3219"><span class="linenos">3219</span></a><span class="k">class</span> <span class="nc">TimestampDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3220"><a href="#L-3220"><span class="linenos">3220</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3221"><a href="#L-3221"><span class="linenos">3221</span></a> -</span><span id="L-3222"><a href="#L-3222"><span class="linenos">3222</span></a> -</span><span id="L-3223"><a href="#L-3223"><span class="linenos">3223</span></a><span class="k">class</span> <span class="nc">TimestampTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3224"><a href="#L-3224"><span class="linenos">3224</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3225"><a href="#L-3225"><span class="linenos">3225</span></a> -</span><span id="L-3226"><a href="#L-3226"><span class="linenos">3226</span></a> -</span><span id="L-3227"><a href="#L-3227"><span class="linenos">3227</span></a><span class="k">class</span> <span class="nc">TimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3228"><a href="#L-3228"><span class="linenos">3228</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3229"><a href="#L-3229"><span class="linenos">3229</span></a> -</span><span id="L-3230"><a href="#L-3230"><span class="linenos">3230</span></a> -</span><span id="L-3231"><a href="#L-3231"><span class="linenos">3231</span></a><span class="k">class</span> <span class="nc">TimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3232"><a href="#L-3232"><span class="linenos">3232</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3233"><a href="#L-3233"><span class="linenos">3233</span></a> -</span><span id="L-3234"><a href="#L-3234"><span class="linenos">3234</span></a> -</span><span id="L-3235"><a href="#L-3235"><span class="linenos">3235</span></a><span class="k">class</span> <span class="nc">TimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3236"><a href="#L-3236"><span class="linenos">3236</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3237"><a href="#L-3237"><span class="linenos">3237</span></a> -</span><span id="L-3238"><a href="#L-3238"><span class="linenos">3238</span></a> -</span><span id="L-3239"><a href="#L-3239"><span class="linenos">3239</span></a><span class="k">class</span> <span class="nc">TimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3240"><a href="#L-3240"><span class="linenos">3240</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3241"><a href="#L-3241"><span class="linenos">3241</span></a> -</span><span id="L-3242"><a href="#L-3242"><span class="linenos">3242</span></a> -</span><span id="L-3243"><a href="#L-3243"><span class="linenos">3243</span></a><span class="k">class</span> <span class="nc">DateFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3244"><a href="#L-3244"><span class="linenos">3244</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATEFROMPARTS"</span><span class="p">]</span> -</span><span id="L-3245"><a href="#L-3245"><span class="linenos">3245</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3246"><a href="#L-3246"><span class="linenos">3246</span></a> +</span><span id="L-3183"><a href="#L-3183"><span class="linenos">3183</span></a> +</span><span id="L-3184"><a href="#L-3184"><span class="linenos">3184</span></a><span class="k">class</span> <span class="nc">Concat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3185"><a href="#L-3185"><span class="linenos">3185</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3186"><a href="#L-3186"><span class="linenos">3186</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3187"><a href="#L-3187"><span class="linenos">3187</span></a> +</span><span id="L-3188"><a href="#L-3188"><span class="linenos">3188</span></a> +</span><span id="L-3189"><a href="#L-3189"><span class="linenos">3189</span></a><span class="k">class</span> <span class="nc">ConcatWs</span><span class="p">(</span><span class="n">Concat</span><span class="p">):</span> +</span><span id="L-3190"><a href="#L-3190"><span class="linenos">3190</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CONCAT_WS"</span><span class="p">]</span> +</span><span id="L-3191"><a href="#L-3191"><span class="linenos">3191</span></a> +</span><span id="L-3192"><a href="#L-3192"><span class="linenos">3192</span></a> +</span><span id="L-3193"><a href="#L-3193"><span class="linenos">3193</span></a><span class="k">class</span> <span class="nc">Count</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3194"><a href="#L-3194"><span class="linenos">3194</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3195"><a href="#L-3195"><span class="linenos">3195</span></a> +</span><span id="L-3196"><a href="#L-3196"><span class="linenos">3196</span></a> +</span><span id="L-3197"><a href="#L-3197"><span class="linenos">3197</span></a><span class="k">class</span> <span class="nc">CurrentDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3198"><a href="#L-3198"><span class="linenos">3198</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3199"><a href="#L-3199"><span class="linenos">3199</span></a> +</span><span id="L-3200"><a href="#L-3200"><span class="linenos">3200</span></a> +</span><span id="L-3201"><a href="#L-3201"><span class="linenos">3201</span></a><span class="k">class</span> <span class="nc">CurrentDatetime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3202"><a href="#L-3202"><span class="linenos">3202</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3203"><a href="#L-3203"><span class="linenos">3203</span></a> +</span><span id="L-3204"><a href="#L-3204"><span class="linenos">3204</span></a> +</span><span id="L-3205"><a href="#L-3205"><span class="linenos">3205</span></a><span class="k">class</span> <span class="nc">CurrentTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3206"><a href="#L-3206"><span class="linenos">3206</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3207"><a href="#L-3207"><span class="linenos">3207</span></a> +</span><span id="L-3208"><a href="#L-3208"><span class="linenos">3208</span></a> +</span><span id="L-3209"><a href="#L-3209"><span class="linenos">3209</span></a><span class="k">class</span> <span class="nc">CurrentTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3210"><a href="#L-3210"><span class="linenos">3210</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3211"><a href="#L-3211"><span class="linenos">3211</span></a> +</span><span id="L-3212"><a href="#L-3212"><span class="linenos">3212</span></a> +</span><span id="L-3213"><a href="#L-3213"><span class="linenos">3213</span></a><span class="k">class</span> <span class="nc">DateAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3214"><a href="#L-3214"><span class="linenos">3214</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3215"><a href="#L-3215"><span class="linenos">3215</span></a> +</span><span id="L-3216"><a href="#L-3216"><span class="linenos">3216</span></a> +</span><span id="L-3217"><a href="#L-3217"><span class="linenos">3217</span></a><span class="k">class</span> <span class="nc">DateSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3218"><a href="#L-3218"><span class="linenos">3218</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3219"><a href="#L-3219"><span class="linenos">3219</span></a> +</span><span id="L-3220"><a href="#L-3220"><span class="linenos">3220</span></a> +</span><span id="L-3221"><a href="#L-3221"><span class="linenos">3221</span></a><span class="k">class</span> <span class="nc">DateDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3222"><a href="#L-3222"><span class="linenos">3222</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3223"><a href="#L-3223"><span class="linenos">3223</span></a> +</span><span id="L-3224"><a href="#L-3224"><span class="linenos">3224</span></a> +</span><span id="L-3225"><a href="#L-3225"><span class="linenos">3225</span></a><span class="k">class</span> <span class="nc">DateTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3226"><a href="#L-3226"><span class="linenos">3226</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3227"><a href="#L-3227"><span class="linenos">3227</span></a> +</span><span id="L-3228"><a href="#L-3228"><span class="linenos">3228</span></a> +</span><span id="L-3229"><a href="#L-3229"><span class="linenos">3229</span></a><span class="k">class</span> <span class="nc">DatetimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3230"><a href="#L-3230"><span class="linenos">3230</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3231"><a href="#L-3231"><span class="linenos">3231</span></a> +</span><span id="L-3232"><a href="#L-3232"><span class="linenos">3232</span></a> +</span><span id="L-3233"><a href="#L-3233"><span class="linenos">3233</span></a><span class="k">class</span> <span class="nc">DatetimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3234"><a href="#L-3234"><span class="linenos">3234</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3235"><a href="#L-3235"><span class="linenos">3235</span></a> +</span><span id="L-3236"><a href="#L-3236"><span class="linenos">3236</span></a> +</span><span id="L-3237"><a href="#L-3237"><span class="linenos">3237</span></a><span class="k">class</span> <span class="nc">DatetimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3238"><a href="#L-3238"><span class="linenos">3238</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3239"><a href="#L-3239"><span class="linenos">3239</span></a> +</span><span id="L-3240"><a href="#L-3240"><span class="linenos">3240</span></a> +</span><span id="L-3241"><a href="#L-3241"><span class="linenos">3241</span></a><span class="k">class</span> <span class="nc">DatetimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3242"><a href="#L-3242"><span class="linenos">3242</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3243"><a href="#L-3243"><span class="linenos">3243</span></a> +</span><span id="L-3244"><a href="#L-3244"><span class="linenos">3244</span></a> +</span><span id="L-3245"><a href="#L-3245"><span class="linenos">3245</span></a><span class="k">class</span> <span class="nc">DayOfWeek</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3246"><a href="#L-3246"><span class="linenos">3246</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_WEEK"</span><span class="p">,</span> <span class="s2">"DAYOFWEEK"</span><span class="p">]</span> </span><span id="L-3247"><a href="#L-3247"><span class="linenos">3247</span></a> -</span><span id="L-3248"><a href="#L-3248"><span class="linenos">3248</span></a><span class="k">class</span> <span class="nc">DateStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3249"><a href="#L-3249"><span class="linenos">3249</span></a> <span class="k">pass</span> -</span><span id="L-3250"><a href="#L-3250"><span class="linenos">3250</span></a> +</span><span id="L-3248"><a href="#L-3248"><span class="linenos">3248</span></a> +</span><span id="L-3249"><a href="#L-3249"><span class="linenos">3249</span></a><span class="k">class</span> <span class="nc">DayOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3250"><a href="#L-3250"><span class="linenos">3250</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_MONTH"</span><span class="p">,</span> <span class="s2">"DAYOFMONTH"</span><span class="p">]</span> </span><span id="L-3251"><a href="#L-3251"><span class="linenos">3251</span></a> -</span><span id="L-3252"><a href="#L-3252"><span class="linenos">3252</span></a><span class="k">class</span> <span class="nc">DateToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3253"><a href="#L-3253"><span class="linenos">3253</span></a> <span class="k">pass</span> -</span><span id="L-3254"><a href="#L-3254"><span class="linenos">3254</span></a> +</span><span id="L-3252"><a href="#L-3252"><span class="linenos">3252</span></a> +</span><span id="L-3253"><a href="#L-3253"><span class="linenos">3253</span></a><span class="k">class</span> <span class="nc">DayOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3254"><a href="#L-3254"><span class="linenos">3254</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_YEAR"</span><span class="p">,</span> <span class="s2">"DAYOFYEAR"</span><span class="p">]</span> </span><span id="L-3255"><a href="#L-3255"><span class="linenos">3255</span></a> -</span><span id="L-3256"><a href="#L-3256"><span class="linenos">3256</span></a><span class="k">class</span> <span class="nc">DateToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3257"><a href="#L-3257"><span class="linenos">3257</span></a> <span class="k">pass</span> -</span><span id="L-3258"><a href="#L-3258"><span class="linenos">3258</span></a> +</span><span id="L-3256"><a href="#L-3256"><span class="linenos">3256</span></a> +</span><span id="L-3257"><a href="#L-3257"><span class="linenos">3257</span></a><span class="k">class</span> <span class="nc">WeekOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3258"><a href="#L-3258"><span class="linenos">3258</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"WEEK_OF_YEAR"</span><span class="p">,</span> <span class="s2">"WEEKOFYEAR"</span><span class="p">]</span> </span><span id="L-3259"><a href="#L-3259"><span class="linenos">3259</span></a> -</span><span id="L-3260"><a href="#L-3260"><span class="linenos">3260</span></a><span class="k">class</span> <span class="nc">Day</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3261"><a href="#L-3261"><span class="linenos">3261</span></a> <span class="k">pass</span> -</span><span id="L-3262"><a href="#L-3262"><span class="linenos">3262</span></a> +</span><span id="L-3260"><a href="#L-3260"><span class="linenos">3260</span></a> +</span><span id="L-3261"><a href="#L-3261"><span class="linenos">3261</span></a><span class="k">class</span> <span class="nc">LastDateOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3262"><a href="#L-3262"><span class="linenos">3262</span></a> <span class="k">pass</span> </span><span id="L-3263"><a href="#L-3263"><span class="linenos">3263</span></a> -</span><span id="L-3264"><a href="#L-3264"><span class="linenos">3264</span></a><span class="k">class</span> <span class="nc">Decode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3265"><a href="#L-3265"><span class="linenos">3265</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3266"><a href="#L-3266"><span class="linenos">3266</span></a> +</span><span id="L-3264"><a href="#L-3264"><span class="linenos">3264</span></a> +</span><span id="L-3265"><a href="#L-3265"><span class="linenos">3265</span></a><span class="k">class</span> <span class="nc">Extract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3266"><a href="#L-3266"><span class="linenos">3266</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3267"><a href="#L-3267"><span class="linenos">3267</span></a> -</span><span id="L-3268"><a href="#L-3268"><span class="linenos">3268</span></a><span class="k">class</span> <span class="nc">DiToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3269"><a href="#L-3269"><span class="linenos">3269</span></a> <span class="k">pass</span> -</span><span id="L-3270"><a href="#L-3270"><span class="linenos">3270</span></a> +</span><span id="L-3268"><a href="#L-3268"><span class="linenos">3268</span></a> +</span><span id="L-3269"><a href="#L-3269"><span class="linenos">3269</span></a><span class="k">class</span> <span class="nc">TimestampAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3270"><a href="#L-3270"><span class="linenos">3270</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3271"><a href="#L-3271"><span class="linenos">3271</span></a> -</span><span id="L-3272"><a href="#L-3272"><span class="linenos">3272</span></a><span class="k">class</span> <span class="nc">Encode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3273"><a href="#L-3273"><span class="linenos">3273</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3274"><a href="#L-3274"><span class="linenos">3274</span></a> +</span><span id="L-3272"><a href="#L-3272"><span class="linenos">3272</span></a> +</span><span id="L-3273"><a href="#L-3273"><span class="linenos">3273</span></a><span class="k">class</span> <span class="nc">TimestampSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3274"><a href="#L-3274"><span class="linenos">3274</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3275"><a href="#L-3275"><span class="linenos">3275</span></a> -</span><span id="L-3276"><a href="#L-3276"><span class="linenos">3276</span></a><span class="k">class</span> <span class="nc">Exp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3277"><a href="#L-3277"><span class="linenos">3277</span></a> <span class="k">pass</span> -</span><span id="L-3278"><a href="#L-3278"><span class="linenos">3278</span></a> +</span><span id="L-3276"><a href="#L-3276"><span class="linenos">3276</span></a> +</span><span id="L-3277"><a href="#L-3277"><span class="linenos">3277</span></a><span class="k">class</span> <span class="nc">TimestampDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3278"><a href="#L-3278"><span class="linenos">3278</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3279"><a href="#L-3279"><span class="linenos">3279</span></a> -</span><span id="L-3280"><a href="#L-3280"><span class="linenos">3280</span></a><span class="k">class</span> <span class="nc">Explode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3281"><a href="#L-3281"><span class="linenos">3281</span></a> <span class="k">pass</span> -</span><span id="L-3282"><a href="#L-3282"><span class="linenos">3282</span></a> +</span><span id="L-3280"><a href="#L-3280"><span class="linenos">3280</span></a> +</span><span id="L-3281"><a href="#L-3281"><span class="linenos">3281</span></a><span class="k">class</span> <span class="nc">TimestampTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3282"><a href="#L-3282"><span class="linenos">3282</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3283"><a href="#L-3283"><span class="linenos">3283</span></a> -</span><span id="L-3284"><a href="#L-3284"><span class="linenos">3284</span></a><span class="k">class</span> <span class="nc">Floor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3285"><a href="#L-3285"><span class="linenos">3285</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3286"><a href="#L-3286"><span class="linenos">3286</span></a> +</span><span id="L-3284"><a href="#L-3284"><span class="linenos">3284</span></a> +</span><span id="L-3285"><a href="#L-3285"><span class="linenos">3285</span></a><span class="k">class</span> <span class="nc">TimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3286"><a href="#L-3286"><span class="linenos">3286</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3287"><a href="#L-3287"><span class="linenos">3287</span></a> -</span><span id="L-3288"><a href="#L-3288"><span class="linenos">3288</span></a><span class="k">class</span> <span class="nc">Greatest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3289"><a href="#L-3289"><span class="linenos">3289</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3290"><a href="#L-3290"><span class="linenos">3290</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3288"><a href="#L-3288"><span class="linenos">3288</span></a> +</span><span id="L-3289"><a href="#L-3289"><span class="linenos">3289</span></a><span class="k">class</span> <span class="nc">TimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3290"><a href="#L-3290"><span class="linenos">3290</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3291"><a href="#L-3291"><span class="linenos">3291</span></a> </span><span id="L-3292"><a href="#L-3292"><span class="linenos">3292</span></a> -</span><span id="L-3293"><a href="#L-3293"><span class="linenos">3293</span></a><span class="k">class</span> <span class="nc">GroupConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3294"><a href="#L-3294"><span class="linenos">3294</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"separator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3293"><a href="#L-3293"><span class="linenos">3293</span></a><span class="k">class</span> <span class="nc">TimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3294"><a href="#L-3294"><span class="linenos">3294</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3295"><a href="#L-3295"><span class="linenos">3295</span></a> </span><span id="L-3296"><a href="#L-3296"><span class="linenos">3296</span></a> -</span><span id="L-3297"><a href="#L-3297"><span class="linenos">3297</span></a><span class="k">class</span> <span class="nc">Hex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3298"><a href="#L-3298"><span class="linenos">3298</span></a> <span class="k">pass</span> +</span><span id="L-3297"><a href="#L-3297"><span class="linenos">3297</span></a><span class="k">class</span> <span class="nc">TimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3298"><a href="#L-3298"><span class="linenos">3298</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3299"><a href="#L-3299"><span class="linenos">3299</span></a> </span><span id="L-3300"><a href="#L-3300"><span class="linenos">3300</span></a> -</span><span id="L-3301"><a href="#L-3301"><span class="linenos">3301</span></a><span class="k">class</span> <span class="nc">If</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3302"><a href="#L-3302"><span class="linenos">3302</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3303"><a href="#L-3303"><span class="linenos">3303</span></a> +</span><span id="L-3301"><a href="#L-3301"><span class="linenos">3301</span></a><span class="k">class</span> <span class="nc">DateFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3302"><a href="#L-3302"><span class="linenos">3302</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATEFROMPARTS"</span><span class="p">]</span> +</span><span id="L-3303"><a href="#L-3303"><span class="linenos">3303</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3304"><a href="#L-3304"><span class="linenos">3304</span></a> -</span><span id="L-3305"><a href="#L-3305"><span class="linenos">3305</span></a><span class="k">class</span> <span class="nc">IfNull</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3306"><a href="#L-3306"><span class="linenos">3306</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3307"><a href="#L-3307"><span class="linenos">3307</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IFNULL"</span><span class="p">,</span> <span class="s2">"NVL"</span><span class="p">]</span> +</span><span id="L-3305"><a href="#L-3305"><span class="linenos">3305</span></a> +</span><span id="L-3306"><a href="#L-3306"><span class="linenos">3306</span></a><span class="k">class</span> <span class="nc">DateStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3307"><a href="#L-3307"><span class="linenos">3307</span></a> <span class="k">pass</span> </span><span id="L-3308"><a href="#L-3308"><span class="linenos">3308</span></a> </span><span id="L-3309"><a href="#L-3309"><span class="linenos">3309</span></a> -</span><span id="L-3310"><a href="#L-3310"><span class="linenos">3310</span></a><span class="k">class</span> <span class="nc">Initcap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3310"><a href="#L-3310"><span class="linenos">3310</span></a><span class="k">class</span> <span class="nc">DateToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> </span><span id="L-3311"><a href="#L-3311"><span class="linenos">3311</span></a> <span class="k">pass</span> </span><span id="L-3312"><a href="#L-3312"><span class="linenos">3312</span></a> </span><span id="L-3313"><a href="#L-3313"><span class="linenos">3313</span></a> -</span><span id="L-3314"><a href="#L-3314"><span class="linenos">3314</span></a><span class="k">class</span> <span class="nc">JSONBContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="L-3315"><a href="#L-3315"><span class="linenos">3315</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_CONTAINS"</span><span class="p">]</span> +</span><span id="L-3314"><a href="#L-3314"><span class="linenos">3314</span></a><span class="k">class</span> <span class="nc">DateToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3315"><a href="#L-3315"><span class="linenos">3315</span></a> <span class="k">pass</span> </span><span id="L-3316"><a href="#L-3316"><span class="linenos">3316</span></a> </span><span id="L-3317"><a href="#L-3317"><span class="linenos">3317</span></a> -</span><span id="L-3318"><a href="#L-3318"><span class="linenos">3318</span></a><span class="k">class</span> <span class="nc">JSONExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-3319"><a href="#L-3319"><span class="linenos">3319</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT"</span><span class="p">]</span> +</span><span id="L-3318"><a href="#L-3318"><span class="linenos">3318</span></a><span class="k">class</span> <span class="nc">Day</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3319"><a href="#L-3319"><span class="linenos">3319</span></a> <span class="k">pass</span> </span><span id="L-3320"><a href="#L-3320"><span class="linenos">3320</span></a> </span><span id="L-3321"><a href="#L-3321"><span class="linenos">3321</span></a> -</span><span id="L-3322"><a href="#L-3322"><span class="linenos">3322</span></a><span class="k">class</span> <span class="nc">JSONExtractScalar</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> -</span><span id="L-3323"><a href="#L-3323"><span class="linenos">3323</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT_SCALAR"</span><span class="p">]</span> +</span><span id="L-3322"><a href="#L-3322"><span class="linenos">3322</span></a><span class="k">class</span> <span class="nc">Decode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3323"><a href="#L-3323"><span class="linenos">3323</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3324"><a href="#L-3324"><span class="linenos">3324</span></a> </span><span id="L-3325"><a href="#L-3325"><span class="linenos">3325</span></a> -</span><span id="L-3326"><a href="#L-3326"><span class="linenos">3326</span></a><span class="k">class</span> <span class="nc">JSONBExtract</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> -</span><span id="L-3327"><a href="#L-3327"><span class="linenos">3327</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT"</span><span class="p">]</span> +</span><span id="L-3326"><a href="#L-3326"><span class="linenos">3326</span></a><span class="k">class</span> <span class="nc">DiToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3327"><a href="#L-3327"><span class="linenos">3327</span></a> <span class="k">pass</span> </span><span id="L-3328"><a href="#L-3328"><span class="linenos">3328</span></a> </span><span id="L-3329"><a href="#L-3329"><span class="linenos">3329</span></a> -</span><span id="L-3330"><a href="#L-3330"><span class="linenos">3330</span></a><span class="k">class</span> <span class="nc">JSONBExtractScalar</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> -</span><span id="L-3331"><a href="#L-3331"><span class="linenos">3331</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT_SCALAR"</span><span class="p">]</span> +</span><span id="L-3330"><a href="#L-3330"><span class="linenos">3330</span></a><span class="k">class</span> <span class="nc">Encode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3331"><a href="#L-3331"><span class="linenos">3331</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3332"><a href="#L-3332"><span class="linenos">3332</span></a> </span><span id="L-3333"><a href="#L-3333"><span class="linenos">3333</span></a> -</span><span id="L-3334"><a href="#L-3334"><span class="linenos">3334</span></a><span class="k">class</span> <span class="nc">Least</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3335"><a href="#L-3335"><span class="linenos">3335</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3336"><a href="#L-3336"><span class="linenos">3336</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3334"><a href="#L-3334"><span class="linenos">3334</span></a><span class="k">class</span> <span class="nc">Exp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3335"><a href="#L-3335"><span class="linenos">3335</span></a> <span class="k">pass</span> +</span><span id="L-3336"><a href="#L-3336"><span class="linenos">3336</span></a> </span><span id="L-3337"><a href="#L-3337"><span class="linenos">3337</span></a> -</span><span id="L-3338"><a href="#L-3338"><span class="linenos">3338</span></a> -</span><span id="L-3339"><a href="#L-3339"><span class="linenos">3339</span></a><span class="k">class</span> <span class="nc">Length</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3340"><a href="#L-3340"><span class="linenos">3340</span></a> <span class="k">pass</span> +</span><span id="L-3338"><a href="#L-3338"><span class="linenos">3338</span></a><span class="k">class</span> <span class="nc">Explode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3339"><a href="#L-3339"><span class="linenos">3339</span></a> <span class="k">pass</span> +</span><span id="L-3340"><a href="#L-3340"><span class="linenos">3340</span></a> </span><span id="L-3341"><a href="#L-3341"><span class="linenos">3341</span></a> -</span><span id="L-3342"><a href="#L-3342"><span class="linenos">3342</span></a> -</span><span id="L-3343"><a href="#L-3343"><span class="linenos">3343</span></a><span class="k">class</span> <span class="nc">Levenshtein</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3344"><a href="#L-3344"><span class="linenos">3344</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-3345"><a href="#L-3345"><span class="linenos">3345</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-3346"><a href="#L-3346"><span class="linenos">3346</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3347"><a href="#L-3347"><span class="linenos">3347</span></a> <span class="s2">"ins_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3348"><a href="#L-3348"><span class="linenos">3348</span></a> <span class="s2">"del_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3349"><a href="#L-3349"><span class="linenos">3349</span></a> <span class="s2">"sub_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3350"><a href="#L-3350"><span class="linenos">3350</span></a> <span class="p">}</span> -</span><span id="L-3351"><a href="#L-3351"><span class="linenos">3351</span></a> -</span><span id="L-3352"><a href="#L-3352"><span class="linenos">3352</span></a> -</span><span id="L-3353"><a href="#L-3353"><span class="linenos">3353</span></a><span class="k">class</span> <span class="nc">Ln</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3354"><a href="#L-3354"><span class="linenos">3354</span></a> <span class="k">pass</span> -</span><span id="L-3355"><a href="#L-3355"><span class="linenos">3355</span></a> -</span><span id="L-3356"><a href="#L-3356"><span class="linenos">3356</span></a> -</span><span id="L-3357"><a href="#L-3357"><span class="linenos">3357</span></a><span class="k">class</span> <span class="nc">Log</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3358"><a href="#L-3358"><span class="linenos">3358</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3359"><a href="#L-3359"><span class="linenos">3359</span></a> -</span><span id="L-3360"><a href="#L-3360"><span class="linenos">3360</span></a> -</span><span id="L-3361"><a href="#L-3361"><span class="linenos">3361</span></a><span class="k">class</span> <span class="nc">Log2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3362"><a href="#L-3362"><span class="linenos">3362</span></a> <span class="k">pass</span> -</span><span id="L-3363"><a href="#L-3363"><span class="linenos">3363</span></a> -</span><span id="L-3364"><a href="#L-3364"><span class="linenos">3364</span></a> -</span><span id="L-3365"><a href="#L-3365"><span class="linenos">3365</span></a><span class="k">class</span> <span class="nc">Log10</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3366"><a href="#L-3366"><span class="linenos">3366</span></a> <span class="k">pass</span> +</span><span id="L-3342"><a href="#L-3342"><span class="linenos">3342</span></a><span class="k">class</span> <span class="nc">Floor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3343"><a href="#L-3343"><span class="linenos">3343</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3344"><a href="#L-3344"><span class="linenos">3344</span></a> +</span><span id="L-3345"><a href="#L-3345"><span class="linenos">3345</span></a> +</span><span id="L-3346"><a href="#L-3346"><span class="linenos">3346</span></a><span class="k">class</span> <span class="nc">Greatest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3347"><a href="#L-3347"><span class="linenos">3347</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3348"><a href="#L-3348"><span class="linenos">3348</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3349"><a href="#L-3349"><span class="linenos">3349</span></a> +</span><span id="L-3350"><a href="#L-3350"><span class="linenos">3350</span></a> +</span><span id="L-3351"><a href="#L-3351"><span class="linenos">3351</span></a><span class="k">class</span> <span class="nc">GroupConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3352"><a href="#L-3352"><span class="linenos">3352</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"separator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3353"><a href="#L-3353"><span class="linenos">3353</span></a> +</span><span id="L-3354"><a href="#L-3354"><span class="linenos">3354</span></a> +</span><span id="L-3355"><a href="#L-3355"><span class="linenos">3355</span></a><span class="k">class</span> <span class="nc">Hex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3356"><a href="#L-3356"><span class="linenos">3356</span></a> <span class="k">pass</span> +</span><span id="L-3357"><a href="#L-3357"><span class="linenos">3357</span></a> +</span><span id="L-3358"><a href="#L-3358"><span class="linenos">3358</span></a> +</span><span id="L-3359"><a href="#L-3359"><span class="linenos">3359</span></a><span class="k">class</span> <span class="nc">If</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3360"><a href="#L-3360"><span class="linenos">3360</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3361"><a href="#L-3361"><span class="linenos">3361</span></a> +</span><span id="L-3362"><a href="#L-3362"><span class="linenos">3362</span></a> +</span><span id="L-3363"><a href="#L-3363"><span class="linenos">3363</span></a><span class="k">class</span> <span class="nc">IfNull</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3364"><a href="#L-3364"><span class="linenos">3364</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3365"><a href="#L-3365"><span class="linenos">3365</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IFNULL"</span><span class="p">,</span> <span class="s2">"NVL"</span><span class="p">]</span> +</span><span id="L-3366"><a href="#L-3366"><span class="linenos">3366</span></a> </span><span id="L-3367"><a href="#L-3367"><span class="linenos">3367</span></a> -</span><span id="L-3368"><a href="#L-3368"><span class="linenos">3368</span></a> -</span><span id="L-3369"><a href="#L-3369"><span class="linenos">3369</span></a><span class="k">class</span> <span class="nc">LogicalOr</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3370"><a href="#L-3370"><span class="linenos">3370</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_OR"</span><span class="p">,</span> <span class="s2">"BOOL_OR"</span><span class="p">]</span> +</span><span id="L-3368"><a href="#L-3368"><span class="linenos">3368</span></a><span class="k">class</span> <span class="nc">Initcap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3369"><a href="#L-3369"><span class="linenos">3369</span></a> <span class="k">pass</span> +</span><span id="L-3370"><a href="#L-3370"><span class="linenos">3370</span></a> </span><span id="L-3371"><a href="#L-3371"><span class="linenos">3371</span></a> -</span><span id="L-3372"><a href="#L-3372"><span class="linenos">3372</span></a> -</span><span id="L-3373"><a href="#L-3373"><span class="linenos">3373</span></a><span class="k">class</span> <span class="nc">Lower</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3374"><a href="#L-3374"><span class="linenos">3374</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOWER"</span><span class="p">,</span> <span class="s2">"LCASE"</span><span class="p">]</span> +</span><span id="L-3372"><a href="#L-3372"><span class="linenos">3372</span></a><span class="k">class</span> <span class="nc">JSONBContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="L-3373"><a href="#L-3373"><span class="linenos">3373</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_CONTAINS"</span><span class="p">]</span> +</span><span id="L-3374"><a href="#L-3374"><span class="linenos">3374</span></a> </span><span id="L-3375"><a href="#L-3375"><span class="linenos">3375</span></a> -</span><span id="L-3376"><a href="#L-3376"><span class="linenos">3376</span></a> -</span><span id="L-3377"><a href="#L-3377"><span class="linenos">3377</span></a><span class="k">class</span> <span class="nc">Map</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3378"><a href="#L-3378"><span class="linenos">3378</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3376"><a href="#L-3376"><span class="linenos">3376</span></a><span class="k">class</span> <span class="nc">JSONExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-3377"><a href="#L-3377"><span class="linenos">3377</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT"</span><span class="p">]</span> +</span><span id="L-3378"><a href="#L-3378"><span class="linenos">3378</span></a> </span><span id="L-3379"><a href="#L-3379"><span class="linenos">3379</span></a> -</span><span id="L-3380"><a href="#L-3380"><span class="linenos">3380</span></a> -</span><span id="L-3381"><a href="#L-3381"><span class="linenos">3381</span></a><span class="k">class</span> <span class="nc">VarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3382"><a href="#L-3382"><span class="linenos">3382</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3383"><a href="#L-3383"><span class="linenos">3383</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3384"><a href="#L-3384"><span class="linenos">3384</span></a> -</span><span id="L-3385"><a href="#L-3385"><span class="linenos">3385</span></a> -</span><span id="L-3386"><a href="#L-3386"><span class="linenos">3386</span></a><span class="k">class</span> <span class="nc">Matches</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3387"><a href="#L-3387"><span class="linenos">3387</span></a><span class="w"> </span><span class="sd">"""Oracle/Snowflake decode.</span> -</span><span id="L-3388"><a href="#L-3388"><span class="linenos">3388</span></a><span class="sd"> https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm</span> -</span><span id="L-3389"><a href="#L-3389"><span class="linenos">3389</span></a><span class="sd"> Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</span> -</span><span id="L-3390"><a href="#L-3390"><span class="linenos">3390</span></a><span class="sd"> """</span> +</span><span id="L-3380"><a href="#L-3380"><span class="linenos">3380</span></a><span class="k">class</span> <span class="nc">JSONExtractScalar</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> +</span><span id="L-3381"><a href="#L-3381"><span class="linenos">3381</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT_SCALAR"</span><span class="p">]</span> +</span><span id="L-3382"><a href="#L-3382"><span class="linenos">3382</span></a> +</span><span id="L-3383"><a href="#L-3383"><span class="linenos">3383</span></a> +</span><span id="L-3384"><a href="#L-3384"><span class="linenos">3384</span></a><span class="k">class</span> <span class="nc">JSONBExtract</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> +</span><span id="L-3385"><a href="#L-3385"><span class="linenos">3385</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT"</span><span class="p">]</span> +</span><span id="L-3386"><a href="#L-3386"><span class="linenos">3386</span></a> +</span><span id="L-3387"><a href="#L-3387"><span class="linenos">3387</span></a> +</span><span id="L-3388"><a href="#L-3388"><span class="linenos">3388</span></a><span class="k">class</span> <span class="nc">JSONBExtractScalar</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> +</span><span id="L-3389"><a href="#L-3389"><span class="linenos">3389</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT_SCALAR"</span><span class="p">]</span> +</span><span id="L-3390"><a href="#L-3390"><span class="linenos">3390</span></a> </span><span id="L-3391"><a href="#L-3391"><span class="linenos">3391</span></a> -</span><span id="L-3392"><a href="#L-3392"><span class="linenos">3392</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3393"><a href="#L-3393"><span class="linenos">3393</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3394"><a href="#L-3394"><span class="linenos">3394</span></a> +</span><span id="L-3392"><a href="#L-3392"><span class="linenos">3392</span></a><span class="k">class</span> <span class="nc">Least</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3393"><a href="#L-3393"><span class="linenos">3393</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3394"><a href="#L-3394"><span class="linenos">3394</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-3395"><a href="#L-3395"><span class="linenos">3395</span></a> -</span><span id="L-3396"><a href="#L-3396"><span class="linenos">3396</span></a><span class="k">class</span> <span class="nc">Max</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3397"><a href="#L-3397"><span class="linenos">3397</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3398"><a href="#L-3398"><span class="linenos">3398</span></a> +</span><span id="L-3396"><a href="#L-3396"><span class="linenos">3396</span></a> +</span><span id="L-3397"><a href="#L-3397"><span class="linenos">3397</span></a><span class="k">class</span> <span class="nc">Length</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3398"><a href="#L-3398"><span class="linenos">3398</span></a> <span class="k">pass</span> </span><span id="L-3399"><a href="#L-3399"><span class="linenos">3399</span></a> -</span><span id="L-3400"><a href="#L-3400"><span class="linenos">3400</span></a><span class="k">class</span> <span class="nc">Min</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3401"><a href="#L-3401"><span class="linenos">3401</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3402"><a href="#L-3402"><span class="linenos">3402</span></a> -</span><span id="L-3403"><a href="#L-3403"><span class="linenos">3403</span></a> -</span><span id="L-3404"><a href="#L-3404"><span class="linenos">3404</span></a><span class="k">class</span> <span class="nc">Month</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3405"><a href="#L-3405"><span class="linenos">3405</span></a> <span class="k">pass</span> -</span><span id="L-3406"><a href="#L-3406"><span class="linenos">3406</span></a> -</span><span id="L-3407"><a href="#L-3407"><span class="linenos">3407</span></a> -</span><span id="L-3408"><a href="#L-3408"><span class="linenos">3408</span></a><span class="k">class</span> <span class="nc">Nvl2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3409"><a href="#L-3409"><span class="linenos">3409</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3400"><a href="#L-3400"><span class="linenos">3400</span></a> +</span><span id="L-3401"><a href="#L-3401"><span class="linenos">3401</span></a><span class="k">class</span> <span class="nc">Levenshtein</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3402"><a href="#L-3402"><span class="linenos">3402</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-3403"><a href="#L-3403"><span class="linenos">3403</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-3404"><a href="#L-3404"><span class="linenos">3404</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3405"><a href="#L-3405"><span class="linenos">3405</span></a> <span class="s2">"ins_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3406"><a href="#L-3406"><span class="linenos">3406</span></a> <span class="s2">"del_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3407"><a href="#L-3407"><span class="linenos">3407</span></a> <span class="s2">"sub_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3408"><a href="#L-3408"><span class="linenos">3408</span></a> <span class="p">}</span> +</span><span id="L-3409"><a href="#L-3409"><span class="linenos">3409</span></a> </span><span id="L-3410"><a href="#L-3410"><span class="linenos">3410</span></a> -</span><span id="L-3411"><a href="#L-3411"><span class="linenos">3411</span></a> -</span><span id="L-3412"><a href="#L-3412"><span class="linenos">3412</span></a><span class="k">class</span> <span class="nc">Posexplode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3413"><a href="#L-3413"><span class="linenos">3413</span></a> <span class="k">pass</span> +</span><span id="L-3411"><a href="#L-3411"><span class="linenos">3411</span></a><span class="k">class</span> <span class="nc">Ln</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3412"><a href="#L-3412"><span class="linenos">3412</span></a> <span class="k">pass</span> +</span><span id="L-3413"><a href="#L-3413"><span class="linenos">3413</span></a> </span><span id="L-3414"><a href="#L-3414"><span class="linenos">3414</span></a> -</span><span id="L-3415"><a href="#L-3415"><span class="linenos">3415</span></a> -</span><span id="L-3416"><a href="#L-3416"><span class="linenos">3416</span></a><span class="k">class</span> <span class="nc">Pow</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="L-3417"><a href="#L-3417"><span class="linenos">3417</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"POWER"</span><span class="p">,</span> <span class="s2">"POW"</span><span class="p">]</span> +</span><span id="L-3415"><a href="#L-3415"><span class="linenos">3415</span></a><span class="k">class</span> <span class="nc">Log</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3416"><a href="#L-3416"><span class="linenos">3416</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3417"><a href="#L-3417"><span class="linenos">3417</span></a> </span><span id="L-3418"><a href="#L-3418"><span class="linenos">3418</span></a> -</span><span id="L-3419"><a href="#L-3419"><span class="linenos">3419</span></a> -</span><span id="L-3420"><a href="#L-3420"><span class="linenos">3420</span></a><span class="k">class</span> <span class="nc">PercentileCont</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3421"><a href="#L-3421"><span class="linenos">3421</span></a> <span class="k">pass</span> +</span><span id="L-3419"><a href="#L-3419"><span class="linenos">3419</span></a><span class="k">class</span> <span class="nc">Log2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3420"><a href="#L-3420"><span class="linenos">3420</span></a> <span class="k">pass</span> +</span><span id="L-3421"><a href="#L-3421"><span class="linenos">3421</span></a> </span><span id="L-3422"><a href="#L-3422"><span class="linenos">3422</span></a> -</span><span id="L-3423"><a href="#L-3423"><span class="linenos">3423</span></a> -</span><span id="L-3424"><a href="#L-3424"><span class="linenos">3424</span></a><span class="k">class</span> <span class="nc">PercentileDisc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3425"><a href="#L-3425"><span class="linenos">3425</span></a> <span class="k">pass</span> +</span><span id="L-3423"><a href="#L-3423"><span class="linenos">3423</span></a><span class="k">class</span> <span class="nc">Log10</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3424"><a href="#L-3424"><span class="linenos">3424</span></a> <span class="k">pass</span> +</span><span id="L-3425"><a href="#L-3425"><span class="linenos">3425</span></a> </span><span id="L-3426"><a href="#L-3426"><span class="linenos">3426</span></a> -</span><span id="L-3427"><a href="#L-3427"><span class="linenos">3427</span></a> -</span><span id="L-3428"><a href="#L-3428"><span class="linenos">3428</span></a><span class="k">class</span> <span class="nc">Quantile</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3429"><a href="#L-3429"><span class="linenos">3429</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3427"><a href="#L-3427"><span class="linenos">3427</span></a><span class="k">class</span> <span class="nc">LogicalOr</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3428"><a href="#L-3428"><span class="linenos">3428</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_OR"</span><span class="p">,</span> <span class="s2">"BOOL_OR"</span><span class="p">]</span> +</span><span id="L-3429"><a href="#L-3429"><span class="linenos">3429</span></a> </span><span id="L-3430"><a href="#L-3430"><span class="linenos">3430</span></a> -</span><span id="L-3431"><a href="#L-3431"><span class="linenos">3431</span></a> -</span><span id="L-3432"><a href="#L-3432"><span class="linenos">3432</span></a><span class="c1"># Clickhouse-specific:</span> -</span><span id="L-3433"><a href="#L-3433"><span class="linenos">3433</span></a><span class="c1"># https://clickhouse.com/docs/en/sql-reference/aggregate-functions/reference/quantiles/#quantiles</span> -</span><span id="L-3434"><a href="#L-3434"><span class="linenos">3434</span></a><span class="k">class</span> <span class="nc">Quantiles</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3435"><a href="#L-3435"><span class="linenos">3435</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3436"><a href="#L-3436"><span class="linenos">3436</span></a> +</span><span id="L-3431"><a href="#L-3431"><span class="linenos">3431</span></a><span class="k">class</span> <span class="nc">Lower</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3432"><a href="#L-3432"><span class="linenos">3432</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOWER"</span><span class="p">,</span> <span class="s2">"LCASE"</span><span class="p">]</span> +</span><span id="L-3433"><a href="#L-3433"><span class="linenos">3433</span></a> +</span><span id="L-3434"><a href="#L-3434"><span class="linenos">3434</span></a> +</span><span id="L-3435"><a href="#L-3435"><span class="linenos">3435</span></a><span class="k">class</span> <span class="nc">Map</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3436"><a href="#L-3436"><span class="linenos">3436</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3437"><a href="#L-3437"><span class="linenos">3437</span></a> -</span><span id="L-3438"><a href="#L-3438"><span class="linenos">3438</span></a><span class="k">class</span> <span class="nc">QuantileIf</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3439"><a href="#L-3439"><span class="linenos">3439</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3440"><a href="#L-3440"><span class="linenos">3440</span></a> -</span><span id="L-3441"><a href="#L-3441"><span class="linenos">3441</span></a> -</span><span id="L-3442"><a href="#L-3442"><span class="linenos">3442</span></a><span class="k">class</span> <span class="nc">ApproxQuantile</span><span class="p">(</span><span class="n">Quantile</span><span class="p">):</span> -</span><span id="L-3443"><a href="#L-3443"><span class="linenos">3443</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"weight"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3444"><a href="#L-3444"><span class="linenos">3444</span></a> -</span><span id="L-3445"><a href="#L-3445"><span class="linenos">3445</span></a> -</span><span id="L-3446"><a href="#L-3446"><span class="linenos">3446</span></a><span class="k">class</span> <span class="nc">ReadCSV</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3447"><a href="#L-3447"><span class="linenos">3447</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"READ_CSV"</span><span class="p">]</span> -</span><span id="L-3448"><a href="#L-3448"><span class="linenos">3448</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-3449"><a href="#L-3449"><span class="linenos">3449</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3450"><a href="#L-3450"><span class="linenos">3450</span></a> -</span><span id="L-3451"><a href="#L-3451"><span class="linenos">3451</span></a> -</span><span id="L-3452"><a href="#L-3452"><span class="linenos">3452</span></a><span class="k">class</span> <span class="nc">Reduce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3453"><a href="#L-3453"><span class="linenos">3453</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"initial"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"merge"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"finish"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3454"><a href="#L-3454"><span class="linenos">3454</span></a> -</span><span id="L-3455"><a href="#L-3455"><span class="linenos">3455</span></a> -</span><span id="L-3456"><a href="#L-3456"><span class="linenos">3456</span></a><span class="k">class</span> <span class="nc">RegexpExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3457"><a href="#L-3457"><span class="linenos">3457</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-3458"><a href="#L-3458"><span class="linenos">3458</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-3459"><a href="#L-3459"><span class="linenos">3459</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-3460"><a href="#L-3460"><span class="linenos">3460</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3461"><a href="#L-3461"><span class="linenos">3461</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3462"><a href="#L-3462"><span class="linenos">3462</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3463"><a href="#L-3463"><span class="linenos">3463</span></a> <span class="p">}</span> +</span><span id="L-3438"><a href="#L-3438"><span class="linenos">3438</span></a> +</span><span id="L-3439"><a href="#L-3439"><span class="linenos">3439</span></a><span class="k">class</span> <span class="nc">VarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3440"><a href="#L-3440"><span class="linenos">3440</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3441"><a href="#L-3441"><span class="linenos">3441</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3442"><a href="#L-3442"><span class="linenos">3442</span></a> +</span><span id="L-3443"><a href="#L-3443"><span class="linenos">3443</span></a> +</span><span id="L-3444"><a href="#L-3444"><span class="linenos">3444</span></a><span class="k">class</span> <span class="nc">Matches</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3445"><a href="#L-3445"><span class="linenos">3445</span></a><span class="w"> </span><span class="sd">"""Oracle/Snowflake decode.</span> +</span><span id="L-3446"><a href="#L-3446"><span class="linenos">3446</span></a><span class="sd"> https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm</span> +</span><span id="L-3447"><a href="#L-3447"><span class="linenos">3447</span></a><span class="sd"> Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</span> +</span><span id="L-3448"><a href="#L-3448"><span class="linenos">3448</span></a><span class="sd"> """</span> +</span><span id="L-3449"><a href="#L-3449"><span class="linenos">3449</span></a> +</span><span id="L-3450"><a href="#L-3450"><span class="linenos">3450</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3451"><a href="#L-3451"><span class="linenos">3451</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3452"><a href="#L-3452"><span class="linenos">3452</span></a> +</span><span id="L-3453"><a href="#L-3453"><span class="linenos">3453</span></a> +</span><span id="L-3454"><a href="#L-3454"><span class="linenos">3454</span></a><span class="k">class</span> <span class="nc">Max</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3455"><a href="#L-3455"><span class="linenos">3455</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3456"><a href="#L-3456"><span class="linenos">3456</span></a> +</span><span id="L-3457"><a href="#L-3457"><span class="linenos">3457</span></a> +</span><span id="L-3458"><a href="#L-3458"><span class="linenos">3458</span></a><span class="k">class</span> <span class="nc">Min</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3459"><a href="#L-3459"><span class="linenos">3459</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3460"><a href="#L-3460"><span class="linenos">3460</span></a> +</span><span id="L-3461"><a href="#L-3461"><span class="linenos">3461</span></a> +</span><span id="L-3462"><a href="#L-3462"><span class="linenos">3462</span></a><span class="k">class</span> <span class="nc">Month</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3463"><a href="#L-3463"><span class="linenos">3463</span></a> <span class="k">pass</span> </span><span id="L-3464"><a href="#L-3464"><span class="linenos">3464</span></a> </span><span id="L-3465"><a href="#L-3465"><span class="linenos">3465</span></a> -</span><span id="L-3466"><a href="#L-3466"><span class="linenos">3466</span></a><span class="k">class</span> <span class="nc">RegexpLike</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3467"><a href="#L-3467"><span class="linenos">3467</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3466"><a href="#L-3466"><span class="linenos">3466</span></a><span class="k">class</span> <span class="nc">Nvl2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3467"><a href="#L-3467"><span class="linenos">3467</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3468"><a href="#L-3468"><span class="linenos">3468</span></a> </span><span id="L-3469"><a href="#L-3469"><span class="linenos">3469</span></a> -</span><span id="L-3470"><a href="#L-3470"><span class="linenos">3470</span></a><span class="k">class</span> <span class="nc">RegexpILike</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3471"><a href="#L-3471"><span class="linenos">3471</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3470"><a href="#L-3470"><span class="linenos">3470</span></a><span class="k">class</span> <span class="nc">Posexplode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3471"><a href="#L-3471"><span class="linenos">3471</span></a> <span class="k">pass</span> </span><span id="L-3472"><a href="#L-3472"><span class="linenos">3472</span></a> </span><span id="L-3473"><a href="#L-3473"><span class="linenos">3473</span></a> -</span><span id="L-3474"><a href="#L-3474"><span class="linenos">3474</span></a><span class="k">class</span> <span class="nc">RegexpSplit</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3475"><a href="#L-3475"><span class="linenos">3475</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3474"><a href="#L-3474"><span class="linenos">3474</span></a><span class="k">class</span> <span class="nc">Pow</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="L-3475"><a href="#L-3475"><span class="linenos">3475</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"POWER"</span><span class="p">,</span> <span class="s2">"POW"</span><span class="p">]</span> </span><span id="L-3476"><a href="#L-3476"><span class="linenos">3476</span></a> </span><span id="L-3477"><a href="#L-3477"><span class="linenos">3477</span></a> -</span><span id="L-3478"><a href="#L-3478"><span class="linenos">3478</span></a><span class="k">class</span> <span class="nc">Repeat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3479"><a href="#L-3479"><span class="linenos">3479</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"times"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3478"><a href="#L-3478"><span class="linenos">3478</span></a><span class="k">class</span> <span class="nc">PercentileCont</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3479"><a href="#L-3479"><span class="linenos">3479</span></a> <span class="k">pass</span> </span><span id="L-3480"><a href="#L-3480"><span class="linenos">3480</span></a> </span><span id="L-3481"><a href="#L-3481"><span class="linenos">3481</span></a> -</span><span id="L-3482"><a href="#L-3482"><span class="linenos">3482</span></a><span class="k">class</span> <span class="nc">Round</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3483"><a href="#L-3483"><span class="linenos">3483</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3482"><a href="#L-3482"><span class="linenos">3482</span></a><span class="k">class</span> <span class="nc">PercentileDisc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3483"><a href="#L-3483"><span class="linenos">3483</span></a> <span class="k">pass</span> </span><span id="L-3484"><a href="#L-3484"><span class="linenos">3484</span></a> </span><span id="L-3485"><a href="#L-3485"><span class="linenos">3485</span></a> -</span><span id="L-3486"><a href="#L-3486"><span class="linenos">3486</span></a><span class="k">class</span> <span class="nc">RowNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3487"><a href="#L-3487"><span class="linenos">3487</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-3486"><a href="#L-3486"><span class="linenos">3486</span></a><span class="k">class</span> <span class="nc">Quantile</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3487"><a href="#L-3487"><span class="linenos">3487</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3488"><a href="#L-3488"><span class="linenos">3488</span></a> </span><span id="L-3489"><a href="#L-3489"><span class="linenos">3489</span></a> -</span><span id="L-3490"><a href="#L-3490"><span class="linenos">3490</span></a><span class="k">class</span> <span class="nc">SafeDivide</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3491"><a href="#L-3491"><span class="linenos">3491</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3492"><a href="#L-3492"><span class="linenos">3492</span></a> -</span><span id="L-3493"><a href="#L-3493"><span class="linenos">3493</span></a> -</span><span id="L-3494"><a href="#L-3494"><span class="linenos">3494</span></a><span class="k">class</span> <span class="nc">SetAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3495"><a href="#L-3495"><span class="linenos">3495</span></a> <span class="k">pass</span> -</span><span id="L-3496"><a href="#L-3496"><span class="linenos">3496</span></a> -</span><span id="L-3497"><a href="#L-3497"><span class="linenos">3497</span></a> -</span><span id="L-3498"><a href="#L-3498"><span class="linenos">3498</span></a><span class="k">class</span> <span class="nc">SortArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3499"><a href="#L-3499"><span class="linenos">3499</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"asc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3500"><a href="#L-3500"><span class="linenos">3500</span></a> -</span><span id="L-3501"><a href="#L-3501"><span class="linenos">3501</span></a> -</span><span id="L-3502"><a href="#L-3502"><span class="linenos">3502</span></a><span class="k">class</span> <span class="nc">Split</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3503"><a href="#L-3503"><span class="linenos">3503</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3504"><a href="#L-3504"><span class="linenos">3504</span></a> -</span><span id="L-3505"><a href="#L-3505"><span class="linenos">3505</span></a> -</span><span id="L-3506"><a href="#L-3506"><span class="linenos">3506</span></a><span class="c1"># Start may be omitted in the case of postgres</span> -</span><span id="L-3507"><a href="#L-3507"><span class="linenos">3507</span></a><span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> -</span><span id="L-3508"><a href="#L-3508"><span class="linenos">3508</span></a><span class="k">class</span> <span class="nc">Substring</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3509"><a href="#L-3509"><span class="linenos">3509</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3510"><a href="#L-3510"><span class="linenos">3510</span></a> -</span><span id="L-3511"><a href="#L-3511"><span class="linenos">3511</span></a> -</span><span id="L-3512"><a href="#L-3512"><span class="linenos">3512</span></a><span class="k">class</span> <span class="nc">StrPosition</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3513"><a href="#L-3513"><span class="linenos">3513</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-3514"><a href="#L-3514"><span class="linenos">3514</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-3515"><a href="#L-3515"><span class="linenos">3515</span></a> <span class="s2">"substr"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-3516"><a href="#L-3516"><span class="linenos">3516</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3517"><a href="#L-3517"><span class="linenos">3517</span></a> <span class="s2">"instance"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3518"><a href="#L-3518"><span class="linenos">3518</span></a> <span class="p">}</span> -</span><span id="L-3519"><a href="#L-3519"><span class="linenos">3519</span></a> -</span><span id="L-3520"><a href="#L-3520"><span class="linenos">3520</span></a> -</span><span id="L-3521"><a href="#L-3521"><span class="linenos">3521</span></a><span class="k">class</span> <span class="nc">StrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3522"><a href="#L-3522"><span class="linenos">3522</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3490"><a href="#L-3490"><span class="linenos">3490</span></a><span class="c1"># Clickhouse-specific:</span> +</span><span id="L-3491"><a href="#L-3491"><span class="linenos">3491</span></a><span class="c1"># https://clickhouse.com/docs/en/sql-reference/aggregate-functions/reference/quantiles/#quantiles</span> +</span><span id="L-3492"><a href="#L-3492"><span class="linenos">3492</span></a><span class="k">class</span> <span class="nc">Quantiles</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3493"><a href="#L-3493"><span class="linenos">3493</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3494"><a href="#L-3494"><span class="linenos">3494</span></a> +</span><span id="L-3495"><a href="#L-3495"><span class="linenos">3495</span></a> +</span><span id="L-3496"><a href="#L-3496"><span class="linenos">3496</span></a><span class="k">class</span> <span class="nc">QuantileIf</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3497"><a href="#L-3497"><span class="linenos">3497</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3498"><a href="#L-3498"><span class="linenos">3498</span></a> +</span><span id="L-3499"><a href="#L-3499"><span class="linenos">3499</span></a> +</span><span id="L-3500"><a href="#L-3500"><span class="linenos">3500</span></a><span class="k">class</span> <span class="nc">ApproxQuantile</span><span class="p">(</span><span class="n">Quantile</span><span class="p">):</span> +</span><span id="L-3501"><a href="#L-3501"><span class="linenos">3501</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"weight"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3502"><a href="#L-3502"><span class="linenos">3502</span></a> +</span><span id="L-3503"><a href="#L-3503"><span class="linenos">3503</span></a> +</span><span id="L-3504"><a href="#L-3504"><span class="linenos">3504</span></a><span class="k">class</span> <span class="nc">ReadCSV</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3505"><a href="#L-3505"><span class="linenos">3505</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"READ_CSV"</span><span class="p">]</span> +</span><span id="L-3506"><a href="#L-3506"><span class="linenos">3506</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3507"><a href="#L-3507"><span class="linenos">3507</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3508"><a href="#L-3508"><span class="linenos">3508</span></a> +</span><span id="L-3509"><a href="#L-3509"><span class="linenos">3509</span></a> +</span><span id="L-3510"><a href="#L-3510"><span class="linenos">3510</span></a><span class="k">class</span> <span class="nc">Reduce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3511"><a href="#L-3511"><span class="linenos">3511</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"initial"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"merge"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"finish"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3512"><a href="#L-3512"><span class="linenos">3512</span></a> +</span><span id="L-3513"><a href="#L-3513"><span class="linenos">3513</span></a> +</span><span id="L-3514"><a href="#L-3514"><span class="linenos">3514</span></a><span class="k">class</span> <span class="nc">RegexpExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3515"><a href="#L-3515"><span class="linenos">3515</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-3516"><a href="#L-3516"><span class="linenos">3516</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-3517"><a href="#L-3517"><span class="linenos">3517</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-3518"><a href="#L-3518"><span class="linenos">3518</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3519"><a href="#L-3519"><span class="linenos">3519</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3520"><a href="#L-3520"><span class="linenos">3520</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3521"><a href="#L-3521"><span class="linenos">3521</span></a> <span class="p">}</span> +</span><span id="L-3522"><a href="#L-3522"><span class="linenos">3522</span></a> </span><span id="L-3523"><a href="#L-3523"><span class="linenos">3523</span></a> -</span><span id="L-3524"><a href="#L-3524"><span class="linenos">3524</span></a> -</span><span id="L-3525"><a href="#L-3525"><span class="linenos">3525</span></a><span class="k">class</span> <span class="nc">StrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3526"><a href="#L-3526"><span class="linenos">3526</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3524"><a href="#L-3524"><span class="linenos">3524</span></a><span class="k">class</span> <span class="nc">RegexpLike</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3525"><a href="#L-3525"><span class="linenos">3525</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3526"><a href="#L-3526"><span class="linenos">3526</span></a> </span><span id="L-3527"><a href="#L-3527"><span class="linenos">3527</span></a> -</span><span id="L-3528"><a href="#L-3528"><span class="linenos">3528</span></a> -</span><span id="L-3529"><a href="#L-3529"><span class="linenos">3529</span></a><span class="c1"># Spark allows unix_timestamp()</span> -</span><span id="L-3530"><a href="#L-3530"><span class="linenos">3530</span></a><span class="c1"># https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.unix_timestamp.html</span> -</span><span id="L-3531"><a href="#L-3531"><span class="linenos">3531</span></a><span class="k">class</span> <span class="nc">StrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3532"><a href="#L-3532"><span class="linenos">3532</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3533"><a href="#L-3533"><span class="linenos">3533</span></a> +</span><span id="L-3528"><a href="#L-3528"><span class="linenos">3528</span></a><span class="k">class</span> <span class="nc">RegexpILike</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3529"><a href="#L-3529"><span class="linenos">3529</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3530"><a href="#L-3530"><span class="linenos">3530</span></a> +</span><span id="L-3531"><a href="#L-3531"><span class="linenos">3531</span></a> +</span><span id="L-3532"><a href="#L-3532"><span class="linenos">3532</span></a><span class="k">class</span> <span class="nc">RegexpSplit</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3533"><a href="#L-3533"><span class="linenos">3533</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3534"><a href="#L-3534"><span class="linenos">3534</span></a> -</span><span id="L-3535"><a href="#L-3535"><span class="linenos">3535</span></a><span class="k">class</span> <span class="nc">NumberToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3536"><a href="#L-3536"><span class="linenos">3536</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3537"><a href="#L-3537"><span class="linenos">3537</span></a> +</span><span id="L-3535"><a href="#L-3535"><span class="linenos">3535</span></a> +</span><span id="L-3536"><a href="#L-3536"><span class="linenos">3536</span></a><span class="k">class</span> <span class="nc">Repeat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3537"><a href="#L-3537"><span class="linenos">3537</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"times"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3538"><a href="#L-3538"><span class="linenos">3538</span></a> -</span><span id="L-3539"><a href="#L-3539"><span class="linenos">3539</span></a><span class="k">class</span> <span class="nc">Struct</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3540"><a href="#L-3540"><span class="linenos">3540</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3541"><a href="#L-3541"><span class="linenos">3541</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-3539"><a href="#L-3539"><span class="linenos">3539</span></a> +</span><span id="L-3540"><a href="#L-3540"><span class="linenos">3540</span></a><span class="k">class</span> <span class="nc">Round</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3541"><a href="#L-3541"><span class="linenos">3541</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3542"><a href="#L-3542"><span class="linenos">3542</span></a> </span><span id="L-3543"><a href="#L-3543"><span class="linenos">3543</span></a> -</span><span id="L-3544"><a href="#L-3544"><span class="linenos">3544</span></a><span class="k">class</span> <span class="nc">StructExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3545"><a href="#L-3545"><span class="linenos">3545</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3544"><a href="#L-3544"><span class="linenos">3544</span></a><span class="k">class</span> <span class="nc">RowNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3545"><a href="#L-3545"><span class="linenos">3545</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-3546"><a href="#L-3546"><span class="linenos">3546</span></a> </span><span id="L-3547"><a href="#L-3547"><span class="linenos">3547</span></a> -</span><span id="L-3548"><a href="#L-3548"><span class="linenos">3548</span></a><span class="k">class</span> <span class="nc">Sum</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3549"><a href="#L-3549"><span class="linenos">3549</span></a> <span class="k">pass</span> +</span><span id="L-3548"><a href="#L-3548"><span class="linenos">3548</span></a><span class="k">class</span> <span class="nc">SafeDivide</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3549"><a href="#L-3549"><span class="linenos">3549</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3550"><a href="#L-3550"><span class="linenos">3550</span></a> </span><span id="L-3551"><a href="#L-3551"><span class="linenos">3551</span></a> -</span><span id="L-3552"><a href="#L-3552"><span class="linenos">3552</span></a><span class="k">class</span> <span class="nc">Sqrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3552"><a href="#L-3552"><span class="linenos">3552</span></a><span class="k">class</span> <span class="nc">SetAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> </span><span id="L-3553"><a href="#L-3553"><span class="linenos">3553</span></a> <span class="k">pass</span> </span><span id="L-3554"><a href="#L-3554"><span class="linenos">3554</span></a> </span><span id="L-3555"><a href="#L-3555"><span class="linenos">3555</span></a> -</span><span id="L-3556"><a href="#L-3556"><span class="linenos">3556</span></a><span class="k">class</span> <span class="nc">Stddev</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3557"><a href="#L-3557"><span class="linenos">3557</span></a> <span class="k">pass</span> +</span><span id="L-3556"><a href="#L-3556"><span class="linenos">3556</span></a><span class="k">class</span> <span class="nc">SortArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3557"><a href="#L-3557"><span class="linenos">3557</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"asc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3558"><a href="#L-3558"><span class="linenos">3558</span></a> </span><span id="L-3559"><a href="#L-3559"><span class="linenos">3559</span></a> -</span><span id="L-3560"><a href="#L-3560"><span class="linenos">3560</span></a><span class="k">class</span> <span class="nc">StddevPop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3561"><a href="#L-3561"><span class="linenos">3561</span></a> <span class="k">pass</span> +</span><span id="L-3560"><a href="#L-3560"><span class="linenos">3560</span></a><span class="k">class</span> <span class="nc">Split</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3561"><a href="#L-3561"><span class="linenos">3561</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3562"><a href="#L-3562"><span class="linenos">3562</span></a> </span><span id="L-3563"><a href="#L-3563"><span class="linenos">3563</span></a> -</span><span id="L-3564"><a href="#L-3564"><span class="linenos">3564</span></a><span class="k">class</span> <span class="nc">StddevSamp</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3565"><a href="#L-3565"><span class="linenos">3565</span></a> <span class="k">pass</span> -</span><span id="L-3566"><a href="#L-3566"><span class="linenos">3566</span></a> -</span><span id="L-3567"><a href="#L-3567"><span class="linenos">3567</span></a> -</span><span id="L-3568"><a href="#L-3568"><span class="linenos">3568</span></a><span class="k">class</span> <span class="nc">TimeToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3569"><a href="#L-3569"><span class="linenos">3569</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="L-3570"><a href="#L-3570"><span class="linenos">3570</span></a> -</span><span id="L-3571"><a href="#L-3571"><span class="linenos">3571</span></a> -</span><span id="L-3572"><a href="#L-3572"><span class="linenos">3572</span></a><span class="k">class</span> <span class="nc">TimeToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3573"><a href="#L-3573"><span class="linenos">3573</span></a> <span class="k">pass</span> -</span><span id="L-3574"><a href="#L-3574"><span class="linenos">3574</span></a> -</span><span id="L-3575"><a href="#L-3575"><span class="linenos">3575</span></a> -</span><span id="L-3576"><a href="#L-3576"><span class="linenos">3576</span></a><span class="k">class</span> <span class="nc">TimeToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3577"><a href="#L-3577"><span class="linenos">3577</span></a> <span class="k">pass</span> +</span><span id="L-3564"><a href="#L-3564"><span class="linenos">3564</span></a><span class="c1"># Start may be omitted in the case of postgres</span> +</span><span id="L-3565"><a href="#L-3565"><span class="linenos">3565</span></a><span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> +</span><span id="L-3566"><a href="#L-3566"><span class="linenos">3566</span></a><span class="k">class</span> <span class="nc">Substring</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3567"><a href="#L-3567"><span class="linenos">3567</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3568"><a href="#L-3568"><span class="linenos">3568</span></a> +</span><span id="L-3569"><a href="#L-3569"><span class="linenos">3569</span></a> +</span><span id="L-3570"><a href="#L-3570"><span class="linenos">3570</span></a><span class="k">class</span> <span class="nc">StrPosition</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3571"><a href="#L-3571"><span class="linenos">3571</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-3572"><a href="#L-3572"><span class="linenos">3572</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-3573"><a href="#L-3573"><span class="linenos">3573</span></a> <span class="s2">"substr"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-3574"><a href="#L-3574"><span class="linenos">3574</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3575"><a href="#L-3575"><span class="linenos">3575</span></a> <span class="s2">"instance"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3576"><a href="#L-3576"><span class="linenos">3576</span></a> <span class="p">}</span> +</span><span id="L-3577"><a href="#L-3577"><span class="linenos">3577</span></a> </span><span id="L-3578"><a href="#L-3578"><span class="linenos">3578</span></a> -</span><span id="L-3579"><a href="#L-3579"><span class="linenos">3579</span></a> -</span><span id="L-3580"><a href="#L-3580"><span class="linenos">3580</span></a><span class="k">class</span> <span class="nc">TimeStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3581"><a href="#L-3581"><span class="linenos">3581</span></a> <span class="k">pass</span> +</span><span id="L-3579"><a href="#L-3579"><span class="linenos">3579</span></a><span class="k">class</span> <span class="nc">StrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3580"><a href="#L-3580"><span class="linenos">3580</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3581"><a href="#L-3581"><span class="linenos">3581</span></a> </span><span id="L-3582"><a href="#L-3582"><span class="linenos">3582</span></a> -</span><span id="L-3583"><a href="#L-3583"><span class="linenos">3583</span></a> -</span><span id="L-3584"><a href="#L-3584"><span class="linenos">3584</span></a><span class="k">class</span> <span class="nc">TimeStrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3585"><a href="#L-3585"><span class="linenos">3585</span></a> <span class="k">pass</span> +</span><span id="L-3583"><a href="#L-3583"><span class="linenos">3583</span></a><span class="k">class</span> <span class="nc">StrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3584"><a href="#L-3584"><span class="linenos">3584</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3585"><a href="#L-3585"><span class="linenos">3585</span></a> </span><span id="L-3586"><a href="#L-3586"><span class="linenos">3586</span></a> -</span><span id="L-3587"><a href="#L-3587"><span class="linenos">3587</span></a> -</span><span id="L-3588"><a href="#L-3588"><span class="linenos">3588</span></a><span class="k">class</span> <span class="nc">TimeStrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3589"><a href="#L-3589"><span class="linenos">3589</span></a> <span class="k">pass</span> -</span><span id="L-3590"><a href="#L-3590"><span class="linenos">3590</span></a> +</span><span id="L-3587"><a href="#L-3587"><span class="linenos">3587</span></a><span class="c1"># Spark allows unix_timestamp()</span> +</span><span id="L-3588"><a href="#L-3588"><span class="linenos">3588</span></a><span class="c1"># https://spark.apache.org/docs/3.1.3/api/python/reference/api/pyspark.sql.functions.unix_timestamp.html</span> +</span><span id="L-3589"><a href="#L-3589"><span class="linenos">3589</span></a><span class="k">class</span> <span class="nc">StrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3590"><a href="#L-3590"><span class="linenos">3590</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3591"><a href="#L-3591"><span class="linenos">3591</span></a> -</span><span id="L-3592"><a href="#L-3592"><span class="linenos">3592</span></a><span class="k">class</span> <span class="nc">Trim</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3593"><a href="#L-3593"><span class="linenos">3593</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-3594"><a href="#L-3594"><span class="linenos">3594</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-3595"><a href="#L-3595"><span class="linenos">3595</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3596"><a href="#L-3596"><span class="linenos">3596</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3597"><a href="#L-3597"><span class="linenos">3597</span></a> <span class="s2">"collation"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3598"><a href="#L-3598"><span class="linenos">3598</span></a> <span class="p">}</span> -</span><span id="L-3599"><a href="#L-3599"><span class="linenos">3599</span></a> +</span><span id="L-3592"><a href="#L-3592"><span class="linenos">3592</span></a> +</span><span id="L-3593"><a href="#L-3593"><span class="linenos">3593</span></a><span class="k">class</span> <span class="nc">NumberToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3594"><a href="#L-3594"><span class="linenos">3594</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3595"><a href="#L-3595"><span class="linenos">3595</span></a> +</span><span id="L-3596"><a href="#L-3596"><span class="linenos">3596</span></a> +</span><span id="L-3597"><a href="#L-3597"><span class="linenos">3597</span></a><span class="k">class</span> <span class="nc">Struct</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3598"><a href="#L-3598"><span class="linenos">3598</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3599"><a href="#L-3599"><span class="linenos">3599</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-3600"><a href="#L-3600"><span class="linenos">3600</span></a> -</span><span id="L-3601"><a href="#L-3601"><span class="linenos">3601</span></a><span class="k">class</span> <span class="nc">TsOrDsAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="L-3602"><a href="#L-3602"><span class="linenos">3602</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3603"><a href="#L-3603"><span class="linenos">3603</span></a> +</span><span id="L-3601"><a href="#L-3601"><span class="linenos">3601</span></a> +</span><span id="L-3602"><a href="#L-3602"><span class="linenos">3602</span></a><span class="k">class</span> <span class="nc">StructExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3603"><a href="#L-3603"><span class="linenos">3603</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3604"><a href="#L-3604"><span class="linenos">3604</span></a> -</span><span id="L-3605"><a href="#L-3605"><span class="linenos">3605</span></a><span class="k">class</span> <span class="nc">TsOrDsToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3606"><a href="#L-3606"><span class="linenos">3606</span></a> <span class="k">pass</span> -</span><span id="L-3607"><a href="#L-3607"><span class="linenos">3607</span></a> +</span><span id="L-3605"><a href="#L-3605"><span class="linenos">3605</span></a> +</span><span id="L-3606"><a href="#L-3606"><span class="linenos">3606</span></a><span class="k">class</span> <span class="nc">Sum</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3607"><a href="#L-3607"><span class="linenos">3607</span></a> <span class="k">pass</span> </span><span id="L-3608"><a href="#L-3608"><span class="linenos">3608</span></a> -</span><span id="L-3609"><a href="#L-3609"><span class="linenos">3609</span></a><span class="k">class</span> <span class="nc">TsOrDsToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3610"><a href="#L-3610"><span class="linenos">3610</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3611"><a href="#L-3611"><span class="linenos">3611</span></a> +</span><span id="L-3609"><a href="#L-3609"><span class="linenos">3609</span></a> +</span><span id="L-3610"><a href="#L-3610"><span class="linenos">3610</span></a><span class="k">class</span> <span class="nc">Sqrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3611"><a href="#L-3611"><span class="linenos">3611</span></a> <span class="k">pass</span> </span><span id="L-3612"><a href="#L-3612"><span class="linenos">3612</span></a> -</span><span id="L-3613"><a href="#L-3613"><span class="linenos">3613</span></a><span class="k">class</span> <span class="nc">TsOrDiToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3614"><a href="#L-3614"><span class="linenos">3614</span></a> <span class="k">pass</span> -</span><span id="L-3615"><a href="#L-3615"><span class="linenos">3615</span></a> +</span><span id="L-3613"><a href="#L-3613"><span class="linenos">3613</span></a> +</span><span id="L-3614"><a href="#L-3614"><span class="linenos">3614</span></a><span class="k">class</span> <span class="nc">Stddev</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3615"><a href="#L-3615"><span class="linenos">3615</span></a> <span class="k">pass</span> </span><span id="L-3616"><a href="#L-3616"><span class="linenos">3616</span></a> -</span><span id="L-3617"><a href="#L-3617"><span class="linenos">3617</span></a><span class="k">class</span> <span class="nc">Unhex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3618"><a href="#L-3618"><span class="linenos">3618</span></a> <span class="k">pass</span> -</span><span id="L-3619"><a href="#L-3619"><span class="linenos">3619</span></a> +</span><span id="L-3617"><a href="#L-3617"><span class="linenos">3617</span></a> +</span><span id="L-3618"><a href="#L-3618"><span class="linenos">3618</span></a><span class="k">class</span> <span class="nc">StddevPop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3619"><a href="#L-3619"><span class="linenos">3619</span></a> <span class="k">pass</span> </span><span id="L-3620"><a href="#L-3620"><span class="linenos">3620</span></a> -</span><span id="L-3621"><a href="#L-3621"><span class="linenos">3621</span></a><span class="k">class</span> <span class="nc">UnixToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3622"><a href="#L-3622"><span class="linenos">3622</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3623"><a href="#L-3623"><span class="linenos">3623</span></a> +</span><span id="L-3621"><a href="#L-3621"><span class="linenos">3621</span></a> +</span><span id="L-3622"><a href="#L-3622"><span class="linenos">3622</span></a><span class="k">class</span> <span class="nc">StddevSamp</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3623"><a href="#L-3623"><span class="linenos">3623</span></a> <span class="k">pass</span> </span><span id="L-3624"><a href="#L-3624"><span class="linenos">3624</span></a> -</span><span id="L-3625"><a href="#L-3625"><span class="linenos">3625</span></a><span class="c1"># https://prestodb.io/docs/current/functions/datetime.html</span> -</span><span id="L-3626"><a href="#L-3626"><span class="linenos">3626</span></a><span class="c1"># presto has weird zone/hours/minutes</span> -</span><span id="L-3627"><a href="#L-3627"><span class="linenos">3627</span></a><span class="k">class</span> <span class="nc">UnixToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3628"><a href="#L-3628"><span class="linenos">3628</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"hours"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"minutes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3625"><a href="#L-3625"><span class="linenos">3625</span></a> +</span><span id="L-3626"><a href="#L-3626"><span class="linenos">3626</span></a><span class="k">class</span> <span class="nc">TimeToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3627"><a href="#L-3627"><span class="linenos">3627</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3628"><a href="#L-3628"><span class="linenos">3628</span></a> </span><span id="L-3629"><a href="#L-3629"><span class="linenos">3629</span></a> -</span><span id="L-3630"><a href="#L-3630"><span class="linenos">3630</span></a> <span class="n">SECONDS</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">"seconds"</span><span class="p">)</span> -</span><span id="L-3631"><a href="#L-3631"><span class="linenos">3631</span></a> <span class="n">MILLIS</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">"millis"</span><span class="p">)</span> -</span><span id="L-3632"><a href="#L-3632"><span class="linenos">3632</span></a> <span class="n">MICROS</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">"micros"</span><span class="p">)</span> +</span><span id="L-3630"><a href="#L-3630"><span class="linenos">3630</span></a><span class="k">class</span> <span class="nc">TimeToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3631"><a href="#L-3631"><span class="linenos">3631</span></a> <span class="k">pass</span> +</span><span id="L-3632"><a href="#L-3632"><span class="linenos">3632</span></a> </span><span id="L-3633"><a href="#L-3633"><span class="linenos">3633</span></a> -</span><span id="L-3634"><a href="#L-3634"><span class="linenos">3634</span></a> -</span><span id="L-3635"><a href="#L-3635"><span class="linenos">3635</span></a><span class="k">class</span> <span class="nc">UnixToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3636"><a href="#L-3636"><span class="linenos">3636</span></a> <span class="k">pass</span> +</span><span id="L-3634"><a href="#L-3634"><span class="linenos">3634</span></a><span class="k">class</span> <span class="nc">TimeToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3635"><a href="#L-3635"><span class="linenos">3635</span></a> <span class="k">pass</span> +</span><span id="L-3636"><a href="#L-3636"><span class="linenos">3636</span></a> </span><span id="L-3637"><a href="#L-3637"><span class="linenos">3637</span></a> -</span><span id="L-3638"><a href="#L-3638"><span class="linenos">3638</span></a> -</span><span id="L-3639"><a href="#L-3639"><span class="linenos">3639</span></a><span class="k">class</span> <span class="nc">Upper</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3640"><a href="#L-3640"><span class="linenos">3640</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"UPPER"</span><span class="p">,</span> <span class="s2">"UCASE"</span><span class="p">]</span> +</span><span id="L-3638"><a href="#L-3638"><span class="linenos">3638</span></a><span class="k">class</span> <span class="nc">TimeStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3639"><a href="#L-3639"><span class="linenos">3639</span></a> <span class="k">pass</span> +</span><span id="L-3640"><a href="#L-3640"><span class="linenos">3640</span></a> </span><span id="L-3641"><a href="#L-3641"><span class="linenos">3641</span></a> -</span><span id="L-3642"><a href="#L-3642"><span class="linenos">3642</span></a> -</span><span id="L-3643"><a href="#L-3643"><span class="linenos">3643</span></a><span class="k">class</span> <span class="nc">Variance</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3644"><a href="#L-3644"><span class="linenos">3644</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE"</span><span class="p">,</span> <span class="s2">"VARIANCE_SAMP"</span><span class="p">,</span> <span class="s2">"VAR_SAMP"</span><span class="p">]</span> +</span><span id="L-3642"><a href="#L-3642"><span class="linenos">3642</span></a><span class="k">class</span> <span class="nc">TimeStrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3643"><a href="#L-3643"><span class="linenos">3643</span></a> <span class="k">pass</span> +</span><span id="L-3644"><a href="#L-3644"><span class="linenos">3644</span></a> </span><span id="L-3645"><a href="#L-3645"><span class="linenos">3645</span></a> -</span><span id="L-3646"><a href="#L-3646"><span class="linenos">3646</span></a> -</span><span id="L-3647"><a href="#L-3647"><span class="linenos">3647</span></a><span class="k">class</span> <span class="nc">VariancePop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="L-3648"><a href="#L-3648"><span class="linenos">3648</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE_POP"</span><span class="p">,</span> <span class="s2">"VAR_POP"</span><span class="p">]</span> +</span><span id="L-3646"><a href="#L-3646"><span class="linenos">3646</span></a><span class="k">class</span> <span class="nc">TimeStrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3647"><a href="#L-3647"><span class="linenos">3647</span></a> <span class="k">pass</span> +</span><span id="L-3648"><a href="#L-3648"><span class="linenos">3648</span></a> </span><span id="L-3649"><a href="#L-3649"><span class="linenos">3649</span></a> -</span><span id="L-3650"><a href="#L-3650"><span class="linenos">3650</span></a> -</span><span id="L-3651"><a href="#L-3651"><span class="linenos">3651</span></a><span class="k">class</span> <span class="nc">Week</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3652"><a href="#L-3652"><span class="linenos">3652</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"mode"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="L-3653"><a href="#L-3653"><span class="linenos">3653</span></a> -</span><span id="L-3654"><a href="#L-3654"><span class="linenos">3654</span></a> -</span><span id="L-3655"><a href="#L-3655"><span class="linenos">3655</span></a><span class="k">class</span> <span class="nc">XMLTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3656"><a href="#L-3656"><span class="linenos">3656</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"passing"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"by_ref"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3650"><a href="#L-3650"><span class="linenos">3650</span></a><span class="k">class</span> <span class="nc">Trim</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3651"><a href="#L-3651"><span class="linenos">3651</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-3652"><a href="#L-3652"><span class="linenos">3652</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-3653"><a href="#L-3653"><span class="linenos">3653</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3654"><a href="#L-3654"><span class="linenos">3654</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3655"><a href="#L-3655"><span class="linenos">3655</span></a> <span class="s2">"collation"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3656"><a href="#L-3656"><span class="linenos">3656</span></a> <span class="p">}</span> </span><span id="L-3657"><a href="#L-3657"><span class="linenos">3657</span></a> </span><span id="L-3658"><a href="#L-3658"><span class="linenos">3658</span></a> -</span><span id="L-3659"><a href="#L-3659"><span class="linenos">3659</span></a><span class="k">class</span> <span class="nc">Year</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3660"><a href="#L-3660"><span class="linenos">3660</span></a> <span class="k">pass</span> +</span><span id="L-3659"><a href="#L-3659"><span class="linenos">3659</span></a><span class="k">class</span> <span class="nc">TsOrDsAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="L-3660"><a href="#L-3660"><span class="linenos">3660</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3661"><a href="#L-3661"><span class="linenos">3661</span></a> </span><span id="L-3662"><a href="#L-3662"><span class="linenos">3662</span></a> -</span><span id="L-3663"><a href="#L-3663"><span class="linenos">3663</span></a><span class="k">class</span> <span class="nc">Use</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-3664"><a href="#L-3664"><span class="linenos">3664</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3663"><a href="#L-3663"><span class="linenos">3663</span></a><span class="k">class</span> <span class="nc">TsOrDsToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3664"><a href="#L-3664"><span class="linenos">3664</span></a> <span class="k">pass</span> </span><span id="L-3665"><a href="#L-3665"><span class="linenos">3665</span></a> </span><span id="L-3666"><a href="#L-3666"><span class="linenos">3666</span></a> -</span><span id="L-3667"><a href="#L-3667"><span class="linenos">3667</span></a><span class="k">class</span> <span class="nc">Merge</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-3668"><a href="#L-3668"><span class="linenos">3668</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3667"><a href="#L-3667"><span class="linenos">3667</span></a><span class="k">class</span> <span class="nc">TsOrDsToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3668"><a href="#L-3668"><span class="linenos">3668</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span><span id="L-3669"><a href="#L-3669"><span class="linenos">3669</span></a> </span><span id="L-3670"><a href="#L-3670"><span class="linenos">3670</span></a> -</span><span id="L-3671"><a href="#L-3671"><span class="linenos">3671</span></a><span class="k">class</span> <span class="nc">When</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-3672"><a href="#L-3672"><span class="linenos">3672</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"then"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3671"><a href="#L-3671"><span class="linenos">3671</span></a><span class="k">class</span> <span class="nc">TsOrDiToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3672"><a href="#L-3672"><span class="linenos">3672</span></a> <span class="k">pass</span> </span><span id="L-3673"><a href="#L-3673"><span class="linenos">3673</span></a> </span><span id="L-3674"><a href="#L-3674"><span class="linenos">3674</span></a> -</span><span id="L-3675"><a href="#L-3675"><span class="linenos">3675</span></a><span class="k">def</span> <span class="nf">_norm_args</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span> -</span><span id="L-3676"><a href="#L-3676"><span class="linenos">3676</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-3675"><a href="#L-3675"><span class="linenos">3675</span></a><span class="k">class</span> <span class="nc">Unhex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3676"><a href="#L-3676"><span class="linenos">3676</span></a> <span class="k">pass</span> </span><span id="L-3677"><a href="#L-3677"><span class="linenos">3677</span></a> -</span><span id="L-3678"><a href="#L-3678"><span class="linenos">3678</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-3679"><a href="#L-3679"><span class="linenos">3679</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="L-3680"><a href="#L-3680"><span class="linenos">3680</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="p">[</span><span class="n">_norm_arg</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">arg</span><span class="p">]</span> -</span><span id="L-3681"><a href="#L-3681"><span class="linenos">3681</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">arg</span><span class="p">:</span> -</span><span id="L-3682"><a href="#L-3682"><span class="linenos">3682</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3683"><a href="#L-3683"><span class="linenos">3683</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3684"><a href="#L-3684"><span class="linenos">3684</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> -</span><span id="L-3685"><a href="#L-3685"><span class="linenos">3685</span></a> -</span><span id="L-3686"><a href="#L-3686"><span class="linenos">3686</span></a> <span class="k">if</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">False</span><span class="p">:</span> -</span><span id="L-3687"><a href="#L-3687"><span class="linenos">3687</span></a> <span class="n">args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">arg</span> -</span><span id="L-3688"><a href="#L-3688"><span class="linenos">3688</span></a> -</span><span id="L-3689"><a href="#L-3689"><span class="linenos">3689</span></a> <span class="k">return</span> <span class="n">args</span> -</span><span id="L-3690"><a href="#L-3690"><span class="linenos">3690</span></a> +</span><span id="L-3678"><a href="#L-3678"><span class="linenos">3678</span></a> +</span><span id="L-3679"><a href="#L-3679"><span class="linenos">3679</span></a><span class="k">class</span> <span class="nc">UnixToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3680"><a href="#L-3680"><span class="linenos">3680</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3681"><a href="#L-3681"><span class="linenos">3681</span></a> +</span><span id="L-3682"><a href="#L-3682"><span class="linenos">3682</span></a> +</span><span id="L-3683"><a href="#L-3683"><span class="linenos">3683</span></a><span class="c1"># https://prestodb.io/docs/current/functions/datetime.html</span> +</span><span id="L-3684"><a href="#L-3684"><span class="linenos">3684</span></a><span class="c1"># presto has weird zone/hours/minutes</span> +</span><span id="L-3685"><a href="#L-3685"><span class="linenos">3685</span></a><span class="k">class</span> <span class="nc">UnixToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3686"><a href="#L-3686"><span class="linenos">3686</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"hours"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"minutes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3687"><a href="#L-3687"><span class="linenos">3687</span></a> +</span><span id="L-3688"><a href="#L-3688"><span class="linenos">3688</span></a> <span class="n">SECONDS</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">"seconds"</span><span class="p">)</span> +</span><span id="L-3689"><a href="#L-3689"><span class="linenos">3689</span></a> <span class="n">MILLIS</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">"millis"</span><span class="p">)</span> +</span><span id="L-3690"><a href="#L-3690"><span class="linenos">3690</span></a> <span class="n">MICROS</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">"micros"</span><span class="p">)</span> </span><span id="L-3691"><a href="#L-3691"><span class="linenos">3691</span></a> -</span><span id="L-3692"><a href="#L-3692"><span class="linenos">3692</span></a><span class="k">def</span> <span class="nf">_norm_arg</span><span class="p">(</span><span class="n">arg</span><span class="p">):</span> -</span><span id="L-3693"><a href="#L-3693"><span class="linenos">3693</span></a> <span class="k">return</span> <span class="n">arg</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">arg</span> -</span><span id="L-3694"><a href="#L-3694"><span class="linenos">3694</span></a> +</span><span id="L-3692"><a href="#L-3692"><span class="linenos">3692</span></a> +</span><span id="L-3693"><a href="#L-3693"><span class="linenos">3693</span></a><span class="k">class</span> <span class="nc">UnixToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3694"><a href="#L-3694"><span class="linenos">3694</span></a> <span class="k">pass</span> </span><span id="L-3695"><a href="#L-3695"><span class="linenos">3695</span></a> -</span><span id="L-3696"><a href="#L-3696"><span class="linenos">3696</span></a><span class="n">ALL_FUNCTIONS</span> <span class="o">=</span> <span class="n">subclasses</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">Func</span><span class="p">,</span> <span class="p">(</span><span class="n">AggFunc</span><span class="p">,</span> <span class="n">Anonymous</span><span class="p">,</span> <span class="n">Func</span><span class="p">))</span> -</span><span id="L-3697"><a href="#L-3697"><span class="linenos">3697</span></a> -</span><span id="L-3698"><a href="#L-3698"><span class="linenos">3698</span></a> -</span><span id="L-3699"><a href="#L-3699"><span class="linenos">3699</span></a><span class="c1"># Helpers</span> -</span><span id="L-3700"><a href="#L-3700"><span class="linenos">3700</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> -</span><span id="L-3701"><a href="#L-3701"><span class="linenos">3701</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="L-3702"><a href="#L-3702"><span class="linenos">3702</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="L-3703"><a href="#L-3703"><span class="linenos">3703</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-3704"><a href="#L-3704"><span class="linenos">3704</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-3705"><a href="#L-3705"><span class="linenos">3705</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-3706"><a href="#L-3706"><span class="linenos">3706</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-3707"><a href="#L-3707"><span class="linenos">3707</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-3708"><a href="#L-3708"><span class="linenos">3708</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3709"><a href="#L-3709"><span class="linenos">3709</span></a><span class="w"> </span><span class="sd">"""Gracefully handle a possible string or expression.</span> -</span><span id="L-3710"><a href="#L-3710"><span class="linenos">3710</span></a> -</span><span id="L-3711"><a href="#L-3711"><span class="linenos">3711</span></a><span class="sd"> Example:</span> -</span><span id="L-3712"><a href="#L-3712"><span class="linenos">3712</span></a><span class="sd"> >>> maybe_parse("1")</span> -</span><span id="L-3713"><a href="#L-3713"><span class="linenos">3713</span></a><span class="sd"> (LITERAL this: 1, is_string: False)</span> -</span><span id="L-3714"><a href="#L-3714"><span class="linenos">3714</span></a><span class="sd"> >>> maybe_parse(to_identifier("x"))</span> -</span><span id="L-3715"><a href="#L-3715"><span class="linenos">3715</span></a><span class="sd"> (IDENTIFIER this: x, quoted: False)</span> +</span><span id="L-3696"><a href="#L-3696"><span class="linenos">3696</span></a> +</span><span id="L-3697"><a href="#L-3697"><span class="linenos">3697</span></a><span class="k">class</span> <span class="nc">Upper</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3698"><a href="#L-3698"><span class="linenos">3698</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"UPPER"</span><span class="p">,</span> <span class="s2">"UCASE"</span><span class="p">]</span> +</span><span id="L-3699"><a href="#L-3699"><span class="linenos">3699</span></a> +</span><span id="L-3700"><a href="#L-3700"><span class="linenos">3700</span></a> +</span><span id="L-3701"><a href="#L-3701"><span class="linenos">3701</span></a><span class="k">class</span> <span class="nc">Variance</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3702"><a href="#L-3702"><span class="linenos">3702</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE"</span><span class="p">,</span> <span class="s2">"VARIANCE_SAMP"</span><span class="p">,</span> <span class="s2">"VAR_SAMP"</span><span class="p">]</span> +</span><span id="L-3703"><a href="#L-3703"><span class="linenos">3703</span></a> +</span><span id="L-3704"><a href="#L-3704"><span class="linenos">3704</span></a> +</span><span id="L-3705"><a href="#L-3705"><span class="linenos">3705</span></a><span class="k">class</span> <span class="nc">VariancePop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="L-3706"><a href="#L-3706"><span class="linenos">3706</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE_POP"</span><span class="p">,</span> <span class="s2">"VAR_POP"</span><span class="p">]</span> +</span><span id="L-3707"><a href="#L-3707"><span class="linenos">3707</span></a> +</span><span id="L-3708"><a href="#L-3708"><span class="linenos">3708</span></a> +</span><span id="L-3709"><a href="#L-3709"><span class="linenos">3709</span></a><span class="k">class</span> <span class="nc">Week</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3710"><a href="#L-3710"><span class="linenos">3710</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"mode"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3711"><a href="#L-3711"><span class="linenos">3711</span></a> +</span><span id="L-3712"><a href="#L-3712"><span class="linenos">3712</span></a> +</span><span id="L-3713"><a href="#L-3713"><span class="linenos">3713</span></a><span class="k">class</span> <span class="nc">XMLTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3714"><a href="#L-3714"><span class="linenos">3714</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"passing"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"by_ref"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3715"><a href="#L-3715"><span class="linenos">3715</span></a> </span><span id="L-3716"><a href="#L-3716"><span class="linenos">3716</span></a> -</span><span id="L-3717"><a href="#L-3717"><span class="linenos">3717</span></a><span class="sd"> Args:</span> -</span><span id="L-3718"><a href="#L-3718"><span class="linenos">3718</span></a><span class="sd"> sql_or_expression: the SQL code string or an expression</span> -</span><span id="L-3719"><a href="#L-3719"><span class="linenos">3719</span></a><span class="sd"> into: the SQLGlot Expression to parse into</span> -</span><span id="L-3720"><a href="#L-3720"><span class="linenos">3720</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> -</span><span id="L-3721"><a href="#L-3721"><span class="linenos">3721</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="L-3722"><a href="#L-3722"><span class="linenos">3722</span></a><span class="sd"> prefix: a string to prefix the sql with before it gets parsed</span> -</span><span id="L-3723"><a href="#L-3723"><span class="linenos">3723</span></a><span class="sd"> (automatically includes a space)</span> -</span><span id="L-3724"><a href="#L-3724"><span class="linenos">3724</span></a><span class="sd"> copy: whether or not to copy the expression.</span> -</span><span id="L-3725"><a href="#L-3725"><span class="linenos">3725</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="L-3726"><a href="#L-3726"><span class="linenos">3726</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="L-3717"><a href="#L-3717"><span class="linenos">3717</span></a><span class="k">class</span> <span class="nc">Year</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3718"><a href="#L-3718"><span class="linenos">3718</span></a> <span class="k">pass</span> +</span><span id="L-3719"><a href="#L-3719"><span class="linenos">3719</span></a> +</span><span id="L-3720"><a href="#L-3720"><span class="linenos">3720</span></a> +</span><span id="L-3721"><a href="#L-3721"><span class="linenos">3721</span></a><span class="k">class</span> <span class="nc">Use</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-3722"><a href="#L-3722"><span class="linenos">3722</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="L-3723"><a href="#L-3723"><span class="linenos">3723</span></a> +</span><span id="L-3724"><a href="#L-3724"><span class="linenos">3724</span></a> +</span><span id="L-3725"><a href="#L-3725"><span class="linenos">3725</span></a><span class="k">class</span> <span class="nc">Merge</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-3726"><a href="#L-3726"><span class="linenos">3726</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span><span id="L-3727"><a href="#L-3727"><span class="linenos">3727</span></a> -</span><span id="L-3728"><a href="#L-3728"><span class="linenos">3728</span></a><span class="sd"> Returns:</span> -</span><span id="L-3729"><a href="#L-3729"><span class="linenos">3729</span></a><span class="sd"> Expression: the parsed or given expression.</span> -</span><span id="L-3730"><a href="#L-3730"><span class="linenos">3730</span></a><span class="sd"> """</span> -</span><span id="L-3731"><a href="#L-3731"><span class="linenos">3731</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-3732"><a href="#L-3732"><span class="linenos">3732</span></a> <span class="k">if</span> <span class="n">copy</span><span class="p">:</span> -</span><span id="L-3733"><a href="#L-3733"><span class="linenos">3733</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-3734"><a href="#L-3734"><span class="linenos">3734</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span> +</span><span id="L-3728"><a href="#L-3728"><span class="linenos">3728</span></a> +</span><span id="L-3729"><a href="#L-3729"><span class="linenos">3729</span></a><span class="k">class</span> <span class="nc">When</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-3730"><a href="#L-3730"><span class="linenos">3730</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"then"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="L-3731"><a href="#L-3731"><span class="linenos">3731</span></a> +</span><span id="L-3732"><a href="#L-3732"><span class="linenos">3732</span></a> +</span><span id="L-3733"><a href="#L-3733"><span class="linenos">3733</span></a><span class="k">def</span> <span class="nf">_norm_args</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span> +</span><span id="L-3734"><a href="#L-3734"><span class="linenos">3734</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-3735"><a href="#L-3735"><span class="linenos">3735</span></a> -</span><span id="L-3736"><a href="#L-3736"><span class="linenos">3736</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> -</span><span id="L-3737"><a href="#L-3737"><span class="linenos">3737</span></a> -</span><span id="L-3738"><a href="#L-3738"><span class="linenos">3738</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">)</span> -</span><span id="L-3739"><a href="#L-3739"><span class="linenos">3739</span></a> <span class="k">if</span> <span class="n">prefix</span><span class="p">:</span> -</span><span id="L-3740"><a href="#L-3740"><span class="linenos">3740</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-3741"><a href="#L-3741"><span class="linenos">3741</span></a> <span class="k">return</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">parse_one</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-3742"><a href="#L-3742"><span class="linenos">3742</span></a> +</span><span id="L-3736"><a href="#L-3736"><span class="linenos">3736</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-3737"><a href="#L-3737"><span class="linenos">3737</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="L-3738"><a href="#L-3738"><span class="linenos">3738</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="p">[</span><span class="n">_norm_arg</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">arg</span><span class="p">]</span> +</span><span id="L-3739"><a href="#L-3739"><span class="linenos">3739</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">arg</span><span class="p">:</span> +</span><span id="L-3740"><a href="#L-3740"><span class="linenos">3740</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3741"><a href="#L-3741"><span class="linenos">3741</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3742"><a href="#L-3742"><span class="linenos">3742</span></a> <span class="n">arg</span> <span class="o">=</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> </span><span id="L-3743"><a href="#L-3743"><span class="linenos">3743</span></a> -</span><span id="L-3744"><a href="#L-3744"><span class="linenos">3744</span></a><span class="k">def</span> <span class="nf">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-3745"><a href="#L-3745"><span class="linenos">3745</span></a> <span class="k">return</span> <span class="n">instance</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="n">instance</span> +</span><span id="L-3744"><a href="#L-3744"><span class="linenos">3744</span></a> <span class="k">if</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">False</span><span class="p">:</span> +</span><span id="L-3745"><a href="#L-3745"><span class="linenos">3745</span></a> <span class="n">args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">arg</span> </span><span id="L-3746"><a href="#L-3746"><span class="linenos">3746</span></a> -</span><span id="L-3747"><a href="#L-3747"><span class="linenos">3747</span></a> -</span><span id="L-3748"><a href="#L-3748"><span class="linenos">3748</span></a><span class="k">def</span> <span class="nf">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> -</span><span id="L-3749"><a href="#L-3749"><span class="linenos">3749</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> -</span><span id="L-3750"><a href="#L-3750"><span class="linenos">3750</span></a> -</span><span id="L-3751"><a href="#L-3751"><span class="linenos">3751</span></a> -</span><span id="L-3752"><a href="#L-3752"><span class="linenos">3752</span></a><span class="k">def</span> <span class="nf">_apply_builder</span><span class="p">(</span> -</span><span id="L-3753"><a href="#L-3753"><span class="linenos">3753</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-3754"><a href="#L-3754"><span class="linenos">3754</span></a> <span class="n">instance</span><span class="p">,</span> -</span><span id="L-3755"><a href="#L-3755"><span class="linenos">3755</span></a> <span class="n">arg</span><span class="p">,</span> -</span><span id="L-3756"><a href="#L-3756"><span class="linenos">3756</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-3757"><a href="#L-3757"><span class="linenos">3757</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3758"><a href="#L-3758"><span class="linenos">3758</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3759"><a href="#L-3759"><span class="linenos">3759</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3760"><a href="#L-3760"><span class="linenos">3760</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-3761"><a href="#L-3761"><span class="linenos">3761</span></a><span class="p">):</span> -</span><span id="L-3762"><a href="#L-3762"><span class="linenos">3762</span></a> <span class="k">if</span> <span class="n">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> -</span><span id="L-3763"><a href="#L-3763"><span class="linenos">3763</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-3764"><a href="#L-3764"><span class="linenos">3764</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-3765"><a href="#L-3765"><span class="linenos">3765</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-3766"><a href="#L-3766"><span class="linenos">3766</span></a> <span class="n">sql_or_expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-3767"><a href="#L-3767"><span class="linenos">3767</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="L-3768"><a href="#L-3768"><span class="linenos">3768</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> -</span><span id="L-3769"><a href="#L-3769"><span class="linenos">3769</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-3770"><a href="#L-3770"><span class="linenos">3770</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-3771"><a href="#L-3771"><span class="linenos">3771</span></a> <span class="p">)</span> -</span><span id="L-3772"><a href="#L-3772"><span class="linenos">3772</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-3773"><a href="#L-3773"><span class="linenos">3773</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-3747"><a href="#L-3747"><span class="linenos">3747</span></a> <span class="k">return</span> <span class="n">args</span> +</span><span id="L-3748"><a href="#L-3748"><span class="linenos">3748</span></a> +</span><span id="L-3749"><a href="#L-3749"><span class="linenos">3749</span></a> +</span><span id="L-3750"><a href="#L-3750"><span class="linenos">3750</span></a><span class="k">def</span> <span class="nf">_norm_arg</span><span class="p">(</span><span class="n">arg</span><span class="p">):</span> +</span><span id="L-3751"><a href="#L-3751"><span class="linenos">3751</span></a> <span class="k">return</span> <span class="n">arg</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">arg</span> +</span><span id="L-3752"><a href="#L-3752"><span class="linenos">3752</span></a> +</span><span id="L-3753"><a href="#L-3753"><span class="linenos">3753</span></a> +</span><span id="L-3754"><a href="#L-3754"><span class="linenos">3754</span></a><span class="n">ALL_FUNCTIONS</span> <span class="o">=</span> <span class="n">subclasses</span><span class="p">(</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">Func</span><span class="p">,</span> <span class="p">(</span><span class="n">AggFunc</span><span class="p">,</span> <span class="n">Anonymous</span><span class="p">,</span> <span class="n">Func</span><span class="p">))</span> +</span><span id="L-3755"><a href="#L-3755"><span class="linenos">3755</span></a> +</span><span id="L-3756"><a href="#L-3756"><span class="linenos">3756</span></a> +</span><span id="L-3757"><a href="#L-3757"><span class="linenos">3757</span></a><span class="c1"># Helpers</span> +</span><span id="L-3758"><a href="#L-3758"><span class="linenos">3758</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> +</span><span id="L-3759"><a href="#L-3759"><span class="linenos">3759</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="L-3760"><a href="#L-3760"><span class="linenos">3760</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="L-3761"><a href="#L-3761"><span class="linenos">3761</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-3762"><a href="#L-3762"><span class="linenos">3762</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-3763"><a href="#L-3763"><span class="linenos">3763</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-3764"><a href="#L-3764"><span class="linenos">3764</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-3765"><a href="#L-3765"><span class="linenos">3765</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-3766"><a href="#L-3766"><span class="linenos">3766</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3767"><a href="#L-3767"><span class="linenos">3767</span></a><span class="w"> </span><span class="sd">"""Gracefully handle a possible string or expression.</span> +</span><span id="L-3768"><a href="#L-3768"><span class="linenos">3768</span></a> +</span><span id="L-3769"><a href="#L-3769"><span class="linenos">3769</span></a><span class="sd"> Example:</span> +</span><span id="L-3770"><a href="#L-3770"><span class="linenos">3770</span></a><span class="sd"> >>> maybe_parse("1")</span> +</span><span id="L-3771"><a href="#L-3771"><span class="linenos">3771</span></a><span class="sd"> (LITERAL this: 1, is_string: False)</span> +</span><span id="L-3772"><a href="#L-3772"><span class="linenos">3772</span></a><span class="sd"> >>> maybe_parse(to_identifier("x"))</span> +</span><span id="L-3773"><a href="#L-3773"><span class="linenos">3773</span></a><span class="sd"> (IDENTIFIER this: x, quoted: False)</span> </span><span id="L-3774"><a href="#L-3774"><span class="linenos">3774</span></a> -</span><span id="L-3775"><a href="#L-3775"><span class="linenos">3775</span></a> -</span><span id="L-3776"><a href="#L-3776"><span class="linenos">3776</span></a><span class="k">def</span> <span class="nf">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="L-3777"><a href="#L-3777"><span class="linenos">3777</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-3778"><a href="#L-3778"><span class="linenos">3778</span></a> <span class="n">instance</span><span class="p">,</span> -</span><span id="L-3779"><a href="#L-3779"><span class="linenos">3779</span></a> <span class="n">arg</span><span class="p">,</span> -</span><span id="L-3780"><a href="#L-3780"><span class="linenos">3780</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-3781"><a href="#L-3781"><span class="linenos">3781</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-3782"><a href="#L-3782"><span class="linenos">3782</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3783"><a href="#L-3783"><span class="linenos">3783</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3784"><a href="#L-3784"><span class="linenos">3784</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3785"><a href="#L-3785"><span class="linenos">3785</span></a> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3786"><a href="#L-3786"><span class="linenos">3786</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-3787"><a href="#L-3787"><span class="linenos">3787</span></a><span class="p">):</span> -</span><span id="L-3788"><a href="#L-3788"><span class="linenos">3788</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-3789"><a href="#L-3789"><span class="linenos">3789</span></a> <span class="n">parsed</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3790"><a href="#L-3790"><span class="linenos">3790</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-3791"><a href="#L-3791"><span class="linenos">3791</span></a> <span class="k">if</span> <span class="n">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> -</span><span id="L-3792"><a href="#L-3792"><span class="linenos">3792</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="p">])</span> -</span><span id="L-3793"><a href="#L-3793"><span class="linenos">3793</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-3794"><a href="#L-3794"><span class="linenos">3794</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-3795"><a href="#L-3795"><span class="linenos">3795</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> -</span><span id="L-3796"><a href="#L-3796"><span class="linenos">3796</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-3797"><a href="#L-3797"><span class="linenos">3797</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="L-3798"><a href="#L-3798"><span class="linenos">3798</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-3799"><a href="#L-3799"><span class="linenos">3799</span></a> <span class="p">)</span> -</span><span id="L-3800"><a href="#L-3800"><span class="linenos">3800</span></a> <span class="n">parsed</span><span class="o">.</span><span class="n">extend</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-3775"><a href="#L-3775"><span class="linenos">3775</span></a><span class="sd"> Args:</span> +</span><span id="L-3776"><a href="#L-3776"><span class="linenos">3776</span></a><span class="sd"> sql_or_expression: the SQL code string or an expression</span> +</span><span id="L-3777"><a href="#L-3777"><span class="linenos">3777</span></a><span class="sd"> into: the SQLGlot Expression to parse into</span> +</span><span id="L-3778"><a href="#L-3778"><span class="linenos">3778</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> +</span><span id="L-3779"><a href="#L-3779"><span class="linenos">3779</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="L-3780"><a href="#L-3780"><span class="linenos">3780</span></a><span class="sd"> prefix: a string to prefix the sql with before it gets parsed</span> +</span><span id="L-3781"><a href="#L-3781"><span class="linenos">3781</span></a><span class="sd"> (automatically includes a space)</span> +</span><span id="L-3782"><a href="#L-3782"><span class="linenos">3782</span></a><span class="sd"> copy: whether or not to copy the expression.</span> +</span><span id="L-3783"><a href="#L-3783"><span class="linenos">3783</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="L-3784"><a href="#L-3784"><span class="linenos">3784</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="L-3785"><a href="#L-3785"><span class="linenos">3785</span></a> +</span><span id="L-3786"><a href="#L-3786"><span class="linenos">3786</span></a><span class="sd"> Returns:</span> +</span><span id="L-3787"><a href="#L-3787"><span class="linenos">3787</span></a><span class="sd"> Expression: the parsed or given expression.</span> +</span><span id="L-3788"><a href="#L-3788"><span class="linenos">3788</span></a><span class="sd"> """</span> +</span><span id="L-3789"><a href="#L-3789"><span class="linenos">3789</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-3790"><a href="#L-3790"><span class="linenos">3790</span></a> <span class="k">if</span> <span class="n">copy</span><span class="p">:</span> +</span><span id="L-3791"><a href="#L-3791"><span class="linenos">3791</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-3792"><a href="#L-3792"><span class="linenos">3792</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span> +</span><span id="L-3793"><a href="#L-3793"><span class="linenos">3793</span></a> +</span><span id="L-3794"><a href="#L-3794"><span class="linenos">3794</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> +</span><span id="L-3795"><a href="#L-3795"><span class="linenos">3795</span></a> +</span><span id="L-3796"><a href="#L-3796"><span class="linenos">3796</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">)</span> +</span><span id="L-3797"><a href="#L-3797"><span class="linenos">3797</span></a> <span class="k">if</span> <span class="n">prefix</span><span class="p">:</span> +</span><span id="L-3798"><a href="#L-3798"><span class="linenos">3798</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-3799"><a href="#L-3799"><span class="linenos">3799</span></a> <span class="k">return</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">parse_one</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-3800"><a href="#L-3800"><span class="linenos">3800</span></a> </span><span id="L-3801"><a href="#L-3801"><span class="linenos">3801</span></a> -</span><span id="L-3802"><a href="#L-3802"><span class="linenos">3802</span></a> <span class="n">existing</span> <span class="o">=</span> <span class="n">instance</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="n">arg</span><span class="p">)</span> -</span><span id="L-3803"><a href="#L-3803"><span class="linenos">3803</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing</span><span class="p">:</span> -</span><span id="L-3804"><a href="#L-3804"><span class="linenos">3804</span></a> <span class="n">parsed</span> <span class="o">=</span> <span class="n">existing</span><span class="o">.</span><span class="n">expressions</span> <span class="o">+</span> <span class="n">parsed</span> +</span><span id="L-3802"><a href="#L-3802"><span class="linenos">3802</span></a><span class="k">def</span> <span class="nf">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-3803"><a href="#L-3803"><span class="linenos">3803</span></a> <span class="k">return</span> <span class="n">instance</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="n">instance</span> +</span><span id="L-3804"><a href="#L-3804"><span class="linenos">3804</span></a> </span><span id="L-3805"><a href="#L-3805"><span class="linenos">3805</span></a> -</span><span id="L-3806"><a href="#L-3806"><span class="linenos">3806</span></a> <span class="n">child</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">parsed</span><span class="p">)</span> -</span><span id="L-3807"><a href="#L-3807"><span class="linenos">3807</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="p">(</span><span class="n">properties</span> <span class="ow">or</span> <span class="p">{})</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-3808"><a href="#L-3808"><span class="linenos">3808</span></a> <span class="n">child</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> -</span><span id="L-3809"><a href="#L-3809"><span class="linenos">3809</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">child</span><span class="p">)</span> -</span><span id="L-3810"><a href="#L-3810"><span class="linenos">3810</span></a> <span class="k">return</span> <span class="n">instance</span> -</span><span id="L-3811"><a href="#L-3811"><span class="linenos">3811</span></a> -</span><span id="L-3812"><a href="#L-3812"><span class="linenos">3812</span></a> -</span><span id="L-3813"><a href="#L-3813"><span class="linenos">3813</span></a><span class="k">def</span> <span class="nf">_apply_list_builder</span><span class="p">(</span> -</span><span id="L-3814"><a href="#L-3814"><span class="linenos">3814</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-3815"><a href="#L-3815"><span class="linenos">3815</span></a> <span class="n">instance</span><span class="p">,</span> -</span><span id="L-3816"><a href="#L-3816"><span class="linenos">3816</span></a> <span class="n">arg</span><span class="p">,</span> -</span><span id="L-3817"><a href="#L-3817"><span class="linenos">3817</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-3818"><a href="#L-3818"><span class="linenos">3818</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-3819"><a href="#L-3819"><span class="linenos">3819</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3820"><a href="#L-3820"><span class="linenos">3820</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3821"><a href="#L-3821"><span class="linenos">3821</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3822"><a href="#L-3822"><span class="linenos">3822</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-3823"><a href="#L-3823"><span class="linenos">3823</span></a><span class="p">):</span> -</span><span id="L-3824"><a href="#L-3824"><span class="linenos">3824</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-3825"><a href="#L-3825"><span class="linenos">3825</span></a> -</span><span id="L-3826"><a href="#L-3826"><span class="linenos">3826</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span> -</span><span id="L-3827"><a href="#L-3827"><span class="linenos">3827</span></a> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="L-3828"><a href="#L-3828"><span class="linenos">3828</span></a> <span class="n">sql_or_expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-3829"><a href="#L-3829"><span class="linenos">3829</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> -</span><span id="L-3830"><a href="#L-3830"><span class="linenos">3830</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="L-3831"><a href="#L-3831"><span class="linenos">3831</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-3832"><a href="#L-3832"><span class="linenos">3832</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-3833"><a href="#L-3833"><span class="linenos">3833</span></a> <span class="p">)</span> -</span><span id="L-3834"><a href="#L-3834"><span class="linenos">3834</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> -</span><span id="L-3835"><a href="#L-3835"><span class="linenos">3835</span></a> <span class="p">]</span> -</span><span id="L-3836"><a href="#L-3836"><span class="linenos">3836</span></a> -</span><span id="L-3837"><a href="#L-3837"><span class="linenos">3837</span></a> <span class="n">existing_expressions</span> <span class="o">=</span> <span class="n">inst</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="n">arg</span><span class="p">)</span> -</span><span id="L-3838"><a href="#L-3838"><span class="linenos">3838</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing_expressions</span><span class="p">:</span> -</span><span id="L-3839"><a href="#L-3839"><span class="linenos">3839</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">existing_expressions</span> <span class="o">+</span> <span class="n">expressions</span> -</span><span id="L-3840"><a href="#L-3840"><span class="linenos">3840</span></a> -</span><span id="L-3841"><a href="#L-3841"><span class="linenos">3841</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="L-3842"><a href="#L-3842"><span class="linenos">3842</span></a> <span class="k">return</span> <span class="n">inst</span> -</span><span id="L-3843"><a href="#L-3843"><span class="linenos">3843</span></a> -</span><span id="L-3844"><a href="#L-3844"><span class="linenos">3844</span></a> -</span><span id="L-3845"><a href="#L-3845"><span class="linenos">3845</span></a><span class="k">def</span> <span class="nf">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="L-3846"><a href="#L-3846"><span class="linenos">3846</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-3847"><a href="#L-3847"><span class="linenos">3847</span></a> <span class="n">instance</span><span class="p">,</span> -</span><span id="L-3848"><a href="#L-3848"><span class="linenos">3848</span></a> <span class="n">arg</span><span class="p">,</span> -</span><span id="L-3849"><a href="#L-3849"><span class="linenos">3849</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3850"><a href="#L-3850"><span class="linenos">3850</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-3851"><a href="#L-3851"><span class="linenos">3851</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-3852"><a href="#L-3852"><span class="linenos">3852</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-3853"><a href="#L-3853"><span class="linenos">3853</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-3854"><a href="#L-3854"><span class="linenos">3854</span></a><span class="p">):</span> -</span><span id="L-3855"><a href="#L-3855"><span class="linenos">3855</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span> <span class="k">for</span> <span class="n">exp</span> <span class="ow">in</span> <span class="n">expressions</span> <span class="k">if</span> <span class="n">exp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">exp</span> <span class="o">!=</span> <span class="s2">""</span><span class="p">]</span> -</span><span id="L-3856"><a href="#L-3856"><span class="linenos">3856</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-3857"><a href="#L-3857"><span class="linenos">3857</span></a> <span class="k">return</span> <span class="n">instance</span> -</span><span id="L-3858"><a href="#L-3858"><span class="linenos">3858</span></a> -</span><span id="L-3859"><a href="#L-3859"><span class="linenos">3859</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="L-3860"><a href="#L-3860"><span class="linenos">3860</span></a> -</span><span id="L-3861"><a href="#L-3861"><span class="linenos">3861</span></a> <span class="n">existing</span> <span class="o">=</span> <span class="n">inst</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="n">arg</span><span class="p">)</span> -</span><span id="L-3862"><a href="#L-3862"><span class="linenos">3862</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-3863"><a href="#L-3863"><span class="linenos">3863</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">existing</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">into</span> <span class="k">else</span> <span class="n">existing</span><span class="p">]</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-3864"><a href="#L-3864"><span class="linenos">3864</span></a> -</span><span id="L-3865"><a href="#L-3865"><span class="linenos">3865</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-3866"><a href="#L-3866"><span class="linenos">3866</span></a> -</span><span id="L-3867"><a href="#L-3867"><span class="linenos">3867</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">into</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="p">)</span> <span class="k">if</span> <span class="n">into</span> <span class="k">else</span> <span class="n">node</span><span class="p">)</span> -</span><span id="L-3868"><a href="#L-3868"><span class="linenos">3868</span></a> <span class="k">return</span> <span class="n">inst</span> +</span><span id="L-3806"><a href="#L-3806"><span class="linenos">3806</span></a><span class="k">def</span> <span class="nf">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> +</span><span id="L-3807"><a href="#L-3807"><span class="linenos">3807</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> +</span><span id="L-3808"><a href="#L-3808"><span class="linenos">3808</span></a> +</span><span id="L-3809"><a href="#L-3809"><span class="linenos">3809</span></a> +</span><span id="L-3810"><a href="#L-3810"><span class="linenos">3810</span></a><span class="k">def</span> <span class="nf">_apply_builder</span><span class="p">(</span> +</span><span id="L-3811"><a href="#L-3811"><span class="linenos">3811</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-3812"><a href="#L-3812"><span class="linenos">3812</span></a> <span class="n">instance</span><span class="p">,</span> +</span><span id="L-3813"><a href="#L-3813"><span class="linenos">3813</span></a> <span class="n">arg</span><span class="p">,</span> +</span><span id="L-3814"><a href="#L-3814"><span class="linenos">3814</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-3815"><a href="#L-3815"><span class="linenos">3815</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3816"><a href="#L-3816"><span class="linenos">3816</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3817"><a href="#L-3817"><span class="linenos">3817</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3818"><a href="#L-3818"><span class="linenos">3818</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-3819"><a href="#L-3819"><span class="linenos">3819</span></a><span class="p">):</span> +</span><span id="L-3820"><a href="#L-3820"><span class="linenos">3820</span></a> <span class="k">if</span> <span class="n">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> +</span><span id="L-3821"><a href="#L-3821"><span class="linenos">3821</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-3822"><a href="#L-3822"><span class="linenos">3822</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-3823"><a href="#L-3823"><span class="linenos">3823</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-3824"><a href="#L-3824"><span class="linenos">3824</span></a> <span class="n">sql_or_expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-3825"><a href="#L-3825"><span class="linenos">3825</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="L-3826"><a href="#L-3826"><span class="linenos">3826</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> +</span><span id="L-3827"><a href="#L-3827"><span class="linenos">3827</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-3828"><a href="#L-3828"><span class="linenos">3828</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-3829"><a href="#L-3829"><span class="linenos">3829</span></a> <span class="p">)</span> +</span><span id="L-3830"><a href="#L-3830"><span class="linenos">3830</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-3831"><a href="#L-3831"><span class="linenos">3831</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-3832"><a href="#L-3832"><span class="linenos">3832</span></a> +</span><span id="L-3833"><a href="#L-3833"><span class="linenos">3833</span></a> +</span><span id="L-3834"><a href="#L-3834"><span class="linenos">3834</span></a><span class="k">def</span> <span class="nf">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="L-3835"><a href="#L-3835"><span class="linenos">3835</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-3836"><a href="#L-3836"><span class="linenos">3836</span></a> <span class="n">instance</span><span class="p">,</span> +</span><span id="L-3837"><a href="#L-3837"><span class="linenos">3837</span></a> <span class="n">arg</span><span class="p">,</span> +</span><span id="L-3838"><a href="#L-3838"><span class="linenos">3838</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-3839"><a href="#L-3839"><span class="linenos">3839</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-3840"><a href="#L-3840"><span class="linenos">3840</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3841"><a href="#L-3841"><span class="linenos">3841</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3842"><a href="#L-3842"><span class="linenos">3842</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3843"><a href="#L-3843"><span class="linenos">3843</span></a> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3844"><a href="#L-3844"><span class="linenos">3844</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-3845"><a href="#L-3845"><span class="linenos">3845</span></a><span class="p">):</span> +</span><span id="L-3846"><a href="#L-3846"><span class="linenos">3846</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-3847"><a href="#L-3847"><span class="linenos">3847</span></a> <span class="n">parsed</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3848"><a href="#L-3848"><span class="linenos">3848</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-3849"><a href="#L-3849"><span class="linenos">3849</span></a> <span class="k">if</span> <span class="n">_is_wrong_expression</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="p">):</span> +</span><span id="L-3850"><a href="#L-3850"><span class="linenos">3850</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="p">])</span> +</span><span id="L-3851"><a href="#L-3851"><span class="linenos">3851</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-3852"><a href="#L-3852"><span class="linenos">3852</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-3853"><a href="#L-3853"><span class="linenos">3853</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> +</span><span id="L-3854"><a href="#L-3854"><span class="linenos">3854</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-3855"><a href="#L-3855"><span class="linenos">3855</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="L-3856"><a href="#L-3856"><span class="linenos">3856</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-3857"><a href="#L-3857"><span class="linenos">3857</span></a> <span class="p">)</span> +</span><span id="L-3858"><a href="#L-3858"><span class="linenos">3858</span></a> <span class="n">parsed</span><span class="o">.</span><span class="n">extend</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-3859"><a href="#L-3859"><span class="linenos">3859</span></a> +</span><span id="L-3860"><a href="#L-3860"><span class="linenos">3860</span></a> <span class="n">existing</span> <span class="o">=</span> <span class="n">instance</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="n">arg</span><span class="p">)</span> +</span><span id="L-3861"><a href="#L-3861"><span class="linenos">3861</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing</span><span class="p">:</span> +</span><span id="L-3862"><a href="#L-3862"><span class="linenos">3862</span></a> <span class="n">parsed</span> <span class="o">=</span> <span class="n">existing</span><span class="o">.</span><span class="n">expressions</span> <span class="o">+</span> <span class="n">parsed</span> +</span><span id="L-3863"><a href="#L-3863"><span class="linenos">3863</span></a> +</span><span id="L-3864"><a href="#L-3864"><span class="linenos">3864</span></a> <span class="n">child</span> <span class="o">=</span> <span class="n">into</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">parsed</span><span class="p">)</span> +</span><span id="L-3865"><a href="#L-3865"><span class="linenos">3865</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="p">(</span><span class="n">properties</span> <span class="ow">or</span> <span class="p">{})</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-3866"><a href="#L-3866"><span class="linenos">3866</span></a> <span class="n">child</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> +</span><span id="L-3867"><a href="#L-3867"><span class="linenos">3867</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">child</span><span class="p">)</span> +</span><span id="L-3868"><a href="#L-3868"><span class="linenos">3868</span></a> <span class="k">return</span> <span class="n">instance</span> </span><span id="L-3869"><a href="#L-3869"><span class="linenos">3869</span></a> </span><span id="L-3870"><a href="#L-3870"><span class="linenos">3870</span></a> -</span><span id="L-3871"><a href="#L-3871"><span class="linenos">3871</span></a><span class="k">def</span> <span class="nf">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">operator</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-3872"><a href="#L-3872"><span class="linenos">3872</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">condition</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">]</span> -</span><span id="L-3873"><a href="#L-3873"><span class="linenos">3873</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="L-3874"><a href="#L-3874"><span class="linenos">3874</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> -</span><span id="L-3875"><a href="#L-3875"><span class="linenos">3875</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">_wrap_operator</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-3876"><a href="#L-3876"><span class="linenos">3876</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> -</span><span id="L-3877"><a href="#L-3877"><span class="linenos">3877</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">operator</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">_wrap_operator</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> -</span><span id="L-3878"><a href="#L-3878"><span class="linenos">3878</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3879"><a href="#L-3879"><span class="linenos">3879</span></a> -</span><span id="L-3880"><a href="#L-3880"><span class="linenos">3880</span></a> -</span><span id="L-3881"><a href="#L-3881"><span class="linenos">3881</span></a><span class="k">def</span> <span class="nf">_wrap_operator</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span> -</span><span id="L-3882"><a href="#L-3882"><span class="linenos">3882</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="p">(</span><span class="n">And</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">Not</span><span class="p">)):</span> -</span><span id="L-3883"><a href="#L-3883"><span class="linenos">3883</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-3884"><a href="#L-3884"><span class="linenos">3884</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-3885"><a href="#L-3885"><span class="linenos">3885</span></a> -</span><span id="L-3886"><a href="#L-3886"><span class="linenos">3886</span></a> -</span><span id="L-3887"><a href="#L-3887"><span class="linenos">3887</span></a><span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-3888"><a href="#L-3888"><span class="linenos">3888</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-3889"><a href="#L-3889"><span class="linenos">3889</span></a><span class="sd"> Initializes a syntax tree from one UNION expression.</span> -</span><span id="L-3890"><a href="#L-3890"><span class="linenos">3890</span></a> -</span><span id="L-3891"><a href="#L-3891"><span class="linenos">3891</span></a><span class="sd"> Example:</span> -</span><span id="L-3892"><a href="#L-3892"><span class="linenos">3892</span></a><span class="sd"> >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="L-3893"><a href="#L-3893"><span class="linenos">3893</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> +</span><span id="L-3871"><a href="#L-3871"><span class="linenos">3871</span></a><span class="k">def</span> <span class="nf">_apply_list_builder</span><span class="p">(</span> +</span><span id="L-3872"><a href="#L-3872"><span class="linenos">3872</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-3873"><a href="#L-3873"><span class="linenos">3873</span></a> <span class="n">instance</span><span class="p">,</span> +</span><span id="L-3874"><a href="#L-3874"><span class="linenos">3874</span></a> <span class="n">arg</span><span class="p">,</span> +</span><span id="L-3875"><a href="#L-3875"><span class="linenos">3875</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-3876"><a href="#L-3876"><span class="linenos">3876</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-3877"><a href="#L-3877"><span class="linenos">3877</span></a> <span class="n">prefix</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3878"><a href="#L-3878"><span class="linenos">3878</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3879"><a href="#L-3879"><span class="linenos">3879</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3880"><a href="#L-3880"><span class="linenos">3880</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-3881"><a href="#L-3881"><span class="linenos">3881</span></a><span class="p">):</span> +</span><span id="L-3882"><a href="#L-3882"><span class="linenos">3882</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-3883"><a href="#L-3883"><span class="linenos">3883</span></a> +</span><span id="L-3884"><a href="#L-3884"><span class="linenos">3884</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span> +</span><span id="L-3885"><a href="#L-3885"><span class="linenos">3885</span></a> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="L-3886"><a href="#L-3886"><span class="linenos">3886</span></a> <span class="n">sql_or_expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-3887"><a href="#L-3887"><span class="linenos">3887</span></a> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> +</span><span id="L-3888"><a href="#L-3888"><span class="linenos">3888</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="L-3889"><a href="#L-3889"><span class="linenos">3889</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-3890"><a href="#L-3890"><span class="linenos">3890</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-3891"><a href="#L-3891"><span class="linenos">3891</span></a> <span class="p">)</span> +</span><span id="L-3892"><a href="#L-3892"><span class="linenos">3892</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span> +</span><span id="L-3893"><a href="#L-3893"><span class="linenos">3893</span></a> <span class="p">]</span> </span><span id="L-3894"><a href="#L-3894"><span class="linenos">3894</span></a> -</span><span id="L-3895"><a href="#L-3895"><span class="linenos">3895</span></a><span class="sd"> Args:</span> -</span><span id="L-3896"><a href="#L-3896"><span class="linenos">3896</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> -</span><span id="L-3897"><a href="#L-3897"><span class="linenos">3897</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-3898"><a href="#L-3898"><span class="linenos">3898</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> -</span><span id="L-3899"><a href="#L-3899"><span class="linenos">3899</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-3900"><a href="#L-3900"><span class="linenos">3900</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="L-3901"><a href="#L-3901"><span class="linenos">3901</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-3902"><a href="#L-3902"><span class="linenos">3902</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-3903"><a href="#L-3903"><span class="linenos">3903</span></a><span class="sd"> Returns:</span> -</span><span id="L-3904"><a href="#L-3904"><span class="linenos">3904</span></a><span class="sd"> Union: the syntax tree for the UNION expression.</span> -</span><span id="L-3905"><a href="#L-3905"><span class="linenos">3905</span></a><span class="sd"> """</span> -</span><span id="L-3906"><a href="#L-3906"><span class="linenos">3906</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-3907"><a href="#L-3907"><span class="linenos">3907</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-3908"><a href="#L-3908"><span class="linenos">3908</span></a> -</span><span id="L-3909"><a href="#L-3909"><span class="linenos">3909</span></a> <span class="k">return</span> <span class="n">Union</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> -</span><span id="L-3910"><a href="#L-3910"><span class="linenos">3910</span></a> -</span><span id="L-3911"><a href="#L-3911"><span class="linenos">3911</span></a> -</span><span id="L-3912"><a href="#L-3912"><span class="linenos">3912</span></a><span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-3913"><a href="#L-3913"><span class="linenos">3913</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-3914"><a href="#L-3914"><span class="linenos">3914</span></a><span class="sd"> Initializes a syntax tree from one INTERSECT expression.</span> -</span><span id="L-3915"><a href="#L-3915"><span class="linenos">3915</span></a> -</span><span id="L-3916"><a href="#L-3916"><span class="linenos">3916</span></a><span class="sd"> Example:</span> -</span><span id="L-3917"><a href="#L-3917"><span class="linenos">3917</span></a><span class="sd"> >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="L-3918"><a href="#L-3918"><span class="linenos">3918</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> -</span><span id="L-3919"><a href="#L-3919"><span class="linenos">3919</span></a> -</span><span id="L-3920"><a href="#L-3920"><span class="linenos">3920</span></a><span class="sd"> Args:</span> -</span><span id="L-3921"><a href="#L-3921"><span class="linenos">3921</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> -</span><span id="L-3922"><a href="#L-3922"><span class="linenos">3922</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-3923"><a href="#L-3923"><span class="linenos">3923</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> -</span><span id="L-3924"><a href="#L-3924"><span class="linenos">3924</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-3925"><a href="#L-3925"><span class="linenos">3925</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="L-3926"><a href="#L-3926"><span class="linenos">3926</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-3927"><a href="#L-3927"><span class="linenos">3927</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-3928"><a href="#L-3928"><span class="linenos">3928</span></a><span class="sd"> Returns:</span> -</span><span id="L-3929"><a href="#L-3929"><span class="linenos">3929</span></a><span class="sd"> Intersect: the syntax tree for the INTERSECT expression.</span> -</span><span id="L-3930"><a href="#L-3930"><span class="linenos">3930</span></a><span class="sd"> """</span> -</span><span id="L-3931"><a href="#L-3931"><span class="linenos">3931</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-3932"><a href="#L-3932"><span class="linenos">3932</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-3933"><a href="#L-3933"><span class="linenos">3933</span></a> -</span><span id="L-3934"><a href="#L-3934"><span class="linenos">3934</span></a> <span class="k">return</span> <span class="n">Intersect</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> -</span><span id="L-3935"><a href="#L-3935"><span class="linenos">3935</span></a> -</span><span id="L-3936"><a href="#L-3936"><span class="linenos">3936</span></a> -</span><span id="L-3937"><a href="#L-3937"><span class="linenos">3937</span></a><span class="k">def</span> <span class="nf">except_</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-3938"><a href="#L-3938"><span class="linenos">3938</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-3939"><a href="#L-3939"><span class="linenos">3939</span></a><span class="sd"> Initializes a syntax tree from one EXCEPT expression.</span> -</span><span id="L-3940"><a href="#L-3940"><span class="linenos">3940</span></a> -</span><span id="L-3941"><a href="#L-3941"><span class="linenos">3941</span></a><span class="sd"> Example:</span> -</span><span id="L-3942"><a href="#L-3942"><span class="linenos">3942</span></a><span class="sd"> >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="L-3943"><a href="#L-3943"><span class="linenos">3943</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> +</span><span id="L-3895"><a href="#L-3895"><span class="linenos">3895</span></a> <span class="n">existing_expressions</span> <span class="o">=</span> <span class="n">inst</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="n">arg</span><span class="p">)</span> +</span><span id="L-3896"><a href="#L-3896"><span class="linenos">3896</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing_expressions</span><span class="p">:</span> +</span><span id="L-3897"><a href="#L-3897"><span class="linenos">3897</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">existing_expressions</span> <span class="o">+</span> <span class="n">expressions</span> +</span><span id="L-3898"><a href="#L-3898"><span class="linenos">3898</span></a> +</span><span id="L-3899"><a href="#L-3899"><span class="linenos">3899</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="L-3900"><a href="#L-3900"><span class="linenos">3900</span></a> <span class="k">return</span> <span class="n">inst</span> +</span><span id="L-3901"><a href="#L-3901"><span class="linenos">3901</span></a> +</span><span id="L-3902"><a href="#L-3902"><span class="linenos">3902</span></a> +</span><span id="L-3903"><a href="#L-3903"><span class="linenos">3903</span></a><span class="k">def</span> <span class="nf">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="L-3904"><a href="#L-3904"><span class="linenos">3904</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-3905"><a href="#L-3905"><span class="linenos">3905</span></a> <span class="n">instance</span><span class="p">,</span> +</span><span id="L-3906"><a href="#L-3906"><span class="linenos">3906</span></a> <span class="n">arg</span><span class="p">,</span> +</span><span id="L-3907"><a href="#L-3907"><span class="linenos">3907</span></a> <span class="n">into</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3908"><a href="#L-3908"><span class="linenos">3908</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-3909"><a href="#L-3909"><span class="linenos">3909</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-3910"><a href="#L-3910"><span class="linenos">3910</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-3911"><a href="#L-3911"><span class="linenos">3911</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-3912"><a href="#L-3912"><span class="linenos">3912</span></a><span class="p">):</span> +</span><span id="L-3913"><a href="#L-3913"><span class="linenos">3913</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">exp</span> <span class="k">for</span> <span class="n">exp</span> <span class="ow">in</span> <span class="n">expressions</span> <span class="k">if</span> <span class="n">exp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">exp</span> <span class="o">!=</span> <span class="s2">""</span><span class="p">]</span> +</span><span id="L-3914"><a href="#L-3914"><span class="linenos">3914</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-3915"><a href="#L-3915"><span class="linenos">3915</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-3916"><a href="#L-3916"><span class="linenos">3916</span></a> +</span><span id="L-3917"><a href="#L-3917"><span class="linenos">3917</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="L-3918"><a href="#L-3918"><span class="linenos">3918</span></a> +</span><span id="L-3919"><a href="#L-3919"><span class="linenos">3919</span></a> <span class="n">existing</span> <span class="o">=</span> <span class="n">inst</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="n">arg</span><span class="p">)</span> +</span><span id="L-3920"><a href="#L-3920"><span class="linenos">3920</span></a> <span class="k">if</span> <span class="n">append</span> <span class="ow">and</span> <span class="n">existing</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-3921"><a href="#L-3921"><span class="linenos">3921</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">existing</span><span class="o">.</span><span class="n">this</span> <span class="k">if</span> <span class="n">into</span> <span class="k">else</span> <span class="n">existing</span><span class="p">]</span> <span class="o">+</span> <span class="nb">list</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-3922"><a href="#L-3922"><span class="linenos">3922</span></a> +</span><span id="L-3923"><a href="#L-3923"><span class="linenos">3923</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-3924"><a href="#L-3924"><span class="linenos">3924</span></a> +</span><span id="L-3925"><a href="#L-3925"><span class="linenos">3925</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">into</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="p">)</span> <span class="k">if</span> <span class="n">into</span> <span class="k">else</span> <span class="n">node</span><span class="p">)</span> +</span><span id="L-3926"><a href="#L-3926"><span class="linenos">3926</span></a> <span class="k">return</span> <span class="n">inst</span> +</span><span id="L-3927"><a href="#L-3927"><span class="linenos">3927</span></a> +</span><span id="L-3928"><a href="#L-3928"><span class="linenos">3928</span></a> +</span><span id="L-3929"><a href="#L-3929"><span class="linenos">3929</span></a><span class="k">def</span> <span class="nf">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">operator</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-3930"><a href="#L-3930"><span class="linenos">3930</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">condition</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">]</span> +</span><span id="L-3931"><a href="#L-3931"><span class="linenos">3931</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-3932"><a href="#L-3932"><span class="linenos">3932</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> +</span><span id="L-3933"><a href="#L-3933"><span class="linenos">3933</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">_wrap_operator</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-3934"><a href="#L-3934"><span class="linenos">3934</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> +</span><span id="L-3935"><a href="#L-3935"><span class="linenos">3935</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">operator</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">_wrap_operator</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span> +</span><span id="L-3936"><a href="#L-3936"><span class="linenos">3936</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3937"><a href="#L-3937"><span class="linenos">3937</span></a> +</span><span id="L-3938"><a href="#L-3938"><span class="linenos">3938</span></a> +</span><span id="L-3939"><a href="#L-3939"><span class="linenos">3939</span></a><span class="k">def</span> <span class="nf">_wrap_operator</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span> +</span><span id="L-3940"><a href="#L-3940"><span class="linenos">3940</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="p">(</span><span class="n">And</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">Not</span><span class="p">)):</span> +</span><span id="L-3941"><a href="#L-3941"><span class="linenos">3941</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-3942"><a href="#L-3942"><span class="linenos">3942</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-3943"><a href="#L-3943"><span class="linenos">3943</span></a> </span><span id="L-3944"><a href="#L-3944"><span class="linenos">3944</span></a> -</span><span id="L-3945"><a href="#L-3945"><span class="linenos">3945</span></a><span class="sd"> Args:</span> -</span><span id="L-3946"><a href="#L-3946"><span class="linenos">3946</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> -</span><span id="L-3947"><a href="#L-3947"><span class="linenos">3947</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-3948"><a href="#L-3948"><span class="linenos">3948</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> -</span><span id="L-3949"><a href="#L-3949"><span class="linenos">3949</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="L-3950"><a href="#L-3950"><span class="linenos">3950</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="L-3951"><a href="#L-3951"><span class="linenos">3951</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-3952"><a href="#L-3952"><span class="linenos">3952</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="L-3953"><a href="#L-3953"><span class="linenos">3953</span></a><span class="sd"> Returns:</span> -</span><span id="L-3954"><a href="#L-3954"><span class="linenos">3954</span></a><span class="sd"> Except: the syntax tree for the EXCEPT statement.</span> -</span><span id="L-3955"><a href="#L-3955"><span class="linenos">3955</span></a><span class="sd"> """</span> -</span><span id="L-3956"><a href="#L-3956"><span class="linenos">3956</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-3957"><a href="#L-3957"><span class="linenos">3957</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-3958"><a href="#L-3958"><span class="linenos">3958</span></a> -</span><span id="L-3959"><a href="#L-3959"><span class="linenos">3959</span></a> <span class="k">return</span> <span class="n">Except</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> -</span><span id="L-3960"><a href="#L-3960"><span class="linenos">3960</span></a> -</span><span id="L-3961"><a href="#L-3961"><span class="linenos">3961</span></a> -</span><span id="L-3962"><a href="#L-3962"><span class="linenos">3962</span></a><span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-3963"><a href="#L-3963"><span class="linenos">3963</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-3964"><a href="#L-3964"><span class="linenos">3964</span></a><span class="sd"> Initializes a syntax tree from one or multiple SELECT expressions.</span> -</span><span id="L-3965"><a href="#L-3965"><span class="linenos">3965</span></a> -</span><span id="L-3966"><a href="#L-3966"><span class="linenos">3966</span></a><span class="sd"> Example:</span> -</span><span id="L-3967"><a href="#L-3967"><span class="linenos">3967</span></a><span class="sd"> >>> select("col1", "col2").from_("tbl").sql()</span> -</span><span id="L-3968"><a href="#L-3968"><span class="linenos">3968</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="L-3945"><a href="#L-3945"><span class="linenos">3945</span></a><span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-3946"><a href="#L-3946"><span class="linenos">3946</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-3947"><a href="#L-3947"><span class="linenos">3947</span></a><span class="sd"> Initializes a syntax tree from one UNION expression.</span> +</span><span id="L-3948"><a href="#L-3948"><span class="linenos">3948</span></a> +</span><span id="L-3949"><a href="#L-3949"><span class="linenos">3949</span></a><span class="sd"> Example:</span> +</span><span id="L-3950"><a href="#L-3950"><span class="linenos">3950</span></a><span class="sd"> >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="L-3951"><a href="#L-3951"><span class="linenos">3951</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> +</span><span id="L-3952"><a href="#L-3952"><span class="linenos">3952</span></a> +</span><span id="L-3953"><a href="#L-3953"><span class="linenos">3953</span></a><span class="sd"> Args:</span> +</span><span id="L-3954"><a href="#L-3954"><span class="linenos">3954</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> +</span><span id="L-3955"><a href="#L-3955"><span class="linenos">3955</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-3956"><a href="#L-3956"><span class="linenos">3956</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> +</span><span id="L-3957"><a href="#L-3957"><span class="linenos">3957</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-3958"><a href="#L-3958"><span class="linenos">3958</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="L-3959"><a href="#L-3959"><span class="linenos">3959</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-3960"><a href="#L-3960"><span class="linenos">3960</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-3961"><a href="#L-3961"><span class="linenos">3961</span></a><span class="sd"> Returns:</span> +</span><span id="L-3962"><a href="#L-3962"><span class="linenos">3962</span></a><span class="sd"> Union: the syntax tree for the UNION expression.</span> +</span><span id="L-3963"><a href="#L-3963"><span class="linenos">3963</span></a><span class="sd"> """</span> +</span><span id="L-3964"><a href="#L-3964"><span class="linenos">3964</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-3965"><a href="#L-3965"><span class="linenos">3965</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-3966"><a href="#L-3966"><span class="linenos">3966</span></a> +</span><span id="L-3967"><a href="#L-3967"><span class="linenos">3967</span></a> <span class="k">return</span> <span class="n">Union</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> +</span><span id="L-3968"><a href="#L-3968"><span class="linenos">3968</span></a> </span><span id="L-3969"><a href="#L-3969"><span class="linenos">3969</span></a> -</span><span id="L-3970"><a href="#L-3970"><span class="linenos">3970</span></a><span class="sd"> Args:</span> -</span><span id="L-3971"><a href="#L-3971"><span class="linenos">3971</span></a><span class="sd"> *expressions: the SQL code string to parse as the expressions of a</span> -</span><span id="L-3972"><a href="#L-3972"><span class="linenos">3972</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-3973"><a href="#L-3973"><span class="linenos">3973</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> -</span><span id="L-3974"><a href="#L-3974"><span class="linenos">3974</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="L-3975"><a href="#L-3975"><span class="linenos">3975</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="L-3976"><a href="#L-3976"><span class="linenos">3976</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="L-3970"><a href="#L-3970"><span class="linenos">3970</span></a><span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-3971"><a href="#L-3971"><span class="linenos">3971</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-3972"><a href="#L-3972"><span class="linenos">3972</span></a><span class="sd"> Initializes a syntax tree from one INTERSECT expression.</span> +</span><span id="L-3973"><a href="#L-3973"><span class="linenos">3973</span></a> +</span><span id="L-3974"><a href="#L-3974"><span class="linenos">3974</span></a><span class="sd"> Example:</span> +</span><span id="L-3975"><a href="#L-3975"><span class="linenos">3975</span></a><span class="sd"> >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="L-3976"><a href="#L-3976"><span class="linenos">3976</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> </span><span id="L-3977"><a href="#L-3977"><span class="linenos">3977</span></a> -</span><span id="L-3978"><a href="#L-3978"><span class="linenos">3978</span></a><span class="sd"> Returns:</span> -</span><span id="L-3979"><a href="#L-3979"><span class="linenos">3979</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> -</span><span id="L-3980"><a href="#L-3980"><span class="linenos">3980</span></a><span class="sd"> """</span> -</span><span id="L-3981"><a href="#L-3981"><span class="linenos">3981</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-3982"><a href="#L-3982"><span class="linenos">3982</span></a> -</span><span id="L-3983"><a href="#L-3983"><span class="linenos">3983</span></a> -</span><span id="L-3984"><a href="#L-3984"><span class="linenos">3984</span></a><span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="L-3985"><a href="#L-3985"><span class="linenos">3985</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-3986"><a href="#L-3986"><span class="linenos">3986</span></a><span class="sd"> Initializes a syntax tree from a FROM expression.</span> -</span><span id="L-3987"><a href="#L-3987"><span class="linenos">3987</span></a> -</span><span id="L-3988"><a href="#L-3988"><span class="linenos">3988</span></a><span class="sd"> Example:</span> -</span><span id="L-3989"><a href="#L-3989"><span class="linenos">3989</span></a><span class="sd"> >>> from_("tbl").select("col1", "col2").sql()</span> -</span><span id="L-3990"><a href="#L-3990"><span class="linenos">3990</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="L-3978"><a href="#L-3978"><span class="linenos">3978</span></a><span class="sd"> Args:</span> +</span><span id="L-3979"><a href="#L-3979"><span class="linenos">3979</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> +</span><span id="L-3980"><a href="#L-3980"><span class="linenos">3980</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-3981"><a href="#L-3981"><span class="linenos">3981</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> +</span><span id="L-3982"><a href="#L-3982"><span class="linenos">3982</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-3983"><a href="#L-3983"><span class="linenos">3983</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="L-3984"><a href="#L-3984"><span class="linenos">3984</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-3985"><a href="#L-3985"><span class="linenos">3985</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-3986"><a href="#L-3986"><span class="linenos">3986</span></a><span class="sd"> Returns:</span> +</span><span id="L-3987"><a href="#L-3987"><span class="linenos">3987</span></a><span class="sd"> Intersect: the syntax tree for the INTERSECT expression.</span> +</span><span id="L-3988"><a href="#L-3988"><span class="linenos">3988</span></a><span class="sd"> """</span> +</span><span id="L-3989"><a href="#L-3989"><span class="linenos">3989</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-3990"><a href="#L-3990"><span class="linenos">3990</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="L-3991"><a href="#L-3991"><span class="linenos">3991</span></a> -</span><span id="L-3992"><a href="#L-3992"><span class="linenos">3992</span></a><span class="sd"> Args:</span> -</span><span id="L-3993"><a href="#L-3993"><span class="linenos">3993</span></a><span class="sd"> *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a</span> -</span><span id="L-3994"><a href="#L-3994"><span class="linenos">3994</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-3995"><a href="#L-3995"><span class="linenos">3995</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression (in the case that the</span> -</span><span id="L-3996"><a href="#L-3996"><span class="linenos">3996</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="L-3997"><a href="#L-3997"><span class="linenos">3997</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="L-3998"><a href="#L-3998"><span class="linenos">3998</span></a><span class="sd"> that the input expression is a SQL string).</span> -</span><span id="L-3999"><a href="#L-3999"><span class="linenos">3999</span></a> -</span><span id="L-4000"><a href="#L-4000"><span class="linenos">4000</span></a><span class="sd"> Returns:</span> -</span><span id="L-4001"><a href="#L-4001"><span class="linenos">4001</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> -</span><span id="L-4002"><a href="#L-4002"><span class="linenos">4002</span></a><span class="sd"> """</span> -</span><span id="L-4003"><a href="#L-4003"><span class="linenos">4003</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-4004"><a href="#L-4004"><span class="linenos">4004</span></a> -</span><span id="L-4005"><a href="#L-4005"><span class="linenos">4005</span></a> -</span><span id="L-4006"><a href="#L-4006"><span class="linenos">4006</span></a><span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Update</span><span class="p">:</span> -</span><span id="L-4007"><a href="#L-4007"><span class="linenos">4007</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4008"><a href="#L-4008"><span class="linenos">4008</span></a><span class="sd"> Creates an update statement.</span> -</span><span id="L-4009"><a href="#L-4009"><span class="linenos">4009</span></a> -</span><span id="L-4010"><a href="#L-4010"><span class="linenos">4010</span></a><span class="sd"> Example:</span> -</span><span id="L-4011"><a href="#L-4011"><span class="linenos">4011</span></a><span class="sd"> >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()</span> -</span><span id="L-4012"><a href="#L-4012"><span class="linenos">4012</span></a><span class="sd"> "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"</span> -</span><span id="L-4013"><a href="#L-4013"><span class="linenos">4013</span></a> -</span><span id="L-4014"><a href="#L-4014"><span class="linenos">4014</span></a><span class="sd"> Args:</span> -</span><span id="L-4015"><a href="#L-4015"><span class="linenos">4015</span></a><span class="sd"> *properties (Dict[str, Any]): dictionary of properties to set which are</span> -</span><span id="L-4016"><a href="#L-4016"><span class="linenos">4016</span></a><span class="sd"> auto converted to sql objects eg None -> NULL</span> -</span><span id="L-4017"><a href="#L-4017"><span class="linenos">4017</span></a><span class="sd"> where (str): sql conditional parsed into a WHERE statement</span> -</span><span id="L-4018"><a href="#L-4018"><span class="linenos">4018</span></a><span class="sd"> from_ (str): sql statement parsed into a FROM statement</span> -</span><span id="L-4019"><a href="#L-4019"><span class="linenos">4019</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="L-4020"><a href="#L-4020"><span class="linenos">4020</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="L-4021"><a href="#L-4021"><span class="linenos">4021</span></a> -</span><span id="L-4022"><a href="#L-4022"><span class="linenos">4022</span></a><span class="sd"> Returns:</span> -</span><span id="L-4023"><a href="#L-4023"><span class="linenos">4023</span></a><span class="sd"> Update: the syntax tree for the UPDATE statement.</span> -</span><span id="L-4024"><a href="#L-4024"><span class="linenos">4024</span></a><span class="sd"> """</span> -</span><span id="L-4025"><a href="#L-4025"><span class="linenos">4025</span></a> <span class="n">update</span> <span class="o">=</span> <span class="n">Update</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">))</span> -</span><span id="L-4026"><a href="#L-4026"><span class="linenos">4026</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-4027"><a href="#L-4027"><span class="linenos">4027</span></a> <span class="s2">"expressions"</span><span class="p">,</span> -</span><span id="L-4028"><a href="#L-4028"><span class="linenos">4028</span></a> <span class="p">[</span> -</span><span id="L-4029"><a href="#L-4029"><span class="linenos">4029</span></a> <span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> -</span><span id="L-4030"><a href="#L-4030"><span class="linenos">4030</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-4031"><a href="#L-4031"><span class="linenos">4031</span></a> <span class="p">],</span> -</span><span id="L-4032"><a href="#L-4032"><span class="linenos">4032</span></a> <span class="p">)</span> -</span><span id="L-4033"><a href="#L-4033"><span class="linenos">4033</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="L-4034"><a href="#L-4034"><span class="linenos">4034</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-4035"><a href="#L-4035"><span class="linenos">4035</span></a> <span class="s2">"from"</span><span class="p">,</span> -</span><span id="L-4036"><a href="#L-4036"><span class="linenos">4036</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">from_</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="L-4037"><a href="#L-4037"><span class="linenos">4037</span></a> <span class="p">)</span> -</span><span id="L-4038"><a href="#L-4038"><span class="linenos">4038</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> -</span><span id="L-4039"><a href="#L-4039"><span class="linenos">4039</span></a> <span class="n">where</span> <span class="o">=</span> <span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> -</span><span id="L-4040"><a href="#L-4040"><span class="linenos">4040</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> -</span><span id="L-4041"><a href="#L-4041"><span class="linenos">4041</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-4042"><a href="#L-4042"><span class="linenos">4042</span></a> <span class="s2">"where"</span><span class="p">,</span> -</span><span id="L-4043"><a href="#L-4043"><span class="linenos">4043</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="L-4044"><a href="#L-4044"><span class="linenos">4044</span></a> <span class="p">)</span> -</span><span id="L-4045"><a href="#L-4045"><span class="linenos">4045</span></a> <span class="k">return</span> <span class="n">update</span> -</span><span id="L-4046"><a href="#L-4046"><span class="linenos">4046</span></a> -</span><span id="L-4047"><a href="#L-4047"><span class="linenos">4047</span></a> -</span><span id="L-4048"><a href="#L-4048"><span class="linenos">4048</span></a><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Delete</span><span class="p">:</span> -</span><span id="L-4049"><a href="#L-4049"><span class="linenos">4049</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4050"><a href="#L-4050"><span class="linenos">4050</span></a><span class="sd"> Builds a delete statement.</span> -</span><span id="L-4051"><a href="#L-4051"><span class="linenos">4051</span></a> -</span><span id="L-4052"><a href="#L-4052"><span class="linenos">4052</span></a><span class="sd"> Example:</span> -</span><span id="L-4053"><a href="#L-4053"><span class="linenos">4053</span></a><span class="sd"> >>> delete("my_table", where="id > 1").sql()</span> -</span><span id="L-4054"><a href="#L-4054"><span class="linenos">4054</span></a><span class="sd"> 'DELETE FROM my_table WHERE id > 1'</span> -</span><span id="L-4055"><a href="#L-4055"><span class="linenos">4055</span></a> -</span><span id="L-4056"><a href="#L-4056"><span class="linenos">4056</span></a><span class="sd"> Args:</span> -</span><span id="L-4057"><a href="#L-4057"><span class="linenos">4057</span></a><span class="sd"> where (str|Condition): sql conditional parsed into a WHERE statement</span> -</span><span id="L-4058"><a href="#L-4058"><span class="linenos">4058</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="L-4059"><a href="#L-4059"><span class="linenos">4059</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="L-4060"><a href="#L-4060"><span class="linenos">4060</span></a> -</span><span id="L-4061"><a href="#L-4061"><span class="linenos">4061</span></a><span class="sd"> Returns:</span> -</span><span id="L-4062"><a href="#L-4062"><span class="linenos">4062</span></a><span class="sd"> Delete: the syntax tree for the DELETE statement.</span> -</span><span id="L-4063"><a href="#L-4063"><span class="linenos">4063</span></a><span class="sd"> """</span> -</span><span id="L-4064"><a href="#L-4064"><span class="linenos">4064</span></a> <span class="k">return</span> <span class="n">Delete</span><span class="p">(</span> -</span><span id="L-4065"><a href="#L-4065"><span class="linenos">4065</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="L-4066"><a href="#L-4066"><span class="linenos">4066</span></a> <span class="n">where</span><span class="o">=</span><span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> -</span><span id="L-4067"><a href="#L-4067"><span class="linenos">4067</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">)</span> -</span><span id="L-4068"><a href="#L-4068"><span class="linenos">4068</span></a> <span class="k">else</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="L-4069"><a href="#L-4069"><span class="linenos">4069</span></a> <span class="p">)</span> -</span><span id="L-4070"><a href="#L-4070"><span class="linenos">4070</span></a> +</span><span id="L-3992"><a href="#L-3992"><span class="linenos">3992</span></a> <span class="k">return</span> <span class="n">Intersect</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> +</span><span id="L-3993"><a href="#L-3993"><span class="linenos">3993</span></a> +</span><span id="L-3994"><a href="#L-3994"><span class="linenos">3994</span></a> +</span><span id="L-3995"><a href="#L-3995"><span class="linenos">3995</span></a><span class="k">def</span> <span class="nf">except_</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-3996"><a href="#L-3996"><span class="linenos">3996</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-3997"><a href="#L-3997"><span class="linenos">3997</span></a><span class="sd"> Initializes a syntax tree from one EXCEPT expression.</span> +</span><span id="L-3998"><a href="#L-3998"><span class="linenos">3998</span></a> +</span><span id="L-3999"><a href="#L-3999"><span class="linenos">3999</span></a><span class="sd"> Example:</span> +</span><span id="L-4000"><a href="#L-4000"><span class="linenos">4000</span></a><span class="sd"> >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="L-4001"><a href="#L-4001"><span class="linenos">4001</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> +</span><span id="L-4002"><a href="#L-4002"><span class="linenos">4002</span></a> +</span><span id="L-4003"><a href="#L-4003"><span class="linenos">4003</span></a><span class="sd"> Args:</span> +</span><span id="L-4004"><a href="#L-4004"><span class="linenos">4004</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> +</span><span id="L-4005"><a href="#L-4005"><span class="linenos">4005</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-4006"><a href="#L-4006"><span class="linenos">4006</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> +</span><span id="L-4007"><a href="#L-4007"><span class="linenos">4007</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="L-4008"><a href="#L-4008"><span class="linenos">4008</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="L-4009"><a href="#L-4009"><span class="linenos">4009</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-4010"><a href="#L-4010"><span class="linenos">4010</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="L-4011"><a href="#L-4011"><span class="linenos">4011</span></a><span class="sd"> Returns:</span> +</span><span id="L-4012"><a href="#L-4012"><span class="linenos">4012</span></a><span class="sd"> Except: the syntax tree for the EXCEPT statement.</span> +</span><span id="L-4013"><a href="#L-4013"><span class="linenos">4013</span></a><span class="sd"> """</span> +</span><span id="L-4014"><a href="#L-4014"><span class="linenos">4014</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-4015"><a href="#L-4015"><span class="linenos">4015</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-4016"><a href="#L-4016"><span class="linenos">4016</span></a> +</span><span id="L-4017"><a href="#L-4017"><span class="linenos">4017</span></a> <span class="k">return</span> <span class="n">Except</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> +</span><span id="L-4018"><a href="#L-4018"><span class="linenos">4018</span></a> +</span><span id="L-4019"><a href="#L-4019"><span class="linenos">4019</span></a> +</span><span id="L-4020"><a href="#L-4020"><span class="linenos">4020</span></a><span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-4021"><a href="#L-4021"><span class="linenos">4021</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4022"><a href="#L-4022"><span class="linenos">4022</span></a><span class="sd"> Initializes a syntax tree from one or multiple SELECT expressions.</span> +</span><span id="L-4023"><a href="#L-4023"><span class="linenos">4023</span></a> +</span><span id="L-4024"><a href="#L-4024"><span class="linenos">4024</span></a><span class="sd"> Example:</span> +</span><span id="L-4025"><a href="#L-4025"><span class="linenos">4025</span></a><span class="sd"> >>> select("col1", "col2").from_("tbl").sql()</span> +</span><span id="L-4026"><a href="#L-4026"><span class="linenos">4026</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="L-4027"><a href="#L-4027"><span class="linenos">4027</span></a> +</span><span id="L-4028"><a href="#L-4028"><span class="linenos">4028</span></a><span class="sd"> Args:</span> +</span><span id="L-4029"><a href="#L-4029"><span class="linenos">4029</span></a><span class="sd"> *expressions: the SQL code string to parse as the expressions of a</span> +</span><span id="L-4030"><a href="#L-4030"><span class="linenos">4030</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-4031"><a href="#L-4031"><span class="linenos">4031</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> +</span><span id="L-4032"><a href="#L-4032"><span class="linenos">4032</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="L-4033"><a href="#L-4033"><span class="linenos">4033</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="L-4034"><a href="#L-4034"><span class="linenos">4034</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="L-4035"><a href="#L-4035"><span class="linenos">4035</span></a> +</span><span id="L-4036"><a href="#L-4036"><span class="linenos">4036</span></a><span class="sd"> Returns:</span> +</span><span id="L-4037"><a href="#L-4037"><span class="linenos">4037</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> +</span><span id="L-4038"><a href="#L-4038"><span class="linenos">4038</span></a><span class="sd"> """</span> +</span><span id="L-4039"><a href="#L-4039"><span class="linenos">4039</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-4040"><a href="#L-4040"><span class="linenos">4040</span></a> +</span><span id="L-4041"><a href="#L-4041"><span class="linenos">4041</span></a> +</span><span id="L-4042"><a href="#L-4042"><span class="linenos">4042</span></a><span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="L-4043"><a href="#L-4043"><span class="linenos">4043</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4044"><a href="#L-4044"><span class="linenos">4044</span></a><span class="sd"> Initializes a syntax tree from a FROM expression.</span> +</span><span id="L-4045"><a href="#L-4045"><span class="linenos">4045</span></a> +</span><span id="L-4046"><a href="#L-4046"><span class="linenos">4046</span></a><span class="sd"> Example:</span> +</span><span id="L-4047"><a href="#L-4047"><span class="linenos">4047</span></a><span class="sd"> >>> from_("tbl").select("col1", "col2").sql()</span> +</span><span id="L-4048"><a href="#L-4048"><span class="linenos">4048</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="L-4049"><a href="#L-4049"><span class="linenos">4049</span></a> +</span><span id="L-4050"><a href="#L-4050"><span class="linenos">4050</span></a><span class="sd"> Args:</span> +</span><span id="L-4051"><a href="#L-4051"><span class="linenos">4051</span></a><span class="sd"> *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a</span> +</span><span id="L-4052"><a href="#L-4052"><span class="linenos">4052</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-4053"><a href="#L-4053"><span class="linenos">4053</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression (in the case that the</span> +</span><span id="L-4054"><a href="#L-4054"><span class="linenos">4054</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="L-4055"><a href="#L-4055"><span class="linenos">4055</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="L-4056"><a href="#L-4056"><span class="linenos">4056</span></a><span class="sd"> that the input expression is a SQL string).</span> +</span><span id="L-4057"><a href="#L-4057"><span class="linenos">4057</span></a> +</span><span id="L-4058"><a href="#L-4058"><span class="linenos">4058</span></a><span class="sd"> Returns:</span> +</span><span id="L-4059"><a href="#L-4059"><span class="linenos">4059</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> +</span><span id="L-4060"><a href="#L-4060"><span class="linenos">4060</span></a><span class="sd"> """</span> +</span><span id="L-4061"><a href="#L-4061"><span class="linenos">4061</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-4062"><a href="#L-4062"><span class="linenos">4062</span></a> +</span><span id="L-4063"><a href="#L-4063"><span class="linenos">4063</span></a> +</span><span id="L-4064"><a href="#L-4064"><span class="linenos">4064</span></a><span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Update</span><span class="p">:</span> +</span><span id="L-4065"><a href="#L-4065"><span class="linenos">4065</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4066"><a href="#L-4066"><span class="linenos">4066</span></a><span class="sd"> Creates an update statement.</span> +</span><span id="L-4067"><a href="#L-4067"><span class="linenos">4067</span></a> +</span><span id="L-4068"><a href="#L-4068"><span class="linenos">4068</span></a><span class="sd"> Example:</span> +</span><span id="L-4069"><a href="#L-4069"><span class="linenos">4069</span></a><span class="sd"> >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()</span> +</span><span id="L-4070"><a href="#L-4070"><span class="linenos">4070</span></a><span class="sd"> "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"</span> </span><span id="L-4071"><a href="#L-4071"><span class="linenos">4071</span></a> -</span><span id="L-4072"><a href="#L-4072"><span class="linenos">4072</span></a><span class="k">def</span> <span class="nf">condition</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="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="L-4073"><a href="#L-4073"><span class="linenos">4073</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4074"><a href="#L-4074"><span class="linenos">4074</span></a><span class="sd"> Initialize a logical condition expression.</span> -</span><span id="L-4075"><a href="#L-4075"><span class="linenos">4075</span></a> -</span><span id="L-4076"><a href="#L-4076"><span class="linenos">4076</span></a><span class="sd"> Example:</span> -</span><span id="L-4077"><a href="#L-4077"><span class="linenos">4077</span></a><span class="sd"> >>> condition("x=1").sql()</span> -</span><span id="L-4078"><a href="#L-4078"><span class="linenos">4078</span></a><span class="sd"> 'x = 1'</span> +</span><span id="L-4072"><a href="#L-4072"><span class="linenos">4072</span></a><span class="sd"> Args:</span> +</span><span id="L-4073"><a href="#L-4073"><span class="linenos">4073</span></a><span class="sd"> *properties (Dict[str, Any]): dictionary of properties to set which are</span> +</span><span id="L-4074"><a href="#L-4074"><span class="linenos">4074</span></a><span class="sd"> auto converted to sql objects eg None -> NULL</span> +</span><span id="L-4075"><a href="#L-4075"><span class="linenos">4075</span></a><span class="sd"> where (str): sql conditional parsed into a WHERE statement</span> +</span><span id="L-4076"><a href="#L-4076"><span class="linenos">4076</span></a><span class="sd"> from_ (str): sql statement parsed into a FROM statement</span> +</span><span id="L-4077"><a href="#L-4077"><span class="linenos">4077</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="L-4078"><a href="#L-4078"><span class="linenos">4078</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> </span><span id="L-4079"><a href="#L-4079"><span class="linenos">4079</span></a> -</span><span id="L-4080"><a href="#L-4080"><span class="linenos">4080</span></a><span class="sd"> This is helpful for composing larger logical syntax trees:</span> -</span><span id="L-4081"><a href="#L-4081"><span class="linenos">4081</span></a><span class="sd"> >>> where = condition("x=1")</span> -</span><span id="L-4082"><a href="#L-4082"><span class="linenos">4082</span></a><span class="sd"> >>> where = where.and_("y=1")</span> -</span><span id="L-4083"><a href="#L-4083"><span class="linenos">4083</span></a><span class="sd"> >>> Select().from_("tbl").select("*").where(where).sql()</span> -</span><span id="L-4084"><a href="#L-4084"><span class="linenos">4084</span></a><span class="sd"> 'SELECT * FROM tbl WHERE x = 1 AND y = 1'</span> -</span><span id="L-4085"><a href="#L-4085"><span class="linenos">4085</span></a> -</span><span id="L-4086"><a href="#L-4086"><span class="linenos">4086</span></a><span class="sd"> Args:</span> -</span><span id="L-4087"><a href="#L-4087"><span class="linenos">4087</span></a><span class="sd"> *expression (str | Expression): the SQL code string to parse.</span> -</span><span id="L-4088"><a href="#L-4088"><span class="linenos">4088</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-4089"><a href="#L-4089"><span class="linenos">4089</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression (in the case that the</span> -</span><span id="L-4090"><a href="#L-4090"><span class="linenos">4090</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="L-4091"><a href="#L-4091"><span class="linenos">4091</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="L-4092"><a href="#L-4092"><span class="linenos">4092</span></a><span class="sd"> that the input expression is a SQL string).</span> -</span><span id="L-4093"><a href="#L-4093"><span class="linenos">4093</span></a> -</span><span id="L-4094"><a href="#L-4094"><span class="linenos">4094</span></a><span class="sd"> Returns:</span> -</span><span id="L-4095"><a href="#L-4095"><span class="linenos">4095</span></a><span class="sd"> Condition: the expression</span> -</span><span id="L-4096"><a href="#L-4096"><span class="linenos">4096</span></a><span class="sd"> """</span> -</span><span id="L-4097"><a href="#L-4097"><span class="linenos">4097</span></a> <span class="k">return</span> <span class="n">maybe_parse</span><span class="p">(</span> <span class="c1"># type: ignore</span> -</span><span id="L-4098"><a href="#L-4098"><span class="linenos">4098</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-4099"><a href="#L-4099"><span class="linenos">4099</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Condition</span><span class="p">,</span> -</span><span id="L-4100"><a href="#L-4100"><span class="linenos">4100</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-4101"><a href="#L-4101"><span class="linenos">4101</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-4102"><a href="#L-4102"><span class="linenos">4102</span></a> <span class="p">)</span> -</span><span id="L-4103"><a href="#L-4103"><span class="linenos">4103</span></a> +</span><span id="L-4080"><a href="#L-4080"><span class="linenos">4080</span></a><span class="sd"> Returns:</span> +</span><span id="L-4081"><a href="#L-4081"><span class="linenos">4081</span></a><span class="sd"> Update: the syntax tree for the UPDATE statement.</span> +</span><span id="L-4082"><a href="#L-4082"><span class="linenos">4082</span></a><span class="sd"> """</span> +</span><span id="L-4083"><a href="#L-4083"><span class="linenos">4083</span></a> <span class="n">update</span> <span class="o">=</span> <span class="n">Update</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">))</span> +</span><span id="L-4084"><a href="#L-4084"><span class="linenos">4084</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-4085"><a href="#L-4085"><span class="linenos">4085</span></a> <span class="s2">"expressions"</span><span class="p">,</span> +</span><span id="L-4086"><a href="#L-4086"><span class="linenos">4086</span></a> <span class="p">[</span> +</span><span id="L-4087"><a href="#L-4087"><span class="linenos">4087</span></a> <span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> +</span><span id="L-4088"><a href="#L-4088"><span class="linenos">4088</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-4089"><a href="#L-4089"><span class="linenos">4089</span></a> <span class="p">],</span> +</span><span id="L-4090"><a href="#L-4090"><span class="linenos">4090</span></a> <span class="p">)</span> +</span><span id="L-4091"><a href="#L-4091"><span class="linenos">4091</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="L-4092"><a href="#L-4092"><span class="linenos">4092</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-4093"><a href="#L-4093"><span class="linenos">4093</span></a> <span class="s2">"from"</span><span class="p">,</span> +</span><span id="L-4094"><a href="#L-4094"><span class="linenos">4094</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">from_</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="L-4095"><a href="#L-4095"><span class="linenos">4095</span></a> <span class="p">)</span> +</span><span id="L-4096"><a href="#L-4096"><span class="linenos">4096</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="L-4097"><a href="#L-4097"><span class="linenos">4097</span></a> <span class="n">where</span> <span class="o">=</span> <span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> +</span><span id="L-4098"><a href="#L-4098"><span class="linenos">4098</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> +</span><span id="L-4099"><a href="#L-4099"><span class="linenos">4099</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-4100"><a href="#L-4100"><span class="linenos">4100</span></a> <span class="s2">"where"</span><span class="p">,</span> +</span><span id="L-4101"><a href="#L-4101"><span class="linenos">4101</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="L-4102"><a href="#L-4102"><span class="linenos">4102</span></a> <span class="p">)</span> +</span><span id="L-4103"><a href="#L-4103"><span class="linenos">4103</span></a> <span class="k">return</span> <span class="n">update</span> </span><span id="L-4104"><a href="#L-4104"><span class="linenos">4104</span></a> -</span><span id="L-4105"><a href="#L-4105"><span class="linenos">4105</span></a><span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">And</span><span class="p">:</span> -</span><span id="L-4106"><a href="#L-4106"><span class="linenos">4106</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4107"><a href="#L-4107"><span class="linenos">4107</span></a><span class="sd"> Combine multiple conditions with an AND logical operator.</span> -</span><span id="L-4108"><a href="#L-4108"><span class="linenos">4108</span></a> -</span><span id="L-4109"><a href="#L-4109"><span class="linenos">4109</span></a><span class="sd"> Example:</span> -</span><span id="L-4110"><a href="#L-4110"><span class="linenos">4110</span></a><span class="sd"> >>> and_("x=1", and_("y=1", "z=1")).sql()</span> -</span><span id="L-4111"><a href="#L-4111"><span class="linenos">4111</span></a><span class="sd"> 'x = 1 AND (y = 1 AND z = 1)'</span> -</span><span id="L-4112"><a href="#L-4112"><span class="linenos">4112</span></a> -</span><span id="L-4113"><a href="#L-4113"><span class="linenos">4113</span></a><span class="sd"> Args:</span> -</span><span id="L-4114"><a href="#L-4114"><span class="linenos">4114</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-4115"><a href="#L-4115"><span class="linenos">4115</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-4116"><a href="#L-4116"><span class="linenos">4116</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-4105"><a href="#L-4105"><span class="linenos">4105</span></a> +</span><span id="L-4106"><a href="#L-4106"><span class="linenos">4106</span></a><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Delete</span><span class="p">:</span> +</span><span id="L-4107"><a href="#L-4107"><span class="linenos">4107</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4108"><a href="#L-4108"><span class="linenos">4108</span></a><span class="sd"> Builds a delete statement.</span> +</span><span id="L-4109"><a href="#L-4109"><span class="linenos">4109</span></a> +</span><span id="L-4110"><a href="#L-4110"><span class="linenos">4110</span></a><span class="sd"> Example:</span> +</span><span id="L-4111"><a href="#L-4111"><span class="linenos">4111</span></a><span class="sd"> >>> delete("my_table", where="id > 1").sql()</span> +</span><span id="L-4112"><a href="#L-4112"><span class="linenos">4112</span></a><span class="sd"> 'DELETE FROM my_table WHERE id > 1'</span> +</span><span id="L-4113"><a href="#L-4113"><span class="linenos">4113</span></a> +</span><span id="L-4114"><a href="#L-4114"><span class="linenos">4114</span></a><span class="sd"> Args:</span> +</span><span id="L-4115"><a href="#L-4115"><span class="linenos">4115</span></a><span class="sd"> where (str|Condition): sql conditional parsed into a WHERE statement</span> +</span><span id="L-4116"><a href="#L-4116"><span class="linenos">4116</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> </span><span id="L-4117"><a href="#L-4117"><span class="linenos">4117</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> </span><span id="L-4118"><a href="#L-4118"><span class="linenos">4118</span></a> </span><span id="L-4119"><a href="#L-4119"><span class="linenos">4119</span></a><span class="sd"> Returns:</span> -</span><span id="L-4120"><a href="#L-4120"><span class="linenos">4120</span></a><span class="sd"> And: the new condition</span> +</span><span id="L-4120"><a href="#L-4120"><span class="linenos">4120</span></a><span class="sd"> Delete: the syntax tree for the DELETE statement.</span> </span><span id="L-4121"><a href="#L-4121"><span class="linenos">4121</span></a><span class="sd"> """</span> -</span><span id="L-4122"><a href="#L-4122"><span class="linenos">4122</span></a> <span class="k">return</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">And</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-4123"><a href="#L-4123"><span class="linenos">4123</span></a> -</span><span id="L-4124"><a href="#L-4124"><span class="linenos">4124</span></a> -</span><span id="L-4125"><a href="#L-4125"><span class="linenos">4125</span></a><span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Or</span><span class="p">:</span> -</span><span id="L-4126"><a href="#L-4126"><span class="linenos">4126</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4127"><a href="#L-4127"><span class="linenos">4127</span></a><span class="sd"> Combine multiple conditions with an OR logical operator.</span> +</span><span id="L-4122"><a href="#L-4122"><span class="linenos">4122</span></a> <span class="k">return</span> <span class="n">Delete</span><span class="p">(</span> +</span><span id="L-4123"><a href="#L-4123"><span class="linenos">4123</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="L-4124"><a href="#L-4124"><span class="linenos">4124</span></a> <span class="n">where</span><span class="o">=</span><span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> +</span><span id="L-4125"><a href="#L-4125"><span class="linenos">4125</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">)</span> +</span><span id="L-4126"><a href="#L-4126"><span class="linenos">4126</span></a> <span class="k">else</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="L-4127"><a href="#L-4127"><span class="linenos">4127</span></a> <span class="p">)</span> </span><span id="L-4128"><a href="#L-4128"><span class="linenos">4128</span></a> -</span><span id="L-4129"><a href="#L-4129"><span class="linenos">4129</span></a><span class="sd"> Example:</span> -</span><span id="L-4130"><a href="#L-4130"><span class="linenos">4130</span></a><span class="sd"> >>> or_("x=1", or_("y=1", "z=1")).sql()</span> -</span><span id="L-4131"><a href="#L-4131"><span class="linenos">4131</span></a><span class="sd"> 'x = 1 OR (y = 1 OR z = 1)'</span> -</span><span id="L-4132"><a href="#L-4132"><span class="linenos">4132</span></a> -</span><span id="L-4133"><a href="#L-4133"><span class="linenos">4133</span></a><span class="sd"> Args:</span> -</span><span id="L-4134"><a href="#L-4134"><span class="linenos">4134</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-4135"><a href="#L-4135"><span class="linenos">4135</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-4136"><a href="#L-4136"><span class="linenos">4136</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-4137"><a href="#L-4137"><span class="linenos">4137</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="L-4138"><a href="#L-4138"><span class="linenos">4138</span></a> -</span><span id="L-4139"><a href="#L-4139"><span class="linenos">4139</span></a><span class="sd"> Returns:</span> -</span><span id="L-4140"><a href="#L-4140"><span class="linenos">4140</span></a><span class="sd"> Or: the new condition</span> -</span><span id="L-4141"><a href="#L-4141"><span class="linenos">4141</span></a><span class="sd"> """</span> -</span><span id="L-4142"><a href="#L-4142"><span class="linenos">4142</span></a> <span class="k">return</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-4129"><a href="#L-4129"><span class="linenos">4129</span></a> +</span><span id="L-4130"><a href="#L-4130"><span class="linenos">4130</span></a><span class="k">def</span> <span class="nf">condition</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="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="L-4131"><a href="#L-4131"><span class="linenos">4131</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4132"><a href="#L-4132"><span class="linenos">4132</span></a><span class="sd"> Initialize a logical condition expression.</span> +</span><span id="L-4133"><a href="#L-4133"><span class="linenos">4133</span></a> +</span><span id="L-4134"><a href="#L-4134"><span class="linenos">4134</span></a><span class="sd"> Example:</span> +</span><span id="L-4135"><a href="#L-4135"><span class="linenos">4135</span></a><span class="sd"> >>> condition("x=1").sql()</span> +</span><span id="L-4136"><a href="#L-4136"><span class="linenos">4136</span></a><span class="sd"> 'x = 1'</span> +</span><span id="L-4137"><a href="#L-4137"><span class="linenos">4137</span></a> +</span><span id="L-4138"><a href="#L-4138"><span class="linenos">4138</span></a><span class="sd"> This is helpful for composing larger logical syntax trees:</span> +</span><span id="L-4139"><a href="#L-4139"><span class="linenos">4139</span></a><span class="sd"> >>> where = condition("x=1")</span> +</span><span id="L-4140"><a href="#L-4140"><span class="linenos">4140</span></a><span class="sd"> >>> where = where.and_("y=1")</span> +</span><span id="L-4141"><a href="#L-4141"><span class="linenos">4141</span></a><span class="sd"> >>> Select().from_("tbl").select("*").where(where).sql()</span> +</span><span id="L-4142"><a href="#L-4142"><span class="linenos">4142</span></a><span class="sd"> 'SELECT * FROM tbl WHERE x = 1 AND y = 1'</span> </span><span id="L-4143"><a href="#L-4143"><span class="linenos">4143</span></a> -</span><span id="L-4144"><a href="#L-4144"><span class="linenos">4144</span></a> -</span><span id="L-4145"><a href="#L-4145"><span class="linenos">4145</span></a><span class="k">def</span> <span class="nf">not_</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="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Not</span><span class="p">:</span> -</span><span id="L-4146"><a href="#L-4146"><span class="linenos">4146</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4147"><a href="#L-4147"><span class="linenos">4147</span></a><span class="sd"> Wrap a condition with a NOT operator.</span> -</span><span id="L-4148"><a href="#L-4148"><span class="linenos">4148</span></a> -</span><span id="L-4149"><a href="#L-4149"><span class="linenos">4149</span></a><span class="sd"> Example:</span> -</span><span id="L-4150"><a href="#L-4150"><span class="linenos">4150</span></a><span class="sd"> >>> not_("this_suit='black'").sql()</span> -</span><span id="L-4151"><a href="#L-4151"><span class="linenos">4151</span></a><span class="sd"> "NOT this_suit = 'black'"</span> -</span><span id="L-4152"><a href="#L-4152"><span class="linenos">4152</span></a> -</span><span id="L-4153"><a href="#L-4153"><span class="linenos">4153</span></a><span class="sd"> Args:</span> -</span><span id="L-4154"><a href="#L-4154"><span class="linenos">4154</span></a><span class="sd"> expression (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-4155"><a href="#L-4155"><span class="linenos">4155</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-4156"><a href="#L-4156"><span class="linenos">4156</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-4157"><a href="#L-4157"><span class="linenos">4157</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="L-4158"><a href="#L-4158"><span class="linenos">4158</span></a> -</span><span id="L-4159"><a href="#L-4159"><span class="linenos">4159</span></a><span class="sd"> Returns:</span> -</span><span id="L-4160"><a href="#L-4160"><span class="linenos">4160</span></a><span class="sd"> Not: the new condition</span> -</span><span id="L-4161"><a href="#L-4161"><span class="linenos">4161</span></a><span class="sd"> """</span> -</span><span id="L-4162"><a href="#L-4162"><span class="linenos">4162</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">condition</span><span class="p">(</span> -</span><span id="L-4163"><a href="#L-4163"><span class="linenos">4163</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-4164"><a href="#L-4164"><span class="linenos">4164</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="L-4165"><a href="#L-4165"><span class="linenos">4165</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-4166"><a href="#L-4166"><span class="linenos">4166</span></a> <span class="p">)</span> -</span><span id="L-4167"><a href="#L-4167"><span class="linenos">4167</span></a> <span class="k">return</span> <span class="n">Not</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_wrap_operator</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> -</span><span id="L-4168"><a href="#L-4168"><span class="linenos">4168</span></a> -</span><span id="L-4169"><a href="#L-4169"><span class="linenos">4169</span></a> -</span><span id="L-4170"><a href="#L-4170"><span class="linenos">4170</span></a><span class="k">def</span> <span class="nf">paren</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">Paren</span><span class="p">:</span> -</span><span id="L-4171"><a href="#L-4171"><span class="linenos">4171</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-4172"><a href="#L-4172"><span class="linenos">4172</span></a> -</span><span id="L-4173"><a href="#L-4173"><span class="linenos">4173</span></a> -</span><span id="L-4174"><a href="#L-4174"><span class="linenos">4174</span></a><span class="n">SAFE_IDENTIFIER_RE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"^[_a-zA-Z][\w]*$"</span><span class="p">)</span> -</span><span id="L-4175"><a href="#L-4175"><span class="linenos">4175</span></a> +</span><span id="L-4144"><a href="#L-4144"><span class="linenos">4144</span></a><span class="sd"> Args:</span> +</span><span id="L-4145"><a href="#L-4145"><span class="linenos">4145</span></a><span class="sd"> *expression (str | Expression): the SQL code string to parse.</span> +</span><span id="L-4146"><a href="#L-4146"><span class="linenos">4146</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-4147"><a href="#L-4147"><span class="linenos">4147</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression (in the case that the</span> +</span><span id="L-4148"><a href="#L-4148"><span class="linenos">4148</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="L-4149"><a href="#L-4149"><span class="linenos">4149</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="L-4150"><a href="#L-4150"><span class="linenos">4150</span></a><span class="sd"> that the input expression is a SQL string).</span> +</span><span id="L-4151"><a href="#L-4151"><span class="linenos">4151</span></a> +</span><span id="L-4152"><a href="#L-4152"><span class="linenos">4152</span></a><span class="sd"> Returns:</span> +</span><span id="L-4153"><a href="#L-4153"><span class="linenos">4153</span></a><span class="sd"> Condition: the expression</span> +</span><span id="L-4154"><a href="#L-4154"><span class="linenos">4154</span></a><span class="sd"> """</span> +</span><span id="L-4155"><a href="#L-4155"><span class="linenos">4155</span></a> <span class="k">return</span> <span class="n">maybe_parse</span><span class="p">(</span> <span class="c1"># type: ignore</span> +</span><span id="L-4156"><a href="#L-4156"><span class="linenos">4156</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-4157"><a href="#L-4157"><span class="linenos">4157</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Condition</span><span class="p">,</span> +</span><span id="L-4158"><a href="#L-4158"><span class="linenos">4158</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-4159"><a href="#L-4159"><span class="linenos">4159</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-4160"><a href="#L-4160"><span class="linenos">4160</span></a> <span class="p">)</span> +</span><span id="L-4161"><a href="#L-4161"><span class="linenos">4161</span></a> +</span><span id="L-4162"><a href="#L-4162"><span class="linenos">4162</span></a> +</span><span id="L-4163"><a href="#L-4163"><span class="linenos">4163</span></a><span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">And</span><span class="p">:</span> +</span><span id="L-4164"><a href="#L-4164"><span class="linenos">4164</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4165"><a href="#L-4165"><span class="linenos">4165</span></a><span class="sd"> Combine multiple conditions with an AND logical operator.</span> +</span><span id="L-4166"><a href="#L-4166"><span class="linenos">4166</span></a> +</span><span id="L-4167"><a href="#L-4167"><span class="linenos">4167</span></a><span class="sd"> Example:</span> +</span><span id="L-4168"><a href="#L-4168"><span class="linenos">4168</span></a><span class="sd"> >>> and_("x=1", and_("y=1", "z=1")).sql()</span> +</span><span id="L-4169"><a href="#L-4169"><span class="linenos">4169</span></a><span class="sd"> 'x = 1 AND (y = 1 AND z = 1)'</span> +</span><span id="L-4170"><a href="#L-4170"><span class="linenos">4170</span></a> +</span><span id="L-4171"><a href="#L-4171"><span class="linenos">4171</span></a><span class="sd"> Args:</span> +</span><span id="L-4172"><a href="#L-4172"><span class="linenos">4172</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-4173"><a href="#L-4173"><span class="linenos">4173</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-4174"><a href="#L-4174"><span class="linenos">4174</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-4175"><a href="#L-4175"><span class="linenos">4175</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> </span><span id="L-4176"><a href="#L-4176"><span class="linenos">4176</span></a> -</span><span id="L-4177"><a href="#L-4177"><span class="linenos">4177</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-4178"><a href="#L-4178"><span class="linenos">4178</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">quoted</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 class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-4179"><a href="#L-4179"><span class="linenos">4179</span></a> <span class="o">...</span> -</span><span id="L-4180"><a href="#L-4180"><span class="linenos">4180</span></a> +</span><span id="L-4177"><a href="#L-4177"><span class="linenos">4177</span></a><span class="sd"> Returns:</span> +</span><span id="L-4178"><a href="#L-4178"><span class="linenos">4178</span></a><span class="sd"> And: the new condition</span> +</span><span id="L-4179"><a href="#L-4179"><span class="linenos">4179</span></a><span class="sd"> """</span> +</span><span id="L-4180"><a href="#L-4180"><span class="linenos">4180</span></a> <span class="k">return</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">And</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="L-4181"><a href="#L-4181"><span class="linenos">4181</span></a> -</span><span id="L-4182"><a href="#L-4182"><span class="linenos">4182</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-4183"><a href="#L-4183"><span class="linenos">4183</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> <span class="n">quoted</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 class="p">)</span> <span class="o">-></span> <span class="n">Identifier</span><span class="p">:</span> -</span><span id="L-4184"><a href="#L-4184"><span class="linenos">4184</span></a> <span class="o">...</span> -</span><span id="L-4185"><a href="#L-4185"><span class="linenos">4185</span></a> +</span><span id="L-4182"><a href="#L-4182"><span class="linenos">4182</span></a> +</span><span id="L-4183"><a href="#L-4183"><span class="linenos">4183</span></a><span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Or</span><span class="p">:</span> +</span><span id="L-4184"><a href="#L-4184"><span class="linenos">4184</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4185"><a href="#L-4185"><span class="linenos">4185</span></a><span class="sd"> Combine multiple conditions with an OR logical operator.</span> </span><span id="L-4186"><a href="#L-4186"><span class="linenos">4186</span></a> -</span><span id="L-4187"><a href="#L-4187"><span class="linenos">4187</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="L-4188"><a href="#L-4188"><span class="linenos">4188</span></a><span class="w"> </span><span class="sd">"""Builds an identifier.</span> -</span><span id="L-4189"><a href="#L-4189"><span class="linenos">4189</span></a> -</span><span id="L-4190"><a href="#L-4190"><span class="linenos">4190</span></a><span class="sd"> Args:</span> -</span><span id="L-4191"><a href="#L-4191"><span class="linenos">4191</span></a><span class="sd"> name: The name to turn into an identifier.</span> -</span><span id="L-4192"><a href="#L-4192"><span class="linenos">4192</span></a><span class="sd"> quoted: Whether or not force quote the identifier.</span> -</span><span id="L-4193"><a href="#L-4193"><span class="linenos">4193</span></a> -</span><span id="L-4194"><a href="#L-4194"><span class="linenos">4194</span></a><span class="sd"> Returns:</span> -</span><span id="L-4195"><a href="#L-4195"><span class="linenos">4195</span></a><span class="sd"> The identifier ast node.</span> -</span><span id="L-4196"><a href="#L-4196"><span class="linenos">4196</span></a><span class="sd"> """</span> -</span><span id="L-4197"><a href="#L-4197"><span class="linenos">4197</span></a> -</span><span id="L-4198"><a href="#L-4198"><span class="linenos">4198</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-4199"><a href="#L-4199"><span class="linenos">4199</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-4200"><a href="#L-4200"><span class="linenos">4200</span></a> -</span><span id="L-4201"><a href="#L-4201"><span class="linenos">4201</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Identifier</span><span class="p">):</span> -</span><span id="L-4202"><a href="#L-4202"><span class="linenos">4202</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">name</span> -</span><span id="L-4203"><a href="#L-4203"><span class="linenos">4203</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-4204"><a href="#L-4204"><span class="linenos">4204</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">Identifier</span><span class="p">(</span> -</span><span id="L-4205"><a href="#L-4205"><span class="linenos">4205</span></a> <span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> -</span><span id="L-4206"><a href="#L-4206"><span class="linenos">4206</span></a> <span class="n">quoted</span><span class="o">=</span><span class="ow">not</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">quoted</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">quoted</span><span class="p">,</span> -</span><span id="L-4207"><a href="#L-4207"><span class="linenos">4207</span></a> <span class="p">)</span> -</span><span id="L-4208"><a href="#L-4208"><span class="linenos">4208</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4209"><a href="#L-4209"><span class="linenos">4209</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Name needs to be a string or an Identifier, got: </span><span class="si">{</span><span class="n">name</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-4210"><a href="#L-4210"><span class="linenos">4210</span></a> <span class="k">return</span> <span class="n">identifier</span> -</span><span id="L-4211"><a href="#L-4211"><span class="linenos">4211</span></a> -</span><span id="L-4212"><a href="#L-4212"><span class="linenos">4212</span></a> -</span><span id="L-4213"><a href="#L-4213"><span class="linenos">4213</span></a><span class="n">INTERVAL_STRING_RE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"\s*([0-9]+)\s*([a-zA-Z]+)\s*"</span><span class="p">)</span> -</span><span id="L-4214"><a href="#L-4214"><span class="linenos">4214</span></a> -</span><span id="L-4215"><a href="#L-4215"><span class="linenos">4215</span></a> -</span><span id="L-4216"><a href="#L-4216"><span class="linenos">4216</span></a><span class="k">def</span> <span class="nf">to_interval</span><span class="p">(</span><span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="n">Interval</span><span class="p">:</span> -</span><span id="L-4217"><a href="#L-4217"><span class="linenos">4217</span></a><span class="w"> </span><span class="sd">"""Builds an interval expression from a string like '1 day' or '5 months'."""</span> -</span><span id="L-4218"><a href="#L-4218"><span class="linenos">4218</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> -</span><span id="L-4219"><a href="#L-4219"><span class="linenos">4219</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-4220"><a href="#L-4220"><span class="linenos">4220</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> -</span><span id="L-4221"><a href="#L-4221"><span class="linenos">4221</span></a> -</span><span id="L-4222"><a href="#L-4222"><span class="linenos">4222</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-4223"><a href="#L-4223"><span class="linenos">4223</span></a> -</span><span id="L-4224"><a href="#L-4224"><span class="linenos">4224</span></a> <span class="n">interval_parts</span> <span class="o">=</span> <span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-4225"><a href="#L-4225"><span class="linenos">4225</span></a> -</span><span id="L-4226"><a href="#L-4226"><span class="linenos">4226</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval_parts</span><span class="p">:</span> -</span><span id="L-4227"><a href="#L-4227"><span class="linenos">4227</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> -</span><span id="L-4228"><a href="#L-4228"><span class="linenos">4228</span></a> -</span><span id="L-4229"><a href="#L-4229"><span class="linenos">4229</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> -</span><span id="L-4230"><a href="#L-4230"><span class="linenos">4230</span></a> <span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> -</span><span id="L-4231"><a href="#L-4231"><span class="linenos">4231</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">)),</span> -</span><span id="L-4232"><a href="#L-4232"><span class="linenos">4232</span></a> <span class="p">)</span> +</span><span id="L-4187"><a href="#L-4187"><span class="linenos">4187</span></a><span class="sd"> Example:</span> +</span><span id="L-4188"><a href="#L-4188"><span class="linenos">4188</span></a><span class="sd"> >>> or_("x=1", or_("y=1", "z=1")).sql()</span> +</span><span id="L-4189"><a href="#L-4189"><span class="linenos">4189</span></a><span class="sd"> 'x = 1 OR (y = 1 OR z = 1)'</span> +</span><span id="L-4190"><a href="#L-4190"><span class="linenos">4190</span></a> +</span><span id="L-4191"><a href="#L-4191"><span class="linenos">4191</span></a><span class="sd"> Args:</span> +</span><span id="L-4192"><a href="#L-4192"><span class="linenos">4192</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-4193"><a href="#L-4193"><span class="linenos">4193</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-4194"><a href="#L-4194"><span class="linenos">4194</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-4195"><a href="#L-4195"><span class="linenos">4195</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-4196"><a href="#L-4196"><span class="linenos">4196</span></a> +</span><span id="L-4197"><a href="#L-4197"><span class="linenos">4197</span></a><span class="sd"> Returns:</span> +</span><span id="L-4198"><a href="#L-4198"><span class="linenos">4198</span></a><span class="sd"> Or: the new condition</span> +</span><span id="L-4199"><a href="#L-4199"><span class="linenos">4199</span></a><span class="sd"> """</span> +</span><span id="L-4200"><a href="#L-4200"><span class="linenos">4200</span></a> <span class="k">return</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-4201"><a href="#L-4201"><span class="linenos">4201</span></a> +</span><span id="L-4202"><a href="#L-4202"><span class="linenos">4202</span></a> +</span><span id="L-4203"><a href="#L-4203"><span class="linenos">4203</span></a><span class="k">def</span> <span class="nf">not_</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="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Not</span><span class="p">:</span> +</span><span id="L-4204"><a href="#L-4204"><span class="linenos">4204</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4205"><a href="#L-4205"><span class="linenos">4205</span></a><span class="sd"> Wrap a condition with a NOT operator.</span> +</span><span id="L-4206"><a href="#L-4206"><span class="linenos">4206</span></a> +</span><span id="L-4207"><a href="#L-4207"><span class="linenos">4207</span></a><span class="sd"> Example:</span> +</span><span id="L-4208"><a href="#L-4208"><span class="linenos">4208</span></a><span class="sd"> >>> not_("this_suit='black'").sql()</span> +</span><span id="L-4209"><a href="#L-4209"><span class="linenos">4209</span></a><span class="sd"> "NOT this_suit = 'black'"</span> +</span><span id="L-4210"><a href="#L-4210"><span class="linenos">4210</span></a> +</span><span id="L-4211"><a href="#L-4211"><span class="linenos">4211</span></a><span class="sd"> Args:</span> +</span><span id="L-4212"><a href="#L-4212"><span class="linenos">4212</span></a><span class="sd"> expression (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-4213"><a href="#L-4213"><span class="linenos">4213</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-4214"><a href="#L-4214"><span class="linenos">4214</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-4215"><a href="#L-4215"><span class="linenos">4215</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-4216"><a href="#L-4216"><span class="linenos">4216</span></a> +</span><span id="L-4217"><a href="#L-4217"><span class="linenos">4217</span></a><span class="sd"> Returns:</span> +</span><span id="L-4218"><a href="#L-4218"><span class="linenos">4218</span></a><span class="sd"> Not: the new condition</span> +</span><span id="L-4219"><a href="#L-4219"><span class="linenos">4219</span></a><span class="sd"> """</span> +</span><span id="L-4220"><a href="#L-4220"><span class="linenos">4220</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">condition</span><span class="p">(</span> +</span><span id="L-4221"><a href="#L-4221"><span class="linenos">4221</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-4222"><a href="#L-4222"><span class="linenos">4222</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="L-4223"><a href="#L-4223"><span class="linenos">4223</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-4224"><a href="#L-4224"><span class="linenos">4224</span></a> <span class="p">)</span> +</span><span id="L-4225"><a href="#L-4225"><span class="linenos">4225</span></a> <span class="k">return</span> <span class="n">Not</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_wrap_operator</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> +</span><span id="L-4226"><a href="#L-4226"><span class="linenos">4226</span></a> +</span><span id="L-4227"><a href="#L-4227"><span class="linenos">4227</span></a> +</span><span id="L-4228"><a href="#L-4228"><span class="linenos">4228</span></a><span class="k">def</span> <span class="nf">paren</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">Paren</span><span class="p">:</span> +</span><span id="L-4229"><a href="#L-4229"><span class="linenos">4229</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-4230"><a href="#L-4230"><span class="linenos">4230</span></a> +</span><span id="L-4231"><a href="#L-4231"><span class="linenos">4231</span></a> +</span><span id="L-4232"><a href="#L-4232"><span class="linenos">4232</span></a><span class="n">SAFE_IDENTIFIER_RE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"^[_a-zA-Z][\w]*$"</span><span class="p">)</span> </span><span id="L-4233"><a href="#L-4233"><span class="linenos">4233</span></a> </span><span id="L-4234"><a href="#L-4234"><span class="linenos">4234</span></a> </span><span id="L-4235"><a href="#L-4235"><span class="linenos">4235</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-4236"><a href="#L-4236"><span class="linenos">4236</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> +</span><span id="L-4236"><a href="#L-4236"><span class="linenos">4236</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="n">quoted</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 class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> </span><span id="L-4237"><a href="#L-4237"><span class="linenos">4237</span></a> <span class="o">...</span> </span><span id="L-4238"><a href="#L-4238"><span class="linenos">4238</span></a> </span><span id="L-4239"><a href="#L-4239"><span class="linenos">4239</span></a> </span><span id="L-4240"><a href="#L-4240"><span class="linenos">4240</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> -</span><span id="L-4241"><a href="#L-4241"><span class="linenos">4241</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-4241"><a href="#L-4241"><span class="linenos">4241</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> <span class="n">quoted</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 class="p">)</span> <span class="o">-></span> <span class="n">Identifier</span><span class="p">:</span> </span><span id="L-4242"><a href="#L-4242"><span class="linenos">4242</span></a> <span class="o">...</span> </span><span id="L-4243"><a href="#L-4243"><span class="linenos">4243</span></a> </span><span id="L-4244"><a href="#L-4244"><span class="linenos">4244</span></a> -</span><span id="L-4245"><a href="#L-4245"><span class="linenos">4245</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Table</span><span class="p">]:</span> -</span><span id="L-4246"><a href="#L-4246"><span class="linenos">4246</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4247"><a href="#L-4247"><span class="linenos">4247</span></a><span class="sd"> Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.</span> -</span><span id="L-4248"><a href="#L-4248"><span class="linenos">4248</span></a><span class="sd"> If a table is passed in then that table is returned.</span> -</span><span id="L-4249"><a href="#L-4249"><span class="linenos">4249</span></a> -</span><span id="L-4250"><a href="#L-4250"><span class="linenos">4250</span></a><span class="sd"> Args:</span> -</span><span id="L-4251"><a href="#L-4251"><span class="linenos">4251</span></a><span class="sd"> sql_path: a `[catalog].[schema].[table]` string.</span> -</span><span id="L-4252"><a href="#L-4252"><span class="linenos">4252</span></a> -</span><span id="L-4253"><a href="#L-4253"><span class="linenos">4253</span></a><span class="sd"> Returns:</span> -</span><span id="L-4254"><a href="#L-4254"><span class="linenos">4254</span></a><span class="sd"> A table expression.</span> -</span><span id="L-4255"><a href="#L-4255"><span class="linenos">4255</span></a><span class="sd"> """</span> -</span><span id="L-4256"><a href="#L-4256"><span class="linenos">4256</span></a> <span class="k">if</span> <span class="n">sql_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="L-4257"><a href="#L-4257"><span class="linenos">4257</span></a> <span class="k">return</span> <span class="n">sql_path</span> -</span><span id="L-4258"><a href="#L-4258"><span class="linenos">4258</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-4259"><a href="#L-4259"><span class="linenos">4259</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid type provided for a table: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">sql_path</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-4260"><a href="#L-4260"><span class="linenos">4260</span></a> -</span><span id="L-4261"><a href="#L-4261"><span class="linenos">4261</span></a> <span class="n">catalog</span><span class="p">,</span> <span class="n">db</span><span class="p">,</span> <span class="n">table_name</span> <span class="o">=</span> <span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">split_num_words</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="s2">"."</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> -</span><span id="L-4262"><a href="#L-4262"><span class="linenos">4262</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_name</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-4263"><a href="#L-4263"><span class="linenos">4263</span></a> -</span><span id="L-4264"><a href="#L-4264"><span class="linenos">4264</span></a> -</span><span id="L-4265"><a href="#L-4265"><span class="linenos">4265</span></a><span class="k">def</span> <span class="nf">to_column</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> -</span><span id="L-4266"><a href="#L-4266"><span class="linenos">4266</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4267"><a href="#L-4267"><span class="linenos">4267</span></a><span class="sd"> Create a column from a `[table].[column]` sql path. Schema is optional.</span> -</span><span id="L-4268"><a href="#L-4268"><span class="linenos">4268</span></a> -</span><span id="L-4269"><a href="#L-4269"><span class="linenos">4269</span></a><span class="sd"> If a column is passed in then that column is returned.</span> +</span><span id="L-4245"><a href="#L-4245"><span class="linenos">4245</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="L-4246"><a href="#L-4246"><span class="linenos">4246</span></a><span class="w"> </span><span class="sd">"""Builds an identifier.</span> +</span><span id="L-4247"><a href="#L-4247"><span class="linenos">4247</span></a> +</span><span id="L-4248"><a href="#L-4248"><span class="linenos">4248</span></a><span class="sd"> Args:</span> +</span><span id="L-4249"><a href="#L-4249"><span class="linenos">4249</span></a><span class="sd"> name: The name to turn into an identifier.</span> +</span><span id="L-4250"><a href="#L-4250"><span class="linenos">4250</span></a><span class="sd"> quoted: Whether or not force quote the identifier.</span> +</span><span id="L-4251"><a href="#L-4251"><span class="linenos">4251</span></a> +</span><span id="L-4252"><a href="#L-4252"><span class="linenos">4252</span></a><span class="sd"> Returns:</span> +</span><span id="L-4253"><a href="#L-4253"><span class="linenos">4253</span></a><span class="sd"> The identifier ast node.</span> +</span><span id="L-4254"><a href="#L-4254"><span class="linenos">4254</span></a><span class="sd"> """</span> +</span><span id="L-4255"><a href="#L-4255"><span class="linenos">4255</span></a> +</span><span id="L-4256"><a href="#L-4256"><span class="linenos">4256</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-4257"><a href="#L-4257"><span class="linenos">4257</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-4258"><a href="#L-4258"><span class="linenos">4258</span></a> +</span><span id="L-4259"><a href="#L-4259"><span class="linenos">4259</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Identifier</span><span class="p">):</span> +</span><span id="L-4260"><a href="#L-4260"><span class="linenos">4260</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">name</span> +</span><span id="L-4261"><a href="#L-4261"><span class="linenos">4261</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-4262"><a href="#L-4262"><span class="linenos">4262</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">Identifier</span><span class="p">(</span> +</span><span id="L-4263"><a href="#L-4263"><span class="linenos">4263</span></a> <span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> +</span><span id="L-4264"><a href="#L-4264"><span class="linenos">4264</span></a> <span class="n">quoted</span><span class="o">=</span><span class="ow">not</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">quoted</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">quoted</span><span class="p">,</span> +</span><span id="L-4265"><a href="#L-4265"><span class="linenos">4265</span></a> <span class="p">)</span> +</span><span id="L-4266"><a href="#L-4266"><span class="linenos">4266</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4267"><a href="#L-4267"><span class="linenos">4267</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Name needs to be a string or an Identifier, got: </span><span class="si">{</span><span class="n">name</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-4268"><a href="#L-4268"><span class="linenos">4268</span></a> <span class="k">return</span> <span class="n">identifier</span> +</span><span id="L-4269"><a href="#L-4269"><span class="linenos">4269</span></a> </span><span id="L-4270"><a href="#L-4270"><span class="linenos">4270</span></a> -</span><span id="L-4271"><a href="#L-4271"><span class="linenos">4271</span></a><span class="sd"> Args:</span> -</span><span id="L-4272"><a href="#L-4272"><span class="linenos">4272</span></a><span class="sd"> sql_path: `[table].[column]` string</span> -</span><span id="L-4273"><a href="#L-4273"><span class="linenos">4273</span></a><span class="sd"> Returns:</span> -</span><span id="L-4274"><a href="#L-4274"><span class="linenos">4274</span></a><span class="sd"> Table: A column expression</span> -</span><span id="L-4275"><a href="#L-4275"><span class="linenos">4275</span></a><span class="sd"> """</span> -</span><span id="L-4276"><a href="#L-4276"><span class="linenos">4276</span></a> <span class="k">if</span> <span class="n">sql_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> -</span><span id="L-4277"><a href="#L-4277"><span class="linenos">4277</span></a> <span class="k">return</span> <span class="n">sql_path</span> -</span><span id="L-4278"><a href="#L-4278"><span class="linenos">4278</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-4279"><a href="#L-4279"><span class="linenos">4279</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid type provided for column: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">sql_path</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-4280"><a href="#L-4280"><span class="linenos">4280</span></a> <span class="n">table_name</span><span class="p">,</span> <span class="n">column_name</span> <span class="o">=</span> <span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">split_num_words</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="s2">"."</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> -</span><span id="L-4281"><a href="#L-4281"><span class="linenos">4281</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">column_name</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="n">table_name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-4282"><a href="#L-4282"><span class="linenos">4282</span></a> +</span><span id="L-4271"><a href="#L-4271"><span class="linenos">4271</span></a><span class="n">INTERVAL_STRING_RE</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">"\s*([0-9]+)\s*([a-zA-Z]+)\s*"</span><span class="p">)</span> +</span><span id="L-4272"><a href="#L-4272"><span class="linenos">4272</span></a> +</span><span id="L-4273"><a href="#L-4273"><span class="linenos">4273</span></a> +</span><span id="L-4274"><a href="#L-4274"><span class="linenos">4274</span></a><span class="k">def</span> <span class="nf">to_interval</span><span class="p">(</span><span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="n">Interval</span><span class="p">:</span> +</span><span id="L-4275"><a href="#L-4275"><span class="linenos">4275</span></a><span class="w"> </span><span class="sd">"""Builds an interval expression from a string like '1 day' or '5 months'."""</span> +</span><span id="L-4276"><a href="#L-4276"><span class="linenos">4276</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> +</span><span id="L-4277"><a href="#L-4277"><span class="linenos">4277</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-4278"><a href="#L-4278"><span class="linenos">4278</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> +</span><span id="L-4279"><a href="#L-4279"><span class="linenos">4279</span></a> +</span><span id="L-4280"><a href="#L-4280"><span class="linenos">4280</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-4281"><a href="#L-4281"><span class="linenos">4281</span></a> +</span><span id="L-4282"><a href="#L-4282"><span class="linenos">4282</span></a> <span class="n">interval_parts</span> <span class="o">=</span> <span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span> <span class="c1"># type: ignore</span> </span><span id="L-4283"><a href="#L-4283"><span class="linenos">4283</span></a> -</span><span id="L-4284"><a href="#L-4284"><span class="linenos">4284</span></a><span class="k">def</span> <span class="nf">alias_</span><span class="p">(</span> -</span><span id="L-4285"><a href="#L-4285"><span class="linenos">4285</span></a> <span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="L-4286"><a href="#L-4286"><span class="linenos">4286</span></a> <span class="n">alias</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> -</span><span id="L-4287"><a href="#L-4287"><span class="linenos">4287</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-4288"><a href="#L-4288"><span class="linenos">4288</span></a> <span class="n">quoted</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 class="p">,</span> -</span><span id="L-4289"><a href="#L-4289"><span class="linenos">4289</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-4290"><a href="#L-4290"><span class="linenos">4290</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="L-4291"><a href="#L-4291"><span class="linenos">4291</span></a><span class="p">):</span> -</span><span id="L-4292"><a href="#L-4292"><span class="linenos">4292</span></a><span class="w"> </span><span class="sd">"""Create an Alias expression.</span> -</span><span id="L-4293"><a href="#L-4293"><span class="linenos">4293</span></a> -</span><span id="L-4294"><a href="#L-4294"><span class="linenos">4294</span></a><span class="sd"> Example:</span> -</span><span id="L-4295"><a href="#L-4295"><span class="linenos">4295</span></a><span class="sd"> >>> alias_('foo', 'bar').sql()</span> -</span><span id="L-4296"><a href="#L-4296"><span class="linenos">4296</span></a><span class="sd"> 'foo AS bar'</span> +</span><span id="L-4284"><a href="#L-4284"><span class="linenos">4284</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval_parts</span><span class="p">:</span> +</span><span id="L-4285"><a href="#L-4285"><span class="linenos">4285</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> +</span><span id="L-4286"><a href="#L-4286"><span class="linenos">4286</span></a> +</span><span id="L-4287"><a href="#L-4287"><span class="linenos">4287</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> +</span><span id="L-4288"><a href="#L-4288"><span class="linenos">4288</span></a> <span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> +</span><span id="L-4289"><a href="#L-4289"><span class="linenos">4289</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">)),</span> +</span><span id="L-4290"><a href="#L-4290"><span class="linenos">4290</span></a> <span class="p">)</span> +</span><span id="L-4291"><a href="#L-4291"><span class="linenos">4291</span></a> +</span><span id="L-4292"><a href="#L-4292"><span class="linenos">4292</span></a> +</span><span id="L-4293"><a href="#L-4293"><span class="linenos">4293</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-4294"><a href="#L-4294"><span class="linenos">4294</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> +</span><span id="L-4295"><a href="#L-4295"><span class="linenos">4295</span></a> <span class="o">...</span> +</span><span id="L-4296"><a href="#L-4296"><span class="linenos">4296</span></a> </span><span id="L-4297"><a href="#L-4297"><span class="linenos">4297</span></a> -</span><span id="L-4298"><a href="#L-4298"><span class="linenos">4298</span></a><span class="sd"> >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()</span> -</span><span id="L-4299"><a href="#L-4299"><span class="linenos">4299</span></a><span class="sd"> '(SELECT 1, 2) AS bar(a, b)'</span> -</span><span id="L-4300"><a href="#L-4300"><span class="linenos">4300</span></a> -</span><span id="L-4301"><a href="#L-4301"><span class="linenos">4301</span></a><span class="sd"> Args:</span> -</span><span id="L-4302"><a href="#L-4302"><span class="linenos">4302</span></a><span class="sd"> expression: the SQL code strings to parse.</span> -</span><span id="L-4303"><a href="#L-4303"><span class="linenos">4303</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-4304"><a href="#L-4304"><span class="linenos">4304</span></a><span class="sd"> alias: the alias name to use. If the name has</span> -</span><span id="L-4305"><a href="#L-4305"><span class="linenos">4305</span></a><span class="sd"> special characters it is quoted.</span> -</span><span id="L-4306"><a href="#L-4306"><span class="linenos">4306</span></a><span class="sd"> table: Whether or not to create a table alias, can also be a list of columns.</span> -</span><span id="L-4307"><a href="#L-4307"><span class="linenos">4307</span></a><span class="sd"> quoted: whether or not to quote the alias</span> -</span><span id="L-4308"><a href="#L-4308"><span class="linenos">4308</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="L-4309"><a href="#L-4309"><span class="linenos">4309</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-4298"><a href="#L-4298"><span class="linenos">4298</span></a><span class="nd">@t</span><span class="o">.</span><span class="n">overload</span> +</span><span id="L-4299"><a href="#L-4299"><span class="linenos">4299</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-4300"><a href="#L-4300"><span class="linenos">4300</span></a> <span class="o">...</span> +</span><span id="L-4301"><a href="#L-4301"><span class="linenos">4301</span></a> +</span><span id="L-4302"><a href="#L-4302"><span class="linenos">4302</span></a> +</span><span id="L-4303"><a href="#L-4303"><span class="linenos">4303</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Table</span><span class="p">]:</span> +</span><span id="L-4304"><a href="#L-4304"><span class="linenos">4304</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4305"><a href="#L-4305"><span class="linenos">4305</span></a><span class="sd"> Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.</span> +</span><span id="L-4306"><a href="#L-4306"><span class="linenos">4306</span></a><span class="sd"> If a table is passed in then that table is returned.</span> +</span><span id="L-4307"><a href="#L-4307"><span class="linenos">4307</span></a> +</span><span id="L-4308"><a href="#L-4308"><span class="linenos">4308</span></a><span class="sd"> Args:</span> +</span><span id="L-4309"><a href="#L-4309"><span class="linenos">4309</span></a><span class="sd"> sql_path: a `[catalog].[schema].[table]` string.</span> </span><span id="L-4310"><a href="#L-4310"><span class="linenos">4310</span></a> </span><span id="L-4311"><a href="#L-4311"><span class="linenos">4311</span></a><span class="sd"> Returns:</span> -</span><span id="L-4312"><a href="#L-4312"><span class="linenos">4312</span></a><span class="sd"> Alias: the aliased expression</span> +</span><span id="L-4312"><a href="#L-4312"><span class="linenos">4312</span></a><span class="sd"> A table expression.</span> </span><span id="L-4313"><a href="#L-4313"><span class="linenos">4313</span></a><span class="sd"> """</span> -</span><span id="L-4314"><a href="#L-4314"><span class="linenos">4314</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">maybe_parse</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-4315"><a href="#L-4315"><span class="linenos">4315</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> -</span><span id="L-4316"><a href="#L-4316"><span class="linenos">4316</span></a> -</span><span id="L-4317"><a href="#L-4317"><span class="linenos">4317</span></a> <span class="k">if</span> <span class="n">table</span><span class="p">:</span> -</span><span id="L-4318"><a href="#L-4318"><span class="linenos">4318</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-4319"><a href="#L-4319"><span class="linenos">4319</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">table_alias</span><span class="p">)</span> -</span><span id="L-4320"><a href="#L-4320"><span class="linenos">4320</span></a> -</span><span id="L-4321"><a href="#L-4321"><span class="linenos">4321</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> -</span><span id="L-4322"><a href="#L-4322"><span class="linenos">4322</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> -</span><span id="L-4323"><a href="#L-4323"><span class="linenos">4323</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">))</span> -</span><span id="L-4324"><a href="#L-4324"><span class="linenos">4324</span></a> -</span><span id="L-4325"><a href="#L-4325"><span class="linenos">4325</span></a> <span class="k">return</span> <span class="n">exp</span> +</span><span id="L-4314"><a href="#L-4314"><span class="linenos">4314</span></a> <span class="k">if</span> <span class="n">sql_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="L-4315"><a href="#L-4315"><span class="linenos">4315</span></a> <span class="k">return</span> <span class="n">sql_path</span> +</span><span id="L-4316"><a href="#L-4316"><span class="linenos">4316</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-4317"><a href="#L-4317"><span class="linenos">4317</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid type provided for a table: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">sql_path</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-4318"><a href="#L-4318"><span class="linenos">4318</span></a> +</span><span id="L-4319"><a href="#L-4319"><span class="linenos">4319</span></a> <span class="n">catalog</span><span class="p">,</span> <span class="n">db</span><span class="p">,</span> <span class="n">table_name</span> <span class="o">=</span> <span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">split_num_words</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="s2">"."</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> +</span><span id="L-4320"><a href="#L-4320"><span class="linenos">4320</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_name</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-4321"><a href="#L-4321"><span class="linenos">4321</span></a> +</span><span id="L-4322"><a href="#L-4322"><span class="linenos">4322</span></a> +</span><span id="L-4323"><a href="#L-4323"><span class="linenos">4323</span></a><span class="k">def</span> <span class="nf">to_column</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> +</span><span id="L-4324"><a href="#L-4324"><span class="linenos">4324</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4325"><a href="#L-4325"><span class="linenos">4325</span></a><span class="sd"> Create a column from a `[table].[column]` sql path. Schema is optional.</span> </span><span id="L-4326"><a href="#L-4326"><span class="linenos">4326</span></a> -</span><span id="L-4327"><a href="#L-4327"><span class="linenos">4327</span></a> <span class="c1"># We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in</span> -</span><span id="L-4328"><a href="#L-4328"><span class="linenos">4328</span></a> <span class="c1"># the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node</span> -</span><span id="L-4329"><a href="#L-4329"><span class="linenos">4329</span></a> <span class="c1"># for the complete Window expression.</span> -</span><span id="L-4330"><a href="#L-4330"><span class="linenos">4330</span></a> <span class="c1">#</span> -</span><span id="L-4331"><a href="#L-4331"><span class="linenos">4331</span></a> <span class="c1"># [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls</span> -</span><span id="L-4332"><a href="#L-4332"><span class="linenos">4332</span></a> -</span><span id="L-4333"><a href="#L-4333"><span class="linenos">4333</span></a> <span class="k">if</span> <span class="s2">"alias"</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">arg_types</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exp</span><span class="p">,</span> <span class="n">Window</span><span class="p">):</span> -</span><span id="L-4334"><a href="#L-4334"><span class="linenos">4334</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-4335"><a href="#L-4335"><span class="linenos">4335</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> -</span><span id="L-4336"><a href="#L-4336"><span class="linenos">4336</span></a> <span class="k">return</span> <span class="n">exp</span> -</span><span id="L-4337"><a href="#L-4337"><span class="linenos">4337</span></a> <span class="k">return</span> <span class="n">Alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-4338"><a href="#L-4338"><span class="linenos">4338</span></a> -</span><span id="L-4339"><a href="#L-4339"><span class="linenos">4339</span></a> -</span><span id="L-4340"><a href="#L-4340"><span class="linenos">4340</span></a><span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="L-4341"><a href="#L-4341"><span class="linenos">4341</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4342"><a href="#L-4342"><span class="linenos">4342</span></a><span class="sd"> Build a subquery expression.</span> -</span><span id="L-4343"><a href="#L-4343"><span class="linenos">4343</span></a> -</span><span id="L-4344"><a href="#L-4344"><span class="linenos">4344</span></a><span class="sd"> Example:</span> -</span><span id="L-4345"><a href="#L-4345"><span class="linenos">4345</span></a><span class="sd"> >>> subquery('select x from tbl', 'bar').select('x').sql()</span> -</span><span id="L-4346"><a href="#L-4346"><span class="linenos">4346</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl) AS bar'</span> -</span><span id="L-4347"><a href="#L-4347"><span class="linenos">4347</span></a> -</span><span id="L-4348"><a href="#L-4348"><span class="linenos">4348</span></a><span class="sd"> Args:</span> -</span><span id="L-4349"><a href="#L-4349"><span class="linenos">4349</span></a><span class="sd"> expression (str | Expression): the SQL code strings to parse.</span> -</span><span id="L-4350"><a href="#L-4350"><span class="linenos">4350</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="L-4351"><a href="#L-4351"><span class="linenos">4351</span></a><span class="sd"> alias (str | Expression): the alias name to use.</span> -</span><span id="L-4352"><a href="#L-4352"><span class="linenos">4352</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="L-4353"><a href="#L-4353"><span class="linenos">4353</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="L-4354"><a href="#L-4354"><span class="linenos">4354</span></a> -</span><span id="L-4355"><a href="#L-4355"><span class="linenos">4355</span></a><span class="sd"> Returns:</span> -</span><span id="L-4356"><a href="#L-4356"><span class="linenos">4356</span></a><span class="sd"> Select: a new select with the subquery expression included</span> -</span><span id="L-4357"><a href="#L-4357"><span class="linenos">4357</span></a><span class="sd"> """</span> +</span><span id="L-4327"><a href="#L-4327"><span class="linenos">4327</span></a><span class="sd"> If a column is passed in then that column is returned.</span> +</span><span id="L-4328"><a href="#L-4328"><span class="linenos">4328</span></a> +</span><span id="L-4329"><a href="#L-4329"><span class="linenos">4329</span></a><span class="sd"> Args:</span> +</span><span id="L-4330"><a href="#L-4330"><span class="linenos">4330</span></a><span class="sd"> sql_path: `[table].[column]` string</span> +</span><span id="L-4331"><a href="#L-4331"><span class="linenos">4331</span></a><span class="sd"> Returns:</span> +</span><span id="L-4332"><a href="#L-4332"><span class="linenos">4332</span></a><span class="sd"> Table: A column expression</span> +</span><span id="L-4333"><a href="#L-4333"><span class="linenos">4333</span></a><span class="sd"> """</span> +</span><span id="L-4334"><a href="#L-4334"><span class="linenos">4334</span></a> <span class="k">if</span> <span class="n">sql_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> +</span><span id="L-4335"><a href="#L-4335"><span class="linenos">4335</span></a> <span class="k">return</span> <span class="n">sql_path</span> +</span><span id="L-4336"><a href="#L-4336"><span class="linenos">4336</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-4337"><a href="#L-4337"><span class="linenos">4337</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid type provided for column: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">sql_path</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-4338"><a href="#L-4338"><span class="linenos">4338</span></a> <span class="n">table_name</span><span class="p">,</span> <span class="n">column_name</span> <span class="o">=</span> <span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">split_num_words</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="s2">"."</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> +</span><span id="L-4339"><a href="#L-4339"><span class="linenos">4339</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">column_name</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="n">table_name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-4340"><a href="#L-4340"><span class="linenos">4340</span></a> +</span><span id="L-4341"><a href="#L-4341"><span class="linenos">4341</span></a> +</span><span id="L-4342"><a href="#L-4342"><span class="linenos">4342</span></a><span class="k">def</span> <span class="nf">alias_</span><span class="p">(</span> +</span><span id="L-4343"><a href="#L-4343"><span class="linenos">4343</span></a> <span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="L-4344"><a href="#L-4344"><span class="linenos">4344</span></a> <span class="n">alias</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> +</span><span id="L-4345"><a href="#L-4345"><span class="linenos">4345</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-4346"><a href="#L-4346"><span class="linenos">4346</span></a> <span class="n">quoted</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 class="p">,</span> +</span><span id="L-4347"><a href="#L-4347"><span class="linenos">4347</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-4348"><a href="#L-4348"><span class="linenos">4348</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="L-4349"><a href="#L-4349"><span class="linenos">4349</span></a><span class="p">):</span> +</span><span id="L-4350"><a href="#L-4350"><span class="linenos">4350</span></a><span class="w"> </span><span class="sd">"""Create an Alias expression.</span> +</span><span id="L-4351"><a href="#L-4351"><span class="linenos">4351</span></a> +</span><span id="L-4352"><a href="#L-4352"><span class="linenos">4352</span></a><span class="sd"> Example:</span> +</span><span id="L-4353"><a href="#L-4353"><span class="linenos">4353</span></a><span class="sd"> >>> alias_('foo', 'bar').sql()</span> +</span><span id="L-4354"><a href="#L-4354"><span class="linenos">4354</span></a><span class="sd"> 'foo AS bar'</span> +</span><span id="L-4355"><a href="#L-4355"><span class="linenos">4355</span></a> +</span><span id="L-4356"><a href="#L-4356"><span class="linenos">4356</span></a><span class="sd"> >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()</span> +</span><span id="L-4357"><a href="#L-4357"><span class="linenos">4357</span></a><span class="sd"> '(SELECT 1, 2) AS bar(a, b)'</span> </span><span id="L-4358"><a href="#L-4358"><span class="linenos">4358</span></a> -</span><span id="L-4359"><a href="#L-4359"><span class="linenos">4359</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-4360"><a href="#L-4360"><span class="linenos">4360</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-4361"><a href="#L-4361"><span class="linenos">4361</span></a> -</span><span id="L-4362"><a href="#L-4362"><span class="linenos">4362</span></a> -</span><span id="L-4363"><a href="#L-4363"><span class="linenos">4363</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> -</span><span id="L-4364"><a href="#L-4364"><span class="linenos">4364</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> -</span><span id="L-4365"><a href="#L-4365"><span class="linenos">4365</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-4366"><a href="#L-4366"><span class="linenos">4366</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-4367"><a href="#L-4367"><span class="linenos">4367</span></a> <span class="n">quoted</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 class="p">,</span> -</span><span id="L-4368"><a href="#L-4368"><span class="linenos">4368</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> -</span><span id="L-4369"><a href="#L-4369"><span class="linenos">4369</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4370"><a href="#L-4370"><span class="linenos">4370</span></a><span class="sd"> Build a Column.</span> -</span><span id="L-4371"><a href="#L-4371"><span class="linenos">4371</span></a> -</span><span id="L-4372"><a href="#L-4372"><span class="linenos">4372</span></a><span class="sd"> Args:</span> -</span><span id="L-4373"><a href="#L-4373"><span class="linenos">4373</span></a><span class="sd"> col: column name</span> -</span><span id="L-4374"><a href="#L-4374"><span class="linenos">4374</span></a><span class="sd"> table: table name</span> -</span><span id="L-4375"><a href="#L-4375"><span class="linenos">4375</span></a><span class="sd"> schema: schema name</span> -</span><span id="L-4376"><a href="#L-4376"><span class="linenos">4376</span></a><span class="sd"> quoted: whether or not to force quote each part</span> -</span><span id="L-4377"><a href="#L-4377"><span class="linenos">4377</span></a><span class="sd"> Returns:</span> -</span><span id="L-4378"><a href="#L-4378"><span class="linenos">4378</span></a><span class="sd"> Column: column instance</span> -</span><span id="L-4379"><a href="#L-4379"><span class="linenos">4379</span></a><span class="sd"> """</span> -</span><span id="L-4380"><a href="#L-4380"><span class="linenos">4380</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span> -</span><span id="L-4381"><a href="#L-4381"><span class="linenos">4381</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="L-4382"><a href="#L-4382"><span class="linenos">4382</span></a> <span class="n">table</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="L-4383"><a href="#L-4383"><span class="linenos">4383</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="L-4384"><a href="#L-4384"><span class="linenos">4384</span></a> <span class="p">)</span> -</span><span id="L-4385"><a href="#L-4385"><span class="linenos">4385</span></a> -</span><span id="L-4386"><a href="#L-4386"><span class="linenos">4386</span></a> -</span><span id="L-4387"><a href="#L-4387"><span class="linenos">4387</span></a><span class="k">def</span> <span class="nf">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Cast</span><span class="p">:</span> -</span><span id="L-4388"><a href="#L-4388"><span class="linenos">4388</span></a><span class="w"> </span><span class="sd">"""Cast an expression to a data type.</span> -</span><span id="L-4389"><a href="#L-4389"><span class="linenos">4389</span></a> -</span><span id="L-4390"><a href="#L-4390"><span class="linenos">4390</span></a><span class="sd"> Example:</span> -</span><span id="L-4391"><a href="#L-4391"><span class="linenos">4391</span></a><span class="sd"> >>> cast('x + 1', 'int').sql()</span> -</span><span id="L-4392"><a href="#L-4392"><span class="linenos">4392</span></a><span class="sd"> 'CAST(x + 1 AS INT)'</span> -</span><span id="L-4393"><a href="#L-4393"><span class="linenos">4393</span></a> -</span><span id="L-4394"><a href="#L-4394"><span class="linenos">4394</span></a><span class="sd"> Args:</span> -</span><span id="L-4395"><a href="#L-4395"><span class="linenos">4395</span></a><span class="sd"> expression: The expression to cast.</span> -</span><span id="L-4396"><a href="#L-4396"><span class="linenos">4396</span></a><span class="sd"> to: The datatype to cast to.</span> +</span><span id="L-4359"><a href="#L-4359"><span class="linenos">4359</span></a><span class="sd"> Args:</span> +</span><span id="L-4360"><a href="#L-4360"><span class="linenos">4360</span></a><span class="sd"> expression: the SQL code strings to parse.</span> +</span><span id="L-4361"><a href="#L-4361"><span class="linenos">4361</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-4362"><a href="#L-4362"><span class="linenos">4362</span></a><span class="sd"> alias: the alias name to use. If the name has</span> +</span><span id="L-4363"><a href="#L-4363"><span class="linenos">4363</span></a><span class="sd"> special characters it is quoted.</span> +</span><span id="L-4364"><a href="#L-4364"><span class="linenos">4364</span></a><span class="sd"> table: Whether or not to create a table alias, can also be a list of columns.</span> +</span><span id="L-4365"><a href="#L-4365"><span class="linenos">4365</span></a><span class="sd"> quoted: whether or not to quote the alias</span> +</span><span id="L-4366"><a href="#L-4366"><span class="linenos">4366</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="L-4367"><a href="#L-4367"><span class="linenos">4367</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="L-4368"><a href="#L-4368"><span class="linenos">4368</span></a> +</span><span id="L-4369"><a href="#L-4369"><span class="linenos">4369</span></a><span class="sd"> Returns:</span> +</span><span id="L-4370"><a href="#L-4370"><span class="linenos">4370</span></a><span class="sd"> Alias: the aliased expression</span> +</span><span id="L-4371"><a href="#L-4371"><span class="linenos">4371</span></a><span class="sd"> """</span> +</span><span id="L-4372"><a href="#L-4372"><span class="linenos">4372</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">maybe_parse</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-4373"><a href="#L-4373"><span class="linenos">4373</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> +</span><span id="L-4374"><a href="#L-4374"><span class="linenos">4374</span></a> +</span><span id="L-4375"><a href="#L-4375"><span class="linenos">4375</span></a> <span class="k">if</span> <span class="n">table</span><span class="p">:</span> +</span><span id="L-4376"><a href="#L-4376"><span class="linenos">4376</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-4377"><a href="#L-4377"><span class="linenos">4377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">table_alias</span><span class="p">)</span> +</span><span id="L-4378"><a href="#L-4378"><span class="linenos">4378</span></a> +</span><span id="L-4379"><a href="#L-4379"><span class="linenos">4379</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> +</span><span id="L-4380"><a href="#L-4380"><span class="linenos">4380</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> +</span><span id="L-4381"><a href="#L-4381"><span class="linenos">4381</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">))</span> +</span><span id="L-4382"><a href="#L-4382"><span class="linenos">4382</span></a> +</span><span id="L-4383"><a href="#L-4383"><span class="linenos">4383</span></a> <span class="k">return</span> <span class="n">exp</span> +</span><span id="L-4384"><a href="#L-4384"><span class="linenos">4384</span></a> +</span><span id="L-4385"><a href="#L-4385"><span class="linenos">4385</span></a> <span class="c1"># We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in</span> +</span><span id="L-4386"><a href="#L-4386"><span class="linenos">4386</span></a> <span class="c1"># the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node</span> +</span><span id="L-4387"><a href="#L-4387"><span class="linenos">4387</span></a> <span class="c1"># for the complete Window expression.</span> +</span><span id="L-4388"><a href="#L-4388"><span class="linenos">4388</span></a> <span class="c1">#</span> +</span><span id="L-4389"><a href="#L-4389"><span class="linenos">4389</span></a> <span class="c1"># [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls</span> +</span><span id="L-4390"><a href="#L-4390"><span class="linenos">4390</span></a> +</span><span id="L-4391"><a href="#L-4391"><span class="linenos">4391</span></a> <span class="k">if</span> <span class="s2">"alias"</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">arg_types</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exp</span><span class="p">,</span> <span class="n">Window</span><span class="p">):</span> +</span><span id="L-4392"><a href="#L-4392"><span class="linenos">4392</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-4393"><a href="#L-4393"><span class="linenos">4393</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> +</span><span id="L-4394"><a href="#L-4394"><span class="linenos">4394</span></a> <span class="k">return</span> <span class="n">exp</span> +</span><span id="L-4395"><a href="#L-4395"><span class="linenos">4395</span></a> <span class="k">return</span> <span class="n">Alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-4396"><a href="#L-4396"><span class="linenos">4396</span></a> </span><span id="L-4397"><a href="#L-4397"><span class="linenos">4397</span></a> -</span><span id="L-4398"><a href="#L-4398"><span class="linenos">4398</span></a><span class="sd"> Returns:</span> -</span><span id="L-4399"><a href="#L-4399"><span class="linenos">4399</span></a><span class="sd"> A cast node.</span> -</span><span id="L-4400"><a href="#L-4400"><span class="linenos">4400</span></a><span class="sd"> """</span> -</span><span id="L-4401"><a href="#L-4401"><span class="linenos">4401</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="L-4402"><a href="#L-4402"><span class="linenos">4402</span></a> <span class="k">return</span> <span class="n">Cast</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">to</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> -</span><span id="L-4403"><a href="#L-4403"><span class="linenos">4403</span></a> -</span><span id="L-4404"><a href="#L-4404"><span class="linenos">4404</span></a> -</span><span id="L-4405"><a href="#L-4405"><span class="linenos">4405</span></a><span class="k">def</span> <span class="nf">table_</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> -</span><span id="L-4406"><a href="#L-4406"><span class="linenos">4406</span></a><span class="w"> </span><span class="sd">"""Build a Table.</span> -</span><span id="L-4407"><a href="#L-4407"><span class="linenos">4407</span></a> -</span><span id="L-4408"><a href="#L-4408"><span class="linenos">4408</span></a><span class="sd"> Args:</span> -</span><span id="L-4409"><a href="#L-4409"><span class="linenos">4409</span></a><span class="sd"> table (str | Expression): column name</span> -</span><span id="L-4410"><a href="#L-4410"><span class="linenos">4410</span></a><span class="sd"> db (str | Expression): db name</span> -</span><span id="L-4411"><a href="#L-4411"><span class="linenos">4411</span></a><span class="sd"> catalog (str | Expression): catalog name</span> +</span><span id="L-4398"><a href="#L-4398"><span class="linenos">4398</span></a><span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="L-4399"><a href="#L-4399"><span class="linenos">4399</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4400"><a href="#L-4400"><span class="linenos">4400</span></a><span class="sd"> Build a subquery expression.</span> +</span><span id="L-4401"><a href="#L-4401"><span class="linenos">4401</span></a> +</span><span id="L-4402"><a href="#L-4402"><span class="linenos">4402</span></a><span class="sd"> Example:</span> +</span><span id="L-4403"><a href="#L-4403"><span class="linenos">4403</span></a><span class="sd"> >>> subquery('select x from tbl', 'bar').select('x').sql()</span> +</span><span id="L-4404"><a href="#L-4404"><span class="linenos">4404</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl) AS bar'</span> +</span><span id="L-4405"><a href="#L-4405"><span class="linenos">4405</span></a> +</span><span id="L-4406"><a href="#L-4406"><span class="linenos">4406</span></a><span class="sd"> Args:</span> +</span><span id="L-4407"><a href="#L-4407"><span class="linenos">4407</span></a><span class="sd"> expression (str | Expression): the SQL code strings to parse.</span> +</span><span id="L-4408"><a href="#L-4408"><span class="linenos">4408</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="L-4409"><a href="#L-4409"><span class="linenos">4409</span></a><span class="sd"> alias (str | Expression): the alias name to use.</span> +</span><span id="L-4410"><a href="#L-4410"><span class="linenos">4410</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="L-4411"><a href="#L-4411"><span class="linenos">4411</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> </span><span id="L-4412"><a href="#L-4412"><span class="linenos">4412</span></a> </span><span id="L-4413"><a href="#L-4413"><span class="linenos">4413</span></a><span class="sd"> Returns:</span> -</span><span id="L-4414"><a href="#L-4414"><span class="linenos">4414</span></a><span class="sd"> Table: table instance</span> +</span><span id="L-4414"><a href="#L-4414"><span class="linenos">4414</span></a><span class="sd"> Select: a new select with the subquery expression included</span> </span><span id="L-4415"><a href="#L-4415"><span class="linenos">4415</span></a><span class="sd"> """</span> -</span><span id="L-4416"><a href="#L-4416"><span class="linenos">4416</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span> -</span><span id="L-4417"><a href="#L-4417"><span class="linenos">4417</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="L-4418"><a href="#L-4418"><span class="linenos">4418</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="L-4419"><a href="#L-4419"><span class="linenos">4419</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="L-4420"><a href="#L-4420"><span class="linenos">4420</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-4421"><a href="#L-4421"><span class="linenos">4421</span></a> <span class="p">)</span> -</span><span id="L-4422"><a href="#L-4422"><span class="linenos">4422</span></a> -</span><span id="L-4423"><a href="#L-4423"><span class="linenos">4423</span></a> -</span><span id="L-4424"><a href="#L-4424"><span class="linenos">4424</span></a><span class="k">def</span> <span class="nf">values</span><span class="p">(</span> -</span><span id="L-4425"><a href="#L-4425"><span class="linenos">4425</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Iterable</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="o">...</span><span class="p">]],</span> -</span><span id="L-4426"><a href="#L-4426"><span class="linenos">4426</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-4427"><a href="#L-4427"><span class="linenos">4427</span></a> <span class="n">columns</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Iterable</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-4428"><a href="#L-4428"><span class="linenos">4428</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Values</span><span class="p">:</span> -</span><span id="L-4429"><a href="#L-4429"><span class="linenos">4429</span></a><span class="w"> </span><span class="sd">"""Build VALUES statement.</span> -</span><span id="L-4430"><a href="#L-4430"><span class="linenos">4430</span></a> -</span><span id="L-4431"><a href="#L-4431"><span class="linenos">4431</span></a><span class="sd"> Example:</span> -</span><span id="L-4432"><a href="#L-4432"><span class="linenos">4432</span></a><span class="sd"> >>> values([(1, '2')]).sql()</span> -</span><span id="L-4433"><a href="#L-4433"><span class="linenos">4433</span></a><span class="sd"> "VALUES (1, '2')"</span> -</span><span id="L-4434"><a href="#L-4434"><span class="linenos">4434</span></a> -</span><span id="L-4435"><a href="#L-4435"><span class="linenos">4435</span></a><span class="sd"> Args:</span> -</span><span id="L-4436"><a href="#L-4436"><span class="linenos">4436</span></a><span class="sd"> values: values statements that will be converted to SQL</span> -</span><span id="L-4437"><a href="#L-4437"><span class="linenos">4437</span></a><span class="sd"> alias: optional alias</span> -</span><span id="L-4438"><a href="#L-4438"><span class="linenos">4438</span></a><span class="sd"> columns: Optional list of ordered column names or ordered dictionary of column names to types.</span> -</span><span id="L-4439"><a href="#L-4439"><span class="linenos">4439</span></a><span class="sd"> If either are provided then an alias is also required.</span> -</span><span id="L-4440"><a href="#L-4440"><span class="linenos">4440</span></a><span class="sd"> If a dictionary is provided then the first column of the values will be casted to the expected type</span> -</span><span id="L-4441"><a href="#L-4441"><span class="linenos">4441</span></a><span class="sd"> in order to help with type inference.</span> -</span><span id="L-4442"><a href="#L-4442"><span class="linenos">4442</span></a> -</span><span id="L-4443"><a href="#L-4443"><span class="linenos">4443</span></a><span class="sd"> Returns:</span> -</span><span id="L-4444"><a href="#L-4444"><span class="linenos">4444</span></a><span class="sd"> Values: the Values expression object</span> -</span><span id="L-4445"><a href="#L-4445"><span class="linenos">4445</span></a><span class="sd"> """</span> -</span><span id="L-4446"><a href="#L-4446"><span class="linenos">4446</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-4447"><a href="#L-4447"><span class="linenos">4447</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Alias is required when providing columns"</span><span class="p">)</span> -</span><span id="L-4448"><a href="#L-4448"><span class="linenos">4448</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-4449"><a href="#L-4449"><span class="linenos">4449</span></a> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">),</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> -</span><span id="L-4450"><a href="#L-4450"><span class="linenos">4450</span></a> <span class="k">if</span> <span class="n">columns</span> -</span><span id="L-4451"><a href="#L-4451"><span class="linenos">4451</span></a> <span class="k">else</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-4452"><a href="#L-4452"><span class="linenos">4452</span></a> <span class="p">)</span> -</span><span id="L-4453"><a href="#L-4453"><span class="linenos">4453</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="n">values</span><span class="p">]</span> -</span><span id="L-4454"><a href="#L-4454"><span class="linenos">4454</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="L-4455"><a href="#L-4455"><span class="linenos">4455</span></a> <span class="n">types</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">columns</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> -</span><span id="L-4456"><a href="#L-4456"><span class="linenos">4456</span></a> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-4457"><a href="#L-4457"><span class="linenos">4457</span></a> <span class="s2">"expressions"</span><span class="p">,</span> -</span><span id="L-4458"><a href="#L-4458"><span class="linenos">4458</span></a> <span class="p">[</span><span class="n">cast</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">)],</span> -</span><span id="L-4459"><a href="#L-4459"><span class="linenos">4459</span></a> <span class="p">)</span> -</span><span id="L-4460"><a href="#L-4460"><span class="linenos">4460</span></a> <span class="k">return</span> <span class="n">Values</span><span class="p">(</span> -</span><span id="L-4461"><a href="#L-4461"><span class="linenos">4461</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-4462"><a href="#L-4462"><span class="linenos">4462</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> -</span><span id="L-4463"><a href="#L-4463"><span class="linenos">4463</span></a> <span class="p">)</span> -</span><span id="L-4464"><a href="#L-4464"><span class="linenos">4464</span></a> +</span><span id="L-4416"><a href="#L-4416"><span class="linenos">4416</span></a> +</span><span id="L-4417"><a href="#L-4417"><span class="linenos">4417</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-4418"><a href="#L-4418"><span class="linenos">4418</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-4419"><a href="#L-4419"><span class="linenos">4419</span></a> +</span><span id="L-4420"><a href="#L-4420"><span class="linenos">4420</span></a> +</span><span id="L-4421"><a href="#L-4421"><span class="linenos">4421</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> +</span><span id="L-4422"><a href="#L-4422"><span class="linenos">4422</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> +</span><span id="L-4423"><a href="#L-4423"><span class="linenos">4423</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-4424"><a href="#L-4424"><span class="linenos">4424</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-4425"><a href="#L-4425"><span class="linenos">4425</span></a> <span class="n">quoted</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 class="p">,</span> +</span><span id="L-4426"><a href="#L-4426"><span class="linenos">4426</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> +</span><span id="L-4427"><a href="#L-4427"><span class="linenos">4427</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4428"><a href="#L-4428"><span class="linenos">4428</span></a><span class="sd"> Build a Column.</span> +</span><span id="L-4429"><a href="#L-4429"><span class="linenos">4429</span></a> +</span><span id="L-4430"><a href="#L-4430"><span class="linenos">4430</span></a><span class="sd"> Args:</span> +</span><span id="L-4431"><a href="#L-4431"><span class="linenos">4431</span></a><span class="sd"> col: column name</span> +</span><span id="L-4432"><a href="#L-4432"><span class="linenos">4432</span></a><span class="sd"> table: table name</span> +</span><span id="L-4433"><a href="#L-4433"><span class="linenos">4433</span></a><span class="sd"> schema: schema name</span> +</span><span id="L-4434"><a href="#L-4434"><span class="linenos">4434</span></a><span class="sd"> quoted: whether or not to force quote each part</span> +</span><span id="L-4435"><a href="#L-4435"><span class="linenos">4435</span></a><span class="sd"> Returns:</span> +</span><span id="L-4436"><a href="#L-4436"><span class="linenos">4436</span></a><span class="sd"> Column: column instance</span> +</span><span id="L-4437"><a href="#L-4437"><span class="linenos">4437</span></a><span class="sd"> """</span> +</span><span id="L-4438"><a href="#L-4438"><span class="linenos">4438</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span> +</span><span id="L-4439"><a href="#L-4439"><span class="linenos">4439</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="L-4440"><a href="#L-4440"><span class="linenos">4440</span></a> <span class="n">table</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="L-4441"><a href="#L-4441"><span class="linenos">4441</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="L-4442"><a href="#L-4442"><span class="linenos">4442</span></a> <span class="p">)</span> +</span><span id="L-4443"><a href="#L-4443"><span class="linenos">4443</span></a> +</span><span id="L-4444"><a href="#L-4444"><span class="linenos">4444</span></a> +</span><span id="L-4445"><a href="#L-4445"><span class="linenos">4445</span></a><span class="k">def</span> <span class="nf">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Cast</span><span class="p">:</span> +</span><span id="L-4446"><a href="#L-4446"><span class="linenos">4446</span></a><span class="w"> </span><span class="sd">"""Cast an expression to a data type.</span> +</span><span id="L-4447"><a href="#L-4447"><span class="linenos">4447</span></a> +</span><span id="L-4448"><a href="#L-4448"><span class="linenos">4448</span></a><span class="sd"> Example:</span> +</span><span id="L-4449"><a href="#L-4449"><span class="linenos">4449</span></a><span class="sd"> >>> cast('x + 1', 'int').sql()</span> +</span><span id="L-4450"><a href="#L-4450"><span class="linenos">4450</span></a><span class="sd"> 'CAST(x + 1 AS INT)'</span> +</span><span id="L-4451"><a href="#L-4451"><span class="linenos">4451</span></a> +</span><span id="L-4452"><a href="#L-4452"><span class="linenos">4452</span></a><span class="sd"> Args:</span> +</span><span id="L-4453"><a href="#L-4453"><span class="linenos">4453</span></a><span class="sd"> expression: The expression to cast.</span> +</span><span id="L-4454"><a href="#L-4454"><span class="linenos">4454</span></a><span class="sd"> to: The datatype to cast to.</span> +</span><span id="L-4455"><a href="#L-4455"><span class="linenos">4455</span></a> +</span><span id="L-4456"><a href="#L-4456"><span class="linenos">4456</span></a><span class="sd"> Returns:</span> +</span><span id="L-4457"><a href="#L-4457"><span class="linenos">4457</span></a><span class="sd"> A cast node.</span> +</span><span id="L-4458"><a href="#L-4458"><span class="linenos">4458</span></a><span class="sd"> """</span> +</span><span id="L-4459"><a href="#L-4459"><span class="linenos">4459</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="L-4460"><a href="#L-4460"><span class="linenos">4460</span></a> <span class="k">return</span> <span class="n">Cast</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">to</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> +</span><span id="L-4461"><a href="#L-4461"><span class="linenos">4461</span></a> +</span><span id="L-4462"><a href="#L-4462"><span class="linenos">4462</span></a> +</span><span id="L-4463"><a href="#L-4463"><span class="linenos">4463</span></a><span class="k">def</span> <span class="nf">table_</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> +</span><span id="L-4464"><a href="#L-4464"><span class="linenos">4464</span></a><span class="w"> </span><span class="sd">"""Build a Table.</span> </span><span id="L-4465"><a href="#L-4465"><span class="linenos">4465</span></a> -</span><span id="L-4466"><a href="#L-4466"><span class="linenos">4466</span></a><span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Var</span><span class="p">:</span> -</span><span id="L-4467"><a href="#L-4467"><span class="linenos">4467</span></a><span class="w"> </span><span class="sd">"""Build a SQL variable.</span> -</span><span id="L-4468"><a href="#L-4468"><span class="linenos">4468</span></a> -</span><span id="L-4469"><a href="#L-4469"><span class="linenos">4469</span></a><span class="sd"> Example:</span> -</span><span id="L-4470"><a href="#L-4470"><span class="linenos">4470</span></a><span class="sd"> >>> repr(var('x'))</span> -</span><span id="L-4471"><a href="#L-4471"><span class="linenos">4471</span></a><span class="sd"> '(VAR this: x)'</span> -</span><span id="L-4472"><a href="#L-4472"><span class="linenos">4472</span></a> -</span><span id="L-4473"><a href="#L-4473"><span class="linenos">4473</span></a><span class="sd"> >>> repr(var(column('x', table='y')))</span> -</span><span id="L-4474"><a href="#L-4474"><span class="linenos">4474</span></a><span class="sd"> '(VAR this: x)'</span> -</span><span id="L-4475"><a href="#L-4475"><span class="linenos">4475</span></a> -</span><span id="L-4476"><a href="#L-4476"><span class="linenos">4476</span></a><span class="sd"> Args:</span> -</span><span id="L-4477"><a href="#L-4477"><span class="linenos">4477</span></a><span class="sd"> name: The name of the var or an expression who's name will become the var.</span> -</span><span id="L-4478"><a href="#L-4478"><span class="linenos">4478</span></a> -</span><span id="L-4479"><a href="#L-4479"><span class="linenos">4479</span></a><span class="sd"> Returns:</span> -</span><span id="L-4480"><a href="#L-4480"><span class="linenos">4480</span></a><span class="sd"> The new variable node.</span> -</span><span id="L-4481"><a href="#L-4481"><span class="linenos">4481</span></a><span class="sd"> """</span> -</span><span id="L-4482"><a href="#L-4482"><span class="linenos">4482</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> -</span><span id="L-4483"><a href="#L-4483"><span class="linenos">4483</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert empty name into var."</span><span class="p">)</span> -</span><span id="L-4484"><a href="#L-4484"><span class="linenos">4484</span></a> -</span><span id="L-4485"><a href="#L-4485"><span class="linenos">4485</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4486"><a href="#L-4486"><span class="linenos">4486</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-4487"><a href="#L-4487"><span class="linenos">4487</span></a> <span class="k">return</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-4466"><a href="#L-4466"><span class="linenos">4466</span></a><span class="sd"> Args:</span> +</span><span id="L-4467"><a href="#L-4467"><span class="linenos">4467</span></a><span class="sd"> table (str | Expression): column name</span> +</span><span id="L-4468"><a href="#L-4468"><span class="linenos">4468</span></a><span class="sd"> db (str | Expression): db name</span> +</span><span id="L-4469"><a href="#L-4469"><span class="linenos">4469</span></a><span class="sd"> catalog (str | Expression): catalog name</span> +</span><span id="L-4470"><a href="#L-4470"><span class="linenos">4470</span></a> +</span><span id="L-4471"><a href="#L-4471"><span class="linenos">4471</span></a><span class="sd"> Returns:</span> +</span><span id="L-4472"><a href="#L-4472"><span class="linenos">4472</span></a><span class="sd"> Table: table instance</span> +</span><span id="L-4473"><a href="#L-4473"><span class="linenos">4473</span></a><span class="sd"> """</span> +</span><span id="L-4474"><a href="#L-4474"><span class="linenos">4474</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span> +</span><span id="L-4475"><a href="#L-4475"><span class="linenos">4475</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="L-4476"><a href="#L-4476"><span class="linenos">4476</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="L-4477"><a href="#L-4477"><span class="linenos">4477</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="L-4478"><a href="#L-4478"><span class="linenos">4478</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-4479"><a href="#L-4479"><span class="linenos">4479</span></a> <span class="p">)</span> +</span><span id="L-4480"><a href="#L-4480"><span class="linenos">4480</span></a> +</span><span id="L-4481"><a href="#L-4481"><span class="linenos">4481</span></a> +</span><span id="L-4482"><a href="#L-4482"><span class="linenos">4482</span></a><span class="k">def</span> <span class="nf">values</span><span class="p">(</span> +</span><span id="L-4483"><a href="#L-4483"><span class="linenos">4483</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Iterable</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="o">...</span><span class="p">]],</span> +</span><span id="L-4484"><a href="#L-4484"><span class="linenos">4484</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-4485"><a href="#L-4485"><span class="linenos">4485</span></a> <span class="n">columns</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Iterable</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-4486"><a href="#L-4486"><span class="linenos">4486</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Values</span><span class="p">:</span> +</span><span id="L-4487"><a href="#L-4487"><span class="linenos">4487</span></a><span class="w"> </span><span class="sd">"""Build VALUES statement.</span> </span><span id="L-4488"><a href="#L-4488"><span class="linenos">4488</span></a> -</span><span id="L-4489"><a href="#L-4489"><span class="linenos">4489</span></a> -</span><span id="L-4490"><a href="#L-4490"><span class="linenos">4490</span></a><span class="k">def</span> <span class="nf">rename_table</span><span class="p">(</span><span class="n">old_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">new_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> -</span><span id="L-4491"><a href="#L-4491"><span class="linenos">4491</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME... expression</span> +</span><span id="L-4489"><a href="#L-4489"><span class="linenos">4489</span></a><span class="sd"> Example:</span> +</span><span id="L-4490"><a href="#L-4490"><span class="linenos">4490</span></a><span class="sd"> >>> values([(1, '2')]).sql()</span> +</span><span id="L-4491"><a href="#L-4491"><span class="linenos">4491</span></a><span class="sd"> "VALUES (1, '2')"</span> </span><span id="L-4492"><a href="#L-4492"><span class="linenos">4492</span></a> </span><span id="L-4493"><a href="#L-4493"><span class="linenos">4493</span></a><span class="sd"> Args:</span> -</span><span id="L-4494"><a href="#L-4494"><span class="linenos">4494</span></a><span class="sd"> old_name: The old name of the table</span> -</span><span id="L-4495"><a href="#L-4495"><span class="linenos">4495</span></a><span class="sd"> new_name: The new name of the table</span> -</span><span id="L-4496"><a href="#L-4496"><span class="linenos">4496</span></a> -</span><span id="L-4497"><a href="#L-4497"><span class="linenos">4497</span></a><span class="sd"> Returns:</span> -</span><span id="L-4498"><a href="#L-4498"><span class="linenos">4498</span></a><span class="sd"> Alter table expression</span> -</span><span id="L-4499"><a href="#L-4499"><span class="linenos">4499</span></a><span class="sd"> """</span> -</span><span id="L-4500"><a href="#L-4500"><span class="linenos">4500</span></a> <span class="n">old_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">old_name</span><span class="p">)</span> -</span><span id="L-4501"><a href="#L-4501"><span class="linenos">4501</span></a> <span class="n">new_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> -</span><span id="L-4502"><a href="#L-4502"><span class="linenos">4502</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> -</span><span id="L-4503"><a href="#L-4503"><span class="linenos">4503</span></a> <span class="n">this</span><span class="o">=</span><span class="n">old_table</span><span class="p">,</span> -</span><span id="L-4504"><a href="#L-4504"><span class="linenos">4504</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> -</span><span id="L-4505"><a href="#L-4505"><span class="linenos">4505</span></a> <span class="n">RenameTable</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">new_table</span><span class="p">),</span> -</span><span id="L-4506"><a href="#L-4506"><span class="linenos">4506</span></a> <span class="p">],</span> -</span><span id="L-4507"><a href="#L-4507"><span class="linenos">4507</span></a> <span class="p">)</span> -</span><span id="L-4508"><a href="#L-4508"><span class="linenos">4508</span></a> -</span><span id="L-4509"><a href="#L-4509"><span class="linenos">4509</span></a> -</span><span id="L-4510"><a href="#L-4510"><span class="linenos">4510</span></a><span class="k">def</span> <span class="nf">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-4511"><a href="#L-4511"><span class="linenos">4511</span></a><span class="w"> </span><span class="sd">"""Convert a python value into an expression object.</span> -</span><span id="L-4512"><a href="#L-4512"><span class="linenos">4512</span></a> -</span><span id="L-4513"><a href="#L-4513"><span class="linenos">4513</span></a><span class="sd"> Raises an error if a conversion is not possible.</span> -</span><span id="L-4514"><a href="#L-4514"><span class="linenos">4514</span></a> -</span><span id="L-4515"><a href="#L-4515"><span class="linenos">4515</span></a><span class="sd"> Args:</span> -</span><span id="L-4516"><a href="#L-4516"><span class="linenos">4516</span></a><span class="sd"> value (Any): a python object</span> -</span><span id="L-4517"><a href="#L-4517"><span class="linenos">4517</span></a> -</span><span id="L-4518"><a href="#L-4518"><span class="linenos">4518</span></a><span class="sd"> Returns:</span> -</span><span id="L-4519"><a href="#L-4519"><span class="linenos">4519</span></a><span class="sd"> Expression: the equivalent expression object</span> -</span><span id="L-4520"><a href="#L-4520"><span class="linenos">4520</span></a><span class="sd"> """</span> -</span><span id="L-4521"><a href="#L-4521"><span class="linenos">4521</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4522"><a href="#L-4522"><span class="linenos">4522</span></a> <span class="k">return</span> <span class="n">value</span> -</span><span id="L-4523"><a href="#L-4523"><span class="linenos">4523</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-4524"><a href="#L-4524"><span class="linenos">4524</span></a> <span class="k">return</span> <span class="n">NULL</span> -</span><span id="L-4525"><a href="#L-4525"><span class="linenos">4525</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> -</span><span id="L-4526"><a href="#L-4526"><span class="linenos">4526</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-4527"><a href="#L-4527"><span class="linenos">4527</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-4528"><a href="#L-4528"><span class="linenos">4528</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-4529"><a href="#L-4529"><span class="linenos">4529</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> -</span><span id="L-4530"><a href="#L-4530"><span class="linenos">4530</span></a> <span class="k">return</span> <span class="n">NULL</span> -</span><span id="L-4531"><a href="#L-4531"><span class="linenos">4531</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">numbers</span><span class="o">.</span><span class="n">Number</span><span class="p">):</span> -</span><span id="L-4532"><a href="#L-4532"><span class="linenos">4532</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-4533"><a href="#L-4533"><span class="linenos">4533</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> -</span><span id="L-4534"><a href="#L-4534"><span class="linenos">4534</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> -</span><span id="L-4535"><a href="#L-4535"><span class="linenos">4535</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="L-4536"><a href="#L-4536"><span class="linenos">4536</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> -</span><span id="L-4537"><a href="#L-4537"><span class="linenos">4537</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="L-4538"><a href="#L-4538"><span class="linenos">4538</span></a> <span class="k">return</span> <span class="n">Map</span><span class="p">(</span> -</span><span id="L-4539"><a href="#L-4539"><span class="linenos">4539</span></a> <span class="n">keys</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="p">],</span> -</span><span id="L-4540"><a href="#L-4540"><span class="linenos">4540</span></a> <span class="n">values</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">()],</span> -</span><span id="L-4541"><a href="#L-4541"><span class="linenos">4541</span></a> <span class="p">)</span> -</span><span id="L-4542"><a href="#L-4542"><span class="linenos">4542</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">):</span> -</span><span id="L-4543"><a href="#L-4543"><span class="linenos">4543</span></a> <span class="n">datetime_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="L-4544"><a href="#L-4544"><span class="linenos">4544</span></a> <span class="p">(</span><span class="n">value</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">tzinfo</span> <span class="k">else</span> <span class="n">value</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">utc</span><span class="p">))</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span> -</span><span id="L-4545"><a href="#L-4545"><span class="linenos">4545</span></a> <span class="p">)</span> -</span><span id="L-4546"><a href="#L-4546"><span class="linenos">4546</span></a> <span class="k">return</span> <span class="n">TimeStrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">datetime_literal</span><span class="p">)</span> -</span><span id="L-4547"><a href="#L-4547"><span class="linenos">4547</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">):</span> -</span><span id="L-4548"><a href="#L-4548"><span class="linenos">4548</span></a> <span class="n">date_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> -</span><span id="L-4549"><a href="#L-4549"><span class="linenos">4549</span></a> <span class="k">return</span> <span class="n">DateStrToDate</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">date_literal</span><span class="p">)</span> -</span><span id="L-4550"><a href="#L-4550"><span class="linenos">4550</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-4551"><a href="#L-4551"><span class="linenos">4551</span></a> -</span><span id="L-4552"><a href="#L-4552"><span class="linenos">4552</span></a> -</span><span id="L-4553"><a href="#L-4553"><span class="linenos">4553</span></a><span class="k">def</span> <span class="nf">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">fun</span><span class="p">):</span> -</span><span id="L-4554"><a href="#L-4554"><span class="linenos">4554</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4555"><a href="#L-4555"><span class="linenos">4555</span></a><span class="sd"> Replace children of an expression with the result of a lambda fun(child) -> exp.</span> -</span><span id="L-4556"><a href="#L-4556"><span class="linenos">4556</span></a><span class="sd"> """</span> -</span><span id="L-4557"><a href="#L-4557"><span class="linenos">4557</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-4558"><a href="#L-4558"><span class="linenos">4558</span></a> <span class="n">is_list_arg</span> <span class="o">=</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> -</span><span id="L-4559"><a href="#L-4559"><span class="linenos">4559</span></a> -</span><span id="L-4560"><a href="#L-4560"><span class="linenos">4560</span></a> <span class="n">child_nodes</span> <span class="o">=</span> <span class="n">v</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="p">[</span><span class="n">v</span><span class="p">]</span> -</span><span id="L-4561"><a href="#L-4561"><span class="linenos">4561</span></a> <span class="n">new_child_nodes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-4562"><a href="#L-4562"><span class="linenos">4562</span></a> -</span><span id="L-4563"><a href="#L-4563"><span class="linenos">4563</span></a> <span class="k">for</span> <span class="n">cn</span> <span class="ow">in</span> <span class="n">child_nodes</span><span class="p">:</span> -</span><span id="L-4564"><a href="#L-4564"><span class="linenos">4564</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4565"><a href="#L-4565"><span class="linenos">4565</span></a> <span class="k">for</span> <span class="n">child_node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">fun</span><span class="p">(</span><span class="n">cn</span><span class="p">)):</span> -</span><span id="L-4566"><a href="#L-4566"><span class="linenos">4566</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child_node</span><span class="p">)</span> -</span><span id="L-4567"><a href="#L-4567"><span class="linenos">4567</span></a> <span class="n">child_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="L-4568"><a href="#L-4568"><span class="linenos">4568</span></a> <span class="n">child_node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">k</span> -</span><span id="L-4569"><a href="#L-4569"><span class="linenos">4569</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4570"><a href="#L-4570"><span class="linenos">4570</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cn</span><span class="p">)</span> -</span><span id="L-4571"><a href="#L-4571"><span class="linenos">4571</span></a> -</span><span id="L-4572"><a href="#L-4572"><span class="linenos">4572</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_child_nodes</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">new_child_nodes</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-4573"><a href="#L-4573"><span class="linenos">4573</span></a> -</span><span id="L-4574"><a href="#L-4574"><span class="linenos">4574</span></a> -</span><span id="L-4575"><a href="#L-4575"><span class="linenos">4575</span></a><span class="k">def</span> <span class="nf">column_table_names</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span> -</span><span id="L-4576"><a href="#L-4576"><span class="linenos">4576</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4577"><a href="#L-4577"><span class="linenos">4577</span></a><span class="sd"> Return all table names referenced through columns in an expression.</span> -</span><span id="L-4578"><a href="#L-4578"><span class="linenos">4578</span></a> -</span><span id="L-4579"><a href="#L-4579"><span class="linenos">4579</span></a><span class="sd"> Example:</span> -</span><span id="L-4580"><a href="#L-4580"><span class="linenos">4580</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="L-4581"><a href="#L-4581"><span class="linenos">4581</span></a><span class="sd"> >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))</span> -</span><span id="L-4582"><a href="#L-4582"><span class="linenos">4582</span></a><span class="sd"> ['c', 'a']</span> -</span><span id="L-4583"><a href="#L-4583"><span class="linenos">4583</span></a> -</span><span id="L-4584"><a href="#L-4584"><span class="linenos">4584</span></a><span class="sd"> Args:</span> -</span><span id="L-4585"><a href="#L-4585"><span class="linenos">4585</span></a><span class="sd"> expression (sqlglot.Expression): expression to find table names</span> -</span><span id="L-4586"><a href="#L-4586"><span class="linenos">4586</span></a> -</span><span id="L-4587"><a href="#L-4587"><span class="linenos">4587</span></a><span class="sd"> Returns:</span> -</span><span id="L-4588"><a href="#L-4588"><span class="linenos">4588</span></a><span class="sd"> list: A list of unique names</span> -</span><span id="L-4589"><a href="#L-4589"><span class="linenos">4589</span></a><span class="sd"> """</span> -</span><span id="L-4590"><a href="#L-4590"><span class="linenos">4590</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Column</span><span class="p">)))</span> -</span><span id="L-4591"><a href="#L-4591"><span class="linenos">4591</span></a> -</span><span id="L-4592"><a href="#L-4592"><span class="linenos">4592</span></a> -</span><span id="L-4593"><a href="#L-4593"><span class="linenos">4593</span></a><span class="k">def</span> <span class="nf">table_name</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-4594"><a href="#L-4594"><span class="linenos">4594</span></a><span class="w"> </span><span class="sd">"""Get the full name of a table as a string.</span> -</span><span id="L-4595"><a href="#L-4595"><span class="linenos">4595</span></a> -</span><span id="L-4596"><a href="#L-4596"><span class="linenos">4596</span></a><span class="sd"> Args:</span> -</span><span id="L-4597"><a href="#L-4597"><span class="linenos">4597</span></a><span class="sd"> table (exp.Table | str): table expression node or string.</span> -</span><span id="L-4598"><a href="#L-4598"><span class="linenos">4598</span></a> -</span><span id="L-4599"><a href="#L-4599"><span class="linenos">4599</span></a><span class="sd"> Examples:</span> -</span><span id="L-4600"><a href="#L-4600"><span class="linenos">4600</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="L-4601"><a href="#L-4601"><span class="linenos">4601</span></a><span class="sd"> >>> table_name(parse_one("select * from a.b.c").find(exp.Table))</span> -</span><span id="L-4602"><a href="#L-4602"><span class="linenos">4602</span></a><span class="sd"> 'a.b.c'</span> -</span><span id="L-4603"><a href="#L-4603"><span class="linenos">4603</span></a> -</span><span id="L-4604"><a href="#L-4604"><span class="linenos">4604</span></a><span class="sd"> Returns:</span> -</span><span id="L-4605"><a href="#L-4605"><span class="linenos">4605</span></a><span class="sd"> The table name.</span> -</span><span id="L-4606"><a href="#L-4606"><span class="linenos">4606</span></a><span class="sd"> """</span> -</span><span id="L-4607"><a href="#L-4607"><span class="linenos">4607</span></a> -</span><span id="L-4608"><a href="#L-4608"><span class="linenos">4608</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">)</span> +</span><span id="L-4494"><a href="#L-4494"><span class="linenos">4494</span></a><span class="sd"> values: values statements that will be converted to SQL</span> +</span><span id="L-4495"><a href="#L-4495"><span class="linenos">4495</span></a><span class="sd"> alias: optional alias</span> +</span><span id="L-4496"><a href="#L-4496"><span class="linenos">4496</span></a><span class="sd"> columns: Optional list of ordered column names or ordered dictionary of column names to types.</span> +</span><span id="L-4497"><a href="#L-4497"><span class="linenos">4497</span></a><span class="sd"> If either are provided then an alias is also required.</span> +</span><span id="L-4498"><a href="#L-4498"><span class="linenos">4498</span></a><span class="sd"> If a dictionary is provided then the first column of the values will be casted to the expected type</span> +</span><span id="L-4499"><a href="#L-4499"><span class="linenos">4499</span></a><span class="sd"> in order to help with type inference.</span> +</span><span id="L-4500"><a href="#L-4500"><span class="linenos">4500</span></a> +</span><span id="L-4501"><a href="#L-4501"><span class="linenos">4501</span></a><span class="sd"> Returns:</span> +</span><span id="L-4502"><a href="#L-4502"><span class="linenos">4502</span></a><span class="sd"> Values: the Values expression object</span> +</span><span id="L-4503"><a href="#L-4503"><span class="linenos">4503</span></a><span class="sd"> """</span> +</span><span id="L-4504"><a href="#L-4504"><span class="linenos">4504</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-4505"><a href="#L-4505"><span class="linenos">4505</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Alias is required when providing columns"</span><span class="p">)</span> +</span><span id="L-4506"><a href="#L-4506"><span class="linenos">4506</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-4507"><a href="#L-4507"><span class="linenos">4507</span></a> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">),</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> +</span><span id="L-4508"><a href="#L-4508"><span class="linenos">4508</span></a> <span class="k">if</span> <span class="n">columns</span> +</span><span id="L-4509"><a href="#L-4509"><span class="linenos">4509</span></a> <span class="k">else</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-4510"><a href="#L-4510"><span class="linenos">4510</span></a> <span class="p">)</span> +</span><span id="L-4511"><a href="#L-4511"><span class="linenos">4511</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="n">values</span><span class="p">]</span> +</span><span id="L-4512"><a href="#L-4512"><span class="linenos">4512</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="L-4513"><a href="#L-4513"><span class="linenos">4513</span></a> <span class="n">types</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">columns</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="L-4514"><a href="#L-4514"><span class="linenos">4514</span></a> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-4515"><a href="#L-4515"><span class="linenos">4515</span></a> <span class="s2">"expressions"</span><span class="p">,</span> +</span><span id="L-4516"><a href="#L-4516"><span class="linenos">4516</span></a> <span class="p">[</span><span class="n">cast</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">)],</span> +</span><span id="L-4517"><a href="#L-4517"><span class="linenos">4517</span></a> <span class="p">)</span> +</span><span id="L-4518"><a href="#L-4518"><span class="linenos">4518</span></a> <span class="k">return</span> <span class="n">Values</span><span class="p">(</span> +</span><span id="L-4519"><a href="#L-4519"><span class="linenos">4519</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-4520"><a href="#L-4520"><span class="linenos">4520</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> +</span><span id="L-4521"><a href="#L-4521"><span class="linenos">4521</span></a> <span class="p">)</span> +</span><span id="L-4522"><a href="#L-4522"><span class="linenos">4522</span></a> +</span><span id="L-4523"><a href="#L-4523"><span class="linenos">4523</span></a> +</span><span id="L-4524"><a href="#L-4524"><span class="linenos">4524</span></a><span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Var</span><span class="p">:</span> +</span><span id="L-4525"><a href="#L-4525"><span class="linenos">4525</span></a><span class="w"> </span><span class="sd">"""Build a SQL variable.</span> +</span><span id="L-4526"><a href="#L-4526"><span class="linenos">4526</span></a> +</span><span id="L-4527"><a href="#L-4527"><span class="linenos">4527</span></a><span class="sd"> Example:</span> +</span><span id="L-4528"><a href="#L-4528"><span class="linenos">4528</span></a><span class="sd"> >>> repr(var('x'))</span> +</span><span id="L-4529"><a href="#L-4529"><span class="linenos">4529</span></a><span class="sd"> '(VAR this: x)'</span> +</span><span id="L-4530"><a href="#L-4530"><span class="linenos">4530</span></a> +</span><span id="L-4531"><a href="#L-4531"><span class="linenos">4531</span></a><span class="sd"> >>> repr(var(column('x', table='y')))</span> +</span><span id="L-4532"><a href="#L-4532"><span class="linenos">4532</span></a><span class="sd"> '(VAR this: x)'</span> +</span><span id="L-4533"><a href="#L-4533"><span class="linenos">4533</span></a> +</span><span id="L-4534"><a href="#L-4534"><span class="linenos">4534</span></a><span class="sd"> Args:</span> +</span><span id="L-4535"><a href="#L-4535"><span class="linenos">4535</span></a><span class="sd"> name: The name of the var or an expression who's name will become the var.</span> +</span><span id="L-4536"><a href="#L-4536"><span class="linenos">4536</span></a> +</span><span id="L-4537"><a href="#L-4537"><span class="linenos">4537</span></a><span class="sd"> Returns:</span> +</span><span id="L-4538"><a href="#L-4538"><span class="linenos">4538</span></a><span class="sd"> The new variable node.</span> +</span><span id="L-4539"><a href="#L-4539"><span class="linenos">4539</span></a><span class="sd"> """</span> +</span><span id="L-4540"><a href="#L-4540"><span class="linenos">4540</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> +</span><span id="L-4541"><a href="#L-4541"><span class="linenos">4541</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert empty name into var."</span><span class="p">)</span> +</span><span id="L-4542"><a href="#L-4542"><span class="linenos">4542</span></a> +</span><span id="L-4543"><a href="#L-4543"><span class="linenos">4543</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4544"><a href="#L-4544"><span class="linenos">4544</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-4545"><a href="#L-4545"><span class="linenos">4545</span></a> <span class="k">return</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-4546"><a href="#L-4546"><span class="linenos">4546</span></a> +</span><span id="L-4547"><a href="#L-4547"><span class="linenos">4547</span></a> +</span><span id="L-4548"><a href="#L-4548"><span class="linenos">4548</span></a><span class="k">def</span> <span class="nf">rename_table</span><span class="p">(</span><span class="n">old_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">new_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> +</span><span id="L-4549"><a href="#L-4549"><span class="linenos">4549</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME... expression</span> +</span><span id="L-4550"><a href="#L-4550"><span class="linenos">4550</span></a> +</span><span id="L-4551"><a href="#L-4551"><span class="linenos">4551</span></a><span class="sd"> Args:</span> +</span><span id="L-4552"><a href="#L-4552"><span class="linenos">4552</span></a><span class="sd"> old_name: The old name of the table</span> +</span><span id="L-4553"><a href="#L-4553"><span class="linenos">4553</span></a><span class="sd"> new_name: The new name of the table</span> +</span><span id="L-4554"><a href="#L-4554"><span class="linenos">4554</span></a> +</span><span id="L-4555"><a href="#L-4555"><span class="linenos">4555</span></a><span class="sd"> Returns:</span> +</span><span id="L-4556"><a href="#L-4556"><span class="linenos">4556</span></a><span class="sd"> Alter table expression</span> +</span><span id="L-4557"><a href="#L-4557"><span class="linenos">4557</span></a><span class="sd"> """</span> +</span><span id="L-4558"><a href="#L-4558"><span class="linenos">4558</span></a> <span class="n">old_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">old_name</span><span class="p">)</span> +</span><span id="L-4559"><a href="#L-4559"><span class="linenos">4559</span></a> <span class="n">new_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> +</span><span id="L-4560"><a href="#L-4560"><span class="linenos">4560</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> +</span><span id="L-4561"><a href="#L-4561"><span class="linenos">4561</span></a> <span class="n">this</span><span class="o">=</span><span class="n">old_table</span><span class="p">,</span> +</span><span id="L-4562"><a href="#L-4562"><span class="linenos">4562</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> +</span><span id="L-4563"><a href="#L-4563"><span class="linenos">4563</span></a> <span class="n">RenameTable</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">new_table</span><span class="p">),</span> +</span><span id="L-4564"><a href="#L-4564"><span class="linenos">4564</span></a> <span class="p">],</span> +</span><span id="L-4565"><a href="#L-4565"><span class="linenos">4565</span></a> <span class="p">)</span> +</span><span id="L-4566"><a href="#L-4566"><span class="linenos">4566</span></a> +</span><span id="L-4567"><a href="#L-4567"><span class="linenos">4567</span></a> +</span><span id="L-4568"><a href="#L-4568"><span class="linenos">4568</span></a><span class="k">def</span> <span class="nf">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-4569"><a href="#L-4569"><span class="linenos">4569</span></a><span class="w"> </span><span class="sd">"""Convert a python value into an expression object.</span> +</span><span id="L-4570"><a href="#L-4570"><span class="linenos">4570</span></a> +</span><span id="L-4571"><a href="#L-4571"><span class="linenos">4571</span></a><span class="sd"> Raises an error if a conversion is not possible.</span> +</span><span id="L-4572"><a href="#L-4572"><span class="linenos">4572</span></a> +</span><span id="L-4573"><a href="#L-4573"><span class="linenos">4573</span></a><span class="sd"> Args:</span> +</span><span id="L-4574"><a href="#L-4574"><span class="linenos">4574</span></a><span class="sd"> value (Any): a python object</span> +</span><span id="L-4575"><a href="#L-4575"><span class="linenos">4575</span></a> +</span><span id="L-4576"><a href="#L-4576"><span class="linenos">4576</span></a><span class="sd"> Returns:</span> +</span><span id="L-4577"><a href="#L-4577"><span class="linenos">4577</span></a><span class="sd"> Expression: the equivalent expression object</span> +</span><span id="L-4578"><a href="#L-4578"><span class="linenos">4578</span></a><span class="sd"> """</span> +</span><span id="L-4579"><a href="#L-4579"><span class="linenos">4579</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4580"><a href="#L-4580"><span class="linenos">4580</span></a> <span class="k">return</span> <span class="n">value</span> +</span><span id="L-4581"><a href="#L-4581"><span class="linenos">4581</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-4582"><a href="#L-4582"><span class="linenos">4582</span></a> <span class="k">return</span> <span class="n">NULL</span> +</span><span id="L-4583"><a href="#L-4583"><span class="linenos">4583</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> +</span><span id="L-4584"><a href="#L-4584"><span class="linenos">4584</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-4585"><a href="#L-4585"><span class="linenos">4585</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-4586"><a href="#L-4586"><span class="linenos">4586</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-4587"><a href="#L-4587"><span class="linenos">4587</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> +</span><span id="L-4588"><a href="#L-4588"><span class="linenos">4588</span></a> <span class="k">return</span> <span class="n">NULL</span> +</span><span id="L-4589"><a href="#L-4589"><span class="linenos">4589</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">numbers</span><span class="o">.</span><span class="n">Number</span><span class="p">):</span> +</span><span id="L-4590"><a href="#L-4590"><span class="linenos">4590</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-4591"><a href="#L-4591"><span class="linenos">4591</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> +</span><span id="L-4592"><a href="#L-4592"><span class="linenos">4592</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> +</span><span id="L-4593"><a href="#L-4593"><span class="linenos">4593</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="L-4594"><a href="#L-4594"><span class="linenos">4594</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> +</span><span id="L-4595"><a href="#L-4595"><span class="linenos">4595</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="L-4596"><a href="#L-4596"><span class="linenos">4596</span></a> <span class="k">return</span> <span class="n">Map</span><span class="p">(</span> +</span><span id="L-4597"><a href="#L-4597"><span class="linenos">4597</span></a> <span class="n">keys</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="p">],</span> +</span><span id="L-4598"><a href="#L-4598"><span class="linenos">4598</span></a> <span class="n">values</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">()],</span> +</span><span id="L-4599"><a href="#L-4599"><span class="linenos">4599</span></a> <span class="p">)</span> +</span><span id="L-4600"><a href="#L-4600"><span class="linenos">4600</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">):</span> +</span><span id="L-4601"><a href="#L-4601"><span class="linenos">4601</span></a> <span class="n">datetime_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="L-4602"><a href="#L-4602"><span class="linenos">4602</span></a> <span class="p">(</span><span class="n">value</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">tzinfo</span> <span class="k">else</span> <span class="n">value</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">utc</span><span class="p">))</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span> +</span><span id="L-4603"><a href="#L-4603"><span class="linenos">4603</span></a> <span class="p">)</span> +</span><span id="L-4604"><a href="#L-4604"><span class="linenos">4604</span></a> <span class="k">return</span> <span class="n">TimeStrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">datetime_literal</span><span class="p">)</span> +</span><span id="L-4605"><a href="#L-4605"><span class="linenos">4605</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">):</span> +</span><span id="L-4606"><a href="#L-4606"><span class="linenos">4606</span></a> <span class="n">date_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> +</span><span id="L-4607"><a href="#L-4607"><span class="linenos">4607</span></a> <span class="k">return</span> <span class="n">DateStrToDate</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">date_literal</span><span class="p">)</span> +</span><span id="L-4608"><a href="#L-4608"><span class="linenos">4608</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="L-4609"><a href="#L-4609"><span class="linenos">4609</span></a> -</span><span id="L-4610"><a href="#L-4610"><span class="linenos">4610</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> -</span><span id="L-4611"><a href="#L-4611"><span class="linenos">4611</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-4612"><a href="#L-4612"><span class="linenos">4612</span></a> -</span><span id="L-4613"><a href="#L-4613"><span class="linenos">4613</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-4614"><a href="#L-4614"><span class="linenos">4614</span></a> <span class="n">part</span> -</span><span id="L-4615"><a href="#L-4615"><span class="linenos">4615</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="L-4616"><a href="#L-4616"><span class="linenos">4616</span></a> <span class="n">table</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">),</span> -</span><span id="L-4617"><a href="#L-4617"><span class="linenos">4617</span></a> <span class="n">table</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> -</span><span id="L-4618"><a href="#L-4618"><span class="linenos">4618</span></a> <span class="n">table</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> -</span><span id="L-4619"><a href="#L-4619"><span class="linenos">4619</span></a> <span class="p">)</span> -</span><span id="L-4620"><a href="#L-4620"><span class="linenos">4620</span></a> <span class="k">if</span> <span class="n">part</span> -</span><span id="L-4621"><a href="#L-4621"><span class="linenos">4621</span></a> <span class="p">)</span> -</span><span id="L-4622"><a href="#L-4622"><span class="linenos">4622</span></a> -</span><span id="L-4623"><a href="#L-4623"><span class="linenos">4623</span></a> -</span><span id="L-4624"><a href="#L-4624"><span class="linenos">4624</span></a><span class="k">def</span> <span class="nf">replace_tables</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">mapping</span><span class="p">):</span> -</span><span id="L-4625"><a href="#L-4625"><span class="linenos">4625</span></a><span class="w"> </span><span class="sd">"""Replace all tables in expression according to the mapping.</span> -</span><span id="L-4626"><a href="#L-4626"><span class="linenos">4626</span></a> -</span><span id="L-4627"><a href="#L-4627"><span class="linenos">4627</span></a><span class="sd"> Args:</span> -</span><span id="L-4628"><a href="#L-4628"><span class="linenos">4628</span></a><span class="sd"> expression (sqlglot.Expression): expression node to be transformed and replaced.</span> -</span><span id="L-4629"><a href="#L-4629"><span class="linenos">4629</span></a><span class="sd"> mapping (Dict[str, str]): mapping of table names.</span> -</span><span id="L-4630"><a href="#L-4630"><span class="linenos">4630</span></a> -</span><span id="L-4631"><a href="#L-4631"><span class="linenos">4631</span></a><span class="sd"> Examples:</span> -</span><span id="L-4632"><a href="#L-4632"><span class="linenos">4632</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="L-4633"><a href="#L-4633"><span class="linenos">4633</span></a><span class="sd"> >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()</span> -</span><span id="L-4634"><a href="#L-4634"><span class="linenos">4634</span></a><span class="sd"> 'SELECT * FROM c'</span> -</span><span id="L-4635"><a href="#L-4635"><span class="linenos">4635</span></a> -</span><span id="L-4636"><a href="#L-4636"><span class="linenos">4636</span></a><span class="sd"> Returns:</span> -</span><span id="L-4637"><a href="#L-4637"><span class="linenos">4637</span></a><span class="sd"> The mapped expression.</span> -</span><span id="L-4638"><a href="#L-4638"><span class="linenos">4638</span></a><span class="sd"> """</span> -</span><span id="L-4639"><a href="#L-4639"><span class="linenos">4639</span></a> -</span><span id="L-4640"><a href="#L-4640"><span class="linenos">4640</span></a> <span class="k">def</span> <span class="nf">_replace_tables</span><span class="p">(</span><span class="n">node</span><span class="p">):</span> -</span><span id="L-4641"><a href="#L-4641"><span class="linenos">4641</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="L-4642"><a href="#L-4642"><span class="linenos">4642</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table_name</span><span class="p">(</span><span class="n">node</span><span class="p">))</span> -</span><span id="L-4643"><a href="#L-4643"><span class="linenos">4643</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> -</span><span id="L-4644"><a href="#L-4644"><span class="linenos">4644</span></a> <span class="k">return</span> <span class="n">to_table</span><span class="p">(</span> -</span><span id="L-4645"><a href="#L-4645"><span class="linenos">4645</span></a> <span class="n">new_name</span><span class="p">,</span> -</span><span id="L-4646"><a href="#L-4646"><span class="linenos">4646</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">,</span> <span class="s2">"catalog"</span><span class="p">)},</span> -</span><span id="L-4647"><a href="#L-4647"><span class="linenos">4647</span></a> <span class="p">)</span> -</span><span id="L-4648"><a href="#L-4648"><span class="linenos">4648</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-4610"><a href="#L-4610"><span class="linenos">4610</span></a> +</span><span id="L-4611"><a href="#L-4611"><span class="linenos">4611</span></a><span class="k">def</span> <span class="nf">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">fun</span><span class="p">):</span> +</span><span id="L-4612"><a href="#L-4612"><span class="linenos">4612</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4613"><a href="#L-4613"><span class="linenos">4613</span></a><span class="sd"> Replace children of an expression with the result of a lambda fun(child) -> exp.</span> +</span><span id="L-4614"><a href="#L-4614"><span class="linenos">4614</span></a><span class="sd"> """</span> +</span><span id="L-4615"><a href="#L-4615"><span class="linenos">4615</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-4616"><a href="#L-4616"><span class="linenos">4616</span></a> <span class="n">is_list_arg</span> <span class="o">=</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> +</span><span id="L-4617"><a href="#L-4617"><span class="linenos">4617</span></a> +</span><span id="L-4618"><a href="#L-4618"><span class="linenos">4618</span></a> <span class="n">child_nodes</span> <span class="o">=</span> <span class="n">v</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="p">[</span><span class="n">v</span><span class="p">]</span> +</span><span id="L-4619"><a href="#L-4619"><span class="linenos">4619</span></a> <span class="n">new_child_nodes</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-4620"><a href="#L-4620"><span class="linenos">4620</span></a> +</span><span id="L-4621"><a href="#L-4621"><span class="linenos">4621</span></a> <span class="k">for</span> <span class="n">cn</span> <span class="ow">in</span> <span class="n">child_nodes</span><span class="p">:</span> +</span><span id="L-4622"><a href="#L-4622"><span class="linenos">4622</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4623"><a href="#L-4623"><span class="linenos">4623</span></a> <span class="k">for</span> <span class="n">child_node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">fun</span><span class="p">(</span><span class="n">cn</span><span class="p">)):</span> +</span><span id="L-4624"><a href="#L-4624"><span class="linenos">4624</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child_node</span><span class="p">)</span> +</span><span id="L-4625"><a href="#L-4625"><span class="linenos">4625</span></a> <span class="n">child_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="L-4626"><a href="#L-4626"><span class="linenos">4626</span></a> <span class="n">child_node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">k</span> +</span><span id="L-4627"><a href="#L-4627"><span class="linenos">4627</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4628"><a href="#L-4628"><span class="linenos">4628</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cn</span><span class="p">)</span> +</span><span id="L-4629"><a href="#L-4629"><span class="linenos">4629</span></a> +</span><span id="L-4630"><a href="#L-4630"><span class="linenos">4630</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_child_nodes</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">new_child_nodes</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-4631"><a href="#L-4631"><span class="linenos">4631</span></a> +</span><span id="L-4632"><a href="#L-4632"><span class="linenos">4632</span></a> +</span><span id="L-4633"><a href="#L-4633"><span class="linenos">4633</span></a><span class="k">def</span> <span class="nf">column_table_names</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span> +</span><span id="L-4634"><a href="#L-4634"><span class="linenos">4634</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4635"><a href="#L-4635"><span class="linenos">4635</span></a><span class="sd"> Return all table names referenced through columns in an expression.</span> +</span><span id="L-4636"><a href="#L-4636"><span class="linenos">4636</span></a> +</span><span id="L-4637"><a href="#L-4637"><span class="linenos">4637</span></a><span class="sd"> Example:</span> +</span><span id="L-4638"><a href="#L-4638"><span class="linenos">4638</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="L-4639"><a href="#L-4639"><span class="linenos">4639</span></a><span class="sd"> >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))</span> +</span><span id="L-4640"><a href="#L-4640"><span class="linenos">4640</span></a><span class="sd"> ['c', 'a']</span> +</span><span id="L-4641"><a href="#L-4641"><span class="linenos">4641</span></a> +</span><span id="L-4642"><a href="#L-4642"><span class="linenos">4642</span></a><span class="sd"> Args:</span> +</span><span id="L-4643"><a href="#L-4643"><span class="linenos">4643</span></a><span class="sd"> expression (sqlglot.Expression): expression to find table names</span> +</span><span id="L-4644"><a href="#L-4644"><span class="linenos">4644</span></a> +</span><span id="L-4645"><a href="#L-4645"><span class="linenos">4645</span></a><span class="sd"> Returns:</span> +</span><span id="L-4646"><a href="#L-4646"><span class="linenos">4646</span></a><span class="sd"> list: A list of unique names</span> +</span><span id="L-4647"><a href="#L-4647"><span class="linenos">4647</span></a><span class="sd"> """</span> +</span><span id="L-4648"><a href="#L-4648"><span class="linenos">4648</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Column</span><span class="p">)))</span> </span><span id="L-4649"><a href="#L-4649"><span class="linenos">4649</span></a> -</span><span id="L-4650"><a href="#L-4650"><span class="linenos">4650</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">)</span> -</span><span id="L-4651"><a href="#L-4651"><span class="linenos">4651</span></a> -</span><span id="L-4652"><a href="#L-4652"><span class="linenos">4652</span></a> -</span><span id="L-4653"><a href="#L-4653"><span class="linenos">4653</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> -</span><span id="L-4654"><a href="#L-4654"><span class="linenos">4654</span></a><span class="w"> </span><span class="sd">"""Replace placeholders in an expression.</span> -</span><span id="L-4655"><a href="#L-4655"><span class="linenos">4655</span></a> -</span><span id="L-4656"><a href="#L-4656"><span class="linenos">4656</span></a><span class="sd"> Args:</span> -</span><span id="L-4657"><a href="#L-4657"><span class="linenos">4657</span></a><span class="sd"> expression (sqlglot.Expression): expression node to be transformed and replaced.</span> -</span><span id="L-4658"><a href="#L-4658"><span class="linenos">4658</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span> -</span><span id="L-4659"><a href="#L-4659"><span class="linenos">4659</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span> -</span><span id="L-4660"><a href="#L-4660"><span class="linenos">4660</span></a> -</span><span id="L-4661"><a href="#L-4661"><span class="linenos">4661</span></a><span class="sd"> Examples:</span> -</span><span id="L-4662"><a href="#L-4662"><span class="linenos">4662</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="L-4663"><a href="#L-4663"><span class="linenos">4663</span></a><span class="sd"> >>> replace_placeholders(</span> -</span><span id="L-4664"><a href="#L-4664"><span class="linenos">4664</span></a><span class="sd"> ... parse_one("select * from :tbl where ? = ?"), "a", "b", tbl="foo"</span> -</span><span id="L-4665"><a href="#L-4665"><span class="linenos">4665</span></a><span class="sd"> ... ).sql()</span> -</span><span id="L-4666"><a href="#L-4666"><span class="linenos">4666</span></a><span class="sd"> 'SELECT * FROM foo WHERE a = b'</span> +</span><span id="L-4650"><a href="#L-4650"><span class="linenos">4650</span></a> +</span><span id="L-4651"><a href="#L-4651"><span class="linenos">4651</span></a><span class="k">def</span> <span class="nf">table_name</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-4652"><a href="#L-4652"><span class="linenos">4652</span></a><span class="w"> </span><span class="sd">"""Get the full name of a table as a string.</span> +</span><span id="L-4653"><a href="#L-4653"><span class="linenos">4653</span></a> +</span><span id="L-4654"><a href="#L-4654"><span class="linenos">4654</span></a><span class="sd"> Args:</span> +</span><span id="L-4655"><a href="#L-4655"><span class="linenos">4655</span></a><span class="sd"> table (exp.Table | str): table expression node or string.</span> +</span><span id="L-4656"><a href="#L-4656"><span class="linenos">4656</span></a> +</span><span id="L-4657"><a href="#L-4657"><span class="linenos">4657</span></a><span class="sd"> Examples:</span> +</span><span id="L-4658"><a href="#L-4658"><span class="linenos">4658</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="L-4659"><a href="#L-4659"><span class="linenos">4659</span></a><span class="sd"> >>> table_name(parse_one("select * from a.b.c").find(exp.Table))</span> +</span><span id="L-4660"><a href="#L-4660"><span class="linenos">4660</span></a><span class="sd"> 'a.b.c'</span> +</span><span id="L-4661"><a href="#L-4661"><span class="linenos">4661</span></a> +</span><span id="L-4662"><a href="#L-4662"><span class="linenos">4662</span></a><span class="sd"> Returns:</span> +</span><span id="L-4663"><a href="#L-4663"><span class="linenos">4663</span></a><span class="sd"> The table name.</span> +</span><span id="L-4664"><a href="#L-4664"><span class="linenos">4664</span></a><span class="sd"> """</span> +</span><span id="L-4665"><a href="#L-4665"><span class="linenos">4665</span></a> +</span><span id="L-4666"><a href="#L-4666"><span class="linenos">4666</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">)</span> </span><span id="L-4667"><a href="#L-4667"><span class="linenos">4667</span></a> -</span><span id="L-4668"><a href="#L-4668"><span class="linenos">4668</span></a><span class="sd"> Returns:</span> -</span><span id="L-4669"><a href="#L-4669"><span class="linenos">4669</span></a><span class="sd"> The mapped expression.</span> -</span><span id="L-4670"><a href="#L-4670"><span class="linenos">4670</span></a><span class="sd"> """</span> -</span><span id="L-4671"><a href="#L-4671"><span class="linenos">4671</span></a> -</span><span id="L-4672"><a href="#L-4672"><span class="linenos">4672</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> -</span><span id="L-4673"><a href="#L-4673"><span class="linenos">4673</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Placeholder</span><span class="p">):</span> -</span><span id="L-4674"><a href="#L-4674"><span class="linenos">4674</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> -</span><span id="L-4675"><a href="#L-4675"><span class="linenos">4675</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-4676"><a href="#L-4676"><span class="linenos">4676</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> -</span><span id="L-4677"><a href="#L-4677"><span class="linenos">4677</span></a> <span class="k">return</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> -</span><span id="L-4678"><a href="#L-4678"><span class="linenos">4678</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4679"><a href="#L-4679"><span class="linenos">4679</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-4680"><a href="#L-4680"><span class="linenos">4680</span></a> <span class="k">return</span> <span class="n">to_identifier</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span> -</span><span id="L-4681"><a href="#L-4681"><span class="linenos">4681</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> -</span><span id="L-4682"><a href="#L-4682"><span class="linenos">4682</span></a> <span class="k">pass</span> -</span><span id="L-4683"><a href="#L-4683"><span class="linenos">4683</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-4668"><a href="#L-4668"><span class="linenos">4668</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> +</span><span id="L-4669"><a href="#L-4669"><span class="linenos">4669</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-4670"><a href="#L-4670"><span class="linenos">4670</span></a> +</span><span id="L-4671"><a href="#L-4671"><span class="linenos">4671</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-4672"><a href="#L-4672"><span class="linenos">4672</span></a> <span class="n">part</span> +</span><span id="L-4673"><a href="#L-4673"><span class="linenos">4673</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="L-4674"><a href="#L-4674"><span class="linenos">4674</span></a> <span class="n">table</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">),</span> +</span><span id="L-4675"><a href="#L-4675"><span class="linenos">4675</span></a> <span class="n">table</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> +</span><span id="L-4676"><a href="#L-4676"><span class="linenos">4676</span></a> <span class="n">table</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> +</span><span id="L-4677"><a href="#L-4677"><span class="linenos">4677</span></a> <span class="p">)</span> +</span><span id="L-4678"><a href="#L-4678"><span class="linenos">4678</span></a> <span class="k">if</span> <span class="n">part</span> +</span><span id="L-4679"><a href="#L-4679"><span class="linenos">4679</span></a> <span class="p">)</span> +</span><span id="L-4680"><a href="#L-4680"><span class="linenos">4680</span></a> +</span><span id="L-4681"><a href="#L-4681"><span class="linenos">4681</span></a> +</span><span id="L-4682"><a href="#L-4682"><span class="linenos">4682</span></a><span class="k">def</span> <span class="nf">replace_tables</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">mapping</span><span class="p">):</span> +</span><span id="L-4683"><a href="#L-4683"><span class="linenos">4683</span></a><span class="w"> </span><span class="sd">"""Replace all tables in expression according to the mapping.</span> </span><span id="L-4684"><a href="#L-4684"><span class="linenos">4684</span></a> -</span><span id="L-4685"><a href="#L-4685"><span class="linenos">4685</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-4686"><a href="#L-4686"><span class="linenos">4686</span></a> -</span><span id="L-4687"><a href="#L-4687"><span class="linenos">4687</span></a> -</span><span id="L-4688"><a href="#L-4688"><span class="linenos">4688</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Subqueryable</span><span class="p">],</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="L-4689"><a href="#L-4689"><span class="linenos">4689</span></a><span class="w"> </span><span class="sd">"""Transforms an expression by expanding all referenced sources into subqueries.</span> -</span><span id="L-4690"><a href="#L-4690"><span class="linenos">4690</span></a> -</span><span id="L-4691"><a href="#L-4691"><span class="linenos">4691</span></a><span class="sd"> Examples:</span> -</span><span id="L-4692"><a href="#L-4692"><span class="linenos">4692</span></a><span class="sd"> >>> from sqlglot import parse_one</span> -</span><span id="L-4693"><a href="#L-4693"><span class="linenos">4693</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()</span> -</span><span id="L-4694"><a href="#L-4694"><span class="linenos">4694</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'</span> -</span><span id="L-4695"><a href="#L-4695"><span class="linenos">4695</span></a> -</span><span id="L-4696"><a href="#L-4696"><span class="linenos">4696</span></a><span class="sd"> Args:</span> -</span><span id="L-4697"><a href="#L-4697"><span class="linenos">4697</span></a><span class="sd"> expression: The expression to expand.</span> -</span><span id="L-4698"><a href="#L-4698"><span class="linenos">4698</span></a><span class="sd"> sources: A dictionary of name to Subqueryables.</span> -</span><span id="L-4699"><a href="#L-4699"><span class="linenos">4699</span></a><span class="sd"> copy: Whether or not to copy the expression during transformation. Defaults to True.</span> -</span><span id="L-4700"><a href="#L-4700"><span class="linenos">4700</span></a> -</span><span id="L-4701"><a href="#L-4701"><span class="linenos">4701</span></a><span class="sd"> Returns:</span> -</span><span id="L-4702"><a href="#L-4702"><span class="linenos">4702</span></a><span class="sd"> The transformed expression.</span> -</span><span id="L-4703"><a href="#L-4703"><span class="linenos">4703</span></a><span class="sd"> """</span> -</span><span id="L-4704"><a href="#L-4704"><span class="linenos">4704</span></a> -</span><span id="L-4705"><a href="#L-4705"><span class="linenos">4705</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="L-4706"><a href="#L-4706"><span class="linenos">4706</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="L-4707"><a href="#L-4707"><span class="linenos">4707</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">table_name</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> -</span><span id="L-4708"><a href="#L-4708"><span class="linenos">4708</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-4709"><a href="#L-4709"><span class="linenos">4709</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span> -</span><span id="L-4710"><a href="#L-4710"><span class="linenos">4710</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span> -</span><span id="L-4711"><a href="#L-4711"><span class="linenos">4711</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> -</span><span id="L-4712"><a href="#L-4712"><span class="linenos">4712</span></a> <span class="k">return</span> <span class="n">subquery</span> -</span><span id="L-4713"><a href="#L-4713"><span class="linenos">4713</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="L-4714"><a href="#L-4714"><span class="linenos">4714</span></a> -</span><span id="L-4715"><a href="#L-4715"><span class="linenos">4715</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> -</span><span id="L-4716"><a href="#L-4716"><span class="linenos">4716</span></a> -</span><span id="L-4717"><a href="#L-4717"><span class="linenos">4717</span></a> -</span><span id="L-4718"><a href="#L-4718"><span class="linenos">4718</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Func</span><span class="p">:</span> -</span><span id="L-4719"><a href="#L-4719"><span class="linenos">4719</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4720"><a href="#L-4720"><span class="linenos">4720</span></a><span class="sd"> Returns a Func expression.</span> -</span><span id="L-4721"><a href="#L-4721"><span class="linenos">4721</span></a> -</span><span id="L-4722"><a href="#L-4722"><span class="linenos">4722</span></a><span class="sd"> Examples:</span> -</span><span id="L-4723"><a href="#L-4723"><span class="linenos">4723</span></a><span class="sd"> >>> func("abs", 5).sql()</span> -</span><span id="L-4724"><a href="#L-4724"><span class="linenos">4724</span></a><span class="sd"> 'ABS(5)'</span> +</span><span id="L-4685"><a href="#L-4685"><span class="linenos">4685</span></a><span class="sd"> Args:</span> +</span><span id="L-4686"><a href="#L-4686"><span class="linenos">4686</span></a><span class="sd"> expression (sqlglot.Expression): expression node to be transformed and replaced.</span> +</span><span id="L-4687"><a href="#L-4687"><span class="linenos">4687</span></a><span class="sd"> mapping (Dict[str, str]): mapping of table names.</span> +</span><span id="L-4688"><a href="#L-4688"><span class="linenos">4688</span></a> +</span><span id="L-4689"><a href="#L-4689"><span class="linenos">4689</span></a><span class="sd"> Examples:</span> +</span><span id="L-4690"><a href="#L-4690"><span class="linenos">4690</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="L-4691"><a href="#L-4691"><span class="linenos">4691</span></a><span class="sd"> >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()</span> +</span><span id="L-4692"><a href="#L-4692"><span class="linenos">4692</span></a><span class="sd"> 'SELECT * FROM c'</span> +</span><span id="L-4693"><a href="#L-4693"><span class="linenos">4693</span></a> +</span><span id="L-4694"><a href="#L-4694"><span class="linenos">4694</span></a><span class="sd"> Returns:</span> +</span><span id="L-4695"><a href="#L-4695"><span class="linenos">4695</span></a><span class="sd"> The mapped expression.</span> +</span><span id="L-4696"><a href="#L-4696"><span class="linenos">4696</span></a><span class="sd"> """</span> +</span><span id="L-4697"><a href="#L-4697"><span class="linenos">4697</span></a> +</span><span id="L-4698"><a href="#L-4698"><span class="linenos">4698</span></a> <span class="k">def</span> <span class="nf">_replace_tables</span><span class="p">(</span><span class="n">node</span><span class="p">):</span> +</span><span id="L-4699"><a href="#L-4699"><span class="linenos">4699</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="L-4700"><a href="#L-4700"><span class="linenos">4700</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table_name</span><span class="p">(</span><span class="n">node</span><span class="p">))</span> +</span><span id="L-4701"><a href="#L-4701"><span class="linenos">4701</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> +</span><span id="L-4702"><a href="#L-4702"><span class="linenos">4702</span></a> <span class="k">return</span> <span class="n">to_table</span><span class="p">(</span> +</span><span id="L-4703"><a href="#L-4703"><span class="linenos">4703</span></a> <span class="n">new_name</span><span class="p">,</span> +</span><span id="L-4704"><a href="#L-4704"><span class="linenos">4704</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">,</span> <span class="s2">"catalog"</span><span class="p">)},</span> +</span><span id="L-4705"><a href="#L-4705"><span class="linenos">4705</span></a> <span class="p">)</span> +</span><span id="L-4706"><a href="#L-4706"><span class="linenos">4706</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-4707"><a href="#L-4707"><span class="linenos">4707</span></a> +</span><span id="L-4708"><a href="#L-4708"><span class="linenos">4708</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">)</span> +</span><span id="L-4709"><a href="#L-4709"><span class="linenos">4709</span></a> +</span><span id="L-4710"><a href="#L-4710"><span class="linenos">4710</span></a> +</span><span id="L-4711"><a href="#L-4711"><span class="linenos">4711</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +</span><span id="L-4712"><a href="#L-4712"><span class="linenos">4712</span></a><span class="w"> </span><span class="sd">"""Replace placeholders in an expression.</span> +</span><span id="L-4713"><a href="#L-4713"><span class="linenos">4713</span></a> +</span><span id="L-4714"><a href="#L-4714"><span class="linenos">4714</span></a><span class="sd"> Args:</span> +</span><span id="L-4715"><a href="#L-4715"><span class="linenos">4715</span></a><span class="sd"> expression (sqlglot.Expression): expression node to be transformed and replaced.</span> +</span><span id="L-4716"><a href="#L-4716"><span class="linenos">4716</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span> +</span><span id="L-4717"><a href="#L-4717"><span class="linenos">4717</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span> +</span><span id="L-4718"><a href="#L-4718"><span class="linenos">4718</span></a> +</span><span id="L-4719"><a href="#L-4719"><span class="linenos">4719</span></a><span class="sd"> Examples:</span> +</span><span id="L-4720"><a href="#L-4720"><span class="linenos">4720</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="L-4721"><a href="#L-4721"><span class="linenos">4721</span></a><span class="sd"> >>> replace_placeholders(</span> +</span><span id="L-4722"><a href="#L-4722"><span class="linenos">4722</span></a><span class="sd"> ... parse_one("select * from :tbl where ? = ?"), "a", "b", tbl="foo"</span> +</span><span id="L-4723"><a href="#L-4723"><span class="linenos">4723</span></a><span class="sd"> ... ).sql()</span> +</span><span id="L-4724"><a href="#L-4724"><span class="linenos">4724</span></a><span class="sd"> 'SELECT * FROM foo WHERE a = b'</span> </span><span id="L-4725"><a href="#L-4725"><span class="linenos">4725</span></a> -</span><span id="L-4726"><a href="#L-4726"><span class="linenos">4726</span></a><span class="sd"> >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()</span> -</span><span id="L-4727"><a href="#L-4727"><span class="linenos">4727</span></a><span class="sd"> 'CAST(5 AS DOUBLE)'</span> -</span><span id="L-4728"><a href="#L-4728"><span class="linenos">4728</span></a> -</span><span id="L-4729"><a href="#L-4729"><span class="linenos">4729</span></a><span class="sd"> Args:</span> -</span><span id="L-4730"><a href="#L-4730"><span class="linenos">4730</span></a><span class="sd"> name: the name of the function to build.</span> -</span><span id="L-4731"><a href="#L-4731"><span class="linenos">4731</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span> -</span><span id="L-4732"><a href="#L-4732"><span class="linenos">4732</span></a><span class="sd"> dialect: the source dialect.</span> -</span><span id="L-4733"><a href="#L-4733"><span class="linenos">4733</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> -</span><span id="L-4734"><a href="#L-4734"><span class="linenos">4734</span></a> -</span><span id="L-4735"><a href="#L-4735"><span class="linenos">4735</span></a><span class="sd"> Note:</span> -</span><span id="L-4736"><a href="#L-4736"><span class="linenos">4736</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span> -</span><span id="L-4737"><a href="#L-4737"><span class="linenos">4737</span></a> -</span><span id="L-4738"><a href="#L-4738"><span class="linenos">4738</span></a><span class="sd"> Returns:</span> -</span><span id="L-4739"><a href="#L-4739"><span class="linenos">4739</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn't</span> -</span><span id="L-4740"><a href="#L-4740"><span class="linenos">4740</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span> -</span><span id="L-4741"><a href="#L-4741"><span class="linenos">4741</span></a><span class="sd"> """</span> -</span><span id="L-4742"><a href="#L-4742"><span class="linenos">4742</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span> -</span><span id="L-4743"><a href="#L-4743"><span class="linenos">4743</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Can't use both args and kwargs to instantiate a function."</span><span class="p">)</span> +</span><span id="L-4726"><a href="#L-4726"><span class="linenos">4726</span></a><span class="sd"> Returns:</span> +</span><span id="L-4727"><a href="#L-4727"><span class="linenos">4727</span></a><span class="sd"> The mapped expression.</span> +</span><span id="L-4728"><a href="#L-4728"><span class="linenos">4728</span></a><span class="sd"> """</span> +</span><span id="L-4729"><a href="#L-4729"><span class="linenos">4729</span></a> +</span><span id="L-4730"><a href="#L-4730"><span class="linenos">4730</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +</span><span id="L-4731"><a href="#L-4731"><span class="linenos">4731</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Placeholder</span><span class="p">):</span> +</span><span id="L-4732"><a href="#L-4732"><span class="linenos">4732</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> +</span><span id="L-4733"><a href="#L-4733"><span class="linenos">4733</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-4734"><a href="#L-4734"><span class="linenos">4734</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> +</span><span id="L-4735"><a href="#L-4735"><span class="linenos">4735</span></a> <span class="k">return</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> +</span><span id="L-4736"><a href="#L-4736"><span class="linenos">4736</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4737"><a href="#L-4737"><span class="linenos">4737</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-4738"><a href="#L-4738"><span class="linenos">4738</span></a> <span class="k">return</span> <span class="n">to_identifier</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span> +</span><span id="L-4739"><a href="#L-4739"><span class="linenos">4739</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> +</span><span id="L-4740"><a href="#L-4740"><span class="linenos">4740</span></a> <span class="k">pass</span> +</span><span id="L-4741"><a href="#L-4741"><span class="linenos">4741</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-4742"><a href="#L-4742"><span class="linenos">4742</span></a> +</span><span id="L-4743"><a href="#L-4743"><span class="linenos">4743</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="L-4744"><a href="#L-4744"><span class="linenos">4744</span></a> -</span><span id="L-4745"><a href="#L-4745"><span class="linenos">4745</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="L-4746"><a href="#L-4746"><span class="linenos">4746</span></a> -</span><span id="L-4747"><a href="#L-4747"><span class="linenos">4747</span></a> <span class="n">args</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">convert</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> -</span><span id="L-4748"><a href="#L-4748"><span class="linenos">4748</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="L-4749"><a href="#L-4749"><span class="linenos">4749</span></a> -</span><span id="L-4750"><a href="#L-4750"><span class="linenos">4750</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">parser</span><span class="p">()</span> -</span><span id="L-4751"><a href="#L-4751"><span class="linenos">4751</span></a> <span class="n">from_args_list</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-4752"><a href="#L-4752"><span class="linenos">4752</span></a> -</span><span id="L-4753"><a href="#L-4753"><span class="linenos">4753</span></a> <span class="k">if</span> <span class="n">from_args_list</span><span class="p">:</span> -</span><span id="L-4754"><a href="#L-4754"><span class="linenos">4754</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">from_args_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="k">if</span> <span class="n">args</span> <span class="k">else</span> <span class="n">from_args_list</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-4755"><a href="#L-4755"><span class="linenos">4755</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-4756"><a href="#L-4756"><span class="linenos">4756</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="n">args</span><span class="p">}</span> -</span><span id="L-4757"><a href="#L-4757"><span class="linenos">4757</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-4745"><a href="#L-4745"><span class="linenos">4745</span></a> +</span><span id="L-4746"><a href="#L-4746"><span class="linenos">4746</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Subqueryable</span><span class="p">],</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="L-4747"><a href="#L-4747"><span class="linenos">4747</span></a><span class="w"> </span><span class="sd">"""Transforms an expression by expanding all referenced sources into subqueries.</span> +</span><span id="L-4748"><a href="#L-4748"><span class="linenos">4748</span></a> +</span><span id="L-4749"><a href="#L-4749"><span class="linenos">4749</span></a><span class="sd"> Examples:</span> +</span><span id="L-4750"><a href="#L-4750"><span class="linenos">4750</span></a><span class="sd"> >>> from sqlglot import parse_one</span> +</span><span id="L-4751"><a href="#L-4751"><span class="linenos">4751</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()</span> +</span><span id="L-4752"><a href="#L-4752"><span class="linenos">4752</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'</span> +</span><span id="L-4753"><a href="#L-4753"><span class="linenos">4753</span></a> +</span><span id="L-4754"><a href="#L-4754"><span class="linenos">4754</span></a><span class="sd"> Args:</span> +</span><span id="L-4755"><a href="#L-4755"><span class="linenos">4755</span></a><span class="sd"> expression: The expression to expand.</span> +</span><span id="L-4756"><a href="#L-4756"><span class="linenos">4756</span></a><span class="sd"> sources: A dictionary of name to Subqueryables.</span> +</span><span id="L-4757"><a href="#L-4757"><span class="linenos">4757</span></a><span class="sd"> copy: Whether or not to copy the expression during transformation. Defaults to True.</span> </span><span id="L-4758"><a href="#L-4758"><span class="linenos">4758</span></a> -</span><span id="L-4759"><a href="#L-4759"><span class="linenos">4759</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="L-4760"><a href="#L-4760"><span class="linenos">4760</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> -</span><span id="L-4761"><a href="#L-4761"><span class="linenos">4761</span></a> -</span><span id="L-4762"><a href="#L-4762"><span class="linenos">4762</span></a> <span class="k">return</span> <span class="n">function</span> -</span><span id="L-4763"><a href="#L-4763"><span class="linenos">4763</span></a> -</span><span id="L-4764"><a href="#L-4764"><span class="linenos">4764</span></a> -</span><span id="L-4765"><a href="#L-4765"><span class="linenos">4765</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">():</span> -</span><span id="L-4766"><a href="#L-4766"><span class="linenos">4766</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4767"><a href="#L-4767"><span class="linenos">4767</span></a><span class="sd"> Returns a true Boolean expression.</span> -</span><span id="L-4768"><a href="#L-4768"><span class="linenos">4768</span></a><span class="sd"> """</span> -</span><span id="L-4769"><a href="#L-4769"><span class="linenos">4769</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4770"><a href="#L-4770"><span class="linenos">4770</span></a> -</span><span id="L-4771"><a href="#L-4771"><span class="linenos">4771</span></a> -</span><span id="L-4772"><a href="#L-4772"><span class="linenos">4772</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">():</span> -</span><span id="L-4773"><a href="#L-4773"><span class="linenos">4773</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4774"><a href="#L-4774"><span class="linenos">4774</span></a><span class="sd"> Returns a false Boolean expression.</span> -</span><span id="L-4775"><a href="#L-4775"><span class="linenos">4775</span></a><span class="sd"> """</span> -</span><span id="L-4776"><a href="#L-4776"><span class="linenos">4776</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4777"><a href="#L-4777"><span class="linenos">4777</span></a> -</span><span id="L-4778"><a href="#L-4778"><span class="linenos">4778</span></a> -</span><span id="L-4779"><a href="#L-4779"><span class="linenos">4779</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">():</span> -</span><span id="L-4780"><a href="#L-4780"><span class="linenos">4780</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-4781"><a href="#L-4781"><span class="linenos">4781</span></a><span class="sd"> Returns a Null expression.</span> -</span><span id="L-4782"><a href="#L-4782"><span class="linenos">4782</span></a><span class="sd"> """</span> -</span><span id="L-4783"><a href="#L-4783"><span class="linenos">4783</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span> -</span><span id="L-4784"><a href="#L-4784"><span class="linenos">4784</span></a> -</span><span id="L-4785"><a href="#L-4785"><span class="linenos">4785</span></a> -</span><span id="L-4786"><a href="#L-4786"><span class="linenos">4786</span></a><span class="c1"># TODO: deprecate this</span> -</span><span id="L-4787"><a href="#L-4787"><span class="linenos">4787</span></a><span class="n">TRUE</span> <span class="o">=</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-4788"><a href="#L-4788"><span class="linenos">4788</span></a><span class="n">FALSE</span> <span class="o">=</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-4789"><a href="#L-4789"><span class="linenos">4789</span></a><span class="n">NULL</span> <span class="o">=</span> <span class="n">Null</span><span class="p">()</span> +</span><span id="L-4759"><a href="#L-4759"><span class="linenos">4759</span></a><span class="sd"> Returns:</span> +</span><span id="L-4760"><a href="#L-4760"><span class="linenos">4760</span></a><span class="sd"> The transformed expression.</span> +</span><span id="L-4761"><a href="#L-4761"><span class="linenos">4761</span></a><span class="sd"> """</span> +</span><span id="L-4762"><a href="#L-4762"><span class="linenos">4762</span></a> +</span><span id="L-4763"><a href="#L-4763"><span class="linenos">4763</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="L-4764"><a href="#L-4764"><span class="linenos">4764</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="L-4765"><a href="#L-4765"><span class="linenos">4765</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">table_name</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> +</span><span id="L-4766"><a href="#L-4766"><span class="linenos">4766</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-4767"><a href="#L-4767"><span class="linenos">4767</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span> +</span><span id="L-4768"><a href="#L-4768"><span class="linenos">4768</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span> +</span><span id="L-4769"><a href="#L-4769"><span class="linenos">4769</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> +</span><span id="L-4770"><a href="#L-4770"><span class="linenos">4770</span></a> <span class="k">return</span> <span class="n">subquery</span> +</span><span id="L-4771"><a href="#L-4771"><span class="linenos">4771</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-4772"><a href="#L-4772"><span class="linenos">4772</span></a> +</span><span id="L-4773"><a href="#L-4773"><span class="linenos">4773</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> +</span><span id="L-4774"><a href="#L-4774"><span class="linenos">4774</span></a> +</span><span id="L-4775"><a href="#L-4775"><span class="linenos">4775</span></a> +</span><span id="L-4776"><a href="#L-4776"><span class="linenos">4776</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Func</span><span class="p">:</span> +</span><span id="L-4777"><a href="#L-4777"><span class="linenos">4777</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4778"><a href="#L-4778"><span class="linenos">4778</span></a><span class="sd"> Returns a Func expression.</span> +</span><span id="L-4779"><a href="#L-4779"><span class="linenos">4779</span></a> +</span><span id="L-4780"><a href="#L-4780"><span class="linenos">4780</span></a><span class="sd"> Examples:</span> +</span><span id="L-4781"><a href="#L-4781"><span class="linenos">4781</span></a><span class="sd"> >>> func("abs", 5).sql()</span> +</span><span id="L-4782"><a href="#L-4782"><span class="linenos">4782</span></a><span class="sd"> 'ABS(5)'</span> +</span><span id="L-4783"><a href="#L-4783"><span class="linenos">4783</span></a> +</span><span id="L-4784"><a href="#L-4784"><span class="linenos">4784</span></a><span class="sd"> >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()</span> +</span><span id="L-4785"><a href="#L-4785"><span class="linenos">4785</span></a><span class="sd"> 'CAST(5 AS DOUBLE)'</span> +</span><span id="L-4786"><a href="#L-4786"><span class="linenos">4786</span></a> +</span><span id="L-4787"><a href="#L-4787"><span class="linenos">4787</span></a><span class="sd"> Args:</span> +</span><span id="L-4788"><a href="#L-4788"><span class="linenos">4788</span></a><span class="sd"> name: the name of the function to build.</span> +</span><span id="L-4789"><a href="#L-4789"><span class="linenos">4789</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span> +</span><span id="L-4790"><a href="#L-4790"><span class="linenos">4790</span></a><span class="sd"> dialect: the source dialect.</span> +</span><span id="L-4791"><a href="#L-4791"><span class="linenos">4791</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="L-4792"><a href="#L-4792"><span class="linenos">4792</span></a> +</span><span id="L-4793"><a href="#L-4793"><span class="linenos">4793</span></a><span class="sd"> Note:</span> +</span><span id="L-4794"><a href="#L-4794"><span class="linenos">4794</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span> +</span><span id="L-4795"><a href="#L-4795"><span class="linenos">4795</span></a> +</span><span id="L-4796"><a href="#L-4796"><span class="linenos">4796</span></a><span class="sd"> Returns:</span> +</span><span id="L-4797"><a href="#L-4797"><span class="linenos">4797</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn't</span> +</span><span id="L-4798"><a href="#L-4798"><span class="linenos">4798</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span> +</span><span id="L-4799"><a href="#L-4799"><span class="linenos">4799</span></a><span class="sd"> """</span> +</span><span id="L-4800"><a href="#L-4800"><span class="linenos">4800</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span> +</span><span id="L-4801"><a href="#L-4801"><span class="linenos">4801</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Can't use both args and kwargs to instantiate a function."</span><span class="p">)</span> +</span><span id="L-4802"><a href="#L-4802"><span class="linenos">4802</span></a> +</span><span id="L-4803"><a href="#L-4803"><span class="linenos">4803</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span> +</span><span id="L-4804"><a href="#L-4804"><span class="linenos">4804</span></a> +</span><span id="L-4805"><a href="#L-4805"><span class="linenos">4805</span></a> <span class="n">args</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">convert</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-4806"><a href="#L-4806"><span class="linenos">4806</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="L-4807"><a href="#L-4807"><span class="linenos">4807</span></a> +</span><span id="L-4808"><a href="#L-4808"><span class="linenos">4808</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">parser</span><span class="p">()</span> +</span><span id="L-4809"><a href="#L-4809"><span class="linenos">4809</span></a> <span class="n">from_args_list</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-4810"><a href="#L-4810"><span class="linenos">4810</span></a> +</span><span id="L-4811"><a href="#L-4811"><span class="linenos">4811</span></a> <span class="k">if</span> <span class="n">from_args_list</span><span class="p">:</span> +</span><span id="L-4812"><a href="#L-4812"><span class="linenos">4812</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">from_args_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="k">if</span> <span class="n">args</span> <span class="k">else</span> <span class="n">from_args_list</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-4813"><a href="#L-4813"><span class="linenos">4813</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-4814"><a href="#L-4814"><span class="linenos">4814</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="n">args</span><span class="p">}</span> +</span><span id="L-4815"><a href="#L-4815"><span class="linenos">4815</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-4816"><a href="#L-4816"><span class="linenos">4816</span></a> +</span><span id="L-4817"><a href="#L-4817"><span class="linenos">4817</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="L-4818"><a href="#L-4818"><span class="linenos">4818</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> +</span><span id="L-4819"><a href="#L-4819"><span class="linenos">4819</span></a> +</span><span id="L-4820"><a href="#L-4820"><span class="linenos">4820</span></a> <span class="k">return</span> <span class="n">function</span> +</span><span id="L-4821"><a href="#L-4821"><span class="linenos">4821</span></a> +</span><span id="L-4822"><a href="#L-4822"><span class="linenos">4822</span></a> +</span><span id="L-4823"><a href="#L-4823"><span class="linenos">4823</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">():</span> +</span><span id="L-4824"><a href="#L-4824"><span class="linenos">4824</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4825"><a href="#L-4825"><span class="linenos">4825</span></a><span class="sd"> Returns a true Boolean expression.</span> +</span><span id="L-4826"><a href="#L-4826"><span class="linenos">4826</span></a><span class="sd"> """</span> +</span><span id="L-4827"><a href="#L-4827"><span class="linenos">4827</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4828"><a href="#L-4828"><span class="linenos">4828</span></a> +</span><span id="L-4829"><a href="#L-4829"><span class="linenos">4829</span></a> +</span><span id="L-4830"><a href="#L-4830"><span class="linenos">4830</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">():</span> +</span><span id="L-4831"><a href="#L-4831"><span class="linenos">4831</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4832"><a href="#L-4832"><span class="linenos">4832</span></a><span class="sd"> Returns a false Boolean expression.</span> +</span><span id="L-4833"><a href="#L-4833"><span class="linenos">4833</span></a><span class="sd"> """</span> +</span><span id="L-4834"><a href="#L-4834"><span class="linenos">4834</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4835"><a href="#L-4835"><span class="linenos">4835</span></a> +</span><span id="L-4836"><a href="#L-4836"><span class="linenos">4836</span></a> +</span><span id="L-4837"><a href="#L-4837"><span class="linenos">4837</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">():</span> +</span><span id="L-4838"><a href="#L-4838"><span class="linenos">4838</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-4839"><a href="#L-4839"><span class="linenos">4839</span></a><span class="sd"> Returns a Null expression.</span> +</span><span id="L-4840"><a href="#L-4840"><span class="linenos">4840</span></a><span class="sd"> """</span> +</span><span id="L-4841"><a href="#L-4841"><span class="linenos">4841</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span> +</span><span id="L-4842"><a href="#L-4842"><span class="linenos">4842</span></a> +</span><span id="L-4843"><a href="#L-4843"><span class="linenos">4843</span></a> +</span><span id="L-4844"><a href="#L-4844"><span class="linenos">4844</span></a><span class="c1"># TODO: deprecate this</span> +</span><span id="L-4845"><a href="#L-4845"><span class="linenos">4845</span></a><span class="n">TRUE</span> <span class="o">=</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-4846"><a href="#L-4846"><span class="linenos">4846</span></a><span class="n">FALSE</span> <span class="o">=</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-4847"><a href="#L-4847"><span class="linenos">4847</span></a><span class="n">NULL</span> <span class="o">=</span> <span class="n">Null</span><span class="p">()</span> </span></pre></div> @@ -7620,7 +7753,7 @@ SQL expressions, such as <code><a href="#select">sqlglot.expressions.select</a>< </span><span id="Expression-83"><a href="#Expression-83"><span class="linenos"> 83</span></a> </span><span id="Expression-84"><a href="#Expression-84"><span class="linenos"> 84</span></a> <span class="n">key</span> <span class="o">=</span> <span class="s2">"expression"</span> </span><span id="Expression-85"><a href="#Expression-85"><span class="linenos"> 85</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Expression-86"><a href="#Expression-86"><span class="linenos"> 86</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"args"</span><span class="p">,</span> <span class="s2">"parent"</span><span class="p">,</span> <span class="s2">"arg_key"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">,</span> <span class="s2">"_type"</span><span class="p">)</span> +</span><span id="Expression-86"><a href="#Expression-86"><span class="linenos"> 86</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"args"</span><span class="p">,</span> <span class="s2">"parent"</span><span class="p">,</span> <span class="s2">"arg_key"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">,</span> <span class="s2">"_type"</span><span class="p">,</span> <span class="s2">"_meta"</span><span class="p">)</span> </span><span id="Expression-87"><a href="#Expression-87"><span class="linenos"> 87</span></a> </span><span id="Expression-88"><a href="#Expression-88"><span class="linenos"> 88</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">):</span> </span><span id="Expression-89"><a href="#Expression-89"><span class="linenos"> 89</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="n">args</span> @@ -7628,509 +7761,523 @@ SQL expressions, such as <code><a href="#select">sqlglot.expressions.select</a>< </span><span id="Expression-91"><a href="#Expression-91"><span class="linenos"> 91</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Expression-92"><a href="#Expression-92"><span class="linenos"> 92</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Expression-93"><a href="#Expression-93"><span class="linenos"> 93</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type</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">DataType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Expression-94"><a href="#Expression-94"><span class="linenos"> 94</span></a> -</span><span id="Expression-95"><a href="#Expression-95"><span class="linenos"> 95</span></a> <span class="k">for</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Expression-96"><a href="#Expression-96"><span class="linenos"> 96</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> -</span><span id="Expression-97"><a href="#Expression-97"><span class="linenos"> 97</span></a> -</span><span id="Expression-98"><a href="#Expression-98"><span class="linenos"> 98</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Expression-99"><a href="#Expression-99"><span class="linenos"> 99</span></a> <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="ow">and</span> <span class="n">_norm_args</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">_norm_args</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> -</span><span id="Expression-100"><a href="#Expression-100"><span class="linenos">100</span></a> -</span><span id="Expression-101"><a href="#Expression-101"><span class="linenos">101</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="Expression-102"><a href="#Expression-102"><span class="linenos">102</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">(</span> -</span><span id="Expression-103"><a href="#Expression-103"><span class="linenos">103</span></a> <span class="p">(</span> -</span><span id="Expression-104"><a href="#Expression-104"><span class="linenos">104</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> -</span><span id="Expression-105"><a href="#Expression-105"><span class="linenos">105</span></a> <span class="nb">tuple</span><span class="p">(</span> -</span><span id="Expression-106"><a href="#Expression-106"><span class="linenos">106</span></a> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">_norm_args</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="Expression-107"><a href="#Expression-107"><span class="linenos">107</span></a> <span class="p">),</span> -</span><span id="Expression-108"><a href="#Expression-108"><span class="linenos">108</span></a> <span class="p">)</span> -</span><span id="Expression-109"><a href="#Expression-109"><span class="linenos">109</span></a> <span class="p">)</span> -</span><span id="Expression-110"><a href="#Expression-110"><span class="linenos">110</span></a> -</span><span id="Expression-111"><a href="#Expression-111"><span class="linenos">111</span></a> <span class="nd">@property</span> -</span><span id="Expression-112"><a href="#Expression-112"><span class="linenos">112</span></a> <span class="k">def</span> <span class="nf">this</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-113"><a href="#Expression-113"><span class="linenos">113</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-114"><a href="#Expression-114"><span class="linenos">114</span></a><span class="sd"> Retrieves the argument with key "this".</span> -</span><span id="Expression-115"><a href="#Expression-115"><span class="linenos">115</span></a><span class="sd"> """</span> -</span><span id="Expression-116"><a href="#Expression-116"><span class="linenos">116</span></a> <span class="k">return</span> <span class="bp">self</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">"this"</span><span class="p">)</span> -</span><span id="Expression-117"><a href="#Expression-117"><span class="linenos">117</span></a> -</span><span id="Expression-118"><a href="#Expression-118"><span class="linenos">118</span></a> <span class="nd">@property</span> -</span><span id="Expression-119"><a href="#Expression-119"><span class="linenos">119</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-120"><a href="#Expression-120"><span class="linenos">120</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-121"><a href="#Expression-121"><span class="linenos">121</span></a><span class="sd"> Retrieves the argument with key "expression".</span> -</span><span id="Expression-122"><a href="#Expression-122"><span class="linenos">122</span></a><span class="sd"> """</span> -</span><span id="Expression-123"><a href="#Expression-123"><span class="linenos">123</span></a> <span class="k">return</span> <span class="bp">self</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">"expression"</span><span class="p">)</span> -</span><span id="Expression-124"><a href="#Expression-124"><span class="linenos">124</span></a> -</span><span id="Expression-125"><a href="#Expression-125"><span class="linenos">125</span></a> <span class="nd">@property</span> -</span><span id="Expression-126"><a href="#Expression-126"><span class="linenos">126</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-127"><a href="#Expression-127"><span class="linenos">127</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-128"><a href="#Expression-128"><span class="linenos">128</span></a><span class="sd"> Retrieves the argument with key "expressions".</span> -</span><span id="Expression-129"><a href="#Expression-129"><span class="linenos">129</span></a><span class="sd"> """</span> -</span><span id="Expression-130"><a href="#Expression-130"><span class="linenos">130</span></a> <span class="k">return</span> <span class="bp">self</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">"expressions"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="Expression-131"><a href="#Expression-131"><span class="linenos">131</span></a> -</span><span id="Expression-132"><a href="#Expression-132"><span class="linenos">132</span></a> <span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Expression-133"><a href="#Expression-133"><span class="linenos">133</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-134"><a href="#Expression-134"><span class="linenos">134</span></a><span class="sd"> Returns a textual representation of the argument corresponding to "key". This can only be used</span> -</span><span id="Expression-135"><a href="#Expression-135"><span class="linenos">135</span></a><span class="sd"> for args that are strings or leaf Expression instances, such as identifiers and literals.</span> -</span><span id="Expression-136"><a href="#Expression-136"><span class="linenos">136</span></a><span class="sd"> """</span> -</span><span id="Expression-137"><a href="#Expression-137"><span class="linenos">137</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</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="n">key</span><span class="p">)</span> -</span><span id="Expression-138"><a href="#Expression-138"><span class="linenos">138</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="Expression-139"><a href="#Expression-139"><span class="linenos">139</span></a> <span class="k">return</span> <span class="n">field</span> -</span><span id="Expression-140"><a href="#Expression-140"><span class="linenos">140</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</span><span class="p">)):</span> -</span><span id="Expression-141"><a href="#Expression-141"><span class="linenos">141</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">this</span> -</span><span id="Expression-142"><a href="#Expression-142"><span class="linenos">142</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Star</span><span class="p">,</span> <span class="n">Null</span><span class="p">)):</span> -</span><span id="Expression-143"><a href="#Expression-143"><span class="linenos">143</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">name</span> -</span><span id="Expression-144"><a href="#Expression-144"><span class="linenos">144</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Expression-145"><a href="#Expression-145"><span class="linenos">145</span></a> -</span><span id="Expression-146"><a href="#Expression-146"><span class="linenos">146</span></a> <span class="nd">@property</span> -</span><span id="Expression-147"><a href="#Expression-147"><span class="linenos">147</span></a> <span class="k">def</span> <span class="nf">is_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Expression-148"><a href="#Expression-148"><span class="linenos">148</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-149"><a href="#Expression-149"><span class="linenos">149</span></a><span class="sd"> Checks whether a Literal expression is a string.</span> -</span><span id="Expression-150"><a href="#Expression-150"><span class="linenos">150</span></a><span class="sd"> """</span> -</span><span id="Expression-151"><a href="#Expression-151"><span class="linenos">151</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> -</span><span id="Expression-152"><a href="#Expression-152"><span class="linenos">152</span></a> -</span><span id="Expression-153"><a href="#Expression-153"><span class="linenos">153</span></a> <span class="nd">@property</span> -</span><span id="Expression-154"><a href="#Expression-154"><span class="linenos">154</span></a> <span class="k">def</span> <span class="nf">is_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Expression-155"><a href="#Expression-155"><span class="linenos">155</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-156"><a href="#Expression-156"><span class="linenos">156</span></a><span class="sd"> Checks whether a Literal expression is a number.</span> -</span><span id="Expression-157"><a href="#Expression-157"><span class="linenos">157</span></a><span class="sd"> """</span> -</span><span id="Expression-158"><a href="#Expression-158"><span class="linenos">158</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> -</span><span id="Expression-159"><a href="#Expression-159"><span class="linenos">159</span></a> -</span><span id="Expression-160"><a href="#Expression-160"><span class="linenos">160</span></a> <span class="nd">@property</span> -</span><span id="Expression-161"><a href="#Expression-161"><span class="linenos">161</span></a> <span class="k">def</span> <span class="nf">is_int</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Expression-162"><a href="#Expression-162"><span class="linenos">162</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-163"><a href="#Expression-163"><span class="linenos">163</span></a><span class="sd"> Checks whether a Literal expression is an integer.</span> -</span><span id="Expression-164"><a href="#Expression-164"><span class="linenos">164</span></a><span class="sd"> """</span> -</span><span id="Expression-165"><a href="#Expression-165"><span class="linenos">165</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> -</span><span id="Expression-166"><a href="#Expression-166"><span class="linenos">166</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Expression-167"><a href="#Expression-167"><span class="linenos">167</span></a> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Expression-168"><a href="#Expression-168"><span class="linenos">168</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Expression-169"><a href="#Expression-169"><span class="linenos">169</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="Expression-170"><a href="#Expression-170"><span class="linenos">170</span></a> <span class="k">pass</span> -</span><span id="Expression-171"><a href="#Expression-171"><span class="linenos">171</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="Expression-172"><a href="#Expression-172"><span class="linenos">172</span></a> -</span><span id="Expression-173"><a href="#Expression-173"><span class="linenos">173</span></a> <span class="nd">@property</span> -</span><span id="Expression-174"><a href="#Expression-174"><span class="linenos">174</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Expression-175"><a href="#Expression-175"><span class="linenos">175</span></a><span class="w"> </span><span class="sd">"""Checks whether an expression is a star."""</span> -</span><span id="Expression-176"><a href="#Expression-176"><span class="linenos">176</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Star</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Star</span><span class="p">))</span> -</span><span id="Expression-177"><a href="#Expression-177"><span class="linenos">177</span></a> -</span><span id="Expression-178"><a href="#Expression-178"><span class="linenos">178</span></a> <span class="nd">@property</span> -</span><span id="Expression-179"><a href="#Expression-179"><span class="linenos">179</span></a> <span class="k">def</span> <span class="nf">alias</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Expression-180"><a href="#Expression-180"><span class="linenos">180</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-181"><a href="#Expression-181"><span class="linenos">181</span></a><span class="sd"> Returns the alias of the expression, or an empty string if it's not aliased.</span> -</span><span id="Expression-182"><a href="#Expression-182"><span class="linenos">182</span></a><span class="sd"> """</span> -</span><span id="Expression-183"><a href="#Expression-183"><span class="linenos">183</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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">"alias"</span><span class="p">),</span> <span class="n">TableAlias</span><span class="p">):</span> -</span><span id="Expression-184"><a href="#Expression-184"><span class="linenos">184</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> -</span><span id="Expression-185"><a href="#Expression-185"><span class="linenos">185</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Expression-186"><a href="#Expression-186"><span class="linenos">186</span></a> -</span><span id="Expression-187"><a href="#Expression-187"><span class="linenos">187</span></a> <span class="nd">@property</span> -</span><span id="Expression-188"><a href="#Expression-188"><span class="linenos">188</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Expression-189"><a href="#Expression-189"><span class="linenos">189</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"this"</span><span class="p">)</span> -</span><span id="Expression-190"><a href="#Expression-190"><span class="linenos">190</span></a> -</span><span id="Expression-191"><a href="#Expression-191"><span class="linenos">191</span></a> <span class="nd">@property</span> -</span><span id="Expression-192"><a href="#Expression-192"><span class="linenos">192</span></a> <span class="k">def</span> <span class="nf">alias_or_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-193"><a href="#Expression-193"><span class="linenos">193</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="Expression-194"><a href="#Expression-194"><span class="linenos">194</span></a> -</span><span id="Expression-195"><a href="#Expression-195"><span class="linenos">195</span></a> <span class="nd">@property</span> -</span><span id="Expression-196"><a href="#Expression-196"><span class="linenos">196</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-197"><a href="#Expression-197"><span class="linenos">197</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-198"><a href="#Expression-198"><span class="linenos">198</span></a><span class="sd"> Name of the output column if this expression is a selection.</span> -</span><span id="Expression-199"><a href="#Expression-199"><span class="linenos">199</span></a> -</span><span id="Expression-200"><a href="#Expression-200"><span class="linenos">200</span></a><span class="sd"> If the Expression has no output name, an empty string is returned.</span> -</span><span id="Expression-201"><a href="#Expression-201"><span class="linenos">201</span></a> -</span><span id="Expression-202"><a href="#Expression-202"><span class="linenos">202</span></a><span class="sd"> Example:</span> -</span><span id="Expression-203"><a href="#Expression-203"><span class="linenos">203</span></a><span class="sd"> >>> from sqlglot import parse_one</span> -</span><span id="Expression-204"><a href="#Expression-204"><span class="linenos">204</span></a><span class="sd"> >>> parse_one("SELECT a").expressions[0].output_name</span> -</span><span id="Expression-205"><a href="#Expression-205"><span class="linenos">205</span></a><span class="sd"> 'a'</span> -</span><span id="Expression-206"><a href="#Expression-206"><span class="linenos">206</span></a><span class="sd"> >>> parse_one("SELECT b AS c").expressions[0].output_name</span> -</span><span id="Expression-207"><a href="#Expression-207"><span class="linenos">207</span></a><span class="sd"> 'c'</span> -</span><span id="Expression-208"><a href="#Expression-208"><span class="linenos">208</span></a><span class="sd"> >>> parse_one("SELECT 1 + 2").expressions[0].output_name</span> -</span><span id="Expression-209"><a href="#Expression-209"><span class="linenos">209</span></a><span class="sd"> ''</span> -</span><span id="Expression-210"><a href="#Expression-210"><span class="linenos">210</span></a><span class="sd"> """</span> -</span><span id="Expression-211"><a href="#Expression-211"><span class="linenos">211</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Expression-212"><a href="#Expression-212"><span class="linenos">212</span></a> -</span><span id="Expression-213"><a href="#Expression-213"><span class="linenos">213</span></a> <span class="nd">@property</span> -</span><span id="Expression-214"><a href="#Expression-214"><span class="linenos">214</span></a> <span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">DataType</span><span class="p">]:</span> -</span><span id="Expression-215"><a href="#Expression-215"><span class="linenos">215</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> -</span><span id="Expression-216"><a href="#Expression-216"><span class="linenos">216</span></a> -</span><span id="Expression-217"><a href="#Expression-217"><span class="linenos">217</span></a> <span class="nd">@type</span><span class="o">.</span><span class="n">setter</span> -</span><span id="Expression-218"><a href="#Expression-218"><span class="linenos">218</span></a> <span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</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">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Expression-219"><a href="#Expression-219"><span class="linenos">219</span></a> <span class="k">if</span> <span class="n">dtype</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> -</span><span id="Expression-220"><a href="#Expression-220"><span class="linenos">220</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> -</span><span id="Expression-221"><a href="#Expression-221"><span class="linenos">221</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="o">=</span> <span class="n">dtype</span> <span class="c1"># type: ignore</span> -</span><span id="Expression-222"><a href="#Expression-222"><span class="linenos">222</span></a> -</span><span id="Expression-223"><a href="#Expression-223"><span class="linenos">223</span></a> <span class="k">def</span> <span class="nf">__deepcopy__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">memo</span><span class="p">):</span> -</span><span id="Expression-224"><a href="#Expression-224"><span class="linenos">224</span></a> <span class="n">copy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">(</span><span class="o">**</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">))</span> -</span><span id="Expression-225"><a href="#Expression-225"><span class="linenos">225</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> -</span><span id="Expression-226"><a href="#Expression-226"><span class="linenos">226</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> -</span><span id="Expression-227"><a href="#Expression-227"><span class="linenos">227</span></a> <span class="k">return</span> <span class="n">copy</span> -</span><span id="Expression-228"><a href="#Expression-228"><span class="linenos">228</span></a> -</span><span id="Expression-229"><a href="#Expression-229"><span class="linenos">229</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-230"><a href="#Expression-230"><span class="linenos">230</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-231"><a href="#Expression-231"><span class="linenos">231</span></a><span class="sd"> Returns a deep copy of the expression.</span> -</span><span id="Expression-232"><a href="#Expression-232"><span class="linenos">232</span></a><span class="sd"> """</span> -</span><span id="Expression-233"><a href="#Expression-233"><span class="linenos">233</span></a> <span class="n">new</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Expression-234"><a href="#Expression-234"><span class="linenos">234</span></a> <span class="n">new</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression-235"><a href="#Expression-235"><span class="linenos">235</span></a> <span class="k">for</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">new</span><span class="o">.</span><span class="n">bfs</span><span class="p">():</span> -</span><span id="Expression-236"><a href="#Expression-236"><span class="linenos">236</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">parent</span><span class="p">:</span> -</span><span id="Expression-237"><a href="#Expression-237"><span class="linenos">237</span></a> <span class="n">item</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> -</span><span id="Expression-238"><a href="#Expression-238"><span class="linenos">238</span></a> <span class="k">return</span> <span class="n">new</span> -</span><span id="Expression-239"><a href="#Expression-239"><span class="linenos">239</span></a> -</span><span id="Expression-240"><a href="#Expression-240"><span class="linenos">240</span></a> <span class="k">def</span> <span class="nf">append</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> -</span><span id="Expression-241"><a href="#Expression-241"><span class="linenos">241</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-242"><a href="#Expression-242"><span class="linenos">242</span></a><span class="sd"> Appends value to arg_key if it's a list or sets it as a new list.</span> -</span><span id="Expression-243"><a href="#Expression-243"><span class="linenos">243</span></a> -</span><span id="Expression-244"><a href="#Expression-244"><span class="linenos">244</span></a><span class="sd"> Args:</span> -</span><span id="Expression-245"><a href="#Expression-245"><span class="linenos">245</span></a><span class="sd"> arg_key (str): name of the list expression arg</span> -</span><span id="Expression-246"><a href="#Expression-246"><span class="linenos">246</span></a><span class="sd"> value (Any): value to append to the list</span> -</span><span id="Expression-247"><a href="#Expression-247"><span class="linenos">247</span></a><span class="sd"> """</span> -</span><span id="Expression-248"><a href="#Expression-248"><span class="linenos">248</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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="n">arg_key</span><span class="p">),</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="Expression-249"><a href="#Expression-249"><span class="linenos">249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Expression-250"><a href="#Expression-250"><span class="linenos">250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="Expression-251"><a href="#Expression-251"><span class="linenos">251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> -</span><span id="Expression-252"><a href="#Expression-252"><span class="linenos">252</span></a> -</span><span id="Expression-253"><a href="#Expression-253"><span class="linenos">253</span></a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> -</span><span id="Expression-254"><a href="#Expression-254"><span class="linenos">254</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-255"><a href="#Expression-255"><span class="linenos">255</span></a><span class="sd"> Sets `arg_key` to `value`.</span> -</span><span id="Expression-256"><a href="#Expression-256"><span class="linenos">256</span></a> -</span><span id="Expression-257"><a href="#Expression-257"><span class="linenos">257</span></a><span class="sd"> Args:</span> -</span><span id="Expression-258"><a href="#Expression-258"><span class="linenos">258</span></a><span class="sd"> arg_key (str): name of the expression arg.</span> -</span><span id="Expression-259"><a href="#Expression-259"><span class="linenos">259</span></a><span class="sd"> value: value to set the arg to.</span> -</span><span id="Expression-260"><a href="#Expression-260"><span class="linenos">260</span></a><span class="sd"> """</span> -</span><span id="Expression-261"><a href="#Expression-261"><span class="linenos">261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> -</span><span id="Expression-262"><a href="#Expression-262"><span class="linenos">262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> -</span><span id="Expression-263"><a href="#Expression-263"><span class="linenos">263</span></a> -</span><span id="Expression-264"><a href="#Expression-264"><span class="linenos">264</span></a> <span class="k">def</span> <span class="nf">_set_parent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> -</span><span id="Expression-265"><a href="#Expression-265"><span class="linenos">265</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression-266"><a href="#Expression-266"><span class="linenos">266</span></a> <span class="n">value</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="Expression-267"><a href="#Expression-267"><span class="linenos">267</span></a> <span class="n">value</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">arg_key</span> -</span><span id="Expression-268"><a href="#Expression-268"><span class="linenos">268</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="Expression-269"><a href="#Expression-269"><span class="linenos">269</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span> -</span><span id="Expression-270"><a href="#Expression-270"><span class="linenos">270</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression-271"><a href="#Expression-271"><span class="linenos">271</span></a> <span class="n">v</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="Expression-272"><a href="#Expression-272"><span class="linenos">272</span></a> <span class="n">v</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">arg_key</span> -</span><span id="Expression-273"><a href="#Expression-273"><span class="linenos">273</span></a> -</span><span id="Expression-274"><a href="#Expression-274"><span class="linenos">274</span></a> <span class="nd">@property</span> -</span><span id="Expression-275"><a href="#Expression-275"><span class="linenos">275</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-276"><a href="#Expression-276"><span class="linenos">276</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-277"><a href="#Expression-277"><span class="linenos">277</span></a><span class="sd"> Returns the depth of this tree.</span> -</span><span id="Expression-278"><a href="#Expression-278"><span class="linenos">278</span></a><span class="sd"> """</span> -</span><span id="Expression-279"><a href="#Expression-279"><span class="linenos">279</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> -</span><span id="Expression-280"><a href="#Expression-280"><span class="linenos">280</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">depth</span> <span class="o">+</span> <span class="mi">1</span> -</span><span id="Expression-281"><a href="#Expression-281"><span class="linenos">281</span></a> <span class="k">return</span> <span class="mi">0</span> -</span><span id="Expression-282"><a href="#Expression-282"><span class="linenos">282</span></a> -</span><span id="Expression-283"><a href="#Expression-283"><span class="linenos">283</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Expression-284"><a href="#Expression-284"><span class="linenos">284</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-285"><a href="#Expression-285"><span class="linenos">285</span></a><span class="sd"> Returns the first node in this tree which matches at least one of</span> -</span><span id="Expression-286"><a href="#Expression-286"><span class="linenos">286</span></a><span class="sd"> the specified types.</span> +</span><span id="Expression-94"><a href="#Expression-94"><span class="linenos"> 94</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Expression-95"><a href="#Expression-95"><span class="linenos"> 95</span></a> +</span><span id="Expression-96"><a href="#Expression-96"><span class="linenos"> 96</span></a> <span class="k">for</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Expression-97"><a href="#Expression-97"><span class="linenos"> 97</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> +</span><span id="Expression-98"><a href="#Expression-98"><span class="linenos"> 98</span></a> +</span><span id="Expression-99"><a href="#Expression-99"><span class="linenos"> 99</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Expression-100"><a href="#Expression-100"><span class="linenos">100</span></a> <span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> <span class="ow">and</span> <span class="n">_norm_args</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">==</span> <span class="n">_norm_args</span><span class="p">(</span><span class="n">other</span><span class="p">)</span> +</span><span id="Expression-101"><a href="#Expression-101"><span class="linenos">101</span></a> +</span><span id="Expression-102"><a href="#Expression-102"><span class="linenos">102</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="Expression-103"><a href="#Expression-103"><span class="linenos">103</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">(</span> +</span><span id="Expression-104"><a href="#Expression-104"><span class="linenos">104</span></a> <span class="p">(</span> +</span><span id="Expression-105"><a href="#Expression-105"><span class="linenos">105</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> +</span><span id="Expression-106"><a href="#Expression-106"><span class="linenos">106</span></a> <span class="nb">tuple</span><span class="p">(</span> +</span><span id="Expression-107"><a href="#Expression-107"><span class="linenos">107</span></a> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="k">else</span> <span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">_norm_args</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="Expression-108"><a href="#Expression-108"><span class="linenos">108</span></a> <span class="p">),</span> +</span><span id="Expression-109"><a href="#Expression-109"><span class="linenos">109</span></a> <span class="p">)</span> +</span><span id="Expression-110"><a href="#Expression-110"><span class="linenos">110</span></a> <span class="p">)</span> +</span><span id="Expression-111"><a href="#Expression-111"><span class="linenos">111</span></a> +</span><span id="Expression-112"><a href="#Expression-112"><span class="linenos">112</span></a> <span class="nd">@property</span> +</span><span id="Expression-113"><a href="#Expression-113"><span class="linenos">113</span></a> <span class="k">def</span> <span class="nf">this</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-114"><a href="#Expression-114"><span class="linenos">114</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-115"><a href="#Expression-115"><span class="linenos">115</span></a><span class="sd"> Retrieves the argument with key "this".</span> +</span><span id="Expression-116"><a href="#Expression-116"><span class="linenos">116</span></a><span class="sd"> """</span> +</span><span id="Expression-117"><a href="#Expression-117"><span class="linenos">117</span></a> <span class="k">return</span> <span class="bp">self</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">"this"</span><span class="p">)</span> +</span><span id="Expression-118"><a href="#Expression-118"><span class="linenos">118</span></a> +</span><span id="Expression-119"><a href="#Expression-119"><span class="linenos">119</span></a> <span class="nd">@property</span> +</span><span id="Expression-120"><a href="#Expression-120"><span class="linenos">120</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-121"><a href="#Expression-121"><span class="linenos">121</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-122"><a href="#Expression-122"><span class="linenos">122</span></a><span class="sd"> Retrieves the argument with key "expression".</span> +</span><span id="Expression-123"><a href="#Expression-123"><span class="linenos">123</span></a><span class="sd"> """</span> +</span><span id="Expression-124"><a href="#Expression-124"><span class="linenos">124</span></a> <span class="k">return</span> <span class="bp">self</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">"expression"</span><span class="p">)</span> +</span><span id="Expression-125"><a href="#Expression-125"><span class="linenos">125</span></a> +</span><span id="Expression-126"><a href="#Expression-126"><span class="linenos">126</span></a> <span class="nd">@property</span> +</span><span id="Expression-127"><a href="#Expression-127"><span class="linenos">127</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-128"><a href="#Expression-128"><span class="linenos">128</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-129"><a href="#Expression-129"><span class="linenos">129</span></a><span class="sd"> Retrieves the argument with key "expressions".</span> +</span><span id="Expression-130"><a href="#Expression-130"><span class="linenos">130</span></a><span class="sd"> """</span> +</span><span id="Expression-131"><a href="#Expression-131"><span class="linenos">131</span></a> <span class="k">return</span> <span class="bp">self</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">"expressions"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="Expression-132"><a href="#Expression-132"><span class="linenos">132</span></a> +</span><span id="Expression-133"><a href="#Expression-133"><span class="linenos">133</span></a> <span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Expression-134"><a href="#Expression-134"><span class="linenos">134</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-135"><a href="#Expression-135"><span class="linenos">135</span></a><span class="sd"> Returns a textual representation of the argument corresponding to "key". This can only be used</span> +</span><span id="Expression-136"><a href="#Expression-136"><span class="linenos">136</span></a><span class="sd"> for args that are strings or leaf Expression instances, such as identifiers and literals.</span> +</span><span id="Expression-137"><a href="#Expression-137"><span class="linenos">137</span></a><span class="sd"> """</span> +</span><span id="Expression-138"><a href="#Expression-138"><span class="linenos">138</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</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="n">key</span><span class="p">)</span> +</span><span id="Expression-139"><a href="#Expression-139"><span class="linenos">139</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="Expression-140"><a href="#Expression-140"><span class="linenos">140</span></a> <span class="k">return</span> <span class="n">field</span> +</span><span id="Expression-141"><a href="#Expression-141"><span class="linenos">141</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</span><span class="p">)):</span> +</span><span id="Expression-142"><a href="#Expression-142"><span class="linenos">142</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">this</span> +</span><span id="Expression-143"><a href="#Expression-143"><span class="linenos">143</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Star</span><span class="p">,</span> <span class="n">Null</span><span class="p">)):</span> +</span><span id="Expression-144"><a href="#Expression-144"><span class="linenos">144</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">name</span> +</span><span id="Expression-145"><a href="#Expression-145"><span class="linenos">145</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Expression-146"><a href="#Expression-146"><span class="linenos">146</span></a> +</span><span id="Expression-147"><a href="#Expression-147"><span class="linenos">147</span></a> <span class="nd">@property</span> +</span><span id="Expression-148"><a href="#Expression-148"><span class="linenos">148</span></a> <span class="k">def</span> <span class="nf">is_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Expression-149"><a href="#Expression-149"><span class="linenos">149</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-150"><a href="#Expression-150"><span class="linenos">150</span></a><span class="sd"> Checks whether a Literal expression is a string.</span> +</span><span id="Expression-151"><a href="#Expression-151"><span class="linenos">151</span></a><span class="sd"> """</span> +</span><span id="Expression-152"><a href="#Expression-152"><span class="linenos">152</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> +</span><span id="Expression-153"><a href="#Expression-153"><span class="linenos">153</span></a> +</span><span id="Expression-154"><a href="#Expression-154"><span class="linenos">154</span></a> <span class="nd">@property</span> +</span><span id="Expression-155"><a href="#Expression-155"><span class="linenos">155</span></a> <span class="k">def</span> <span class="nf">is_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Expression-156"><a href="#Expression-156"><span class="linenos">156</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-157"><a href="#Expression-157"><span class="linenos">157</span></a><span class="sd"> Checks whether a Literal expression is a number.</span> +</span><span id="Expression-158"><a href="#Expression-158"><span class="linenos">158</span></a><span class="sd"> """</span> +</span><span id="Expression-159"><a href="#Expression-159"><span class="linenos">159</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> +</span><span id="Expression-160"><a href="#Expression-160"><span class="linenos">160</span></a> +</span><span id="Expression-161"><a href="#Expression-161"><span class="linenos">161</span></a> <span class="nd">@property</span> +</span><span id="Expression-162"><a href="#Expression-162"><span class="linenos">162</span></a> <span class="k">def</span> <span class="nf">is_int</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Expression-163"><a href="#Expression-163"><span class="linenos">163</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-164"><a href="#Expression-164"><span class="linenos">164</span></a><span class="sd"> Checks whether a Literal expression is an integer.</span> +</span><span id="Expression-165"><a href="#Expression-165"><span class="linenos">165</span></a><span class="sd"> """</span> +</span><span id="Expression-166"><a href="#Expression-166"><span class="linenos">166</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_number</span><span class="p">:</span> +</span><span id="Expression-167"><a href="#Expression-167"><span class="linenos">167</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Expression-168"><a href="#Expression-168"><span class="linenos">168</span></a> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Expression-169"><a href="#Expression-169"><span class="linenos">169</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Expression-170"><a href="#Expression-170"><span class="linenos">170</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="Expression-171"><a href="#Expression-171"><span class="linenos">171</span></a> <span class="k">pass</span> +</span><span id="Expression-172"><a href="#Expression-172"><span class="linenos">172</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Expression-173"><a href="#Expression-173"><span class="linenos">173</span></a> +</span><span id="Expression-174"><a href="#Expression-174"><span class="linenos">174</span></a> <span class="nd">@property</span> +</span><span id="Expression-175"><a href="#Expression-175"><span class="linenos">175</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Expression-176"><a href="#Expression-176"><span class="linenos">176</span></a><span class="w"> </span><span class="sd">"""Checks whether an expression is a star."""</span> +</span><span id="Expression-177"><a href="#Expression-177"><span class="linenos">177</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Star</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Star</span><span class="p">))</span> +</span><span id="Expression-178"><a href="#Expression-178"><span class="linenos">178</span></a> +</span><span id="Expression-179"><a href="#Expression-179"><span class="linenos">179</span></a> <span class="nd">@property</span> +</span><span id="Expression-180"><a href="#Expression-180"><span class="linenos">180</span></a> <span class="k">def</span> <span class="nf">alias</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Expression-181"><a href="#Expression-181"><span class="linenos">181</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-182"><a href="#Expression-182"><span class="linenos">182</span></a><span class="sd"> Returns the alias of the expression, or an empty string if it's not aliased.</span> +</span><span id="Expression-183"><a href="#Expression-183"><span class="linenos">183</span></a><span class="sd"> """</span> +</span><span id="Expression-184"><a href="#Expression-184"><span class="linenos">184</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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">"alias"</span><span class="p">),</span> <span class="n">TableAlias</span><span class="p">):</span> +</span><span id="Expression-185"><a href="#Expression-185"><span class="linenos">185</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"alias"</span><span class="p">]</span><span class="o">.</span><span class="n">name</span> +</span><span id="Expression-186"><a href="#Expression-186"><span class="linenos">186</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Expression-187"><a href="#Expression-187"><span class="linenos">187</span></a> +</span><span id="Expression-188"><a href="#Expression-188"><span class="linenos">188</span></a> <span class="nd">@property</span> +</span><span id="Expression-189"><a href="#Expression-189"><span class="linenos">189</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Expression-190"><a href="#Expression-190"><span class="linenos">190</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"this"</span><span class="p">)</span> +</span><span id="Expression-191"><a href="#Expression-191"><span class="linenos">191</span></a> +</span><span id="Expression-192"><a href="#Expression-192"><span class="linenos">192</span></a> <span class="nd">@property</span> +</span><span id="Expression-193"><a href="#Expression-193"><span class="linenos">193</span></a> <span class="k">def</span> <span class="nf">alias_or_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-194"><a href="#Expression-194"><span class="linenos">194</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="Expression-195"><a href="#Expression-195"><span class="linenos">195</span></a> +</span><span id="Expression-196"><a href="#Expression-196"><span class="linenos">196</span></a> <span class="nd">@property</span> +</span><span id="Expression-197"><a href="#Expression-197"><span class="linenos">197</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-198"><a href="#Expression-198"><span class="linenos">198</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-199"><a href="#Expression-199"><span class="linenos">199</span></a><span class="sd"> Name of the output column if this expression is a selection.</span> +</span><span id="Expression-200"><a href="#Expression-200"><span class="linenos">200</span></a> +</span><span id="Expression-201"><a href="#Expression-201"><span class="linenos">201</span></a><span class="sd"> If the Expression has no output name, an empty string is returned.</span> +</span><span id="Expression-202"><a href="#Expression-202"><span class="linenos">202</span></a> +</span><span id="Expression-203"><a href="#Expression-203"><span class="linenos">203</span></a><span class="sd"> Example:</span> +</span><span id="Expression-204"><a href="#Expression-204"><span class="linenos">204</span></a><span class="sd"> >>> from sqlglot import parse_one</span> +</span><span id="Expression-205"><a href="#Expression-205"><span class="linenos">205</span></a><span class="sd"> >>> parse_one("SELECT a").expressions[0].output_name</span> +</span><span id="Expression-206"><a href="#Expression-206"><span class="linenos">206</span></a><span class="sd"> 'a'</span> +</span><span id="Expression-207"><a href="#Expression-207"><span class="linenos">207</span></a><span class="sd"> >>> parse_one("SELECT b AS c").expressions[0].output_name</span> +</span><span id="Expression-208"><a href="#Expression-208"><span class="linenos">208</span></a><span class="sd"> 'c'</span> +</span><span id="Expression-209"><a href="#Expression-209"><span class="linenos">209</span></a><span class="sd"> >>> parse_one("SELECT 1 + 2").expressions[0].output_name</span> +</span><span id="Expression-210"><a href="#Expression-210"><span class="linenos">210</span></a><span class="sd"> ''</span> +</span><span id="Expression-211"><a href="#Expression-211"><span class="linenos">211</span></a><span class="sd"> """</span> +</span><span id="Expression-212"><a href="#Expression-212"><span class="linenos">212</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Expression-213"><a href="#Expression-213"><span class="linenos">213</span></a> +</span><span id="Expression-214"><a href="#Expression-214"><span class="linenos">214</span></a> <span class="nd">@property</span> +</span><span id="Expression-215"><a href="#Expression-215"><span class="linenos">215</span></a> <span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">DataType</span><span class="p">]:</span> +</span><span id="Expression-216"><a href="#Expression-216"><span class="linenos">216</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> +</span><span id="Expression-217"><a href="#Expression-217"><span class="linenos">217</span></a> +</span><span id="Expression-218"><a href="#Expression-218"><span class="linenos">218</span></a> <span class="nd">@type</span><span class="o">.</span><span class="n">setter</span> +</span><span id="Expression-219"><a href="#Expression-219"><span class="linenos">219</span></a> <span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</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">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Expression-220"><a href="#Expression-220"><span class="linenos">220</span></a> <span class="k">if</span> <span class="n">dtype</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> +</span><span id="Expression-221"><a href="#Expression-221"><span class="linenos">221</span></a> <span class="n">dtype</span> <span class="o">=</span> <span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> +</span><span id="Expression-222"><a href="#Expression-222"><span class="linenos">222</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="o">=</span> <span class="n">dtype</span> <span class="c1"># type: ignore</span> +</span><span id="Expression-223"><a href="#Expression-223"><span class="linenos">223</span></a> +</span><span id="Expression-224"><a href="#Expression-224"><span class="linenos">224</span></a> <span class="nd">@property</span> +</span><span id="Expression-225"><a href="#Expression-225"><span class="linenos">225</span></a> <span class="k">def</span> <span class="nf">meta</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span> +</span><span id="Expression-226"><a href="#Expression-226"><span class="linenos">226</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Expression-227"><a href="#Expression-227"><span class="linenos">227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Expression-228"><a href="#Expression-228"><span class="linenos">228</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> +</span><span id="Expression-229"><a href="#Expression-229"><span class="linenos">229</span></a> +</span><span id="Expression-230"><a href="#Expression-230"><span class="linenos">230</span></a> <span class="k">def</span> <span class="nf">__deepcopy__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">memo</span><span class="p">):</span> +</span><span id="Expression-231"><a href="#Expression-231"><span class="linenos">231</span></a> <span class="n">copy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">(</span><span class="o">**</span><span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">))</span> +</span><span id="Expression-232"><a href="#Expression-232"><span class="linenos">232</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Expression-233"><a href="#Expression-233"><span class="linenos">233</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">comments</span><span class="p">)</span> +</span><span id="Expression-234"><a href="#Expression-234"><span class="linenos">234</span></a> +</span><span id="Expression-235"><a href="#Expression-235"><span class="linenos">235</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Expression-236"><a href="#Expression-236"><span class="linenos">236</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="Expression-237"><a href="#Expression-237"><span class="linenos">237</span></a> +</span><span id="Expression-238"><a href="#Expression-238"><span class="linenos">238</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Expression-239"><a href="#Expression-239"><span class="linenos">239</span></a> <span class="n">copy</span><span class="o">.</span><span class="n">_meta</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_meta</span><span class="p">)</span> +</span><span id="Expression-240"><a href="#Expression-240"><span class="linenos">240</span></a> +</span><span id="Expression-241"><a href="#Expression-241"><span class="linenos">241</span></a> <span class="k">return</span> <span class="n">copy</span> +</span><span id="Expression-242"><a href="#Expression-242"><span class="linenos">242</span></a> +</span><span id="Expression-243"><a href="#Expression-243"><span class="linenos">243</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-244"><a href="#Expression-244"><span class="linenos">244</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-245"><a href="#Expression-245"><span class="linenos">245</span></a><span class="sd"> Returns a deep copy of the expression.</span> +</span><span id="Expression-246"><a href="#Expression-246"><span class="linenos">246</span></a><span class="sd"> """</span> +</span><span id="Expression-247"><a href="#Expression-247"><span class="linenos">247</span></a> <span class="n">new</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Expression-248"><a href="#Expression-248"><span class="linenos">248</span></a> <span class="n">new</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression-249"><a href="#Expression-249"><span class="linenos">249</span></a> <span class="k">for</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">new</span><span class="o">.</span><span class="n">bfs</span><span class="p">():</span> +</span><span id="Expression-250"><a href="#Expression-250"><span class="linenos">250</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">parent</span><span class="p">:</span> +</span><span id="Expression-251"><a href="#Expression-251"><span class="linenos">251</span></a> <span class="n">item</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> +</span><span id="Expression-252"><a href="#Expression-252"><span class="linenos">252</span></a> <span class="k">return</span> <span class="n">new</span> +</span><span id="Expression-253"><a href="#Expression-253"><span class="linenos">253</span></a> +</span><span id="Expression-254"><a href="#Expression-254"><span class="linenos">254</span></a> <span class="k">def</span> <span class="nf">append</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> +</span><span id="Expression-255"><a href="#Expression-255"><span class="linenos">255</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-256"><a href="#Expression-256"><span class="linenos">256</span></a><span class="sd"> Appends value to arg_key if it's a list or sets it as a new list.</span> +</span><span id="Expression-257"><a href="#Expression-257"><span class="linenos">257</span></a> +</span><span id="Expression-258"><a href="#Expression-258"><span class="linenos">258</span></a><span class="sd"> Args:</span> +</span><span id="Expression-259"><a href="#Expression-259"><span class="linenos">259</span></a><span class="sd"> arg_key (str): name of the list expression arg</span> +</span><span id="Expression-260"><a href="#Expression-260"><span class="linenos">260</span></a><span class="sd"> value (Any): value to append to the list</span> +</span><span id="Expression-261"><a href="#Expression-261"><span class="linenos">261</span></a><span class="sd"> """</span> +</span><span id="Expression-262"><a href="#Expression-262"><span class="linenos">262</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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="n">arg_key</span><span class="p">),</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="Expression-263"><a href="#Expression-263"><span class="linenos">263</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Expression-264"><a href="#Expression-264"><span class="linenos">264</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="Expression-265"><a href="#Expression-265"><span class="linenos">265</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> +</span><span id="Expression-266"><a href="#Expression-266"><span class="linenos">266</span></a> +</span><span id="Expression-267"><a href="#Expression-267"><span class="linenos">267</span></a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> +</span><span id="Expression-268"><a href="#Expression-268"><span class="linenos">268</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-269"><a href="#Expression-269"><span class="linenos">269</span></a><span class="sd"> Sets `arg_key` to `value`.</span> +</span><span id="Expression-270"><a href="#Expression-270"><span class="linenos">270</span></a> +</span><span id="Expression-271"><a href="#Expression-271"><span class="linenos">271</span></a><span class="sd"> Args:</span> +</span><span id="Expression-272"><a href="#Expression-272"><span class="linenos">272</span></a><span class="sd"> arg_key (str): name of the expression arg.</span> +</span><span id="Expression-273"><a href="#Expression-273"><span class="linenos">273</span></a><span class="sd"> value: value to set the arg to.</span> +</span><span id="Expression-274"><a href="#Expression-274"><span class="linenos">274</span></a><span class="sd"> """</span> +</span><span id="Expression-275"><a href="#Expression-275"><span class="linenos">275</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> +</span><span id="Expression-276"><a href="#Expression-276"><span class="linenos">276</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> +</span><span id="Expression-277"><a href="#Expression-277"><span class="linenos">277</span></a> +</span><span id="Expression-278"><a href="#Expression-278"><span class="linenos">278</span></a> <span class="k">def</span> <span class="nf">_set_parent</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> +</span><span id="Expression-279"><a href="#Expression-279"><span class="linenos">279</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression-280"><a href="#Expression-280"><span class="linenos">280</span></a> <span class="n">value</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="Expression-281"><a href="#Expression-281"><span class="linenos">281</span></a> <span class="n">value</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">arg_key</span> +</span><span id="Expression-282"><a href="#Expression-282"><span class="linenos">282</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="Expression-283"><a href="#Expression-283"><span class="linenos">283</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">:</span> +</span><span id="Expression-284"><a href="#Expression-284"><span class="linenos">284</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression-285"><a href="#Expression-285"><span class="linenos">285</span></a> <span class="n">v</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="Expression-286"><a href="#Expression-286"><span class="linenos">286</span></a> <span class="n">v</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">arg_key</span> </span><span id="Expression-287"><a href="#Expression-287"><span class="linenos">287</span></a> -</span><span id="Expression-288"><a href="#Expression-288"><span class="linenos">288</span></a><span class="sd"> Args:</span> -</span><span id="Expression-289"><a href="#Expression-289"><span class="linenos">289</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> -</span><span id="Expression-290"><a href="#Expression-290"><span class="linenos">290</span></a> -</span><span id="Expression-291"><a href="#Expression-291"><span class="linenos">291</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-292"><a href="#Expression-292"><span class="linenos">292</span></a><span class="sd"> The node which matches the criteria or None if no such node was found.</span> -</span><span id="Expression-293"><a href="#Expression-293"><span class="linenos">293</span></a><span class="sd"> """</span> -</span><span id="Expression-294"><a href="#Expression-294"><span class="linenos">294</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Expression-295"><a href="#Expression-295"><span class="linenos">295</span></a> -</span><span id="Expression-296"><a href="#Expression-296"><span class="linenos">296</span></a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Expression-297"><a href="#Expression-297"><span class="linenos">297</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-298"><a href="#Expression-298"><span class="linenos">298</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree and only</span> -</span><span id="Expression-299"><a href="#Expression-299"><span class="linenos">299</span></a><span class="sd"> yields those that match at least one of the specified expression types.</span> -</span><span id="Expression-300"><a href="#Expression-300"><span class="linenos">300</span></a> -</span><span id="Expression-301"><a href="#Expression-301"><span class="linenos">301</span></a><span class="sd"> Args:</span> -</span><span id="Expression-302"><a href="#Expression-302"><span class="linenos">302</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> -</span><span id="Expression-303"><a href="#Expression-303"><span class="linenos">303</span></a> -</span><span id="Expression-304"><a href="#Expression-304"><span class="linenos">304</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-305"><a href="#Expression-305"><span class="linenos">305</span></a><span class="sd"> The generator object.</span> -</span><span id="Expression-306"><a href="#Expression-306"><span class="linenos">306</span></a><span class="sd"> """</span> -</span><span id="Expression-307"><a href="#Expression-307"><span class="linenos">307</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span> -</span><span id="Expression-308"><a href="#Expression-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> -</span><span id="Expression-309"><a href="#Expression-309"><span class="linenos">309</span></a> <span class="k">yield</span> <span class="n">expression</span> -</span><span id="Expression-310"><a href="#Expression-310"><span class="linenos">310</span></a> -</span><span id="Expression-311"><a href="#Expression-311"><span class="linenos">311</span></a> <span class="k">def</span> <span class="nf">find_ancestor</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">):</span> -</span><span id="Expression-312"><a href="#Expression-312"><span class="linenos">312</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-313"><a href="#Expression-313"><span class="linenos">313</span></a><span class="sd"> Returns a nearest parent matching expression_types.</span> +</span><span id="Expression-288"><a href="#Expression-288"><span class="linenos">288</span></a> <span class="nd">@property</span> +</span><span id="Expression-289"><a href="#Expression-289"><span class="linenos">289</span></a> <span class="k">def</span> <span class="nf">depth</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-290"><a href="#Expression-290"><span class="linenos">290</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-291"><a href="#Expression-291"><span class="linenos">291</span></a><span class="sd"> Returns the depth of this tree.</span> +</span><span id="Expression-292"><a href="#Expression-292"><span class="linenos">292</span></a><span class="sd"> """</span> +</span><span id="Expression-293"><a href="#Expression-293"><span class="linenos">293</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> +</span><span id="Expression-294"><a href="#Expression-294"><span class="linenos">294</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">depth</span> <span class="o">+</span> <span class="mi">1</span> +</span><span id="Expression-295"><a href="#Expression-295"><span class="linenos">295</span></a> <span class="k">return</span> <span class="mi">0</span> +</span><span id="Expression-296"><a href="#Expression-296"><span class="linenos">296</span></a> +</span><span id="Expression-297"><a href="#Expression-297"><span class="linenos">297</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Expression-298"><a href="#Expression-298"><span class="linenos">298</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-299"><a href="#Expression-299"><span class="linenos">299</span></a><span class="sd"> Returns the first node in this tree which matches at least one of</span> +</span><span id="Expression-300"><a href="#Expression-300"><span class="linenos">300</span></a><span class="sd"> the specified types.</span> +</span><span id="Expression-301"><a href="#Expression-301"><span class="linenos">301</span></a> +</span><span id="Expression-302"><a href="#Expression-302"><span class="linenos">302</span></a><span class="sd"> Args:</span> +</span><span id="Expression-303"><a href="#Expression-303"><span class="linenos">303</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> +</span><span id="Expression-304"><a href="#Expression-304"><span class="linenos">304</span></a> +</span><span id="Expression-305"><a href="#Expression-305"><span class="linenos">305</span></a><span class="sd"> Returns:</span> +</span><span id="Expression-306"><a href="#Expression-306"><span class="linenos">306</span></a><span class="sd"> The node which matches the criteria or None if no such node was found.</span> +</span><span id="Expression-307"><a href="#Expression-307"><span class="linenos">307</span></a><span class="sd"> """</span> +</span><span id="Expression-308"><a href="#Expression-308"><span class="linenos">308</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Expression-309"><a href="#Expression-309"><span class="linenos">309</span></a> +</span><span id="Expression-310"><a href="#Expression-310"><span class="linenos">310</span></a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Expression-311"><a href="#Expression-311"><span class="linenos">311</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-312"><a href="#Expression-312"><span class="linenos">312</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree and only</span> +</span><span id="Expression-313"><a href="#Expression-313"><span class="linenos">313</span></a><span class="sd"> yields those that match at least one of the specified expression types.</span> </span><span id="Expression-314"><a href="#Expression-314"><span class="linenos">314</span></a> </span><span id="Expression-315"><a href="#Expression-315"><span class="linenos">315</span></a><span class="sd"> Args:</span> </span><span id="Expression-316"><a href="#Expression-316"><span class="linenos">316</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> </span><span id="Expression-317"><a href="#Expression-317"><span class="linenos">317</span></a> </span><span id="Expression-318"><a href="#Expression-318"><span class="linenos">318</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-319"><a href="#Expression-319"><span class="linenos">319</span></a><span class="sd"> The parent node.</span> +</span><span id="Expression-319"><a href="#Expression-319"><span class="linenos">319</span></a><span class="sd"> The generator object.</span> </span><span id="Expression-320"><a href="#Expression-320"><span class="linenos">320</span></a><span class="sd"> """</span> -</span><span id="Expression-321"><a href="#Expression-321"><span class="linenos">321</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression-322"><a href="#Expression-322"><span class="linenos">322</span></a> <span class="k">while</span> <span class="n">ancestor</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ancestor</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> -</span><span id="Expression-323"><a href="#Expression-323"><span class="linenos">323</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="n">ancestor</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression-324"><a href="#Expression-324"><span class="linenos">324</span></a> <span class="k">return</span> <span class="n">ancestor</span> -</span><span id="Expression-325"><a href="#Expression-325"><span class="linenos">325</span></a> -</span><span id="Expression-326"><a href="#Expression-326"><span class="linenos">326</span></a> <span class="nd">@property</span> -</span><span id="Expression-327"><a href="#Expression-327"><span class="linenos">327</span></a> <span class="k">def</span> <span class="nf">parent_select</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-328"><a href="#Expression-328"><span class="linenos">328</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-329"><a href="#Expression-329"><span class="linenos">329</span></a><span class="sd"> Returns the parent select statement.</span> -</span><span id="Expression-330"><a href="#Expression-330"><span class="linenos">330</span></a><span class="sd"> """</span> -</span><span id="Expression-331"><a href="#Expression-331"><span class="linenos">331</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_ancestor</span><span class="p">(</span><span class="n">Select</span><span class="p">)</span> -</span><span id="Expression-332"><a href="#Expression-332"><span class="linenos">332</span></a> -</span><span id="Expression-333"><a href="#Expression-333"><span class="linenos">333</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="Expression-334"><a href="#Expression-334"><span class="linenos">334</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-335"><a href="#Expression-335"><span class="linenos">335</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree.</span> -</span><span id="Expression-336"><a href="#Expression-336"><span class="linenos">336</span></a> -</span><span id="Expression-337"><a href="#Expression-337"><span class="linenos">337</span></a><span class="sd"> Args:</span> -</span><span id="Expression-338"><a href="#Expression-338"><span class="linenos">338</span></a><span class="sd"> bfs (bool): if set to True the BFS traversal order will be applied,</span> -</span><span id="Expression-339"><a href="#Expression-339"><span class="linenos">339</span></a><span class="sd"> otherwise the DFS traversal will be used instead.</span> -</span><span id="Expression-340"><a href="#Expression-340"><span class="linenos">340</span></a><span class="sd"> prune ((node, parent, arg_key) -> bool): callable that returns True if</span> -</span><span id="Expression-341"><a href="#Expression-341"><span class="linenos">341</span></a><span class="sd"> the generator should stop traversing this branch of the tree.</span> -</span><span id="Expression-342"><a href="#Expression-342"><span class="linenos">342</span></a> -</span><span id="Expression-343"><a href="#Expression-343"><span class="linenos">343</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-344"><a href="#Expression-344"><span class="linenos">344</span></a><span class="sd"> the generator object.</span> -</span><span id="Expression-345"><a href="#Expression-345"><span class="linenos">345</span></a><span class="sd"> """</span> -</span><span id="Expression-346"><a href="#Expression-346"><span class="linenos">346</span></a> <span class="k">if</span> <span class="n">bfs</span><span class="p">:</span> -</span><span id="Expression-347"><a href="#Expression-347"><span class="linenos">347</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">bfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> -</span><span id="Expression-348"><a href="#Expression-348"><span class="linenos">348</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Expression-349"><a href="#Expression-349"><span class="linenos">349</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> +</span><span id="Expression-321"><a href="#Expression-321"><span class="linenos">321</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span> +</span><span id="Expression-322"><a href="#Expression-322"><span class="linenos">322</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> +</span><span id="Expression-323"><a href="#Expression-323"><span class="linenos">323</span></a> <span class="k">yield</span> <span class="n">expression</span> +</span><span id="Expression-324"><a href="#Expression-324"><span class="linenos">324</span></a> +</span><span id="Expression-325"><a href="#Expression-325"><span class="linenos">325</span></a> <span class="k">def</span> <span class="nf">find_ancestor</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">):</span> +</span><span id="Expression-326"><a href="#Expression-326"><span class="linenos">326</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-327"><a href="#Expression-327"><span class="linenos">327</span></a><span class="sd"> Returns a nearest parent matching expression_types.</span> +</span><span id="Expression-328"><a href="#Expression-328"><span class="linenos">328</span></a> +</span><span id="Expression-329"><a href="#Expression-329"><span class="linenos">329</span></a><span class="sd"> Args:</span> +</span><span id="Expression-330"><a href="#Expression-330"><span class="linenos">330</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> +</span><span id="Expression-331"><a href="#Expression-331"><span class="linenos">331</span></a> +</span><span id="Expression-332"><a href="#Expression-332"><span class="linenos">332</span></a><span class="sd"> Returns:</span> +</span><span id="Expression-333"><a href="#Expression-333"><span class="linenos">333</span></a><span class="sd"> The parent node.</span> +</span><span id="Expression-334"><a href="#Expression-334"><span class="linenos">334</span></a><span class="sd"> """</span> +</span><span id="Expression-335"><a href="#Expression-335"><span class="linenos">335</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression-336"><a href="#Expression-336"><span class="linenos">336</span></a> <span class="k">while</span> <span class="n">ancestor</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ancestor</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> +</span><span id="Expression-337"><a href="#Expression-337"><span class="linenos">337</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="n">ancestor</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression-338"><a href="#Expression-338"><span class="linenos">338</span></a> <span class="k">return</span> <span class="n">ancestor</span> +</span><span id="Expression-339"><a href="#Expression-339"><span class="linenos">339</span></a> +</span><span id="Expression-340"><a href="#Expression-340"><span class="linenos">340</span></a> <span class="nd">@property</span> +</span><span id="Expression-341"><a href="#Expression-341"><span class="linenos">341</span></a> <span class="k">def</span> <span class="nf">parent_select</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-342"><a href="#Expression-342"><span class="linenos">342</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-343"><a href="#Expression-343"><span class="linenos">343</span></a><span class="sd"> Returns the parent select statement.</span> +</span><span id="Expression-344"><a href="#Expression-344"><span class="linenos">344</span></a><span class="sd"> """</span> +</span><span id="Expression-345"><a href="#Expression-345"><span class="linenos">345</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">find_ancestor</span><span class="p">(</span><span class="n">Select</span><span class="p">)</span> +</span><span id="Expression-346"><a href="#Expression-346"><span class="linenos">346</span></a> +</span><span id="Expression-347"><a href="#Expression-347"><span class="linenos">347</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="Expression-348"><a href="#Expression-348"><span class="linenos">348</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-349"><a href="#Expression-349"><span class="linenos">349</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree.</span> </span><span id="Expression-350"><a href="#Expression-350"><span class="linenos">350</span></a> -</span><span id="Expression-351"><a href="#Expression-351"><span class="linenos">351</span></a> <span class="k">def</span> <span class="nf">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="Expression-352"><a href="#Expression-352"><span class="linenos">352</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-353"><a href="#Expression-353"><span class="linenos">353</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> -</span><span id="Expression-354"><a href="#Expression-354"><span class="linenos">354</span></a><span class="sd"> the DFS (Depth-first) order.</span> -</span><span id="Expression-355"><a href="#Expression-355"><span class="linenos">355</span></a> -</span><span id="Expression-356"><a href="#Expression-356"><span class="linenos">356</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-357"><a href="#Expression-357"><span class="linenos">357</span></a><span class="sd"> The generator object.</span> -</span><span id="Expression-358"><a href="#Expression-358"><span class="linenos">358</span></a><span class="sd"> """</span> -</span><span id="Expression-359"><a href="#Expression-359"><span class="linenos">359</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression-360"><a href="#Expression-360"><span class="linenos">360</span></a> <span class="k">yield</span> <span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> -</span><span id="Expression-361"><a href="#Expression-361"><span class="linenos">361</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> -</span><span id="Expression-362"><a href="#Expression-362"><span class="linenos">362</span></a> <span class="k">return</span> -</span><span id="Expression-363"><a href="#Expression-363"><span class="linenos">363</span></a> -</span><span id="Expression-364"><a href="#Expression-364"><span class="linenos">364</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Expression-365"><a href="#Expression-365"><span class="linenos">365</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> -</span><span id="Expression-366"><a href="#Expression-366"><span class="linenos">366</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression-367"><a href="#Expression-367"><span class="linenos">367</span></a> <span class="k">yield from</span> <span class="n">node</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">prune</span><span class="p">)</span> -</span><span id="Expression-368"><a href="#Expression-368"><span class="linenos">368</span></a> -</span><span id="Expression-369"><a href="#Expression-369"><span class="linenos">369</span></a> <span class="k">def</span> <span class="nf">bfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="Expression-370"><a href="#Expression-370"><span class="linenos">370</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-371"><a href="#Expression-371"><span class="linenos">371</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> -</span><span id="Expression-372"><a href="#Expression-372"><span class="linenos">372</span></a><span class="sd"> the BFS (Breadth-first) order.</span> -</span><span id="Expression-373"><a href="#Expression-373"><span class="linenos">373</span></a> -</span><span id="Expression-374"><a href="#Expression-374"><span class="linenos">374</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-375"><a href="#Expression-375"><span class="linenos">375</span></a><span class="sd"> The generator object.</span> -</span><span id="Expression-376"><a href="#Expression-376"><span class="linenos">376</span></a><span class="sd"> """</span> -</span><span id="Expression-377"><a href="#Expression-377"><span class="linenos">377</span></a> <span class="n">queue</span> <span class="o">=</span> <span class="n">deque</span><span class="p">([(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="kc">None</span><span class="p">)])</span> -</span><span id="Expression-378"><a href="#Expression-378"><span class="linenos">378</span></a> -</span><span id="Expression-379"><a href="#Expression-379"><span class="linenos">379</span></a> <span class="k">while</span> <span class="n">queue</span><span class="p">:</span> -</span><span id="Expression-380"><a href="#Expression-380"><span class="linenos">380</span></a> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="o">=</span> <span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span> -</span><span id="Expression-381"><a href="#Expression-381"><span class="linenos">381</span></a> -</span><span id="Expression-382"><a href="#Expression-382"><span class="linenos">382</span></a> <span class="k">yield</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> -</span><span id="Expression-383"><a href="#Expression-383"><span class="linenos">383</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> -</span><span id="Expression-384"><a href="#Expression-384"><span class="linenos">384</span></a> <span class="k">continue</span> -</span><span id="Expression-385"><a href="#Expression-385"><span class="linenos">385</span></a> -</span><span id="Expression-386"><a href="#Expression-386"><span class="linenos">386</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression-387"><a href="#Expression-387"><span class="linenos">387</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Expression-388"><a href="#Expression-388"><span class="linenos">388</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> -</span><span id="Expression-389"><a href="#Expression-389"><span class="linenos">389</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression-390"><a href="#Expression-390"><span class="linenos">390</span></a> <span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">node</span><span class="p">,</span> <span class="n">item</span><span class="p">,</span> <span class="n">k</span><span class="p">))</span> -</span><span id="Expression-391"><a href="#Expression-391"><span class="linenos">391</span></a> -</span><span id="Expression-392"><a href="#Expression-392"><span class="linenos">392</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-393"><a href="#Expression-393"><span class="linenos">393</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-394"><a href="#Expression-394"><span class="linenos">394</span></a><span class="sd"> Returns the first non parenthesis child or self.</span> -</span><span id="Expression-395"><a href="#Expression-395"><span class="linenos">395</span></a><span class="sd"> """</span> -</span><span id="Expression-396"><a href="#Expression-396"><span class="linenos">396</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="Expression-397"><a href="#Expression-397"><span class="linenos">397</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Paren</span><span class="p">):</span> -</span><span id="Expression-398"><a href="#Expression-398"><span class="linenos">398</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="Expression-399"><a href="#Expression-399"><span class="linenos">399</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Expression-400"><a href="#Expression-400"><span class="linenos">400</span></a> -</span><span id="Expression-401"><a href="#Expression-401"><span class="linenos">401</span></a> <span class="k">def</span> <span class="nf">unalias</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-402"><a href="#Expression-402"><span class="linenos">402</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-403"><a href="#Expression-403"><span class="linenos">403</span></a><span class="sd"> Returns the inner expression if this is an Alias.</span> -</span><span id="Expression-404"><a href="#Expression-404"><span class="linenos">404</span></a><span class="sd"> """</span> -</span><span id="Expression-405"><a href="#Expression-405"><span class="linenos">405</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Alias</span><span class="p">):</span> -</span><span id="Expression-406"><a href="#Expression-406"><span class="linenos">406</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> -</span><span id="Expression-407"><a href="#Expression-407"><span class="linenos">407</span></a> <span class="k">return</span> <span class="bp">self</span> -</span><span id="Expression-408"><a href="#Expression-408"><span class="linenos">408</span></a> -</span><span id="Expression-409"><a href="#Expression-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="nf">unnest_operands</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-410"><a href="#Expression-410"><span class="linenos">410</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-411"><a href="#Expression-411"><span class="linenos">411</span></a><span class="sd"> Returns unnested operands as a tuple.</span> -</span><span id="Expression-412"><a href="#Expression-412"><span class="linenos">412</span></a><span class="sd"> """</span> -</span><span id="Expression-413"><a href="#Expression-413"><span class="linenos">413</span></a> <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">arg</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="n">arg</span><span class="p">)</span> +</span><span id="Expression-351"><a href="#Expression-351"><span class="linenos">351</span></a><span class="sd"> Args:</span> +</span><span id="Expression-352"><a href="#Expression-352"><span class="linenos">352</span></a><span class="sd"> bfs (bool): if set to True the BFS traversal order will be applied,</span> +</span><span id="Expression-353"><a href="#Expression-353"><span class="linenos">353</span></a><span class="sd"> otherwise the DFS traversal will be used instead.</span> +</span><span id="Expression-354"><a href="#Expression-354"><span class="linenos">354</span></a><span class="sd"> prune ((node, parent, arg_key) -> bool): callable that returns True if</span> +</span><span id="Expression-355"><a href="#Expression-355"><span class="linenos">355</span></a><span class="sd"> the generator should stop traversing this branch of the tree.</span> +</span><span id="Expression-356"><a href="#Expression-356"><span class="linenos">356</span></a> +</span><span id="Expression-357"><a href="#Expression-357"><span class="linenos">357</span></a><span class="sd"> Returns:</span> +</span><span id="Expression-358"><a href="#Expression-358"><span class="linenos">358</span></a><span class="sd"> the generator object.</span> +</span><span id="Expression-359"><a href="#Expression-359"><span class="linenos">359</span></a><span class="sd"> """</span> +</span><span id="Expression-360"><a href="#Expression-360"><span class="linenos">360</span></a> <span class="k">if</span> <span class="n">bfs</span><span class="p">:</span> +</span><span id="Expression-361"><a href="#Expression-361"><span class="linenos">361</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">bfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> +</span><span id="Expression-362"><a href="#Expression-362"><span class="linenos">362</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Expression-363"><a href="#Expression-363"><span class="linenos">363</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> +</span><span id="Expression-364"><a href="#Expression-364"><span class="linenos">364</span></a> +</span><span id="Expression-365"><a href="#Expression-365"><span class="linenos">365</span></a> <span class="k">def</span> <span class="nf">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="Expression-366"><a href="#Expression-366"><span class="linenos">366</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-367"><a href="#Expression-367"><span class="linenos">367</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> +</span><span id="Expression-368"><a href="#Expression-368"><span class="linenos">368</span></a><span class="sd"> the DFS (Depth-first) order.</span> +</span><span id="Expression-369"><a href="#Expression-369"><span class="linenos">369</span></a> +</span><span id="Expression-370"><a href="#Expression-370"><span class="linenos">370</span></a><span class="sd"> Returns:</span> +</span><span id="Expression-371"><a href="#Expression-371"><span class="linenos">371</span></a><span class="sd"> The generator object.</span> +</span><span id="Expression-372"><a href="#Expression-372"><span class="linenos">372</span></a><span class="sd"> """</span> +</span><span id="Expression-373"><a href="#Expression-373"><span class="linenos">373</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression-374"><a href="#Expression-374"><span class="linenos">374</span></a> <span class="k">yield</span> <span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> +</span><span id="Expression-375"><a href="#Expression-375"><span class="linenos">375</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> +</span><span id="Expression-376"><a href="#Expression-376"><span class="linenos">376</span></a> <span class="k">return</span> +</span><span id="Expression-377"><a href="#Expression-377"><span class="linenos">377</span></a> +</span><span id="Expression-378"><a href="#Expression-378"><span class="linenos">378</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Expression-379"><a href="#Expression-379"><span class="linenos">379</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> +</span><span id="Expression-380"><a href="#Expression-380"><span class="linenos">380</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression-381"><a href="#Expression-381"><span class="linenos">381</span></a> <span class="k">yield from</span> <span class="n">node</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">prune</span><span class="p">)</span> +</span><span id="Expression-382"><a href="#Expression-382"><span class="linenos">382</span></a> +</span><span id="Expression-383"><a href="#Expression-383"><span class="linenos">383</span></a> <span class="k">def</span> <span class="nf">bfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="Expression-384"><a href="#Expression-384"><span class="linenos">384</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-385"><a href="#Expression-385"><span class="linenos">385</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> +</span><span id="Expression-386"><a href="#Expression-386"><span class="linenos">386</span></a><span class="sd"> the BFS (Breadth-first) order.</span> +</span><span id="Expression-387"><a href="#Expression-387"><span class="linenos">387</span></a> +</span><span id="Expression-388"><a href="#Expression-388"><span class="linenos">388</span></a><span class="sd"> Returns:</span> +</span><span id="Expression-389"><a href="#Expression-389"><span class="linenos">389</span></a><span class="sd"> The generator object.</span> +</span><span id="Expression-390"><a href="#Expression-390"><span class="linenos">390</span></a><span class="sd"> """</span> +</span><span id="Expression-391"><a href="#Expression-391"><span class="linenos">391</span></a> <span class="n">queue</span> <span class="o">=</span> <span class="n">deque</span><span class="p">([(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="kc">None</span><span class="p">)])</span> +</span><span id="Expression-392"><a href="#Expression-392"><span class="linenos">392</span></a> +</span><span id="Expression-393"><a href="#Expression-393"><span class="linenos">393</span></a> <span class="k">while</span> <span class="n">queue</span><span class="p">:</span> +</span><span id="Expression-394"><a href="#Expression-394"><span class="linenos">394</span></a> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="o">=</span> <span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span> +</span><span id="Expression-395"><a href="#Expression-395"><span class="linenos">395</span></a> +</span><span id="Expression-396"><a href="#Expression-396"><span class="linenos">396</span></a> <span class="k">yield</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> +</span><span id="Expression-397"><a href="#Expression-397"><span class="linenos">397</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> +</span><span id="Expression-398"><a href="#Expression-398"><span class="linenos">398</span></a> <span class="k">continue</span> +</span><span id="Expression-399"><a href="#Expression-399"><span class="linenos">399</span></a> +</span><span id="Expression-400"><a href="#Expression-400"><span class="linenos">400</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression-401"><a href="#Expression-401"><span class="linenos">401</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Expression-402"><a href="#Expression-402"><span class="linenos">402</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> +</span><span id="Expression-403"><a href="#Expression-403"><span class="linenos">403</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression-404"><a href="#Expression-404"><span class="linenos">404</span></a> <span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">node</span><span class="p">,</span> <span class="n">item</span><span class="p">,</span> <span class="n">k</span><span class="p">))</span> +</span><span id="Expression-405"><a href="#Expression-405"><span class="linenos">405</span></a> +</span><span id="Expression-406"><a href="#Expression-406"><span class="linenos">406</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-407"><a href="#Expression-407"><span class="linenos">407</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-408"><a href="#Expression-408"><span class="linenos">408</span></a><span class="sd"> Returns the first non parenthesis child or self.</span> +</span><span id="Expression-409"><a href="#Expression-409"><span class="linenos">409</span></a><span class="sd"> """</span> +</span><span id="Expression-410"><a href="#Expression-410"><span class="linenos">410</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="Expression-411"><a href="#Expression-411"><span class="linenos">411</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Paren</span><span class="p">):</span> +</span><span id="Expression-412"><a href="#Expression-412"><span class="linenos">412</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="Expression-413"><a href="#Expression-413"><span class="linenos">413</span></a> <span class="k">return</span> <span class="n">expression</span> </span><span id="Expression-414"><a href="#Expression-414"><span class="linenos">414</span></a> -</span><span id="Expression-415"><a href="#Expression-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">flatten</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Expression-415"><a href="#Expression-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">unalias</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> </span><span id="Expression-416"><a href="#Expression-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-417"><a href="#Expression-417"><span class="linenos">417</span></a><span class="sd"> Returns a generator which yields child nodes who's parents are the same class.</span> -</span><span id="Expression-418"><a href="#Expression-418"><span class="linenos">418</span></a> -</span><span id="Expression-419"><a href="#Expression-419"><span class="linenos">419</span></a><span class="sd"> A AND B AND C -> [A, B, C]</span> -</span><span id="Expression-420"><a href="#Expression-420"><span class="linenos">420</span></a><span class="sd"> """</span> -</span><span id="Expression-421"><a href="#Expression-421"><span class="linenos">421</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="n">p</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)):</span> -</span><span id="Expression-422"><a href="#Expression-422"><span class="linenos">422</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">):</span> -</span><span id="Expression-423"><a href="#Expression-423"><span class="linenos">423</span></a> <span class="k">yield</span> <span class="n">node</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="n">unnest</span> <span class="k">else</span> <span class="n">node</span> -</span><span id="Expression-424"><a href="#Expression-424"><span class="linenos">424</span></a> -</span><span id="Expression-425"><a href="#Expression-425"><span class="linenos">425</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-426"><a href="#Expression-426"><span class="linenos">426</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="Expression-427"><a href="#Expression-427"><span class="linenos">427</span></a> -</span><span id="Expression-428"><a href="#Expression-428"><span class="linenos">428</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-429"><a href="#Expression-429"><span class="linenos">429</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_to_s</span><span class="p">()</span> -</span><span id="Expression-430"><a href="#Expression-430"><span class="linenos">430</span></a> -</span><span id="Expression-431"><a href="#Expression-431"><span class="linenos">431</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Expression-432"><a href="#Expression-432"><span class="linenos">432</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-433"><a href="#Expression-433"><span class="linenos">433</span></a><span class="sd"> Returns SQL string representation of this tree.</span> -</span><span id="Expression-434"><a href="#Expression-434"><span class="linenos">434</span></a> -</span><span id="Expression-435"><a href="#Expression-435"><span class="linenos">435</span></a><span class="sd"> Args:</span> -</span><span id="Expression-436"><a href="#Expression-436"><span class="linenos">436</span></a><span class="sd"> dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="Expression-437"><a href="#Expression-437"><span class="linenos">437</span></a><span class="sd"> opts: other `sqlglot.generator.Generator` options.</span> +</span><span id="Expression-417"><a href="#Expression-417"><span class="linenos">417</span></a><span class="sd"> Returns the inner expression if this is an Alias.</span> +</span><span id="Expression-418"><a href="#Expression-418"><span class="linenos">418</span></a><span class="sd"> """</span> +</span><span id="Expression-419"><a href="#Expression-419"><span class="linenos">419</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Alias</span><span class="p">):</span> +</span><span id="Expression-420"><a href="#Expression-420"><span class="linenos">420</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> +</span><span id="Expression-421"><a href="#Expression-421"><span class="linenos">421</span></a> <span class="k">return</span> <span class="bp">self</span> +</span><span id="Expression-422"><a href="#Expression-422"><span class="linenos">422</span></a> +</span><span id="Expression-423"><a href="#Expression-423"><span class="linenos">423</span></a> <span class="k">def</span> <span class="nf">unnest_operands</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-424"><a href="#Expression-424"><span class="linenos">424</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-425"><a href="#Expression-425"><span class="linenos">425</span></a><span class="sd"> Returns unnested operands as a tuple.</span> +</span><span id="Expression-426"><a href="#Expression-426"><span class="linenos">426</span></a><span class="sd"> """</span> +</span><span id="Expression-427"><a href="#Expression-427"><span class="linenos">427</span></a> <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">arg</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="n">arg</span><span class="p">)</span> +</span><span id="Expression-428"><a href="#Expression-428"><span class="linenos">428</span></a> +</span><span id="Expression-429"><a href="#Expression-429"><span class="linenos">429</span></a> <span class="k">def</span> <span class="nf">flatten</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Expression-430"><a href="#Expression-430"><span class="linenos">430</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-431"><a href="#Expression-431"><span class="linenos">431</span></a><span class="sd"> Returns a generator which yields child nodes who's parents are the same class.</span> +</span><span id="Expression-432"><a href="#Expression-432"><span class="linenos">432</span></a> +</span><span id="Expression-433"><a href="#Expression-433"><span class="linenos">433</span></a><span class="sd"> A AND B AND C -> [A, B, C]</span> +</span><span id="Expression-434"><a href="#Expression-434"><span class="linenos">434</span></a><span class="sd"> """</span> +</span><span id="Expression-435"><a href="#Expression-435"><span class="linenos">435</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="n">p</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)):</span> +</span><span id="Expression-436"><a href="#Expression-436"><span class="linenos">436</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">):</span> +</span><span id="Expression-437"><a href="#Expression-437"><span class="linenos">437</span></a> <span class="k">yield</span> <span class="n">node</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="n">unnest</span> <span class="k">else</span> <span class="n">node</span> </span><span id="Expression-438"><a href="#Expression-438"><span class="linenos">438</span></a> -</span><span id="Expression-439"><a href="#Expression-439"><span class="linenos">439</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-440"><a href="#Expression-440"><span class="linenos">440</span></a><span class="sd"> The SQL string.</span> -</span><span id="Expression-441"><a href="#Expression-441"><span class="linenos">441</span></a><span class="sd"> """</span> -</span><span id="Expression-442"><a href="#Expression-442"><span class="linenos">442</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="Expression-443"><a href="#Expression-443"><span class="linenos">443</span></a> -</span><span id="Expression-444"><a href="#Expression-444"><span class="linenos">444</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Expression-445"><a href="#Expression-445"><span class="linenos">445</span></a> -</span><span id="Expression-446"><a href="#Expression-446"><span class="linenos">446</span></a> <span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hide_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Expression-447"><a href="#Expression-447"><span class="linenos">447</span></a> <span class="n">indent</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">level</span> <span class="k">else</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> -</span><span id="Expression-448"><a href="#Expression-448"><span class="linenos">448</span></a> <span class="n">indent</span> <span class="o">+=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s2">" "</span><span class="p">]</span> <span class="o">*</span> <span class="n">level</span><span class="p">)</span> -</span><span id="Expression-449"><a href="#Expression-449"><span class="linenos">449</span></a> <span class="n">left</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> -</span><span id="Expression-450"><a href="#Expression-450"><span class="linenos">450</span></a> -</span><span id="Expression-451"><a href="#Expression-451"><span class="linenos">451</span></a> <span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Expression-452"><a href="#Expression-452"><span class="linenos">452</span></a> <span class="n">k</span><span class="p">:</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Expression-453"><a href="#Expression-453"><span class="linenos">453</span></a> <span class="n">v</span><span class="o">.</span><span class="n">_to_s</span><span class="p">(</span><span class="n">hide_missing</span><span class="o">=</span><span class="n">hide_missing</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="n">level</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Expression-454"><a href="#Expression-454"><span class="linenos">454</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="s2">"_to_s"</span><span class="p">)</span> -</span><span id="Expression-455"><a href="#Expression-455"><span class="linenos">455</span></a> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> -</span><span id="Expression-456"><a href="#Expression-456"><span class="linenos">456</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">vs</span><span class="p">)</span> -</span><span id="Expression-457"><a href="#Expression-457"><span class="linenos">457</span></a> <span class="k">if</span> <span class="n">v</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> -</span><span id="Expression-458"><a href="#Expression-458"><span class="linenos">458</span></a> <span class="p">)</span> -</span><span id="Expression-459"><a href="#Expression-459"><span class="linenos">459</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">vs</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="Expression-460"><a href="#Expression-460"><span class="linenos">460</span></a> <span class="p">}</span> -</span><span id="Expression-461"><a href="#Expression-461"><span class="linenos">461</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"comments"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> -</span><span id="Expression-462"><a href="#Expression-462"><span class="linenos">462</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> -</span><span id="Expression-463"><a href="#Expression-463"><span class="linenos">463</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">hide_missing</span><span class="p">}</span> +</span><span id="Expression-439"><a href="#Expression-439"><span class="linenos">439</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-440"><a href="#Expression-440"><span class="linenos">440</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="Expression-441"><a href="#Expression-441"><span class="linenos">441</span></a> +</span><span id="Expression-442"><a href="#Expression-442"><span class="linenos">442</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-443"><a href="#Expression-443"><span class="linenos">443</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_to_s</span><span class="p">()</span> +</span><span id="Expression-444"><a href="#Expression-444"><span class="linenos">444</span></a> +</span><span id="Expression-445"><a href="#Expression-445"><span class="linenos">445</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Expression-446"><a href="#Expression-446"><span class="linenos">446</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-447"><a href="#Expression-447"><span class="linenos">447</span></a><span class="sd"> Returns SQL string representation of this tree.</span> +</span><span id="Expression-448"><a href="#Expression-448"><span class="linenos">448</span></a> +</span><span id="Expression-449"><a href="#Expression-449"><span class="linenos">449</span></a><span class="sd"> Args:</span> +</span><span id="Expression-450"><a href="#Expression-450"><span class="linenos">450</span></a><span class="sd"> dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="Expression-451"><a href="#Expression-451"><span class="linenos">451</span></a><span class="sd"> opts: other `sqlglot.generator.Generator` options.</span> +</span><span id="Expression-452"><a href="#Expression-452"><span class="linenos">452</span></a> +</span><span id="Expression-453"><a href="#Expression-453"><span class="linenos">453</span></a><span class="sd"> Returns:</span> +</span><span id="Expression-454"><a href="#Expression-454"><span class="linenos">454</span></a><span class="sd"> The SQL string.</span> +</span><span id="Expression-455"><a href="#Expression-455"><span class="linenos">455</span></a><span class="sd"> """</span> +</span><span id="Expression-456"><a href="#Expression-456"><span class="linenos">456</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> +</span><span id="Expression-457"><a href="#Expression-457"><span class="linenos">457</span></a> +</span><span id="Expression-458"><a href="#Expression-458"><span class="linenos">458</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Expression-459"><a href="#Expression-459"><span class="linenos">459</span></a> +</span><span id="Expression-460"><a href="#Expression-460"><span class="linenos">460</span></a> <span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hide_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Expression-461"><a href="#Expression-461"><span class="linenos">461</span></a> <span class="n">indent</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">level</span> <span class="k">else</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> +</span><span id="Expression-462"><a href="#Expression-462"><span class="linenos">462</span></a> <span class="n">indent</span> <span class="o">+=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s2">" "</span><span class="p">]</span> <span class="o">*</span> <span class="n">level</span><span class="p">)</span> +</span><span id="Expression-463"><a href="#Expression-463"><span class="linenos">463</span></a> <span class="n">left</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> </span><span id="Expression-464"><a href="#Expression-464"><span class="linenos">464</span></a> -</span><span id="Expression-465"><a href="#Expression-465"><span class="linenos">465</span></a> <span class="n">right</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">v</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> -</span><span id="Expression-466"><a href="#Expression-466"><span class="linenos">466</span></a> <span class="n">right</span> <span class="o">+=</span> <span class="s2">")"</span> -</span><span id="Expression-467"><a href="#Expression-467"><span class="linenos">467</span></a> -</span><span id="Expression-468"><a href="#Expression-468"><span class="linenos">468</span></a> <span class="k">return</span> <span class="n">indent</span> <span class="o">+</span> <span class="n">left</span> <span class="o">+</span> <span class="n">right</span> -</span><span id="Expression-469"><a href="#Expression-469"><span class="linenos">469</span></a> -</span><span id="Expression-470"><a href="#Expression-470"><span class="linenos">470</span></a> <span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> -</span><span id="Expression-471"><a href="#Expression-471"><span class="linenos">471</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-472"><a href="#Expression-472"><span class="linenos">472</span></a><span class="sd"> Recursively visits all tree nodes (excluding already transformed ones)</span> -</span><span id="Expression-473"><a href="#Expression-473"><span class="linenos">473</span></a><span class="sd"> and applies the given transformation function to each node.</span> -</span><span id="Expression-474"><a href="#Expression-474"><span class="linenos">474</span></a> -</span><span id="Expression-475"><a href="#Expression-475"><span class="linenos">475</span></a><span class="sd"> Args:</span> -</span><span id="Expression-476"><a href="#Expression-476"><span class="linenos">476</span></a><span class="sd"> fun (function): a function which takes a node as an argument and returns a</span> -</span><span id="Expression-477"><a href="#Expression-477"><span class="linenos">477</span></a><span class="sd"> new transformed node or the same node without modifications. If the function</span> -</span><span id="Expression-478"><a href="#Expression-478"><span class="linenos">478</span></a><span class="sd"> returns None, then the corresponding node will be removed from the syntax tree.</span> -</span><span id="Expression-479"><a href="#Expression-479"><span class="linenos">479</span></a><span class="sd"> copy (bool): if set to True a new tree instance is constructed, otherwise the tree is</span> -</span><span id="Expression-480"><a href="#Expression-480"><span class="linenos">480</span></a><span class="sd"> modified in place.</span> +</span><span id="Expression-465"><a href="#Expression-465"><span class="linenos">465</span></a> <span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Expression-466"><a href="#Expression-466"><span class="linenos">466</span></a> <span class="n">k</span><span class="p">:</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Expression-467"><a href="#Expression-467"><span class="linenos">467</span></a> <span class="n">v</span><span class="o">.</span><span class="n">_to_s</span><span class="p">(</span><span class="n">hide_missing</span><span class="o">=</span><span class="n">hide_missing</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="n">level</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Expression-468"><a href="#Expression-468"><span class="linenos">468</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="s2">"_to_s"</span><span class="p">)</span> +</span><span id="Expression-469"><a href="#Expression-469"><span class="linenos">469</span></a> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> +</span><span id="Expression-470"><a href="#Expression-470"><span class="linenos">470</span></a> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">vs</span><span class="p">)</span> +</span><span id="Expression-471"><a href="#Expression-471"><span class="linenos">471</span></a> <span class="k">if</span> <span class="n">v</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> +</span><span id="Expression-472"><a href="#Expression-472"><span class="linenos">472</span></a> <span class="p">)</span> +</span><span id="Expression-473"><a href="#Expression-473"><span class="linenos">473</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">vs</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="Expression-474"><a href="#Expression-474"><span class="linenos">474</span></a> <span class="p">}</span> +</span><span id="Expression-475"><a href="#Expression-475"><span class="linenos">475</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"comments"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> +</span><span id="Expression-476"><a href="#Expression-476"><span class="linenos">476</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> +</span><span id="Expression-477"><a href="#Expression-477"><span class="linenos">477</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">v</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">hide_missing</span><span class="p">}</span> +</span><span id="Expression-478"><a href="#Expression-478"><span class="linenos">478</span></a> +</span><span id="Expression-479"><a href="#Expression-479"><span class="linenos">479</span></a> <span class="n">right</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">v</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> +</span><span id="Expression-480"><a href="#Expression-480"><span class="linenos">480</span></a> <span class="n">right</span> <span class="o">+=</span> <span class="s2">")"</span> </span><span id="Expression-481"><a href="#Expression-481"><span class="linenos">481</span></a> -</span><span id="Expression-482"><a href="#Expression-482"><span class="linenos">482</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-483"><a href="#Expression-483"><span class="linenos">483</span></a><span class="sd"> The transformed tree.</span> -</span><span id="Expression-484"><a href="#Expression-484"><span class="linenos">484</span></a><span class="sd"> """</span> -</span><span id="Expression-485"><a href="#Expression-485"><span class="linenos">485</span></a> <span class="n">node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> -</span><span id="Expression-486"><a href="#Expression-486"><span class="linenos">486</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="Expression-487"><a href="#Expression-487"><span class="linenos">487</span></a> -</span><span id="Expression-488"><a href="#Expression-488"><span class="linenos">488</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression-489"><a href="#Expression-489"><span class="linenos">489</span></a> <span class="k">return</span> <span class="n">new_node</span> -</span><span id="Expression-490"><a href="#Expression-490"><span class="linenos">490</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> -</span><span id="Expression-491"><a href="#Expression-491"><span class="linenos">491</span></a> <span class="n">new_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression-492"><a href="#Expression-492"><span class="linenos">492</span></a> <span class="k">return</span> <span class="n">new_node</span> -</span><span id="Expression-493"><a href="#Expression-493"><span class="linenos">493</span></a> -</span><span id="Expression-494"><a href="#Expression-494"><span class="linenos">494</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">child</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> -</span><span id="Expression-495"><a href="#Expression-495"><span class="linenos">495</span></a> <span class="k">return</span> <span class="n">new_node</span> -</span><span id="Expression-496"><a href="#Expression-496"><span class="linenos">496</span></a> -</span><span id="Expression-497"><a href="#Expression-497"><span class="linenos">497</span></a> <span class="k">def</span> <span class="nf">replace</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="Expression-498"><a href="#Expression-498"><span class="linenos">498</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-499"><a href="#Expression-499"><span class="linenos">499</span></a><span class="sd"> Swap out this expression with a new expression.</span> -</span><span id="Expression-500"><a href="#Expression-500"><span class="linenos">500</span></a> -</span><span id="Expression-501"><a href="#Expression-501"><span class="linenos">501</span></a><span class="sd"> For example::</span> -</span><span id="Expression-502"><a href="#Expression-502"><span class="linenos">502</span></a> -</span><span id="Expression-503"><a href="#Expression-503"><span class="linenos">503</span></a><span class="sd"> >>> tree = Select().select("x").from_("tbl")</span> -</span><span id="Expression-504"><a href="#Expression-504"><span class="linenos">504</span></a><span class="sd"> >>> tree.find(Column).replace(Column(this="y"))</span> -</span><span id="Expression-505"><a href="#Expression-505"><span class="linenos">505</span></a><span class="sd"> (COLUMN this: y)</span> -</span><span id="Expression-506"><a href="#Expression-506"><span class="linenos">506</span></a><span class="sd"> >>> tree.sql()</span> -</span><span id="Expression-507"><a href="#Expression-507"><span class="linenos">507</span></a><span class="sd"> 'SELECT y FROM tbl'</span> -</span><span id="Expression-508"><a href="#Expression-508"><span class="linenos">508</span></a> -</span><span id="Expression-509"><a href="#Expression-509"><span class="linenos">509</span></a><span class="sd"> Args:</span> -</span><span id="Expression-510"><a href="#Expression-510"><span class="linenos">510</span></a><span class="sd"> expression (Expression|None): new node</span> -</span><span id="Expression-511"><a href="#Expression-511"><span class="linenos">511</span></a> -</span><span id="Expression-512"><a href="#Expression-512"><span class="linenos">512</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-513"><a href="#Expression-513"><span class="linenos">513</span></a><span class="sd"> The new expression or expressions.</span> -</span><span id="Expression-514"><a href="#Expression-514"><span class="linenos">514</span></a><span class="sd"> """</span> -</span><span id="Expression-515"><a href="#Expression-515"><span class="linenos">515</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> -</span><span id="Expression-516"><a href="#Expression-516"><span class="linenos">516</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Expression-517"><a href="#Expression-517"><span class="linenos">517</span></a> -</span><span id="Expression-518"><a href="#Expression-518"><span class="linenos">518</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression-519"><a href="#Expression-519"><span class="linenos">519</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Expression-520"><a href="#Expression-520"><span class="linenos">520</span></a> -</span><span id="Expression-521"><a href="#Expression-521"><span class="linenos">521</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">expression</span> <span class="k">if</span> <span class="n">child</span> <span class="ow">is</span> <span class="bp">self</span> <span class="k">else</span> <span class="n">child</span><span class="p">)</span> -</span><span id="Expression-522"><a href="#Expression-522"><span class="linenos">522</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Expression-523"><a href="#Expression-523"><span class="linenos">523</span></a> -</span><span id="Expression-524"><a href="#Expression-524"><span class="linenos">524</span></a> <span class="k">def</span> <span class="nf">pop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-525"><a href="#Expression-525"><span class="linenos">525</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-526"><a href="#Expression-526"><span class="linenos">526</span></a><span class="sd"> Remove this expression from its AST.</span> -</span><span id="Expression-527"><a href="#Expression-527"><span class="linenos">527</span></a><span class="sd"> """</span> -</span><span id="Expression-528"><a href="#Expression-528"><span class="linenos">528</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> -</span><span id="Expression-529"><a href="#Expression-529"><span class="linenos">529</span></a> -</span><span id="Expression-530"><a href="#Expression-530"><span class="linenos">530</span></a> <span class="k">def</span> <span class="nf">assert_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">):</span> -</span><span id="Expression-531"><a href="#Expression-531"><span class="linenos">531</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-532"><a href="#Expression-532"><span class="linenos">532</span></a><span class="sd"> Assert that this `Expression` is an instance of `type_`.</span> -</span><span id="Expression-533"><a href="#Expression-533"><span class="linenos">533</span></a> -</span><span id="Expression-534"><a href="#Expression-534"><span class="linenos">534</span></a><span class="sd"> If it is NOT an instance of `type_`, this raises an assertion error.</span> -</span><span id="Expression-535"><a href="#Expression-535"><span class="linenos">535</span></a><span class="sd"> Otherwise, this returns this expression.</span> -</span><span id="Expression-536"><a href="#Expression-536"><span class="linenos">536</span></a> -</span><span id="Expression-537"><a href="#Expression-537"><span class="linenos">537</span></a><span class="sd"> Examples:</span> -</span><span id="Expression-538"><a href="#Expression-538"><span class="linenos">538</span></a><span class="sd"> This is useful for type security in chained expressions:</span> -</span><span id="Expression-539"><a href="#Expression-539"><span class="linenos">539</span></a> -</span><span id="Expression-540"><a href="#Expression-540"><span class="linenos">540</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Expression-541"><a href="#Expression-541"><span class="linenos">541</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()</span> -</span><span id="Expression-542"><a href="#Expression-542"><span class="linenos">542</span></a><span class="sd"> 'SELECT x, z FROM y'</span> -</span><span id="Expression-543"><a href="#Expression-543"><span class="linenos">543</span></a><span class="sd"> """</span> -</span><span id="Expression-544"><a href="#Expression-544"><span class="linenos">544</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">)</span> -</span><span id="Expression-545"><a href="#Expression-545"><span class="linenos">545</span></a> <span class="k">return</span> <span class="bp">self</span> -</span><span id="Expression-546"><a href="#Expression-546"><span class="linenos">546</span></a> -</span><span id="Expression-547"><a href="#Expression-547"><span class="linenos">547</span></a> <span class="k">def</span> <span class="nf">error_messages</span><span class="p">(</span><span class="bp">self</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">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></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="Expression-548"><a href="#Expression-548"><span class="linenos">548</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-549"><a href="#Expression-549"><span class="linenos">549</span></a><span class="sd"> Checks if this expression is valid (e.g. all mandatory args are set).</span> +</span><span id="Expression-482"><a href="#Expression-482"><span class="linenos">482</span></a> <span class="k">return</span> <span class="n">indent</span> <span class="o">+</span> <span class="n">left</span> <span class="o">+</span> <span class="n">right</span> +</span><span id="Expression-483"><a href="#Expression-483"><span class="linenos">483</span></a> +</span><span id="Expression-484"><a href="#Expression-484"><span class="linenos">484</span></a> <span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +</span><span id="Expression-485"><a href="#Expression-485"><span class="linenos">485</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-486"><a href="#Expression-486"><span class="linenos">486</span></a><span class="sd"> Recursively visits all tree nodes (excluding already transformed ones)</span> +</span><span id="Expression-487"><a href="#Expression-487"><span class="linenos">487</span></a><span class="sd"> and applies the given transformation function to each node.</span> +</span><span id="Expression-488"><a href="#Expression-488"><span class="linenos">488</span></a> +</span><span id="Expression-489"><a href="#Expression-489"><span class="linenos">489</span></a><span class="sd"> Args:</span> +</span><span id="Expression-490"><a href="#Expression-490"><span class="linenos">490</span></a><span class="sd"> fun (function): a function which takes a node as an argument and returns a</span> +</span><span id="Expression-491"><a href="#Expression-491"><span class="linenos">491</span></a><span class="sd"> new transformed node or the same node without modifications. If the function</span> +</span><span id="Expression-492"><a href="#Expression-492"><span class="linenos">492</span></a><span class="sd"> returns None, then the corresponding node will be removed from the syntax tree.</span> +</span><span id="Expression-493"><a href="#Expression-493"><span class="linenos">493</span></a><span class="sd"> copy (bool): if set to True a new tree instance is constructed, otherwise the tree is</span> +</span><span id="Expression-494"><a href="#Expression-494"><span class="linenos">494</span></a><span class="sd"> modified in place.</span> +</span><span id="Expression-495"><a href="#Expression-495"><span class="linenos">495</span></a> +</span><span id="Expression-496"><a href="#Expression-496"><span class="linenos">496</span></a><span class="sd"> Returns:</span> +</span><span id="Expression-497"><a href="#Expression-497"><span class="linenos">497</span></a><span class="sd"> The transformed tree.</span> +</span><span id="Expression-498"><a href="#Expression-498"><span class="linenos">498</span></a><span class="sd"> """</span> +</span><span id="Expression-499"><a href="#Expression-499"><span class="linenos">499</span></a> <span class="n">node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> +</span><span id="Expression-500"><a href="#Expression-500"><span class="linenos">500</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Expression-501"><a href="#Expression-501"><span class="linenos">501</span></a> +</span><span id="Expression-502"><a href="#Expression-502"><span class="linenos">502</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression-503"><a href="#Expression-503"><span class="linenos">503</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="Expression-504"><a href="#Expression-504"><span class="linenos">504</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> +</span><span id="Expression-505"><a href="#Expression-505"><span class="linenos">505</span></a> <span class="n">new_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression-506"><a href="#Expression-506"><span class="linenos">506</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="Expression-507"><a href="#Expression-507"><span class="linenos">507</span></a> +</span><span id="Expression-508"><a href="#Expression-508"><span class="linenos">508</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">child</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> +</span><span id="Expression-509"><a href="#Expression-509"><span class="linenos">509</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="Expression-510"><a href="#Expression-510"><span class="linenos">510</span></a> +</span><span id="Expression-511"><a href="#Expression-511"><span class="linenos">511</span></a> <span class="k">def</span> <span class="nf">replace</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="Expression-512"><a href="#Expression-512"><span class="linenos">512</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-513"><a href="#Expression-513"><span class="linenos">513</span></a><span class="sd"> Swap out this expression with a new expression.</span> +</span><span id="Expression-514"><a href="#Expression-514"><span class="linenos">514</span></a> +</span><span id="Expression-515"><a href="#Expression-515"><span class="linenos">515</span></a><span class="sd"> For example::</span> +</span><span id="Expression-516"><a href="#Expression-516"><span class="linenos">516</span></a> +</span><span id="Expression-517"><a href="#Expression-517"><span class="linenos">517</span></a><span class="sd"> >>> tree = Select().select("x").from_("tbl")</span> +</span><span id="Expression-518"><a href="#Expression-518"><span class="linenos">518</span></a><span class="sd"> >>> tree.find(Column).replace(Column(this="y"))</span> +</span><span id="Expression-519"><a href="#Expression-519"><span class="linenos">519</span></a><span class="sd"> (COLUMN this: y)</span> +</span><span id="Expression-520"><a href="#Expression-520"><span class="linenos">520</span></a><span class="sd"> >>> tree.sql()</span> +</span><span id="Expression-521"><a href="#Expression-521"><span class="linenos">521</span></a><span class="sd"> 'SELECT y FROM tbl'</span> +</span><span id="Expression-522"><a href="#Expression-522"><span class="linenos">522</span></a> +</span><span id="Expression-523"><a href="#Expression-523"><span class="linenos">523</span></a><span class="sd"> Args:</span> +</span><span id="Expression-524"><a href="#Expression-524"><span class="linenos">524</span></a><span class="sd"> expression (Expression|None): new node</span> +</span><span id="Expression-525"><a href="#Expression-525"><span class="linenos">525</span></a> +</span><span id="Expression-526"><a href="#Expression-526"><span class="linenos">526</span></a><span class="sd"> Returns:</span> +</span><span id="Expression-527"><a href="#Expression-527"><span class="linenos">527</span></a><span class="sd"> The new expression or expressions.</span> +</span><span id="Expression-528"><a href="#Expression-528"><span class="linenos">528</span></a><span class="sd"> """</span> +</span><span id="Expression-529"><a href="#Expression-529"><span class="linenos">529</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> +</span><span id="Expression-530"><a href="#Expression-530"><span class="linenos">530</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Expression-531"><a href="#Expression-531"><span class="linenos">531</span></a> +</span><span id="Expression-532"><a href="#Expression-532"><span class="linenos">532</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression-533"><a href="#Expression-533"><span class="linenos">533</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Expression-534"><a href="#Expression-534"><span class="linenos">534</span></a> +</span><span id="Expression-535"><a href="#Expression-535"><span class="linenos">535</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">expression</span> <span class="k">if</span> <span class="n">child</span> <span class="ow">is</span> <span class="bp">self</span> <span class="k">else</span> <span class="n">child</span><span class="p">)</span> +</span><span id="Expression-536"><a href="#Expression-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Expression-537"><a href="#Expression-537"><span class="linenos">537</span></a> +</span><span id="Expression-538"><a href="#Expression-538"><span class="linenos">538</span></a> <span class="k">def</span> <span class="nf">pop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-539"><a href="#Expression-539"><span class="linenos">539</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-540"><a href="#Expression-540"><span class="linenos">540</span></a><span class="sd"> Remove this expression from its AST.</span> +</span><span id="Expression-541"><a href="#Expression-541"><span class="linenos">541</span></a><span class="sd"> """</span> +</span><span id="Expression-542"><a href="#Expression-542"><span class="linenos">542</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> +</span><span id="Expression-543"><a href="#Expression-543"><span class="linenos">543</span></a> +</span><span id="Expression-544"><a href="#Expression-544"><span class="linenos">544</span></a> <span class="k">def</span> <span class="nf">assert_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">):</span> +</span><span id="Expression-545"><a href="#Expression-545"><span class="linenos">545</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-546"><a href="#Expression-546"><span class="linenos">546</span></a><span class="sd"> Assert that this `Expression` is an instance of `type_`.</span> +</span><span id="Expression-547"><a href="#Expression-547"><span class="linenos">547</span></a> +</span><span id="Expression-548"><a href="#Expression-548"><span class="linenos">548</span></a><span class="sd"> If it is NOT an instance of `type_`, this raises an assertion error.</span> +</span><span id="Expression-549"><a href="#Expression-549"><span class="linenos">549</span></a><span class="sd"> Otherwise, this returns this expression.</span> </span><span id="Expression-550"><a href="#Expression-550"><span class="linenos">550</span></a> -</span><span id="Expression-551"><a href="#Expression-551"><span class="linenos">551</span></a><span class="sd"> Args:</span> -</span><span id="Expression-552"><a href="#Expression-552"><span class="linenos">552</span></a><span class="sd"> args: a sequence of values that were used to instantiate a Func expression. This is used</span> -</span><span id="Expression-553"><a href="#Expression-553"><span class="linenos">553</span></a><span class="sd"> to check that the provided arguments don't exceed the function argument limit.</span> -</span><span id="Expression-554"><a href="#Expression-554"><span class="linenos">554</span></a> -</span><span id="Expression-555"><a href="#Expression-555"><span class="linenos">555</span></a><span class="sd"> Returns:</span> -</span><span id="Expression-556"><a href="#Expression-556"><span class="linenos">556</span></a><span class="sd"> A list of error messages for all possible errors that were found.</span> +</span><span id="Expression-551"><a href="#Expression-551"><span class="linenos">551</span></a><span class="sd"> Examples:</span> +</span><span id="Expression-552"><a href="#Expression-552"><span class="linenos">552</span></a><span class="sd"> This is useful for type security in chained expressions:</span> +</span><span id="Expression-553"><a href="#Expression-553"><span class="linenos">553</span></a> +</span><span id="Expression-554"><a href="#Expression-554"><span class="linenos">554</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Expression-555"><a href="#Expression-555"><span class="linenos">555</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()</span> +</span><span id="Expression-556"><a href="#Expression-556"><span class="linenos">556</span></a><span class="sd"> 'SELECT x, z FROM y'</span> </span><span id="Expression-557"><a href="#Expression-557"><span class="linenos">557</span></a><span class="sd"> """</span> -</span><span id="Expression-558"><a href="#Expression-558"><span class="linenos">558</span></a> <span class="n">errors</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="Expression-559"><a href="#Expression-559"><span class="linenos">559</span></a> -</span><span id="Expression-560"><a href="#Expression-560"><span class="linenos">560</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> -</span><span id="Expression-561"><a href="#Expression-561"><span class="linenos">561</span></a> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> -</span><span id="Expression-562"><a href="#Expression-562"><span class="linenos">562</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unexpected keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Expression-563"><a href="#Expression-563"><span class="linenos">563</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">mandatory</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Expression-564"><a href="#Expression-564"><span class="linenos">564</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</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="n">k</span><span class="p">)</span> -</span><span id="Expression-565"><a href="#Expression-565"><span class="linenos">565</span></a> <span class="k">if</span> <span class="n">mandatory</span> <span class="ow">and</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">v</span><span class="p">)):</span> -</span><span id="Expression-566"><a href="#Expression-566"><span class="linenos">566</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Required keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' missing for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Expression-567"><a href="#Expression-567"><span class="linenos">567</span></a> -</span><span id="Expression-568"><a href="#Expression-568"><span class="linenos">568</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Expression-569"><a href="#Expression-569"><span class="linenos">569</span></a> <span class="n">args</span> -</span><span id="Expression-570"><a href="#Expression-570"><span class="linenos">570</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Func</span><span class="p">)</span> -</span><span id="Expression-571"><a href="#Expression-571"><span class="linenos">571</span></a> <span class="ow">and</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="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> -</span><span id="Expression-572"><a href="#Expression-572"><span class="linenos">572</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_var_len_args</span> -</span><span id="Expression-573"><a href="#Expression-573"><span class="linenos">573</span></a> <span class="p">):</span> -</span><span id="Expression-574"><a href="#Expression-574"><span class="linenos">574</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Expression-575"><a href="#Expression-575"><span class="linenos">575</span></a> <span class="sa">f</span><span class="s2">"The number of provided arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">) is greater than "</span> -</span><span id="Expression-576"><a href="#Expression-576"><span class="linenos">576</span></a> <span class="sa">f</span><span class="s2">"the maximum number of supported arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Expression-577"><a href="#Expression-577"><span class="linenos">577</span></a> <span class="p">)</span> -</span><span id="Expression-578"><a href="#Expression-578"><span class="linenos">578</span></a> -</span><span id="Expression-579"><a href="#Expression-579"><span class="linenos">579</span></a> <span class="k">return</span> <span class="n">errors</span> -</span><span id="Expression-580"><a href="#Expression-580"><span class="linenos">580</span></a> -</span><span id="Expression-581"><a href="#Expression-581"><span class="linenos">581</span></a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression-582"><a href="#Expression-582"><span class="linenos">582</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-583"><a href="#Expression-583"><span class="linenos">583</span></a><span class="sd"> Dump this Expression to a JSON-serializable dict.</span> -</span><span id="Expression-584"><a href="#Expression-584"><span class="linenos">584</span></a><span class="sd"> """</span> -</span><span id="Expression-585"><a href="#Expression-585"><span class="linenos">585</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">dump</span> -</span><span id="Expression-586"><a href="#Expression-586"><span class="linenos">586</span></a> -</span><span id="Expression-587"><a href="#Expression-587"><span class="linenos">587</span></a> <span class="k">return</span> <span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Expression-588"><a href="#Expression-588"><span class="linenos">588</span></a> -</span><span id="Expression-589"><a href="#Expression-589"><span class="linenos">589</span></a> <span class="nd">@classmethod</span> -</span><span id="Expression-590"><a href="#Expression-590"><span class="linenos">590</span></a> <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> -</span><span id="Expression-591"><a href="#Expression-591"><span class="linenos">591</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression-592"><a href="#Expression-592"><span class="linenos">592</span></a><span class="sd"> Load a dict (as returned by `Expression.dump`) into an Expression instance.</span> -</span><span id="Expression-593"><a href="#Expression-593"><span class="linenos">593</span></a><span class="sd"> """</span> -</span><span id="Expression-594"><a href="#Expression-594"><span class="linenos">594</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">load</span> -</span><span id="Expression-595"><a href="#Expression-595"><span class="linenos">595</span></a> -</span><span id="Expression-596"><a href="#Expression-596"><span class="linenos">596</span></a> <span class="k">return</span> <span class="n">load</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> +</span><span id="Expression-558"><a href="#Expression-558"><span class="linenos">558</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">)</span> +</span><span id="Expression-559"><a href="#Expression-559"><span class="linenos">559</span></a> <span class="k">return</span> <span class="bp">self</span> +</span><span id="Expression-560"><a href="#Expression-560"><span class="linenos">560</span></a> +</span><span id="Expression-561"><a href="#Expression-561"><span class="linenos">561</span></a> <span class="k">def</span> <span class="nf">error_messages</span><span class="p">(</span><span class="bp">self</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">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></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="Expression-562"><a href="#Expression-562"><span class="linenos">562</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-563"><a href="#Expression-563"><span class="linenos">563</span></a><span class="sd"> Checks if this expression is valid (e.g. all mandatory args are set).</span> +</span><span id="Expression-564"><a href="#Expression-564"><span class="linenos">564</span></a> +</span><span id="Expression-565"><a href="#Expression-565"><span class="linenos">565</span></a><span class="sd"> Args:</span> +</span><span id="Expression-566"><a href="#Expression-566"><span class="linenos">566</span></a><span class="sd"> args: a sequence of values that were used to instantiate a Func expression. This is used</span> +</span><span id="Expression-567"><a href="#Expression-567"><span class="linenos">567</span></a><span class="sd"> to check that the provided arguments don't exceed the function argument limit.</span> +</span><span id="Expression-568"><a href="#Expression-568"><span class="linenos">568</span></a> +</span><span id="Expression-569"><a href="#Expression-569"><span class="linenos">569</span></a><span class="sd"> Returns:</span> +</span><span id="Expression-570"><a href="#Expression-570"><span class="linenos">570</span></a><span class="sd"> A list of error messages for all possible errors that were found.</span> +</span><span id="Expression-571"><a href="#Expression-571"><span class="linenos">571</span></a><span class="sd"> """</span> +</span><span id="Expression-572"><a href="#Expression-572"><span class="linenos">572</span></a> <span class="n">errors</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="Expression-573"><a href="#Expression-573"><span class="linenos">573</span></a> +</span><span id="Expression-574"><a href="#Expression-574"><span class="linenos">574</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> +</span><span id="Expression-575"><a href="#Expression-575"><span class="linenos">575</span></a> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> +</span><span id="Expression-576"><a href="#Expression-576"><span class="linenos">576</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unexpected keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Expression-577"><a href="#Expression-577"><span class="linenos">577</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">mandatory</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Expression-578"><a href="#Expression-578"><span class="linenos">578</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</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="n">k</span><span class="p">)</span> +</span><span id="Expression-579"><a href="#Expression-579"><span class="linenos">579</span></a> <span class="k">if</span> <span class="n">mandatory</span> <span class="ow">and</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">v</span><span class="p">)):</span> +</span><span id="Expression-580"><a href="#Expression-580"><span class="linenos">580</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Required keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' missing for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Expression-581"><a href="#Expression-581"><span class="linenos">581</span></a> +</span><span id="Expression-582"><a href="#Expression-582"><span class="linenos">582</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Expression-583"><a href="#Expression-583"><span class="linenos">583</span></a> <span class="n">args</span> +</span><span id="Expression-584"><a href="#Expression-584"><span class="linenos">584</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Func</span><span class="p">)</span> +</span><span id="Expression-585"><a href="#Expression-585"><span class="linenos">585</span></a> <span class="ow">and</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="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> +</span><span id="Expression-586"><a href="#Expression-586"><span class="linenos">586</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_var_len_args</span> +</span><span id="Expression-587"><a href="#Expression-587"><span class="linenos">587</span></a> <span class="p">):</span> +</span><span id="Expression-588"><a href="#Expression-588"><span class="linenos">588</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Expression-589"><a href="#Expression-589"><span class="linenos">589</span></a> <span class="sa">f</span><span class="s2">"The number of provided arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">) is greater than "</span> +</span><span id="Expression-590"><a href="#Expression-590"><span class="linenos">590</span></a> <span class="sa">f</span><span class="s2">"the maximum number of supported arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Expression-591"><a href="#Expression-591"><span class="linenos">591</span></a> <span class="p">)</span> +</span><span id="Expression-592"><a href="#Expression-592"><span class="linenos">592</span></a> +</span><span id="Expression-593"><a href="#Expression-593"><span class="linenos">593</span></a> <span class="k">return</span> <span class="n">errors</span> +</span><span id="Expression-594"><a href="#Expression-594"><span class="linenos">594</span></a> +</span><span id="Expression-595"><a href="#Expression-595"><span class="linenos">595</span></a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression-596"><a href="#Expression-596"><span class="linenos">596</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-597"><a href="#Expression-597"><span class="linenos">597</span></a><span class="sd"> Dump this Expression to a JSON-serializable dict.</span> +</span><span id="Expression-598"><a href="#Expression-598"><span class="linenos">598</span></a><span class="sd"> """</span> +</span><span id="Expression-599"><a href="#Expression-599"><span class="linenos">599</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">dump</span> +</span><span id="Expression-600"><a href="#Expression-600"><span class="linenos">600</span></a> +</span><span id="Expression-601"><a href="#Expression-601"><span class="linenos">601</span></a> <span class="k">return</span> <span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Expression-602"><a href="#Expression-602"><span class="linenos">602</span></a> +</span><span id="Expression-603"><a href="#Expression-603"><span class="linenos">603</span></a> <span class="nd">@classmethod</span> +</span><span id="Expression-604"><a href="#Expression-604"><span class="linenos">604</span></a> <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> +</span><span id="Expression-605"><a href="#Expression-605"><span class="linenos">605</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression-606"><a href="#Expression-606"><span class="linenos">606</span></a><span class="sd"> Load a dict (as returned by `Expression.dump`) into an Expression instance.</span> +</span><span id="Expression-607"><a href="#Expression-607"><span class="linenos">607</span></a><span class="sd"> """</span> +</span><span id="Expression-608"><a href="#Expression-608"><span class="linenos">608</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">load</span> +</span><span id="Expression-609"><a href="#Expression-609"><span class="linenos">609</span></a> +</span><span id="Expression-610"><a href="#Expression-610"><span class="linenos">610</span></a> <span class="k">return</span> <span class="n">load</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> </span></pre></div> @@ -8191,9 +8338,10 @@ optimizer, in order to enable some transformations that require type information </span><span id="Expression.__init__-91"><a href="#Expression.__init__-91"><span class="linenos">91</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Expression.__init__-92"><a href="#Expression.__init__-92"><span class="linenos">92</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Expression.__init__-93"><a href="#Expression.__init__-93"><span class="linenos">93</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type</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">DataType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Expression.__init__-94"><a href="#Expression.__init__-94"><span class="linenos">94</span></a> -</span><span id="Expression.__init__-95"><a href="#Expression.__init__-95"><span class="linenos">95</span></a> <span class="k">for</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Expression.__init__-96"><a href="#Expression.__init__-96"><span class="linenos">96</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> +</span><span id="Expression.__init__-94"><a href="#Expression.__init__-94"><span class="linenos">94</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_meta</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Expression.__init__-95"><a href="#Expression.__init__-95"><span class="linenos">95</span></a> +</span><span id="Expression.__init__-96"><a href="#Expression.__init__-96"><span class="linenos">96</span></a> <span class="k">for</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Expression.__init__-97"><a href="#Expression.__init__-97"><span class="linenos">97</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> </span></pre></div> @@ -8250,19 +8398,19 @@ optimizer, in order to enable some transformations that require type information </div> <a class="headerlink" href="#Expression.text"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.text-132"><a href="#Expression.text-132"><span class="linenos">132</span></a> <span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Expression.text-133"><a href="#Expression.text-133"><span class="linenos">133</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.text-134"><a href="#Expression.text-134"><span class="linenos">134</span></a><span class="sd"> Returns a textual representation of the argument corresponding to "key". This can only be used</span> -</span><span id="Expression.text-135"><a href="#Expression.text-135"><span class="linenos">135</span></a><span class="sd"> for args that are strings or leaf Expression instances, such as identifiers and literals.</span> -</span><span id="Expression.text-136"><a href="#Expression.text-136"><span class="linenos">136</span></a><span class="sd"> """</span> -</span><span id="Expression.text-137"><a href="#Expression.text-137"><span class="linenos">137</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</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="n">key</span><span class="p">)</span> -</span><span id="Expression.text-138"><a href="#Expression.text-138"><span class="linenos">138</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="Expression.text-139"><a href="#Expression.text-139"><span class="linenos">139</span></a> <span class="k">return</span> <span class="n">field</span> -</span><span id="Expression.text-140"><a href="#Expression.text-140"><span class="linenos">140</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</span><span class="p">)):</span> -</span><span id="Expression.text-141"><a href="#Expression.text-141"><span class="linenos">141</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">this</span> -</span><span id="Expression.text-142"><a href="#Expression.text-142"><span class="linenos">142</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Star</span><span class="p">,</span> <span class="n">Null</span><span class="p">)):</span> -</span><span id="Expression.text-143"><a href="#Expression.text-143"><span class="linenos">143</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">name</span> -</span><span id="Expression.text-144"><a href="#Expression.text-144"><span class="linenos">144</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.text-133"><a href="#Expression.text-133"><span class="linenos">133</span></a> <span class="k">def</span> <span class="nf">text</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Expression.text-134"><a href="#Expression.text-134"><span class="linenos">134</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.text-135"><a href="#Expression.text-135"><span class="linenos">135</span></a><span class="sd"> Returns a textual representation of the argument corresponding to "key". This can only be used</span> +</span><span id="Expression.text-136"><a href="#Expression.text-136"><span class="linenos">136</span></a><span class="sd"> for args that are strings or leaf Expression instances, such as identifiers and literals.</span> +</span><span id="Expression.text-137"><a href="#Expression.text-137"><span class="linenos">137</span></a><span class="sd"> """</span> +</span><span id="Expression.text-138"><a href="#Expression.text-138"><span class="linenos">138</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</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="n">key</span><span class="p">)</span> +</span><span id="Expression.text-139"><a href="#Expression.text-139"><span class="linenos">139</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="Expression.text-140"><a href="#Expression.text-140"><span class="linenos">140</span></a> <span class="k">return</span> <span class="n">field</span> +</span><span id="Expression.text-141"><a href="#Expression.text-141"><span class="linenos">141</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">Literal</span><span class="p">,</span> <span class="n">Var</span><span class="p">)):</span> +</span><span id="Expression.text-142"><a href="#Expression.text-142"><span class="linenos">142</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">this</span> +</span><span id="Expression.text-143"><a href="#Expression.text-143"><span class="linenos">143</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="p">(</span><span class="n">Star</span><span class="p">,</span> <span class="n">Null</span><span class="p">)):</span> +</span><span id="Expression.text-144"><a href="#Expression.text-144"><span class="linenos">144</span></a> <span class="k">return</span> <span class="n">field</span><span class="o">.</span><span class="n">name</span> +</span><span id="Expression.text-145"><a href="#Expression.text-145"><span class="linenos">145</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -8378,16 +8526,16 @@ for args that are strings or leaf Expression instances, such as identifiers and </div> <a class="headerlink" href="#Expression.copy"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.copy-229"><a href="#Expression.copy-229"><span class="linenos">229</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression.copy-230"><a href="#Expression.copy-230"><span class="linenos">230</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.copy-231"><a href="#Expression.copy-231"><span class="linenos">231</span></a><span class="sd"> Returns a deep copy of the expression.</span> -</span><span id="Expression.copy-232"><a href="#Expression.copy-232"><span class="linenos">232</span></a><span class="sd"> """</span> -</span><span id="Expression.copy-233"><a href="#Expression.copy-233"><span class="linenos">233</span></a> <span class="n">new</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Expression.copy-234"><a href="#Expression.copy-234"><span class="linenos">234</span></a> <span class="n">new</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression.copy-235"><a href="#Expression.copy-235"><span class="linenos">235</span></a> <span class="k">for</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">new</span><span class="o">.</span><span class="n">bfs</span><span class="p">():</span> -</span><span id="Expression.copy-236"><a href="#Expression.copy-236"><span class="linenos">236</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">parent</span><span class="p">:</span> -</span><span id="Expression.copy-237"><a href="#Expression.copy-237"><span class="linenos">237</span></a> <span class="n">item</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> -</span><span id="Expression.copy-238"><a href="#Expression.copy-238"><span class="linenos">238</span></a> <span class="k">return</span> <span class="n">new</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.copy-243"><a href="#Expression.copy-243"><span class="linenos">243</span></a> <span class="k">def</span> <span class="nf">copy</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression.copy-244"><a href="#Expression.copy-244"><span class="linenos">244</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.copy-245"><a href="#Expression.copy-245"><span class="linenos">245</span></a><span class="sd"> Returns a deep copy of the expression.</span> +</span><span id="Expression.copy-246"><a href="#Expression.copy-246"><span class="linenos">246</span></a><span class="sd"> """</span> +</span><span id="Expression.copy-247"><a href="#Expression.copy-247"><span class="linenos">247</span></a> <span class="n">new</span> <span class="o">=</span> <span class="n">deepcopy</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Expression.copy-248"><a href="#Expression.copy-248"><span class="linenos">248</span></a> <span class="n">new</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression.copy-249"><a href="#Expression.copy-249"><span class="linenos">249</span></a> <span class="k">for</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">new</span><span class="o">.</span><span class="n">bfs</span><span class="p">():</span> +</span><span id="Expression.copy-250"><a href="#Expression.copy-250"><span class="linenos">250</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">)</span> <span class="ow">and</span> <span class="n">parent</span><span class="p">:</span> +</span><span id="Expression.copy-251"><a href="#Expression.copy-251"><span class="linenos">251</span></a> <span class="n">item</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> +</span><span id="Expression.copy-252"><a href="#Expression.copy-252"><span class="linenos">252</span></a> <span class="k">return</span> <span class="n">new</span> </span></pre></div> @@ -8407,18 +8555,18 @@ for args that are strings or leaf Expression instances, such as identifiers and </div> <a class="headerlink" href="#Expression.append"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.append-240"><a href="#Expression.append-240"><span class="linenos">240</span></a> <span class="k">def</span> <span class="nf">append</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> -</span><span id="Expression.append-241"><a href="#Expression.append-241"><span class="linenos">241</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.append-242"><a href="#Expression.append-242"><span class="linenos">242</span></a><span class="sd"> Appends value to arg_key if it's a list or sets it as a new list.</span> -</span><span id="Expression.append-243"><a href="#Expression.append-243"><span class="linenos">243</span></a> -</span><span id="Expression.append-244"><a href="#Expression.append-244"><span class="linenos">244</span></a><span class="sd"> Args:</span> -</span><span id="Expression.append-245"><a href="#Expression.append-245"><span class="linenos">245</span></a><span class="sd"> arg_key (str): name of the list expression arg</span> -</span><span id="Expression.append-246"><a href="#Expression.append-246"><span class="linenos">246</span></a><span class="sd"> value (Any): value to append to the list</span> -</span><span id="Expression.append-247"><a href="#Expression.append-247"><span class="linenos">247</span></a><span class="sd"> """</span> -</span><span id="Expression.append-248"><a href="#Expression.append-248"><span class="linenos">248</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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="n">arg_key</span><span class="p">),</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="Expression.append-249"><a href="#Expression.append-249"><span class="linenos">249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Expression.append-250"><a href="#Expression.append-250"><span class="linenos">250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="Expression.append-251"><a href="#Expression.append-251"><span class="linenos">251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.append-254"><a href="#Expression.append-254"><span class="linenos">254</span></a> <span class="k">def</span> <span class="nf">append</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> +</span><span id="Expression.append-255"><a href="#Expression.append-255"><span class="linenos">255</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.append-256"><a href="#Expression.append-256"><span class="linenos">256</span></a><span class="sd"> Appends value to arg_key if it's a list or sets it as a new list.</span> +</span><span id="Expression.append-257"><a href="#Expression.append-257"><span class="linenos">257</span></a> +</span><span id="Expression.append-258"><a href="#Expression.append-258"><span class="linenos">258</span></a><span class="sd"> Args:</span> +</span><span id="Expression.append-259"><a href="#Expression.append-259"><span class="linenos">259</span></a><span class="sd"> arg_key (str): name of the list expression arg</span> +</span><span id="Expression.append-260"><a href="#Expression.append-260"><span class="linenos">260</span></a><span class="sd"> value (Any): value to append to the list</span> +</span><span id="Expression.append-261"><a href="#Expression.append-261"><span class="linenos">261</span></a><span class="sd"> """</span> +</span><span id="Expression.append-262"><a href="#Expression.append-262"><span class="linenos">262</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</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="n">arg_key</span><span class="p">),</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="Expression.append-263"><a href="#Expression.append-263"><span class="linenos">263</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Expression.append-264"><a href="#Expression.append-264"><span class="linenos">264</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="Expression.append-265"><a href="#Expression.append-265"><span class="linenos">265</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> </span></pre></div> @@ -8445,16 +8593,16 @@ for args that are strings or leaf Expression instances, such as identifiers and </div> <a class="headerlink" href="#Expression.set"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.set-253"><a href="#Expression.set-253"><span class="linenos">253</span></a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> -</span><span id="Expression.set-254"><a href="#Expression.set-254"><span class="linenos">254</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.set-255"><a href="#Expression.set-255"><span class="linenos">255</span></a><span class="sd"> Sets `arg_key` to `value`.</span> -</span><span id="Expression.set-256"><a href="#Expression.set-256"><span class="linenos">256</span></a> -</span><span id="Expression.set-257"><a href="#Expression.set-257"><span class="linenos">257</span></a><span class="sd"> Args:</span> -</span><span id="Expression.set-258"><a href="#Expression.set-258"><span class="linenos">258</span></a><span class="sd"> arg_key (str): name of the expression arg.</span> -</span><span id="Expression.set-259"><a href="#Expression.set-259"><span class="linenos">259</span></a><span class="sd"> value: value to set the arg to.</span> -</span><span id="Expression.set-260"><a href="#Expression.set-260"><span class="linenos">260</span></a><span class="sd"> """</span> -</span><span id="Expression.set-261"><a href="#Expression.set-261"><span class="linenos">261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> -</span><span id="Expression.set-262"><a href="#Expression.set-262"><span class="linenos">262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.set-267"><a href="#Expression.set-267"><span class="linenos">267</span></a> <span class="k">def</span> <span class="nf">set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> +</span><span id="Expression.set-268"><a href="#Expression.set-268"><span class="linenos">268</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.set-269"><a href="#Expression.set-269"><span class="linenos">269</span></a><span class="sd"> Sets `arg_key` to `value`.</span> +</span><span id="Expression.set-270"><a href="#Expression.set-270"><span class="linenos">270</span></a> +</span><span id="Expression.set-271"><a href="#Expression.set-271"><span class="linenos">271</span></a><span class="sd"> Args:</span> +</span><span id="Expression.set-272"><a href="#Expression.set-272"><span class="linenos">272</span></a><span class="sd"> arg_key (str): name of the expression arg.</span> +</span><span id="Expression.set-273"><a href="#Expression.set-273"><span class="linenos">273</span></a><span class="sd"> value: value to set the arg to.</span> +</span><span id="Expression.set-274"><a href="#Expression.set-274"><span class="linenos">274</span></a><span class="sd"> """</span> +</span><span id="Expression.set-275"><a href="#Expression.set-275"><span class="linenos">275</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">arg_key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span> +</span><span id="Expression.set-276"><a href="#Expression.set-276"><span class="linenos">276</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_parent</span><span class="p">(</span><span class="n">arg_key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span> </span></pre></div> @@ -8494,18 +8642,18 @@ for args that are strings or leaf Expression instances, such as identifiers and </div> <a class="headerlink" href="#Expression.find"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.find-283"><a href="#Expression.find-283"><span class="linenos">283</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Expression.find-284"><a href="#Expression.find-284"><span class="linenos">284</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.find-285"><a href="#Expression.find-285"><span class="linenos">285</span></a><span class="sd"> Returns the first node in this tree which matches at least one of</span> -</span><span id="Expression.find-286"><a href="#Expression.find-286"><span class="linenos">286</span></a><span class="sd"> the specified types.</span> -</span><span id="Expression.find-287"><a href="#Expression.find-287"><span class="linenos">287</span></a> -</span><span id="Expression.find-288"><a href="#Expression.find-288"><span class="linenos">288</span></a><span class="sd"> Args:</span> -</span><span id="Expression.find-289"><a href="#Expression.find-289"><span class="linenos">289</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> -</span><span id="Expression.find-290"><a href="#Expression.find-290"><span class="linenos">290</span></a> -</span><span id="Expression.find-291"><a href="#Expression.find-291"><span class="linenos">291</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.find-292"><a href="#Expression.find-292"><span class="linenos">292</span></a><span class="sd"> The node which matches the criteria or None if no such node was found.</span> -</span><span id="Expression.find-293"><a href="#Expression.find-293"><span class="linenos">293</span></a><span class="sd"> """</span> -</span><span id="Expression.find-294"><a href="#Expression.find-294"><span class="linenos">294</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.find-297"><a href="#Expression.find-297"><span class="linenos">297</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Expression.find-298"><a href="#Expression.find-298"><span class="linenos">298</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.find-299"><a href="#Expression.find-299"><span class="linenos">299</span></a><span class="sd"> Returns the first node in this tree which matches at least one of</span> +</span><span id="Expression.find-300"><a href="#Expression.find-300"><span class="linenos">300</span></a><span class="sd"> the specified types.</span> +</span><span id="Expression.find-301"><a href="#Expression.find-301"><span class="linenos">301</span></a> +</span><span id="Expression.find-302"><a href="#Expression.find-302"><span class="linenos">302</span></a><span class="sd"> Args:</span> +</span><span id="Expression.find-303"><a href="#Expression.find-303"><span class="linenos">303</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> +</span><span id="Expression.find-304"><a href="#Expression.find-304"><span class="linenos">304</span></a> +</span><span id="Expression.find-305"><a href="#Expression.find-305"><span class="linenos">305</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.find-306"><a href="#Expression.find-306"><span class="linenos">306</span></a><span class="sd"> The node which matches the criteria or None if no such node was found.</span> +</span><span id="Expression.find-307"><a href="#Expression.find-307"><span class="linenos">307</span></a><span class="sd"> """</span> +</span><span id="Expression.find-308"><a href="#Expression.find-308"><span class="linenos">308</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span> </span></pre></div> @@ -8538,20 +8686,20 @@ the specified types.</p> </div> <a class="headerlink" href="#Expression.find_all"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.find_all-296"><a href="#Expression.find_all-296"><span class="linenos">296</span></a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Expression.find_all-297"><a href="#Expression.find_all-297"><span class="linenos">297</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.find_all-298"><a href="#Expression.find_all-298"><span class="linenos">298</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree and only</span> -</span><span id="Expression.find_all-299"><a href="#Expression.find_all-299"><span class="linenos">299</span></a><span class="sd"> yields those that match at least one of the specified expression types.</span> -</span><span id="Expression.find_all-300"><a href="#Expression.find_all-300"><span class="linenos">300</span></a> -</span><span id="Expression.find_all-301"><a href="#Expression.find_all-301"><span class="linenos">301</span></a><span class="sd"> Args:</span> -</span><span id="Expression.find_all-302"><a href="#Expression.find_all-302"><span class="linenos">302</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> -</span><span id="Expression.find_all-303"><a href="#Expression.find_all-303"><span class="linenos">303</span></a> -</span><span id="Expression.find_all-304"><a href="#Expression.find_all-304"><span class="linenos">304</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.find_all-305"><a href="#Expression.find_all-305"><span class="linenos">305</span></a><span class="sd"> The generator object.</span> -</span><span id="Expression.find_all-306"><a href="#Expression.find_all-306"><span class="linenos">306</span></a><span class="sd"> """</span> -</span><span id="Expression.find_all-307"><a href="#Expression.find_all-307"><span class="linenos">307</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span> -</span><span id="Expression.find_all-308"><a href="#Expression.find_all-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> -</span><span id="Expression.find_all-309"><a href="#Expression.find_all-309"><span class="linenos">309</span></a> <span class="k">yield</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.find_all-310"><a href="#Expression.find_all-310"><span class="linenos">310</span></a> <span class="k">def</span> <span class="nf">find_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Expression.find_all-311"><a href="#Expression.find_all-311"><span class="linenos">311</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.find_all-312"><a href="#Expression.find_all-312"><span class="linenos">312</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree and only</span> +</span><span id="Expression.find_all-313"><a href="#Expression.find_all-313"><span class="linenos">313</span></a><span class="sd"> yields those that match at least one of the specified expression types.</span> +</span><span id="Expression.find_all-314"><a href="#Expression.find_all-314"><span class="linenos">314</span></a> +</span><span id="Expression.find_all-315"><a href="#Expression.find_all-315"><span class="linenos">315</span></a><span class="sd"> Args:</span> +</span><span id="Expression.find_all-316"><a href="#Expression.find_all-316"><span class="linenos">316</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> +</span><span id="Expression.find_all-317"><a href="#Expression.find_all-317"><span class="linenos">317</span></a> +</span><span id="Expression.find_all-318"><a href="#Expression.find_all-318"><span class="linenos">318</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.find_all-319"><a href="#Expression.find_all-319"><span class="linenos">319</span></a><span class="sd"> The generator object.</span> +</span><span id="Expression.find_all-320"><a href="#Expression.find_all-320"><span class="linenos">320</span></a><span class="sd"> """</span> +</span><span id="Expression.find_all-321"><a href="#Expression.find_all-321"><span class="linenos">321</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span> +</span><span id="Expression.find_all-322"><a href="#Expression.find_all-322"><span class="linenos">322</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> +</span><span id="Expression.find_all-323"><a href="#Expression.find_all-323"><span class="linenos">323</span></a> <span class="k">yield</span> <span class="n">expression</span> </span></pre></div> @@ -8584,20 +8732,20 @@ yields those that match at least one of the specified expression types.</p> </div> <a class="headerlink" href="#Expression.find_ancestor"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.find_ancestor-311"><a href="#Expression.find_ancestor-311"><span class="linenos">311</span></a> <span class="k">def</span> <span class="nf">find_ancestor</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">):</span> -</span><span id="Expression.find_ancestor-312"><a href="#Expression.find_ancestor-312"><span class="linenos">312</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.find_ancestor-313"><a href="#Expression.find_ancestor-313"><span class="linenos">313</span></a><span class="sd"> Returns a nearest parent matching expression_types.</span> -</span><span id="Expression.find_ancestor-314"><a href="#Expression.find_ancestor-314"><span class="linenos">314</span></a> -</span><span id="Expression.find_ancestor-315"><a href="#Expression.find_ancestor-315"><span class="linenos">315</span></a><span class="sd"> Args:</span> -</span><span id="Expression.find_ancestor-316"><a href="#Expression.find_ancestor-316"><span class="linenos">316</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> -</span><span id="Expression.find_ancestor-317"><a href="#Expression.find_ancestor-317"><span class="linenos">317</span></a> -</span><span id="Expression.find_ancestor-318"><a href="#Expression.find_ancestor-318"><span class="linenos">318</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.find_ancestor-319"><a href="#Expression.find_ancestor-319"><span class="linenos">319</span></a><span class="sd"> The parent node.</span> -</span><span id="Expression.find_ancestor-320"><a href="#Expression.find_ancestor-320"><span class="linenos">320</span></a><span class="sd"> """</span> -</span><span id="Expression.find_ancestor-321"><a href="#Expression.find_ancestor-321"><span class="linenos">321</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression.find_ancestor-322"><a href="#Expression.find_ancestor-322"><span class="linenos">322</span></a> <span class="k">while</span> <span class="n">ancestor</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ancestor</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> -</span><span id="Expression.find_ancestor-323"><a href="#Expression.find_ancestor-323"><span class="linenos">323</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="n">ancestor</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression.find_ancestor-324"><a href="#Expression.find_ancestor-324"><span class="linenos">324</span></a> <span class="k">return</span> <span class="n">ancestor</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.find_ancestor-325"><a href="#Expression.find_ancestor-325"><span class="linenos">325</span></a> <span class="k">def</span> <span class="nf">find_ancestor</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">):</span> +</span><span id="Expression.find_ancestor-326"><a href="#Expression.find_ancestor-326"><span class="linenos">326</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.find_ancestor-327"><a href="#Expression.find_ancestor-327"><span class="linenos">327</span></a><span class="sd"> Returns a nearest parent matching expression_types.</span> +</span><span id="Expression.find_ancestor-328"><a href="#Expression.find_ancestor-328"><span class="linenos">328</span></a> +</span><span id="Expression.find_ancestor-329"><a href="#Expression.find_ancestor-329"><span class="linenos">329</span></a><span class="sd"> Args:</span> +</span><span id="Expression.find_ancestor-330"><a href="#Expression.find_ancestor-330"><span class="linenos">330</span></a><span class="sd"> expression_types (type): the expression type(s) to match.</span> +</span><span id="Expression.find_ancestor-331"><a href="#Expression.find_ancestor-331"><span class="linenos">331</span></a> +</span><span id="Expression.find_ancestor-332"><a href="#Expression.find_ancestor-332"><span class="linenos">332</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.find_ancestor-333"><a href="#Expression.find_ancestor-333"><span class="linenos">333</span></a><span class="sd"> The parent node.</span> +</span><span id="Expression.find_ancestor-334"><a href="#Expression.find_ancestor-334"><span class="linenos">334</span></a><span class="sd"> """</span> +</span><span id="Expression.find_ancestor-335"><a href="#Expression.find_ancestor-335"><span class="linenos">335</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression.find_ancestor-336"><a href="#Expression.find_ancestor-336"><span class="linenos">336</span></a> <span class="k">while</span> <span class="n">ancestor</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">ancestor</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">):</span> +</span><span id="Expression.find_ancestor-337"><a href="#Expression.find_ancestor-337"><span class="linenos">337</span></a> <span class="n">ancestor</span> <span class="o">=</span> <span class="n">ancestor</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression.find_ancestor-338"><a href="#Expression.find_ancestor-338"><span class="linenos">338</span></a> <span class="k">return</span> <span class="n">ancestor</span> </span></pre></div> @@ -8642,23 +8790,23 @@ yields those that match at least one of the specified expression types.</p> </div> <a class="headerlink" href="#Expression.walk"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.walk-333"><a href="#Expression.walk-333"><span class="linenos">333</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="Expression.walk-334"><a href="#Expression.walk-334"><span class="linenos">334</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.walk-335"><a href="#Expression.walk-335"><span class="linenos">335</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree.</span> -</span><span id="Expression.walk-336"><a href="#Expression.walk-336"><span class="linenos">336</span></a> -</span><span id="Expression.walk-337"><a href="#Expression.walk-337"><span class="linenos">337</span></a><span class="sd"> Args:</span> -</span><span id="Expression.walk-338"><a href="#Expression.walk-338"><span class="linenos">338</span></a><span class="sd"> bfs (bool): if set to True the BFS traversal order will be applied,</span> -</span><span id="Expression.walk-339"><a href="#Expression.walk-339"><span class="linenos">339</span></a><span class="sd"> otherwise the DFS traversal will be used instead.</span> -</span><span id="Expression.walk-340"><a href="#Expression.walk-340"><span class="linenos">340</span></a><span class="sd"> prune ((node, parent, arg_key) -> bool): callable that returns True if</span> -</span><span id="Expression.walk-341"><a href="#Expression.walk-341"><span class="linenos">341</span></a><span class="sd"> the generator should stop traversing this branch of the tree.</span> -</span><span id="Expression.walk-342"><a href="#Expression.walk-342"><span class="linenos">342</span></a> -</span><span id="Expression.walk-343"><a href="#Expression.walk-343"><span class="linenos">343</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.walk-344"><a href="#Expression.walk-344"><span class="linenos">344</span></a><span class="sd"> the generator object.</span> -</span><span id="Expression.walk-345"><a href="#Expression.walk-345"><span class="linenos">345</span></a><span class="sd"> """</span> -</span><span id="Expression.walk-346"><a href="#Expression.walk-346"><span class="linenos">346</span></a> <span class="k">if</span> <span class="n">bfs</span><span class="p">:</span> -</span><span id="Expression.walk-347"><a href="#Expression.walk-347"><span class="linenos">347</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">bfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> -</span><span id="Expression.walk-348"><a href="#Expression.walk-348"><span class="linenos">348</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Expression.walk-349"><a href="#Expression.walk-349"><span class="linenos">349</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.walk-347"><a href="#Expression.walk-347"><span class="linenos">347</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="Expression.walk-348"><a href="#Expression.walk-348"><span class="linenos">348</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.walk-349"><a href="#Expression.walk-349"><span class="linenos">349</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree.</span> +</span><span id="Expression.walk-350"><a href="#Expression.walk-350"><span class="linenos">350</span></a> +</span><span id="Expression.walk-351"><a href="#Expression.walk-351"><span class="linenos">351</span></a><span class="sd"> Args:</span> +</span><span id="Expression.walk-352"><a href="#Expression.walk-352"><span class="linenos">352</span></a><span class="sd"> bfs (bool): if set to True the BFS traversal order will be applied,</span> +</span><span id="Expression.walk-353"><a href="#Expression.walk-353"><span class="linenos">353</span></a><span class="sd"> otherwise the DFS traversal will be used instead.</span> +</span><span id="Expression.walk-354"><a href="#Expression.walk-354"><span class="linenos">354</span></a><span class="sd"> prune ((node, parent, arg_key) -> bool): callable that returns True if</span> +</span><span id="Expression.walk-355"><a href="#Expression.walk-355"><span class="linenos">355</span></a><span class="sd"> the generator should stop traversing this branch of the tree.</span> +</span><span id="Expression.walk-356"><a href="#Expression.walk-356"><span class="linenos">356</span></a> +</span><span id="Expression.walk-357"><a href="#Expression.walk-357"><span class="linenos">357</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.walk-358"><a href="#Expression.walk-358"><span class="linenos">358</span></a><span class="sd"> the generator object.</span> +</span><span id="Expression.walk-359"><a href="#Expression.walk-359"><span class="linenos">359</span></a><span class="sd"> """</span> +</span><span id="Expression.walk-360"><a href="#Expression.walk-360"><span class="linenos">360</span></a> <span class="k">if</span> <span class="n">bfs</span><span class="p">:</span> +</span><span id="Expression.walk-361"><a href="#Expression.walk-361"><span class="linenos">361</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">bfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> +</span><span id="Expression.walk-362"><a href="#Expression.walk-362"><span class="linenos">362</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Expression.walk-363"><a href="#Expression.walk-363"><span class="linenos">363</span></a> <span class="k">yield from</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="n">prune</span><span class="p">)</span> </span></pre></div> @@ -8693,23 +8841,23 @@ the generator should stop traversing this branch of the tree.</li> </div> <a class="headerlink" href="#Expression.dfs"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.dfs-351"><a href="#Expression.dfs-351"><span class="linenos">351</span></a> <span class="k">def</span> <span class="nf">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="Expression.dfs-352"><a href="#Expression.dfs-352"><span class="linenos">352</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.dfs-353"><a href="#Expression.dfs-353"><span class="linenos">353</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> -</span><span id="Expression.dfs-354"><a href="#Expression.dfs-354"><span class="linenos">354</span></a><span class="sd"> the DFS (Depth-first) order.</span> -</span><span id="Expression.dfs-355"><a href="#Expression.dfs-355"><span class="linenos">355</span></a> -</span><span id="Expression.dfs-356"><a href="#Expression.dfs-356"><span class="linenos">356</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.dfs-357"><a href="#Expression.dfs-357"><span class="linenos">357</span></a><span class="sd"> The generator object.</span> -</span><span id="Expression.dfs-358"><a href="#Expression.dfs-358"><span class="linenos">358</span></a><span class="sd"> """</span> -</span><span id="Expression.dfs-359"><a href="#Expression.dfs-359"><span class="linenos">359</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression.dfs-360"><a href="#Expression.dfs-360"><span class="linenos">360</span></a> <span class="k">yield</span> <span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> -</span><span id="Expression.dfs-361"><a href="#Expression.dfs-361"><span class="linenos">361</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> -</span><span id="Expression.dfs-362"><a href="#Expression.dfs-362"><span class="linenos">362</span></a> <span class="k">return</span> -</span><span id="Expression.dfs-363"><a href="#Expression.dfs-363"><span class="linenos">363</span></a> -</span><span id="Expression.dfs-364"><a href="#Expression.dfs-364"><span class="linenos">364</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Expression.dfs-365"><a href="#Expression.dfs-365"><span class="linenos">365</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> -</span><span id="Expression.dfs-366"><a href="#Expression.dfs-366"><span class="linenos">366</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression.dfs-367"><a href="#Expression.dfs-367"><span class="linenos">367</span></a> <span class="k">yield from</span> <span class="n">node</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">prune</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.dfs-365"><a href="#Expression.dfs-365"><span class="linenos">365</span></a> <span class="k">def</span> <span class="nf">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="Expression.dfs-366"><a href="#Expression.dfs-366"><span class="linenos">366</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.dfs-367"><a href="#Expression.dfs-367"><span class="linenos">367</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> +</span><span id="Expression.dfs-368"><a href="#Expression.dfs-368"><span class="linenos">368</span></a><span class="sd"> the DFS (Depth-first) order.</span> +</span><span id="Expression.dfs-369"><a href="#Expression.dfs-369"><span class="linenos">369</span></a> +</span><span id="Expression.dfs-370"><a href="#Expression.dfs-370"><span class="linenos">370</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.dfs-371"><a href="#Expression.dfs-371"><span class="linenos">371</span></a><span class="sd"> The generator object.</span> +</span><span id="Expression.dfs-372"><a href="#Expression.dfs-372"><span class="linenos">372</span></a><span class="sd"> """</span> +</span><span id="Expression.dfs-373"><a href="#Expression.dfs-373"><span class="linenos">373</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="n">parent</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression.dfs-374"><a href="#Expression.dfs-374"><span class="linenos">374</span></a> <span class="k">yield</span> <span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> +</span><span id="Expression.dfs-375"><a href="#Expression.dfs-375"><span class="linenos">375</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> +</span><span id="Expression.dfs-376"><a href="#Expression.dfs-376"><span class="linenos">376</span></a> <span class="k">return</span> +</span><span id="Expression.dfs-377"><a href="#Expression.dfs-377"><span class="linenos">377</span></a> +</span><span id="Expression.dfs-378"><a href="#Expression.dfs-378"><span class="linenos">378</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Expression.dfs-379"><a href="#Expression.dfs-379"><span class="linenos">379</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> +</span><span id="Expression.dfs-380"><a href="#Expression.dfs-380"><span class="linenos">380</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression.dfs-381"><a href="#Expression.dfs-381"><span class="linenos">381</span></a> <span class="k">yield from</span> <span class="n">node</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">prune</span><span class="p">)</span> </span></pre></div> @@ -8736,28 +8884,28 @@ the DFS (Depth-first) order.</p> </div> <a class="headerlink" href="#Expression.bfs"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.bfs-369"><a href="#Expression.bfs-369"><span class="linenos">369</span></a> <span class="k">def</span> <span class="nf">bfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="Expression.bfs-370"><a href="#Expression.bfs-370"><span class="linenos">370</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.bfs-371"><a href="#Expression.bfs-371"><span class="linenos">371</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> -</span><span id="Expression.bfs-372"><a href="#Expression.bfs-372"><span class="linenos">372</span></a><span class="sd"> the BFS (Breadth-first) order.</span> -</span><span id="Expression.bfs-373"><a href="#Expression.bfs-373"><span class="linenos">373</span></a> -</span><span id="Expression.bfs-374"><a href="#Expression.bfs-374"><span class="linenos">374</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.bfs-375"><a href="#Expression.bfs-375"><span class="linenos">375</span></a><span class="sd"> The generator object.</span> -</span><span id="Expression.bfs-376"><a href="#Expression.bfs-376"><span class="linenos">376</span></a><span class="sd"> """</span> -</span><span id="Expression.bfs-377"><a href="#Expression.bfs-377"><span class="linenos">377</span></a> <span class="n">queue</span> <span class="o">=</span> <span class="n">deque</span><span class="p">([(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="kc">None</span><span class="p">)])</span> -</span><span id="Expression.bfs-378"><a href="#Expression.bfs-378"><span class="linenos">378</span></a> -</span><span id="Expression.bfs-379"><a href="#Expression.bfs-379"><span class="linenos">379</span></a> <span class="k">while</span> <span class="n">queue</span><span class="p">:</span> -</span><span id="Expression.bfs-380"><a href="#Expression.bfs-380"><span class="linenos">380</span></a> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="o">=</span> <span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span> -</span><span id="Expression.bfs-381"><a href="#Expression.bfs-381"><span class="linenos">381</span></a> -</span><span id="Expression.bfs-382"><a href="#Expression.bfs-382"><span class="linenos">382</span></a> <span class="k">yield</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> -</span><span id="Expression.bfs-383"><a href="#Expression.bfs-383"><span class="linenos">383</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> -</span><span id="Expression.bfs-384"><a href="#Expression.bfs-384"><span class="linenos">384</span></a> <span class="k">continue</span> -</span><span id="Expression.bfs-385"><a href="#Expression.bfs-385"><span class="linenos">385</span></a> -</span><span id="Expression.bfs-386"><a href="#Expression.bfs-386"><span class="linenos">386</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression.bfs-387"><a href="#Expression.bfs-387"><span class="linenos">387</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Expression.bfs-388"><a href="#Expression.bfs-388"><span class="linenos">388</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> -</span><span id="Expression.bfs-389"><a href="#Expression.bfs-389"><span class="linenos">389</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression.bfs-390"><a href="#Expression.bfs-390"><span class="linenos">390</span></a> <span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">node</span><span class="p">,</span> <span class="n">item</span><span class="p">,</span> <span class="n">k</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.bfs-383"><a href="#Expression.bfs-383"><span class="linenos">383</span></a> <span class="k">def</span> <span class="nf">bfs</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="Expression.bfs-384"><a href="#Expression.bfs-384"><span class="linenos">384</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.bfs-385"><a href="#Expression.bfs-385"><span class="linenos">385</span></a><span class="sd"> Returns a generator object which visits all nodes in this tree in</span> +</span><span id="Expression.bfs-386"><a href="#Expression.bfs-386"><span class="linenos">386</span></a><span class="sd"> the BFS (Breadth-first) order.</span> +</span><span id="Expression.bfs-387"><a href="#Expression.bfs-387"><span class="linenos">387</span></a> +</span><span id="Expression.bfs-388"><a href="#Expression.bfs-388"><span class="linenos">388</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.bfs-389"><a href="#Expression.bfs-389"><span class="linenos">389</span></a><span class="sd"> The generator object.</span> +</span><span id="Expression.bfs-390"><a href="#Expression.bfs-390"><span class="linenos">390</span></a><span class="sd"> """</span> +</span><span id="Expression.bfs-391"><a href="#Expression.bfs-391"><span class="linenos">391</span></a> <span class="n">queue</span> <span class="o">=</span> <span class="n">deque</span><span class="p">([(</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="kc">None</span><span class="p">)])</span> +</span><span id="Expression.bfs-392"><a href="#Expression.bfs-392"><span class="linenos">392</span></a> +</span><span id="Expression.bfs-393"><a href="#Expression.bfs-393"><span class="linenos">393</span></a> <span class="k">while</span> <span class="n">queue</span><span class="p">:</span> +</span><span id="Expression.bfs-394"><a href="#Expression.bfs-394"><span class="linenos">394</span></a> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="o">=</span> <span class="n">queue</span><span class="o">.</span><span class="n">popleft</span><span class="p">()</span> +</span><span id="Expression.bfs-395"><a href="#Expression.bfs-395"><span class="linenos">395</span></a> +</span><span id="Expression.bfs-396"><a href="#Expression.bfs-396"><span class="linenos">396</span></a> <span class="k">yield</span> <span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> +</span><span id="Expression.bfs-397"><a href="#Expression.bfs-397"><span class="linenos">397</span></a> <span class="k">if</span> <span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span> +</span><span id="Expression.bfs-398"><a href="#Expression.bfs-398"><span class="linenos">398</span></a> <span class="k">continue</span> +</span><span id="Expression.bfs-399"><a href="#Expression.bfs-399"><span class="linenos">399</span></a> +</span><span id="Expression.bfs-400"><a href="#Expression.bfs-400"><span class="linenos">400</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression.bfs-401"><a href="#Expression.bfs-401"><span class="linenos">401</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">item</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Expression.bfs-402"><a href="#Expression.bfs-402"><span class="linenos">402</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> +</span><span id="Expression.bfs-403"><a href="#Expression.bfs-403"><span class="linenos">403</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression.bfs-404"><a href="#Expression.bfs-404"><span class="linenos">404</span></a> <span class="n">queue</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">node</span><span class="p">,</span> <span class="n">item</span><span class="p">,</span> <span class="n">k</span><span class="p">))</span> </span></pre></div> @@ -8784,14 +8932,14 @@ the BFS (Breadth-first) order.</p> </div> <a class="headerlink" href="#Expression.unnest"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.unnest-392"><a href="#Expression.unnest-392"><span class="linenos">392</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression.unnest-393"><a href="#Expression.unnest-393"><span class="linenos">393</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.unnest-394"><a href="#Expression.unnest-394"><span class="linenos">394</span></a><span class="sd"> Returns the first non parenthesis child or self.</span> -</span><span id="Expression.unnest-395"><a href="#Expression.unnest-395"><span class="linenos">395</span></a><span class="sd"> """</span> -</span><span id="Expression.unnest-396"><a href="#Expression.unnest-396"><span class="linenos">396</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="Expression.unnest-397"><a href="#Expression.unnest-397"><span class="linenos">397</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Paren</span><span class="p">):</span> -</span><span id="Expression.unnest-398"><a href="#Expression.unnest-398"><span class="linenos">398</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="Expression.unnest-399"><a href="#Expression.unnest-399"><span class="linenos">399</span></a> <span class="k">return</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.unnest-406"><a href="#Expression.unnest-406"><span class="linenos">406</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression.unnest-407"><a href="#Expression.unnest-407"><span class="linenos">407</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.unnest-408"><a href="#Expression.unnest-408"><span class="linenos">408</span></a><span class="sd"> Returns the first non parenthesis child or self.</span> +</span><span id="Expression.unnest-409"><a href="#Expression.unnest-409"><span class="linenos">409</span></a><span class="sd"> """</span> +</span><span id="Expression.unnest-410"><a href="#Expression.unnest-410"><span class="linenos">410</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="Expression.unnest-411"><a href="#Expression.unnest-411"><span class="linenos">411</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Paren</span><span class="p">):</span> +</span><span id="Expression.unnest-412"><a href="#Expression.unnest-412"><span class="linenos">412</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="Expression.unnest-413"><a href="#Expression.unnest-413"><span class="linenos">413</span></a> <span class="k">return</span> <span class="n">expression</span> </span></pre></div> @@ -8811,13 +8959,13 @@ the BFS (Breadth-first) order.</p> </div> <a class="headerlink" href="#Expression.unalias"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.unalias-401"><a href="#Expression.unalias-401"><span class="linenos">401</span></a> <span class="k">def</span> <span class="nf">unalias</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression.unalias-402"><a href="#Expression.unalias-402"><span class="linenos">402</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.unalias-403"><a href="#Expression.unalias-403"><span class="linenos">403</span></a><span class="sd"> Returns the inner expression if this is an Alias.</span> -</span><span id="Expression.unalias-404"><a href="#Expression.unalias-404"><span class="linenos">404</span></a><span class="sd"> """</span> -</span><span id="Expression.unalias-405"><a href="#Expression.unalias-405"><span class="linenos">405</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Alias</span><span class="p">):</span> -</span><span id="Expression.unalias-406"><a href="#Expression.unalias-406"><span class="linenos">406</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> -</span><span id="Expression.unalias-407"><a href="#Expression.unalias-407"><span class="linenos">407</span></a> <span class="k">return</span> <span class="bp">self</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.unalias-415"><a href="#Expression.unalias-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">unalias</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression.unalias-416"><a href="#Expression.unalias-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.unalias-417"><a href="#Expression.unalias-417"><span class="linenos">417</span></a><span class="sd"> Returns the inner expression if this is an Alias.</span> +</span><span id="Expression.unalias-418"><a href="#Expression.unalias-418"><span class="linenos">418</span></a><span class="sd"> """</span> +</span><span id="Expression.unalias-419"><a href="#Expression.unalias-419"><span class="linenos">419</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Alias</span><span class="p">):</span> +</span><span id="Expression.unalias-420"><a href="#Expression.unalias-420"><span class="linenos">420</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> +</span><span id="Expression.unalias-421"><a href="#Expression.unalias-421"><span class="linenos">421</span></a> <span class="k">return</span> <span class="bp">self</span> </span></pre></div> @@ -8837,11 +8985,11 @@ the BFS (Breadth-first) order.</p> </div> <a class="headerlink" href="#Expression.unnest_operands"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.unnest_operands-409"><a href="#Expression.unnest_operands-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="nf">unnest_operands</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression.unnest_operands-410"><a href="#Expression.unnest_operands-410"><span class="linenos">410</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.unnest_operands-411"><a href="#Expression.unnest_operands-411"><span class="linenos">411</span></a><span class="sd"> Returns unnested operands as a tuple.</span> -</span><span id="Expression.unnest_operands-412"><a href="#Expression.unnest_operands-412"><span class="linenos">412</span></a><span class="sd"> """</span> -</span><span id="Expression.unnest_operands-413"><a href="#Expression.unnest_operands-413"><span class="linenos">413</span></a> <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">arg</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="n">arg</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.unnest_operands-423"><a href="#Expression.unnest_operands-423"><span class="linenos">423</span></a> <span class="k">def</span> <span class="nf">unnest_operands</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression.unnest_operands-424"><a href="#Expression.unnest_operands-424"><span class="linenos">424</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.unnest_operands-425"><a href="#Expression.unnest_operands-425"><span class="linenos">425</span></a><span class="sd"> Returns unnested operands as a tuple.</span> +</span><span id="Expression.unnest_operands-426"><a href="#Expression.unnest_operands-426"><span class="linenos">426</span></a><span class="sd"> """</span> +</span><span id="Expression.unnest_operands-427"><a href="#Expression.unnest_operands-427"><span class="linenos">427</span></a> <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">arg</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">if</span> <span class="n">arg</span><span class="p">)</span> </span></pre></div> @@ -8861,15 +9009,15 @@ the BFS (Breadth-first) order.</p> </div> <a class="headerlink" href="#Expression.flatten"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.flatten-415"><a href="#Expression.flatten-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">flatten</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Expression.flatten-416"><a href="#Expression.flatten-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.flatten-417"><a href="#Expression.flatten-417"><span class="linenos">417</span></a><span class="sd"> Returns a generator which yields child nodes who's parents are the same class.</span> -</span><span id="Expression.flatten-418"><a href="#Expression.flatten-418"><span class="linenos">418</span></a> -</span><span id="Expression.flatten-419"><a href="#Expression.flatten-419"><span class="linenos">419</span></a><span class="sd"> A AND B AND C -> [A, B, C]</span> -</span><span id="Expression.flatten-420"><a href="#Expression.flatten-420"><span class="linenos">420</span></a><span class="sd"> """</span> -</span><span id="Expression.flatten-421"><a href="#Expression.flatten-421"><span class="linenos">421</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="n">p</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)):</span> -</span><span id="Expression.flatten-422"><a href="#Expression.flatten-422"><span class="linenos">422</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">):</span> -</span><span id="Expression.flatten-423"><a href="#Expression.flatten-423"><span class="linenos">423</span></a> <span class="k">yield</span> <span class="n">node</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="n">unnest</span> <span class="k">else</span> <span class="n">node</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.flatten-429"><a href="#Expression.flatten-429"><span class="linenos">429</span></a> <span class="k">def</span> <span class="nf">flatten</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Expression.flatten-430"><a href="#Expression.flatten-430"><span class="linenos">430</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.flatten-431"><a href="#Expression.flatten-431"><span class="linenos">431</span></a><span class="sd"> Returns a generator which yields child nodes who's parents are the same class.</span> +</span><span id="Expression.flatten-432"><a href="#Expression.flatten-432"><span class="linenos">432</span></a> +</span><span id="Expression.flatten-433"><a href="#Expression.flatten-433"><span class="linenos">433</span></a><span class="sd"> A AND B AND C -> [A, B, C]</span> +</span><span id="Expression.flatten-434"><a href="#Expression.flatten-434"><span class="linenos">434</span></a><span class="sd"> """</span> +</span><span id="Expression.flatten-435"><a href="#Expression.flatten-435"><span class="linenos">435</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">dfs</span><span class="p">(</span><span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="n">n</span><span class="p">,</span> <span class="n">p</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="n">p</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)):</span> +</span><span id="Expression.flatten-436"><a href="#Expression.flatten-436"><span class="linenos">436</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">):</span> +</span><span id="Expression.flatten-437"><a href="#Expression.flatten-437"><span class="linenos">437</span></a> <span class="k">yield</span> <span class="n">node</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span> <span class="k">if</span> <span class="n">unnest</span> <span class="k">else</span> <span class="n">node</span> </span></pre></div> @@ -8891,20 +9039,20 @@ the BFS (Breadth-first) order.</p> </div> <a class="headerlink" href="#Expression.sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.sql-431"><a href="#Expression.sql-431"><span class="linenos">431</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Expression.sql-432"><a href="#Expression.sql-432"><span class="linenos">432</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.sql-433"><a href="#Expression.sql-433"><span class="linenos">433</span></a><span class="sd"> Returns SQL string representation of this tree.</span> -</span><span id="Expression.sql-434"><a href="#Expression.sql-434"><span class="linenos">434</span></a> -</span><span id="Expression.sql-435"><a href="#Expression.sql-435"><span class="linenos">435</span></a><span class="sd"> Args:</span> -</span><span id="Expression.sql-436"><a href="#Expression.sql-436"><span class="linenos">436</span></a><span class="sd"> dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").</span> -</span><span id="Expression.sql-437"><a href="#Expression.sql-437"><span class="linenos">437</span></a><span class="sd"> opts: other `sqlglot.generator.Generator` options.</span> -</span><span id="Expression.sql-438"><a href="#Expression.sql-438"><span class="linenos">438</span></a> -</span><span id="Expression.sql-439"><a href="#Expression.sql-439"><span class="linenos">439</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.sql-440"><a href="#Expression.sql-440"><span class="linenos">440</span></a><span class="sd"> The SQL string.</span> -</span><span id="Expression.sql-441"><a href="#Expression.sql-441"><span class="linenos">441</span></a><span class="sd"> """</span> -</span><span id="Expression.sql-442"><a href="#Expression.sql-442"><span class="linenos">442</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="Expression.sql-443"><a href="#Expression.sql-443"><span class="linenos">443</span></a> -</span><span id="Expression.sql-444"><a href="#Expression.sql-444"><span class="linenos">444</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.sql-445"><a href="#Expression.sql-445"><span class="linenos">445</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Expression.sql-446"><a href="#Expression.sql-446"><span class="linenos">446</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.sql-447"><a href="#Expression.sql-447"><span class="linenos">447</span></a><span class="sd"> Returns SQL string representation of this tree.</span> +</span><span id="Expression.sql-448"><a href="#Expression.sql-448"><span class="linenos">448</span></a> +</span><span id="Expression.sql-449"><a href="#Expression.sql-449"><span class="linenos">449</span></a><span class="sd"> Args:</span> +</span><span id="Expression.sql-450"><a href="#Expression.sql-450"><span class="linenos">450</span></a><span class="sd"> dialect: the dialect of the output SQL string (eg. "spark", "hive", "presto", "mysql").</span> +</span><span id="Expression.sql-451"><a href="#Expression.sql-451"><span class="linenos">451</span></a><span class="sd"> opts: other `sqlglot.generator.Generator` options.</span> +</span><span id="Expression.sql-452"><a href="#Expression.sql-452"><span class="linenos">452</span></a> +</span><span id="Expression.sql-453"><a href="#Expression.sql-453"><span class="linenos">453</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.sql-454"><a href="#Expression.sql-454"><span class="linenos">454</span></a><span class="sd"> The SQL string.</span> +</span><span id="Expression.sql-455"><a href="#Expression.sql-455"><span class="linenos">455</span></a><span class="sd"> """</span> +</span><span id="Expression.sql-456"><a href="#Expression.sql-456"><span class="linenos">456</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects</span> <span class="kn">import</span> <span class="n">Dialect</span> +</span><span id="Expression.sql-457"><a href="#Expression.sql-457"><span class="linenos">457</span></a> +</span><span id="Expression.sql-458"><a href="#Expression.sql-458"><span class="linenos">458</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">generate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -8937,32 +9085,32 @@ the BFS (Breadth-first) order.</p> </div> <a class="headerlink" href="#Expression.transform"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.transform-470"><a href="#Expression.transform-470"><span class="linenos">470</span></a> <span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> -</span><span id="Expression.transform-471"><a href="#Expression.transform-471"><span class="linenos">471</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.transform-472"><a href="#Expression.transform-472"><span class="linenos">472</span></a><span class="sd"> Recursively visits all tree nodes (excluding already transformed ones)</span> -</span><span id="Expression.transform-473"><a href="#Expression.transform-473"><span class="linenos">473</span></a><span class="sd"> and applies the given transformation function to each node.</span> -</span><span id="Expression.transform-474"><a href="#Expression.transform-474"><span class="linenos">474</span></a> -</span><span id="Expression.transform-475"><a href="#Expression.transform-475"><span class="linenos">475</span></a><span class="sd"> Args:</span> -</span><span id="Expression.transform-476"><a href="#Expression.transform-476"><span class="linenos">476</span></a><span class="sd"> fun (function): a function which takes a node as an argument and returns a</span> -</span><span id="Expression.transform-477"><a href="#Expression.transform-477"><span class="linenos">477</span></a><span class="sd"> new transformed node or the same node without modifications. If the function</span> -</span><span id="Expression.transform-478"><a href="#Expression.transform-478"><span class="linenos">478</span></a><span class="sd"> returns None, then the corresponding node will be removed from the syntax tree.</span> -</span><span id="Expression.transform-479"><a href="#Expression.transform-479"><span class="linenos">479</span></a><span class="sd"> copy (bool): if set to True a new tree instance is constructed, otherwise the tree is</span> -</span><span id="Expression.transform-480"><a href="#Expression.transform-480"><span class="linenos">480</span></a><span class="sd"> modified in place.</span> -</span><span id="Expression.transform-481"><a href="#Expression.transform-481"><span class="linenos">481</span></a> -</span><span id="Expression.transform-482"><a href="#Expression.transform-482"><span class="linenos">482</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.transform-483"><a href="#Expression.transform-483"><span class="linenos">483</span></a><span class="sd"> The transformed tree.</span> -</span><span id="Expression.transform-484"><a href="#Expression.transform-484"><span class="linenos">484</span></a><span class="sd"> """</span> -</span><span id="Expression.transform-485"><a href="#Expression.transform-485"><span class="linenos">485</span></a> <span class="n">node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> -</span><span id="Expression.transform-486"><a href="#Expression.transform-486"><span class="linenos">486</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="Expression.transform-487"><a href="#Expression.transform-487"><span class="linenos">487</span></a> -</span><span id="Expression.transform-488"><a href="#Expression.transform-488"><span class="linenos">488</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="Expression.transform-489"><a href="#Expression.transform-489"><span class="linenos">489</span></a> <span class="k">return</span> <span class="n">new_node</span> -</span><span id="Expression.transform-490"><a href="#Expression.transform-490"><span class="linenos">490</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> -</span><span id="Expression.transform-491"><a href="#Expression.transform-491"><span class="linenos">491</span></a> <span class="n">new_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression.transform-492"><a href="#Expression.transform-492"><span class="linenos">492</span></a> <span class="k">return</span> <span class="n">new_node</span> -</span><span id="Expression.transform-493"><a href="#Expression.transform-493"><span class="linenos">493</span></a> -</span><span id="Expression.transform-494"><a href="#Expression.transform-494"><span class="linenos">494</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">child</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> -</span><span id="Expression.transform-495"><a href="#Expression.transform-495"><span class="linenos">495</span></a> <span class="k">return</span> <span class="n">new_node</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.transform-484"><a href="#Expression.transform-484"><span class="linenos">484</span></a> <span class="k">def</span> <span class="nf">transform</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +</span><span id="Expression.transform-485"><a href="#Expression.transform-485"><span class="linenos">485</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.transform-486"><a href="#Expression.transform-486"><span class="linenos">486</span></a><span class="sd"> Recursively visits all tree nodes (excluding already transformed ones)</span> +</span><span id="Expression.transform-487"><a href="#Expression.transform-487"><span class="linenos">487</span></a><span class="sd"> and applies the given transformation function to each node.</span> +</span><span id="Expression.transform-488"><a href="#Expression.transform-488"><span class="linenos">488</span></a> +</span><span id="Expression.transform-489"><a href="#Expression.transform-489"><span class="linenos">489</span></a><span class="sd"> Args:</span> +</span><span id="Expression.transform-490"><a href="#Expression.transform-490"><span class="linenos">490</span></a><span class="sd"> fun (function): a function which takes a node as an argument and returns a</span> +</span><span id="Expression.transform-491"><a href="#Expression.transform-491"><span class="linenos">491</span></a><span class="sd"> new transformed node or the same node without modifications. If the function</span> +</span><span id="Expression.transform-492"><a href="#Expression.transform-492"><span class="linenos">492</span></a><span class="sd"> returns None, then the corresponding node will be removed from the syntax tree.</span> +</span><span id="Expression.transform-493"><a href="#Expression.transform-493"><span class="linenos">493</span></a><span class="sd"> copy (bool): if set to True a new tree instance is constructed, otherwise the tree is</span> +</span><span id="Expression.transform-494"><a href="#Expression.transform-494"><span class="linenos">494</span></a><span class="sd"> modified in place.</span> +</span><span id="Expression.transform-495"><a href="#Expression.transform-495"><span class="linenos">495</span></a> +</span><span id="Expression.transform-496"><a href="#Expression.transform-496"><span class="linenos">496</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.transform-497"><a href="#Expression.transform-497"><span class="linenos">497</span></a><span class="sd"> The transformed tree.</span> +</span><span id="Expression.transform-498"><a href="#Expression.transform-498"><span class="linenos">498</span></a><span class="sd"> """</span> +</span><span id="Expression.transform-499"><a href="#Expression.transform-499"><span class="linenos">499</span></a> <span class="n">node</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> +</span><span id="Expression.transform-500"><a href="#Expression.transform-500"><span class="linenos">500</span></a> <span class="n">new_node</span> <span class="o">=</span> <span class="n">fun</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Expression.transform-501"><a href="#Expression.transform-501"><span class="linenos">501</span></a> +</span><span id="Expression.transform-502"><a href="#Expression.transform-502"><span class="linenos">502</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="Expression.transform-503"><a href="#Expression.transform-503"><span class="linenos">503</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="Expression.transform-504"><a href="#Expression.transform-504"><span class="linenos">504</span></a> <span class="k">if</span> <span class="n">new_node</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">node</span><span class="p">:</span> +</span><span id="Expression.transform-505"><a href="#Expression.transform-505"><span class="linenos">505</span></a> <span class="n">new_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression.transform-506"><a href="#Expression.transform-506"><span class="linenos">506</span></a> <span class="k">return</span> <span class="n">new_node</span> +</span><span id="Expression.transform-507"><a href="#Expression.transform-507"><span class="linenos">507</span></a> +</span><span id="Expression.transform-508"><a href="#Expression.transform-508"><span class="linenos">508</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">new_node</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">child</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">fun</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">))</span> +</span><span id="Expression.transform-509"><a href="#Expression.transform-509"><span class="linenos">509</span></a> <span class="k">return</span> <span class="n">new_node</span> </span></pre></div> @@ -8999,32 +9147,32 @@ modified in place.</li> </div> <a class="headerlink" href="#Expression.replace"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.replace-497"><a href="#Expression.replace-497"><span class="linenos">497</span></a> <span class="k">def</span> <span class="nf">replace</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="Expression.replace-498"><a href="#Expression.replace-498"><span class="linenos">498</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.replace-499"><a href="#Expression.replace-499"><span class="linenos">499</span></a><span class="sd"> Swap out this expression with a new expression.</span> -</span><span id="Expression.replace-500"><a href="#Expression.replace-500"><span class="linenos">500</span></a> -</span><span id="Expression.replace-501"><a href="#Expression.replace-501"><span class="linenos">501</span></a><span class="sd"> For example::</span> -</span><span id="Expression.replace-502"><a href="#Expression.replace-502"><span class="linenos">502</span></a> -</span><span id="Expression.replace-503"><a href="#Expression.replace-503"><span class="linenos">503</span></a><span class="sd"> >>> tree = Select().select("x").from_("tbl")</span> -</span><span id="Expression.replace-504"><a href="#Expression.replace-504"><span class="linenos">504</span></a><span class="sd"> >>> tree.find(Column).replace(Column(this="y"))</span> -</span><span id="Expression.replace-505"><a href="#Expression.replace-505"><span class="linenos">505</span></a><span class="sd"> (COLUMN this: y)</span> -</span><span id="Expression.replace-506"><a href="#Expression.replace-506"><span class="linenos">506</span></a><span class="sd"> >>> tree.sql()</span> -</span><span id="Expression.replace-507"><a href="#Expression.replace-507"><span class="linenos">507</span></a><span class="sd"> 'SELECT y FROM tbl'</span> -</span><span id="Expression.replace-508"><a href="#Expression.replace-508"><span class="linenos">508</span></a> -</span><span id="Expression.replace-509"><a href="#Expression.replace-509"><span class="linenos">509</span></a><span class="sd"> Args:</span> -</span><span id="Expression.replace-510"><a href="#Expression.replace-510"><span class="linenos">510</span></a><span class="sd"> expression (Expression|None): new node</span> -</span><span id="Expression.replace-511"><a href="#Expression.replace-511"><span class="linenos">511</span></a> -</span><span id="Expression.replace-512"><a href="#Expression.replace-512"><span class="linenos">512</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.replace-513"><a href="#Expression.replace-513"><span class="linenos">513</span></a><span class="sd"> The new expression or expressions.</span> -</span><span id="Expression.replace-514"><a href="#Expression.replace-514"><span class="linenos">514</span></a><span class="sd"> """</span> -</span><span id="Expression.replace-515"><a href="#Expression.replace-515"><span class="linenos">515</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> -</span><span id="Expression.replace-516"><a href="#Expression.replace-516"><span class="linenos">516</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Expression.replace-517"><a href="#Expression.replace-517"><span class="linenos">517</span></a> -</span><span id="Expression.replace-518"><a href="#Expression.replace-518"><span class="linenos">518</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> -</span><span id="Expression.replace-519"><a href="#Expression.replace-519"><span class="linenos">519</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Expression.replace-520"><a href="#Expression.replace-520"><span class="linenos">520</span></a> -</span><span id="Expression.replace-521"><a href="#Expression.replace-521"><span class="linenos">521</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">expression</span> <span class="k">if</span> <span class="n">child</span> <span class="ow">is</span> <span class="bp">self</span> <span class="k">else</span> <span class="n">child</span><span class="p">)</span> -</span><span id="Expression.replace-522"><a href="#Expression.replace-522"><span class="linenos">522</span></a> <span class="k">return</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.replace-511"><a href="#Expression.replace-511"><span class="linenos">511</span></a> <span class="k">def</span> <span class="nf">replace</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="Expression.replace-512"><a href="#Expression.replace-512"><span class="linenos">512</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.replace-513"><a href="#Expression.replace-513"><span class="linenos">513</span></a><span class="sd"> Swap out this expression with a new expression.</span> +</span><span id="Expression.replace-514"><a href="#Expression.replace-514"><span class="linenos">514</span></a> +</span><span id="Expression.replace-515"><a href="#Expression.replace-515"><span class="linenos">515</span></a><span class="sd"> For example::</span> +</span><span id="Expression.replace-516"><a href="#Expression.replace-516"><span class="linenos">516</span></a> +</span><span id="Expression.replace-517"><a href="#Expression.replace-517"><span class="linenos">517</span></a><span class="sd"> >>> tree = Select().select("x").from_("tbl")</span> +</span><span id="Expression.replace-518"><a href="#Expression.replace-518"><span class="linenos">518</span></a><span class="sd"> >>> tree.find(Column).replace(Column(this="y"))</span> +</span><span id="Expression.replace-519"><a href="#Expression.replace-519"><span class="linenos">519</span></a><span class="sd"> (COLUMN this: y)</span> +</span><span id="Expression.replace-520"><a href="#Expression.replace-520"><span class="linenos">520</span></a><span class="sd"> >>> tree.sql()</span> +</span><span id="Expression.replace-521"><a href="#Expression.replace-521"><span class="linenos">521</span></a><span class="sd"> 'SELECT y FROM tbl'</span> +</span><span id="Expression.replace-522"><a href="#Expression.replace-522"><span class="linenos">522</span></a> +</span><span id="Expression.replace-523"><a href="#Expression.replace-523"><span class="linenos">523</span></a><span class="sd"> Args:</span> +</span><span id="Expression.replace-524"><a href="#Expression.replace-524"><span class="linenos">524</span></a><span class="sd"> expression (Expression|None): new node</span> +</span><span id="Expression.replace-525"><a href="#Expression.replace-525"><span class="linenos">525</span></a> +</span><span id="Expression.replace-526"><a href="#Expression.replace-526"><span class="linenos">526</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.replace-527"><a href="#Expression.replace-527"><span class="linenos">527</span></a><span class="sd"> The new expression or expressions.</span> +</span><span id="Expression.replace-528"><a href="#Expression.replace-528"><span class="linenos">528</span></a><span class="sd"> """</span> +</span><span id="Expression.replace-529"><a href="#Expression.replace-529"><span class="linenos">529</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span> +</span><span id="Expression.replace-530"><a href="#Expression.replace-530"><span class="linenos">530</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Expression.replace-531"><a href="#Expression.replace-531"><span class="linenos">531</span></a> +</span><span id="Expression.replace-532"><a href="#Expression.replace-532"><span class="linenos">532</span></a> <span class="n">parent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Expression.replace-533"><a href="#Expression.replace-533"><span class="linenos">533</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Expression.replace-534"><a href="#Expression.replace-534"><span class="linenos">534</span></a> +</span><span id="Expression.replace-535"><a href="#Expression.replace-535"><span class="linenos">535</span></a> <span class="n">replace_children</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">child</span><span class="p">:</span> <span class="n">expression</span> <span class="k">if</span> <span class="n">child</span> <span class="ow">is</span> <span class="bp">self</span> <span class="k">else</span> <span class="n">child</span><span class="p">)</span> +</span><span id="Expression.replace-536"><a href="#Expression.replace-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="n">expression</span> </span></pre></div> @@ -9065,11 +9213,11 @@ modified in place.</li> </div> <a class="headerlink" href="#Expression.pop"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.pop-524"><a href="#Expression.pop-524"><span class="linenos">524</span></a> <span class="k">def</span> <span class="nf">pop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression.pop-525"><a href="#Expression.pop-525"><span class="linenos">525</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.pop-526"><a href="#Expression.pop-526"><span class="linenos">526</span></a><span class="sd"> Remove this expression from its AST.</span> -</span><span id="Expression.pop-527"><a href="#Expression.pop-527"><span class="linenos">527</span></a><span class="sd"> """</span> -</span><span id="Expression.pop-528"><a href="#Expression.pop-528"><span class="linenos">528</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.pop-538"><a href="#Expression.pop-538"><span class="linenos">538</span></a> <span class="k">def</span> <span class="nf">pop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression.pop-539"><a href="#Expression.pop-539"><span class="linenos">539</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.pop-540"><a href="#Expression.pop-540"><span class="linenos">540</span></a><span class="sd"> Remove this expression from its AST.</span> +</span><span id="Expression.pop-541"><a href="#Expression.pop-541"><span class="linenos">541</span></a><span class="sd"> """</span> +</span><span id="Expression.pop-542"><a href="#Expression.pop-542"><span class="linenos">542</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="kc">None</span><span class="p">)</span> </span></pre></div> @@ -9089,22 +9237,22 @@ modified in place.</li> </div> <a class="headerlink" href="#Expression.assert_is"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.assert_is-530"><a href="#Expression.assert_is-530"><span class="linenos">530</span></a> <span class="k">def</span> <span class="nf">assert_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">):</span> -</span><span id="Expression.assert_is-531"><a href="#Expression.assert_is-531"><span class="linenos">531</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.assert_is-532"><a href="#Expression.assert_is-532"><span class="linenos">532</span></a><span class="sd"> Assert that this `Expression` is an instance of `type_`.</span> -</span><span id="Expression.assert_is-533"><a href="#Expression.assert_is-533"><span class="linenos">533</span></a> -</span><span id="Expression.assert_is-534"><a href="#Expression.assert_is-534"><span class="linenos">534</span></a><span class="sd"> If it is NOT an instance of `type_`, this raises an assertion error.</span> -</span><span id="Expression.assert_is-535"><a href="#Expression.assert_is-535"><span class="linenos">535</span></a><span class="sd"> Otherwise, this returns this expression.</span> -</span><span id="Expression.assert_is-536"><a href="#Expression.assert_is-536"><span class="linenos">536</span></a> -</span><span id="Expression.assert_is-537"><a href="#Expression.assert_is-537"><span class="linenos">537</span></a><span class="sd"> Examples:</span> -</span><span id="Expression.assert_is-538"><a href="#Expression.assert_is-538"><span class="linenos">538</span></a><span class="sd"> This is useful for type security in chained expressions:</span> -</span><span id="Expression.assert_is-539"><a href="#Expression.assert_is-539"><span class="linenos">539</span></a> -</span><span id="Expression.assert_is-540"><a href="#Expression.assert_is-540"><span class="linenos">540</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Expression.assert_is-541"><a href="#Expression.assert_is-541"><span class="linenos">541</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()</span> -</span><span id="Expression.assert_is-542"><a href="#Expression.assert_is-542"><span class="linenos">542</span></a><span class="sd"> 'SELECT x, z FROM y'</span> -</span><span id="Expression.assert_is-543"><a href="#Expression.assert_is-543"><span class="linenos">543</span></a><span class="sd"> """</span> -</span><span id="Expression.assert_is-544"><a href="#Expression.assert_is-544"><span class="linenos">544</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">)</span> -</span><span id="Expression.assert_is-545"><a href="#Expression.assert_is-545"><span class="linenos">545</span></a> <span class="k">return</span> <span class="bp">self</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.assert_is-544"><a href="#Expression.assert_is-544"><span class="linenos">544</span></a> <span class="k">def</span> <span class="nf">assert_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">):</span> +</span><span id="Expression.assert_is-545"><a href="#Expression.assert_is-545"><span class="linenos">545</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.assert_is-546"><a href="#Expression.assert_is-546"><span class="linenos">546</span></a><span class="sd"> Assert that this `Expression` is an instance of `type_`.</span> +</span><span id="Expression.assert_is-547"><a href="#Expression.assert_is-547"><span class="linenos">547</span></a> +</span><span id="Expression.assert_is-548"><a href="#Expression.assert_is-548"><span class="linenos">548</span></a><span class="sd"> If it is NOT an instance of `type_`, this raises an assertion error.</span> +</span><span id="Expression.assert_is-549"><a href="#Expression.assert_is-549"><span class="linenos">549</span></a><span class="sd"> Otherwise, this returns this expression.</span> +</span><span id="Expression.assert_is-550"><a href="#Expression.assert_is-550"><span class="linenos">550</span></a> +</span><span id="Expression.assert_is-551"><a href="#Expression.assert_is-551"><span class="linenos">551</span></a><span class="sd"> Examples:</span> +</span><span id="Expression.assert_is-552"><a href="#Expression.assert_is-552"><span class="linenos">552</span></a><span class="sd"> This is useful for type security in chained expressions:</span> +</span><span id="Expression.assert_is-553"><a href="#Expression.assert_is-553"><span class="linenos">553</span></a> +</span><span id="Expression.assert_is-554"><a href="#Expression.assert_is-554"><span class="linenos">554</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Expression.assert_is-555"><a href="#Expression.assert_is-555"><span class="linenos">555</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT x from y").assert_is(Select).select("z").sql()</span> +</span><span id="Expression.assert_is-556"><a href="#Expression.assert_is-556"><span class="linenos">556</span></a><span class="sd"> 'SELECT x, z FROM y'</span> +</span><span id="Expression.assert_is-557"><a href="#Expression.assert_is-557"><span class="linenos">557</span></a><span class="sd"> """</span> +</span><span id="Expression.assert_is-558"><a href="#Expression.assert_is-558"><span class="linenos">558</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">type_</span><span class="p">)</span> +</span><span id="Expression.assert_is-559"><a href="#Expression.assert_is-559"><span class="linenos">559</span></a> <span class="k">return</span> <span class="bp">self</span> </span></pre></div> @@ -9140,39 +9288,39 @@ Otherwise, this returns this expression.</p> </div> <a class="headerlink" href="#Expression.error_messages"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.error_messages-547"><a href="#Expression.error_messages-547"><span class="linenos">547</span></a> <span class="k">def</span> <span class="nf">error_messages</span><span class="p">(</span><span class="bp">self</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">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></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="Expression.error_messages-548"><a href="#Expression.error_messages-548"><span class="linenos">548</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.error_messages-549"><a href="#Expression.error_messages-549"><span class="linenos">549</span></a><span class="sd"> Checks if this expression is valid (e.g. all mandatory args are set).</span> -</span><span id="Expression.error_messages-550"><a href="#Expression.error_messages-550"><span class="linenos">550</span></a> -</span><span id="Expression.error_messages-551"><a href="#Expression.error_messages-551"><span class="linenos">551</span></a><span class="sd"> Args:</span> -</span><span id="Expression.error_messages-552"><a href="#Expression.error_messages-552"><span class="linenos">552</span></a><span class="sd"> args: a sequence of values that were used to instantiate a Func expression. This is used</span> -</span><span id="Expression.error_messages-553"><a href="#Expression.error_messages-553"><span class="linenos">553</span></a><span class="sd"> to check that the provided arguments don't exceed the function argument limit.</span> -</span><span id="Expression.error_messages-554"><a href="#Expression.error_messages-554"><span class="linenos">554</span></a> -</span><span id="Expression.error_messages-555"><a href="#Expression.error_messages-555"><span class="linenos">555</span></a><span class="sd"> Returns:</span> -</span><span id="Expression.error_messages-556"><a href="#Expression.error_messages-556"><span class="linenos">556</span></a><span class="sd"> A list of error messages for all possible errors that were found.</span> -</span><span id="Expression.error_messages-557"><a href="#Expression.error_messages-557"><span class="linenos">557</span></a><span class="sd"> """</span> -</span><span id="Expression.error_messages-558"><a href="#Expression.error_messages-558"><span class="linenos">558</span></a> <span class="n">errors</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="Expression.error_messages-559"><a href="#Expression.error_messages-559"><span class="linenos">559</span></a> -</span><span id="Expression.error_messages-560"><a href="#Expression.error_messages-560"><span class="linenos">560</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> -</span><span id="Expression.error_messages-561"><a href="#Expression.error_messages-561"><span class="linenos">561</span></a> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> -</span><span id="Expression.error_messages-562"><a href="#Expression.error_messages-562"><span class="linenos">562</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unexpected keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Expression.error_messages-563"><a href="#Expression.error_messages-563"><span class="linenos">563</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">mandatory</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Expression.error_messages-564"><a href="#Expression.error_messages-564"><span class="linenos">564</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</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="n">k</span><span class="p">)</span> -</span><span id="Expression.error_messages-565"><a href="#Expression.error_messages-565"><span class="linenos">565</span></a> <span class="k">if</span> <span class="n">mandatory</span> <span class="ow">and</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">v</span><span class="p">)):</span> -</span><span id="Expression.error_messages-566"><a href="#Expression.error_messages-566"><span class="linenos">566</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Required keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' missing for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Expression.error_messages-567"><a href="#Expression.error_messages-567"><span class="linenos">567</span></a> -</span><span id="Expression.error_messages-568"><a href="#Expression.error_messages-568"><span class="linenos">568</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Expression.error_messages-569"><a href="#Expression.error_messages-569"><span class="linenos">569</span></a> <span class="n">args</span> -</span><span id="Expression.error_messages-570"><a href="#Expression.error_messages-570"><span class="linenos">570</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Func</span><span class="p">)</span> -</span><span id="Expression.error_messages-571"><a href="#Expression.error_messages-571"><span class="linenos">571</span></a> <span class="ow">and</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="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> -</span><span id="Expression.error_messages-572"><a href="#Expression.error_messages-572"><span class="linenos">572</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_var_len_args</span> -</span><span id="Expression.error_messages-573"><a href="#Expression.error_messages-573"><span class="linenos">573</span></a> <span class="p">):</span> -</span><span id="Expression.error_messages-574"><a href="#Expression.error_messages-574"><span class="linenos">574</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Expression.error_messages-575"><a href="#Expression.error_messages-575"><span class="linenos">575</span></a> <span class="sa">f</span><span class="s2">"The number of provided arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">) is greater than "</span> -</span><span id="Expression.error_messages-576"><a href="#Expression.error_messages-576"><span class="linenos">576</span></a> <span class="sa">f</span><span class="s2">"the maximum number of supported arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Expression.error_messages-577"><a href="#Expression.error_messages-577"><span class="linenos">577</span></a> <span class="p">)</span> -</span><span id="Expression.error_messages-578"><a href="#Expression.error_messages-578"><span class="linenos">578</span></a> -</span><span id="Expression.error_messages-579"><a href="#Expression.error_messages-579"><span class="linenos">579</span></a> <span class="k">return</span> <span class="n">errors</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.error_messages-561"><a href="#Expression.error_messages-561"><span class="linenos">561</span></a> <span class="k">def</span> <span class="nf">error_messages</span><span class="p">(</span><span class="bp">self</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">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></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="Expression.error_messages-562"><a href="#Expression.error_messages-562"><span class="linenos">562</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.error_messages-563"><a href="#Expression.error_messages-563"><span class="linenos">563</span></a><span class="sd"> Checks if this expression is valid (e.g. all mandatory args are set).</span> +</span><span id="Expression.error_messages-564"><a href="#Expression.error_messages-564"><span class="linenos">564</span></a> +</span><span id="Expression.error_messages-565"><a href="#Expression.error_messages-565"><span class="linenos">565</span></a><span class="sd"> Args:</span> +</span><span id="Expression.error_messages-566"><a href="#Expression.error_messages-566"><span class="linenos">566</span></a><span class="sd"> args: a sequence of values that were used to instantiate a Func expression. This is used</span> +</span><span id="Expression.error_messages-567"><a href="#Expression.error_messages-567"><span class="linenos">567</span></a><span class="sd"> to check that the provided arguments don't exceed the function argument limit.</span> +</span><span id="Expression.error_messages-568"><a href="#Expression.error_messages-568"><span class="linenos">568</span></a> +</span><span id="Expression.error_messages-569"><a href="#Expression.error_messages-569"><span class="linenos">569</span></a><span class="sd"> Returns:</span> +</span><span id="Expression.error_messages-570"><a href="#Expression.error_messages-570"><span class="linenos">570</span></a><span class="sd"> A list of error messages for all possible errors that were found.</span> +</span><span id="Expression.error_messages-571"><a href="#Expression.error_messages-571"><span class="linenos">571</span></a><span class="sd"> """</span> +</span><span id="Expression.error_messages-572"><a href="#Expression.error_messages-572"><span class="linenos">572</span></a> <span class="n">errors</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="Expression.error_messages-573"><a href="#Expression.error_messages-573"><span class="linenos">573</span></a> +</span><span id="Expression.error_messages-574"><a href="#Expression.error_messages-574"><span class="linenos">574</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> +</span><span id="Expression.error_messages-575"><a href="#Expression.error_messages-575"><span class="linenos">575</span></a> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> +</span><span id="Expression.error_messages-576"><a href="#Expression.error_messages-576"><span class="linenos">576</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unexpected keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Expression.error_messages-577"><a href="#Expression.error_messages-577"><span class="linenos">577</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">mandatory</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Expression.error_messages-578"><a href="#Expression.error_messages-578"><span class="linenos">578</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</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="n">k</span><span class="p">)</span> +</span><span id="Expression.error_messages-579"><a href="#Expression.error_messages-579"><span class="linenos">579</span></a> <span class="k">if</span> <span class="n">mandatory</span> <span class="ow">and</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">v</span><span class="p">)):</span> +</span><span id="Expression.error_messages-580"><a href="#Expression.error_messages-580"><span class="linenos">580</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Required keyword: '</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">' missing for </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Expression.error_messages-581"><a href="#Expression.error_messages-581"><span class="linenos">581</span></a> +</span><span id="Expression.error_messages-582"><a href="#Expression.error_messages-582"><span class="linenos">582</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Expression.error_messages-583"><a href="#Expression.error_messages-583"><span class="linenos">583</span></a> <span class="n">args</span> +</span><span id="Expression.error_messages-584"><a href="#Expression.error_messages-584"><span class="linenos">584</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Func</span><span class="p">)</span> +</span><span id="Expression.error_messages-585"><a href="#Expression.error_messages-585"><span class="linenos">585</span></a> <span class="ow">and</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="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> +</span><span id="Expression.error_messages-586"><a href="#Expression.error_messages-586"><span class="linenos">586</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_var_len_args</span> +</span><span id="Expression.error_messages-587"><a href="#Expression.error_messages-587"><span class="linenos">587</span></a> <span class="p">):</span> +</span><span id="Expression.error_messages-588"><a href="#Expression.error_messages-588"><span class="linenos">588</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Expression.error_messages-589"><a href="#Expression.error_messages-589"><span class="linenos">589</span></a> <span class="sa">f</span><span class="s2">"The number of provided arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">) is greater than "</span> +</span><span id="Expression.error_messages-590"><a href="#Expression.error_messages-590"><span class="linenos">590</span></a> <span class="sa">f</span><span class="s2">"the maximum number of supported arguments (</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Expression.error_messages-591"><a href="#Expression.error_messages-591"><span class="linenos">591</span></a> <span class="p">)</span> +</span><span id="Expression.error_messages-592"><a href="#Expression.error_messages-592"><span class="linenos">592</span></a> +</span><span id="Expression.error_messages-593"><a href="#Expression.error_messages-593"><span class="linenos">593</span></a> <span class="k">return</span> <span class="n">errors</span> </span></pre></div> @@ -9205,13 +9353,13 @@ to check that the provided arguments don't exceed the function argument limit.</ </div> <a class="headerlink" href="#Expression.dump"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.dump-581"><a href="#Expression.dump-581"><span class="linenos">581</span></a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Expression.dump-582"><a href="#Expression.dump-582"><span class="linenos">582</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.dump-583"><a href="#Expression.dump-583"><span class="linenos">583</span></a><span class="sd"> Dump this Expression to a JSON-serializable dict.</span> -</span><span id="Expression.dump-584"><a href="#Expression.dump-584"><span class="linenos">584</span></a><span class="sd"> """</span> -</span><span id="Expression.dump-585"><a href="#Expression.dump-585"><span class="linenos">585</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">dump</span> -</span><span id="Expression.dump-586"><a href="#Expression.dump-586"><span class="linenos">586</span></a> -</span><span id="Expression.dump-587"><a href="#Expression.dump-587"><span class="linenos">587</span></a> <span class="k">return</span> <span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.dump-595"><a href="#Expression.dump-595"><span class="linenos">595</span></a> <span class="k">def</span> <span class="nf">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Expression.dump-596"><a href="#Expression.dump-596"><span class="linenos">596</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.dump-597"><a href="#Expression.dump-597"><span class="linenos">597</span></a><span class="sd"> Dump this Expression to a JSON-serializable dict.</span> +</span><span id="Expression.dump-598"><a href="#Expression.dump-598"><span class="linenos">598</span></a><span class="sd"> """</span> +</span><span id="Expression.dump-599"><a href="#Expression.dump-599"><span class="linenos">599</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">dump</span> +</span><span id="Expression.dump-600"><a href="#Expression.dump-600"><span class="linenos">600</span></a> +</span><span id="Expression.dump-601"><a href="#Expression.dump-601"><span class="linenos">601</span></a> <span class="k">return</span> <span class="n">dump</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> </span></pre></div> @@ -9232,14 +9380,14 @@ to check that the provided arguments don't exceed the function argument limit.</ </div> <a class="headerlink" href="#Expression.load"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.load-589"><a href="#Expression.load-589"><span class="linenos">589</span></a> <span class="nd">@classmethod</span> -</span><span id="Expression.load-590"><a href="#Expression.load-590"><span class="linenos">590</span></a> <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> -</span><span id="Expression.load-591"><a href="#Expression.load-591"><span class="linenos">591</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Expression.load-592"><a href="#Expression.load-592"><span class="linenos">592</span></a><span class="sd"> Load a dict (as returned by `Expression.dump`) into an Expression instance.</span> -</span><span id="Expression.load-593"><a href="#Expression.load-593"><span class="linenos">593</span></a><span class="sd"> """</span> -</span><span id="Expression.load-594"><a href="#Expression.load-594"><span class="linenos">594</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">load</span> -</span><span id="Expression.load-595"><a href="#Expression.load-595"><span class="linenos">595</span></a> -</span><span id="Expression.load-596"><a href="#Expression.load-596"><span class="linenos">596</span></a> <span class="k">return</span> <span class="n">load</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Expression.load-603"><a href="#Expression.load-603"><span class="linenos">603</span></a> <span class="nd">@classmethod</span> +</span><span id="Expression.load-604"><a href="#Expression.load-604"><span class="linenos">604</span></a> <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span> +</span><span id="Expression.load-605"><a href="#Expression.load-605"><span class="linenos">605</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Expression.load-606"><a href="#Expression.load-606"><span class="linenos">606</span></a><span class="sd"> Load a dict (as returned by `Expression.dump`) into an Expression instance.</span> +</span><span id="Expression.load-607"><a href="#Expression.load-607"><span class="linenos">607</span></a><span class="sd"> """</span> +</span><span id="Expression.load-608"><a href="#Expression.load-608"><span class="linenos">608</span></a> <span class="kn">from</span> <span class="nn">sqlglot.serde</span> <span class="kn">import</span> <span class="n">load</span> +</span><span id="Expression.load-609"><a href="#Expression.load-609"><span class="linenos">609</span></a> +</span><span id="Expression.load-610"><a href="#Expression.load-610"><span class="linenos">610</span></a> <span class="k">return</span> <span class="n">load</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span> </span></pre></div> @@ -9260,57 +9408,57 @@ to check that the provided arguments don't exceed the function argument limit.</ </div> <a class="headerlink" href="#Condition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Condition-606"><a href="#Condition-606"><span class="linenos">606</span></a><span class="k">class</span> <span class="nc">Condition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Condition-607"><a href="#Condition-607"><span class="linenos">607</span></a> <span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Condition-608"><a href="#Condition-608"><span class="linenos">608</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Condition-609"><a href="#Condition-609"><span class="linenos">609</span></a><span class="sd"> AND this condition with one or multiple expressions.</span> -</span><span id="Condition-610"><a href="#Condition-610"><span class="linenos">610</span></a> -</span><span id="Condition-611"><a href="#Condition-611"><span class="linenos">611</span></a><span class="sd"> Example:</span> -</span><span id="Condition-612"><a href="#Condition-612"><span class="linenos">612</span></a><span class="sd"> >>> condition("x=1").and_("y=1").sql()</span> -</span><span id="Condition-613"><a href="#Condition-613"><span class="linenos">613</span></a><span class="sd"> 'x = 1 AND y = 1'</span> -</span><span id="Condition-614"><a href="#Condition-614"><span class="linenos">614</span></a> -</span><span id="Condition-615"><a href="#Condition-615"><span class="linenos">615</span></a><span class="sd"> Args:</span> -</span><span id="Condition-616"><a href="#Condition-616"><span class="linenos">616</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Condition-617"><a href="#Condition-617"><span class="linenos">617</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Condition-618"><a href="#Condition-618"><span class="linenos">618</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Condition-619"><a href="#Condition-619"><span class="linenos">619</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Condition-620"><a href="#Condition-620"><span class="linenos">620</span></a> -</span><span id="Condition-621"><a href="#Condition-621"><span class="linenos">621</span></a><span class="sd"> Returns:</span> -</span><span id="Condition-622"><a href="#Condition-622"><span class="linenos">622</span></a><span class="sd"> And: the new condition.</span> -</span><span id="Condition-623"><a href="#Condition-623"><span class="linenos">623</span></a><span class="sd"> """</span> -</span><span id="Condition-624"><a href="#Condition-624"><span class="linenos">624</span></a> <span class="k">return</span> <span class="n">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Condition-625"><a href="#Condition-625"><span class="linenos">625</span></a> -</span><span id="Condition-626"><a href="#Condition-626"><span class="linenos">626</span></a> <span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Condition-627"><a href="#Condition-627"><span class="linenos">627</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Condition-628"><a href="#Condition-628"><span class="linenos">628</span></a><span class="sd"> OR this condition with one or multiple expressions.</span> -</span><span id="Condition-629"><a href="#Condition-629"><span class="linenos">629</span></a> -</span><span id="Condition-630"><a href="#Condition-630"><span class="linenos">630</span></a><span class="sd"> Example:</span> -</span><span id="Condition-631"><a href="#Condition-631"><span class="linenos">631</span></a><span class="sd"> >>> condition("x=1").or_("y=1").sql()</span> -</span><span id="Condition-632"><a href="#Condition-632"><span class="linenos">632</span></a><span class="sd"> 'x = 1 OR y = 1'</span> -</span><span id="Condition-633"><a href="#Condition-633"><span class="linenos">633</span></a> -</span><span id="Condition-634"><a href="#Condition-634"><span class="linenos">634</span></a><span class="sd"> Args:</span> -</span><span id="Condition-635"><a href="#Condition-635"><span class="linenos">635</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Condition-636"><a href="#Condition-636"><span class="linenos">636</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Condition-637"><a href="#Condition-637"><span class="linenos">637</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Condition-638"><a href="#Condition-638"><span class="linenos">638</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Condition-620"><a href="#Condition-620"><span class="linenos">620</span></a><span class="k">class</span> <span class="nc">Condition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Condition-621"><a href="#Condition-621"><span class="linenos">621</span></a> <span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Condition-622"><a href="#Condition-622"><span class="linenos">622</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Condition-623"><a href="#Condition-623"><span class="linenos">623</span></a><span class="sd"> AND this condition with one or multiple expressions.</span> +</span><span id="Condition-624"><a href="#Condition-624"><span class="linenos">624</span></a> +</span><span id="Condition-625"><a href="#Condition-625"><span class="linenos">625</span></a><span class="sd"> Example:</span> +</span><span id="Condition-626"><a href="#Condition-626"><span class="linenos">626</span></a><span class="sd"> >>> condition("x=1").and_("y=1").sql()</span> +</span><span id="Condition-627"><a href="#Condition-627"><span class="linenos">627</span></a><span class="sd"> 'x = 1 AND y = 1'</span> +</span><span id="Condition-628"><a href="#Condition-628"><span class="linenos">628</span></a> +</span><span id="Condition-629"><a href="#Condition-629"><span class="linenos">629</span></a><span class="sd"> Args:</span> +</span><span id="Condition-630"><a href="#Condition-630"><span class="linenos">630</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Condition-631"><a href="#Condition-631"><span class="linenos">631</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Condition-632"><a href="#Condition-632"><span class="linenos">632</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Condition-633"><a href="#Condition-633"><span class="linenos">633</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Condition-634"><a href="#Condition-634"><span class="linenos">634</span></a> +</span><span id="Condition-635"><a href="#Condition-635"><span class="linenos">635</span></a><span class="sd"> Returns:</span> +</span><span id="Condition-636"><a href="#Condition-636"><span class="linenos">636</span></a><span class="sd"> And: the new condition.</span> +</span><span id="Condition-637"><a href="#Condition-637"><span class="linenos">637</span></a><span class="sd"> """</span> +</span><span id="Condition-638"><a href="#Condition-638"><span class="linenos">638</span></a> <span class="k">return</span> <span class="n">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span><span id="Condition-639"><a href="#Condition-639"><span class="linenos">639</span></a> -</span><span id="Condition-640"><a href="#Condition-640"><span class="linenos">640</span></a><span class="sd"> Returns:</span> -</span><span id="Condition-641"><a href="#Condition-641"><span class="linenos">641</span></a><span class="sd"> Or: the new condition.</span> -</span><span id="Condition-642"><a href="#Condition-642"><span class="linenos">642</span></a><span class="sd"> """</span> -</span><span id="Condition-643"><a href="#Condition-643"><span class="linenos">643</span></a> <span class="k">return</span> <span class="n">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Condition-644"><a href="#Condition-644"><span class="linenos">644</span></a> -</span><span id="Condition-645"><a href="#Condition-645"><span class="linenos">645</span></a> <span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Condition-646"><a href="#Condition-646"><span class="linenos">646</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Condition-647"><a href="#Condition-647"><span class="linenos">647</span></a><span class="sd"> Wrap this condition with NOT.</span> -</span><span id="Condition-648"><a href="#Condition-648"><span class="linenos">648</span></a> -</span><span id="Condition-649"><a href="#Condition-649"><span class="linenos">649</span></a><span class="sd"> Example:</span> -</span><span id="Condition-650"><a href="#Condition-650"><span class="linenos">650</span></a><span class="sd"> >>> condition("x=1").not_().sql()</span> -</span><span id="Condition-651"><a href="#Condition-651"><span class="linenos">651</span></a><span class="sd"> 'NOT x = 1'</span> -</span><span id="Condition-652"><a href="#Condition-652"><span class="linenos">652</span></a> -</span><span id="Condition-653"><a href="#Condition-653"><span class="linenos">653</span></a><span class="sd"> Returns:</span> -</span><span id="Condition-654"><a href="#Condition-654"><span class="linenos">654</span></a><span class="sd"> Not: the new condition.</span> -</span><span id="Condition-655"><a href="#Condition-655"><span class="linenos">655</span></a><span class="sd"> """</span> -</span><span id="Condition-656"><a href="#Condition-656"><span class="linenos">656</span></a> <span class="k">return</span> <span class="n">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Condition-640"><a href="#Condition-640"><span class="linenos">640</span></a> <span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Condition-641"><a href="#Condition-641"><span class="linenos">641</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Condition-642"><a href="#Condition-642"><span class="linenos">642</span></a><span class="sd"> OR this condition with one or multiple expressions.</span> +</span><span id="Condition-643"><a href="#Condition-643"><span class="linenos">643</span></a> +</span><span id="Condition-644"><a href="#Condition-644"><span class="linenos">644</span></a><span class="sd"> Example:</span> +</span><span id="Condition-645"><a href="#Condition-645"><span class="linenos">645</span></a><span class="sd"> >>> condition("x=1").or_("y=1").sql()</span> +</span><span id="Condition-646"><a href="#Condition-646"><span class="linenos">646</span></a><span class="sd"> 'x = 1 OR y = 1'</span> +</span><span id="Condition-647"><a href="#Condition-647"><span class="linenos">647</span></a> +</span><span id="Condition-648"><a href="#Condition-648"><span class="linenos">648</span></a><span class="sd"> Args:</span> +</span><span id="Condition-649"><a href="#Condition-649"><span class="linenos">649</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Condition-650"><a href="#Condition-650"><span class="linenos">650</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Condition-651"><a href="#Condition-651"><span class="linenos">651</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Condition-652"><a href="#Condition-652"><span class="linenos">652</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Condition-653"><a href="#Condition-653"><span class="linenos">653</span></a> +</span><span id="Condition-654"><a href="#Condition-654"><span class="linenos">654</span></a><span class="sd"> Returns:</span> +</span><span id="Condition-655"><a href="#Condition-655"><span class="linenos">655</span></a><span class="sd"> Or: the new condition.</span> +</span><span id="Condition-656"><a href="#Condition-656"><span class="linenos">656</span></a><span class="sd"> """</span> +</span><span id="Condition-657"><a href="#Condition-657"><span class="linenos">657</span></a> <span class="k">return</span> <span class="n">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Condition-658"><a href="#Condition-658"><span class="linenos">658</span></a> +</span><span id="Condition-659"><a href="#Condition-659"><span class="linenos">659</span></a> <span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Condition-660"><a href="#Condition-660"><span class="linenos">660</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Condition-661"><a href="#Condition-661"><span class="linenos">661</span></a><span class="sd"> Wrap this condition with NOT.</span> +</span><span id="Condition-662"><a href="#Condition-662"><span class="linenos">662</span></a> +</span><span id="Condition-663"><a href="#Condition-663"><span class="linenos">663</span></a><span class="sd"> Example:</span> +</span><span id="Condition-664"><a href="#Condition-664"><span class="linenos">664</span></a><span class="sd"> >>> condition("x=1").not_().sql()</span> +</span><span id="Condition-665"><a href="#Condition-665"><span class="linenos">665</span></a><span class="sd"> 'NOT x = 1'</span> +</span><span id="Condition-666"><a href="#Condition-666"><span class="linenos">666</span></a> +</span><span id="Condition-667"><a href="#Condition-667"><span class="linenos">667</span></a><span class="sd"> Returns:</span> +</span><span id="Condition-668"><a href="#Condition-668"><span class="linenos">668</span></a><span class="sd"> Not: the new condition.</span> +</span><span id="Condition-669"><a href="#Condition-669"><span class="linenos">669</span></a><span class="sd"> """</span> +</span><span id="Condition-670"><a href="#Condition-670"><span class="linenos">670</span></a> <span class="k">return</span> <span class="n">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> </span></pre></div> @@ -9327,24 +9475,24 @@ to check that the provided arguments don't exceed the function argument limit.</ </div> <a class="headerlink" href="#Condition.and_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Condition.and_-607"><a href="#Condition.and_-607"><span class="linenos">607</span></a> <span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Condition.and_-608"><a href="#Condition.and_-608"><span class="linenos">608</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Condition.and_-609"><a href="#Condition.and_-609"><span class="linenos">609</span></a><span class="sd"> AND this condition with one or multiple expressions.</span> -</span><span id="Condition.and_-610"><a href="#Condition.and_-610"><span class="linenos">610</span></a> -</span><span id="Condition.and_-611"><a href="#Condition.and_-611"><span class="linenos">611</span></a><span class="sd"> Example:</span> -</span><span id="Condition.and_-612"><a href="#Condition.and_-612"><span class="linenos">612</span></a><span class="sd"> >>> condition("x=1").and_("y=1").sql()</span> -</span><span id="Condition.and_-613"><a href="#Condition.and_-613"><span class="linenos">613</span></a><span class="sd"> 'x = 1 AND y = 1'</span> -</span><span id="Condition.and_-614"><a href="#Condition.and_-614"><span class="linenos">614</span></a> -</span><span id="Condition.and_-615"><a href="#Condition.and_-615"><span class="linenos">615</span></a><span class="sd"> Args:</span> -</span><span id="Condition.and_-616"><a href="#Condition.and_-616"><span class="linenos">616</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Condition.and_-617"><a href="#Condition.and_-617"><span class="linenos">617</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Condition.and_-618"><a href="#Condition.and_-618"><span class="linenos">618</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Condition.and_-619"><a href="#Condition.and_-619"><span class="linenos">619</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Condition.and_-620"><a href="#Condition.and_-620"><span class="linenos">620</span></a> -</span><span id="Condition.and_-621"><a href="#Condition.and_-621"><span class="linenos">621</span></a><span class="sd"> Returns:</span> -</span><span id="Condition.and_-622"><a href="#Condition.and_-622"><span class="linenos">622</span></a><span class="sd"> And: the new condition.</span> -</span><span id="Condition.and_-623"><a href="#Condition.and_-623"><span class="linenos">623</span></a><span class="sd"> """</span> -</span><span id="Condition.and_-624"><a href="#Condition.and_-624"><span class="linenos">624</span></a> <span class="k">return</span> <span class="n">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Condition.and_-621"><a href="#Condition.and_-621"><span class="linenos">621</span></a> <span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Condition.and_-622"><a href="#Condition.and_-622"><span class="linenos">622</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Condition.and_-623"><a href="#Condition.and_-623"><span class="linenos">623</span></a><span class="sd"> AND this condition with one or multiple expressions.</span> +</span><span id="Condition.and_-624"><a href="#Condition.and_-624"><span class="linenos">624</span></a> +</span><span id="Condition.and_-625"><a href="#Condition.and_-625"><span class="linenos">625</span></a><span class="sd"> Example:</span> +</span><span id="Condition.and_-626"><a href="#Condition.and_-626"><span class="linenos">626</span></a><span class="sd"> >>> condition("x=1").and_("y=1").sql()</span> +</span><span id="Condition.and_-627"><a href="#Condition.and_-627"><span class="linenos">627</span></a><span class="sd"> 'x = 1 AND y = 1'</span> +</span><span id="Condition.and_-628"><a href="#Condition.and_-628"><span class="linenos">628</span></a> +</span><span id="Condition.and_-629"><a href="#Condition.and_-629"><span class="linenos">629</span></a><span class="sd"> Args:</span> +</span><span id="Condition.and_-630"><a href="#Condition.and_-630"><span class="linenos">630</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Condition.and_-631"><a href="#Condition.and_-631"><span class="linenos">631</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Condition.and_-632"><a href="#Condition.and_-632"><span class="linenos">632</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Condition.and_-633"><a href="#Condition.and_-633"><span class="linenos">633</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Condition.and_-634"><a href="#Condition.and_-634"><span class="linenos">634</span></a> +</span><span id="Condition.and_-635"><a href="#Condition.and_-635"><span class="linenos">635</span></a><span class="sd"> Returns:</span> +</span><span id="Condition.and_-636"><a href="#Condition.and_-636"><span class="linenos">636</span></a><span class="sd"> And: the new condition.</span> +</span><span id="Condition.and_-637"><a href="#Condition.and_-637"><span class="linenos">637</span></a><span class="sd"> """</span> +</span><span id="Condition.and_-638"><a href="#Condition.and_-638"><span class="linenos">638</span></a> <span class="k">return</span> <span class="n">and_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -9389,24 +9537,24 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Condition.or_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Condition.or_-626"><a href="#Condition.or_-626"><span class="linenos">626</span></a> <span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Condition.or_-627"><a href="#Condition.or_-627"><span class="linenos">627</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Condition.or_-628"><a href="#Condition.or_-628"><span class="linenos">628</span></a><span class="sd"> OR this condition with one or multiple expressions.</span> -</span><span id="Condition.or_-629"><a href="#Condition.or_-629"><span class="linenos">629</span></a> -</span><span id="Condition.or_-630"><a href="#Condition.or_-630"><span class="linenos">630</span></a><span class="sd"> Example:</span> -</span><span id="Condition.or_-631"><a href="#Condition.or_-631"><span class="linenos">631</span></a><span class="sd"> >>> condition("x=1").or_("y=1").sql()</span> -</span><span id="Condition.or_-632"><a href="#Condition.or_-632"><span class="linenos">632</span></a><span class="sd"> 'x = 1 OR y = 1'</span> -</span><span id="Condition.or_-633"><a href="#Condition.or_-633"><span class="linenos">633</span></a> -</span><span id="Condition.or_-634"><a href="#Condition.or_-634"><span class="linenos">634</span></a><span class="sd"> Args:</span> -</span><span id="Condition.or_-635"><a href="#Condition.or_-635"><span class="linenos">635</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Condition.or_-636"><a href="#Condition.or_-636"><span class="linenos">636</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Condition.or_-637"><a href="#Condition.or_-637"><span class="linenos">637</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Condition.or_-638"><a href="#Condition.or_-638"><span class="linenos">638</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Condition.or_-639"><a href="#Condition.or_-639"><span class="linenos">639</span></a> -</span><span id="Condition.or_-640"><a href="#Condition.or_-640"><span class="linenos">640</span></a><span class="sd"> Returns:</span> -</span><span id="Condition.or_-641"><a href="#Condition.or_-641"><span class="linenos">641</span></a><span class="sd"> Or: the new condition.</span> -</span><span id="Condition.or_-642"><a href="#Condition.or_-642"><span class="linenos">642</span></a><span class="sd"> """</span> -</span><span id="Condition.or_-643"><a href="#Condition.or_-643"><span class="linenos">643</span></a> <span class="k">return</span> <span class="n">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Condition.or_-640"><a href="#Condition.or_-640"><span class="linenos">640</span></a> <span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Condition.or_-641"><a href="#Condition.or_-641"><span class="linenos">641</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Condition.or_-642"><a href="#Condition.or_-642"><span class="linenos">642</span></a><span class="sd"> OR this condition with one or multiple expressions.</span> +</span><span id="Condition.or_-643"><a href="#Condition.or_-643"><span class="linenos">643</span></a> +</span><span id="Condition.or_-644"><a href="#Condition.or_-644"><span class="linenos">644</span></a><span class="sd"> Example:</span> +</span><span id="Condition.or_-645"><a href="#Condition.or_-645"><span class="linenos">645</span></a><span class="sd"> >>> condition("x=1").or_("y=1").sql()</span> +</span><span id="Condition.or_-646"><a href="#Condition.or_-646"><span class="linenos">646</span></a><span class="sd"> 'x = 1 OR y = 1'</span> +</span><span id="Condition.or_-647"><a href="#Condition.or_-647"><span class="linenos">647</span></a> +</span><span id="Condition.or_-648"><a href="#Condition.or_-648"><span class="linenos">648</span></a><span class="sd"> Args:</span> +</span><span id="Condition.or_-649"><a href="#Condition.or_-649"><span class="linenos">649</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Condition.or_-650"><a href="#Condition.or_-650"><span class="linenos">650</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Condition.or_-651"><a href="#Condition.or_-651"><span class="linenos">651</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Condition.or_-652"><a href="#Condition.or_-652"><span class="linenos">652</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Condition.or_-653"><a href="#Condition.or_-653"><span class="linenos">653</span></a> +</span><span id="Condition.or_-654"><a href="#Condition.or_-654"><span class="linenos">654</span></a><span class="sd"> Returns:</span> +</span><span id="Condition.or_-655"><a href="#Condition.or_-655"><span class="linenos">655</span></a><span class="sd"> Or: the new condition.</span> +</span><span id="Condition.or_-656"><a href="#Condition.or_-656"><span class="linenos">656</span></a><span class="sd"> """</span> +</span><span id="Condition.or_-657"><a href="#Condition.or_-657"><span class="linenos">657</span></a> <span class="k">return</span> <span class="n">or_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -9451,18 +9599,18 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Condition.not_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Condition.not_-645"><a href="#Condition.not_-645"><span class="linenos">645</span></a> <span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Condition.not_-646"><a href="#Condition.not_-646"><span class="linenos">646</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Condition.not_-647"><a href="#Condition.not_-647"><span class="linenos">647</span></a><span class="sd"> Wrap this condition with NOT.</span> -</span><span id="Condition.not_-648"><a href="#Condition.not_-648"><span class="linenos">648</span></a> -</span><span id="Condition.not_-649"><a href="#Condition.not_-649"><span class="linenos">649</span></a><span class="sd"> Example:</span> -</span><span id="Condition.not_-650"><a href="#Condition.not_-650"><span class="linenos">650</span></a><span class="sd"> >>> condition("x=1").not_().sql()</span> -</span><span id="Condition.not_-651"><a href="#Condition.not_-651"><span class="linenos">651</span></a><span class="sd"> 'NOT x = 1'</span> -</span><span id="Condition.not_-652"><a href="#Condition.not_-652"><span class="linenos">652</span></a> -</span><span id="Condition.not_-653"><a href="#Condition.not_-653"><span class="linenos">653</span></a><span class="sd"> Returns:</span> -</span><span id="Condition.not_-654"><a href="#Condition.not_-654"><span class="linenos">654</span></a><span class="sd"> Not: the new condition.</span> -</span><span id="Condition.not_-655"><a href="#Condition.not_-655"><span class="linenos">655</span></a><span class="sd"> """</span> -</span><span id="Condition.not_-656"><a href="#Condition.not_-656"><span class="linenos">656</span></a> <span class="k">return</span> <span class="n">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Condition.not_-659"><a href="#Condition.not_-659"><span class="linenos">659</span></a> <span class="k">def</span> <span class="nf">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Condition.not_-660"><a href="#Condition.not_-660"><span class="linenos">660</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Condition.not_-661"><a href="#Condition.not_-661"><span class="linenos">661</span></a><span class="sd"> Wrap this condition with NOT.</span> +</span><span id="Condition.not_-662"><a href="#Condition.not_-662"><span class="linenos">662</span></a> +</span><span id="Condition.not_-663"><a href="#Condition.not_-663"><span class="linenos">663</span></a><span class="sd"> Example:</span> +</span><span id="Condition.not_-664"><a href="#Condition.not_-664"><span class="linenos">664</span></a><span class="sd"> >>> condition("x=1").not_().sql()</span> +</span><span id="Condition.not_-665"><a href="#Condition.not_-665"><span class="linenos">665</span></a><span class="sd"> 'NOT x = 1'</span> +</span><span id="Condition.not_-666"><a href="#Condition.not_-666"><span class="linenos">666</span></a> +</span><span id="Condition.not_-667"><a href="#Condition.not_-667"><span class="linenos">667</span></a><span class="sd"> Returns:</span> +</span><span id="Condition.not_-668"><a href="#Condition.not_-668"><span class="linenos">668</span></a><span class="sd"> Not: the new condition.</span> +</span><span id="Condition.not_-669"><a href="#Condition.not_-669"><span class="linenos">669</span></a><span class="sd"> """</span> +</span><span id="Condition.not_-670"><a href="#Condition.not_-670"><span class="linenos">670</span></a> <span class="k">return</span> <span class="n">not_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> </span></pre></div> @@ -9541,8 +9689,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Predicate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Predicate-659"><a href="#Predicate-659"><span class="linenos">659</span></a><span class="k">class</span> <span class="nc">Predicate</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Predicate-660"><a href="#Predicate-660"><span class="linenos">660</span></a><span class="w"> </span><span class="sd">"""Relationships like x = y, x > 1, x >= y."""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Predicate-673"><a href="#Predicate-673"><span class="linenos">673</span></a><span class="k">class</span> <span class="nc">Predicate</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Predicate-674"><a href="#Predicate-674"><span class="linenos">674</span></a><span class="w"> </span><span class="sd">"""Relationships like x = y, x > 1, x >= y."""</span> </span></pre></div> @@ -9610,26 +9758,26 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#DerivedTable"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DerivedTable-663"><a href="#DerivedTable-663"><span class="linenos">663</span></a><span class="k">class</span> <span class="nc">DerivedTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="DerivedTable-664"><a href="#DerivedTable-664"><span class="linenos">664</span></a> <span class="nd">@property</span> -</span><span id="DerivedTable-665"><a href="#DerivedTable-665"><span class="linenos">665</span></a> <span class="k">def</span> <span class="nf">alias_column_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="DerivedTable-666"><a href="#DerivedTable-666"><span class="linenos">666</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</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">"alias"</span><span class="p">)</span> -</span><span id="DerivedTable-667"><a href="#DerivedTable-667"><span class="linenos">667</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table_alias</span><span class="p">:</span> -</span><span id="DerivedTable-668"><a href="#DerivedTable-668"><span class="linenos">668</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="DerivedTable-669"><a href="#DerivedTable-669"><span class="linenos">669</span></a> <span class="n">column_list</span> <span class="o">=</span> <span class="n">table_alias</span><span class="o">.</span><span class="n">assert_is</span><span class="p">(</span><span class="n">TableAlias</span><span class="p">)</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">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> -</span><span id="DerivedTable-670"><a href="#DerivedTable-670"><span class="linenos">670</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">c</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">column_list</span><span class="p">]</span> -</span><span id="DerivedTable-671"><a href="#DerivedTable-671"><span class="linenos">671</span></a> -</span><span id="DerivedTable-672"><a href="#DerivedTable-672"><span class="linenos">672</span></a> <span class="nd">@property</span> -</span><span id="DerivedTable-673"><a href="#DerivedTable-673"><span class="linenos">673</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="DerivedTable-674"><a href="#DerivedTable-674"><span class="linenos">674</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</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">"alias"</span><span class="p">)</span> -</span><span id="DerivedTable-675"><a href="#DerivedTable-675"><span class="linenos">675</span></a> -</span><span id="DerivedTable-676"><a href="#DerivedTable-676"><span class="linenos">676</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="DerivedTable-677"><a href="#DerivedTable-677"><span class="linenos">677</span></a> <span class="k">return</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> -</span><span id="DerivedTable-678"><a href="#DerivedTable-678"><span class="linenos">678</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="DerivedTable-679"><a href="#DerivedTable-679"><span class="linenos">679</span></a> -</span><span id="DerivedTable-680"><a href="#DerivedTable-680"><span class="linenos">680</span></a> <span class="nd">@property</span> -</span><span id="DerivedTable-681"><a href="#DerivedTable-681"><span class="linenos">681</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="DerivedTable-682"><a href="#DerivedTable-682"><span class="linenos">682</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">select</span><span class="o">.</span><span class="n">output_name</span> <span class="k">for</span> <span class="n">select</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">selects</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DerivedTable-677"><a href="#DerivedTable-677"><span class="linenos">677</span></a><span class="k">class</span> <span class="nc">DerivedTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="DerivedTable-678"><a href="#DerivedTable-678"><span class="linenos">678</span></a> <span class="nd">@property</span> +</span><span id="DerivedTable-679"><a href="#DerivedTable-679"><span class="linenos">679</span></a> <span class="k">def</span> <span class="nf">alias_column_names</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="DerivedTable-680"><a href="#DerivedTable-680"><span class="linenos">680</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</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">"alias"</span><span class="p">)</span> +</span><span id="DerivedTable-681"><a href="#DerivedTable-681"><span class="linenos">681</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table_alias</span><span class="p">:</span> +</span><span id="DerivedTable-682"><a href="#DerivedTable-682"><span class="linenos">682</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="DerivedTable-683"><a href="#DerivedTable-683"><span class="linenos">683</span></a> <span class="n">column_list</span> <span class="o">=</span> <span class="n">table_alias</span><span class="o">.</span><span class="n">assert_is</span><span class="p">(</span><span class="n">TableAlias</span><span class="p">)</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">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> +</span><span id="DerivedTable-684"><a href="#DerivedTable-684"><span class="linenos">684</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">c</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">column_list</span><span class="p">]</span> +</span><span id="DerivedTable-685"><a href="#DerivedTable-685"><span class="linenos">685</span></a> +</span><span id="DerivedTable-686"><a href="#DerivedTable-686"><span class="linenos">686</span></a> <span class="nd">@property</span> +</span><span id="DerivedTable-687"><a href="#DerivedTable-687"><span class="linenos">687</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="DerivedTable-688"><a href="#DerivedTable-688"><span class="linenos">688</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</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">"alias"</span><span class="p">)</span> +</span><span id="DerivedTable-689"><a href="#DerivedTable-689"><span class="linenos">689</span></a> +</span><span id="DerivedTable-690"><a href="#DerivedTable-690"><span class="linenos">690</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="DerivedTable-691"><a href="#DerivedTable-691"><span class="linenos">691</span></a> <span class="k">return</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> +</span><span id="DerivedTable-692"><a href="#DerivedTable-692"><span class="linenos">692</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="DerivedTable-693"><a href="#DerivedTable-693"><span class="linenos">693</span></a> +</span><span id="DerivedTable-694"><a href="#DerivedTable-694"><span class="linenos">694</span></a> <span class="nd">@property</span> +</span><span id="DerivedTable-695"><a href="#DerivedTable-695"><span class="linenos">695</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="DerivedTable-696"><a href="#DerivedTable-696"><span class="linenos">696</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">select</span><span class="o">.</span><span class="n">output_name</span> <span class="k">for</span> <span class="n">select</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">selects</span><span class="p">]</span> </span></pre></div> @@ -9689,66 +9837,66 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Unionable"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unionable-685"><a href="#Unionable-685"><span class="linenos">685</span></a><span class="k">class</span> <span class="nc">Unionable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Unionable-686"><a href="#Unionable-686"><span class="linenos">686</span></a> <span class="k">def</span> <span class="nf">union</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Unionable-687"><a href="#Unionable-687"><span class="linenos">687</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Unionable-688"><a href="#Unionable-688"><span class="linenos">688</span></a><span class="sd"> Builds a UNION expression.</span> -</span><span id="Unionable-689"><a href="#Unionable-689"><span class="linenos">689</span></a> -</span><span id="Unionable-690"><a href="#Unionable-690"><span class="linenos">690</span></a><span class="sd"> Example:</span> -</span><span id="Unionable-691"><a href="#Unionable-691"><span class="linenos">691</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Unionable-692"><a href="#Unionable-692"><span class="linenos">692</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()</span> -</span><span id="Unionable-693"><a href="#Unionable-693"><span class="linenos">693</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> -</span><span id="Unionable-694"><a href="#Unionable-694"><span class="linenos">694</span></a> -</span><span id="Unionable-695"><a href="#Unionable-695"><span class="linenos">695</span></a><span class="sd"> Args:</span> -</span><span id="Unionable-696"><a href="#Unionable-696"><span class="linenos">696</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> -</span><span id="Unionable-697"><a href="#Unionable-697"><span class="linenos">697</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Unionable-698"><a href="#Unionable-698"><span class="linenos">698</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="Unionable-699"><a href="#Unionable-699"><span class="linenos">699</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Unionable-700"><a href="#Unionable-700"><span class="linenos">700</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Unionable-701"><a href="#Unionable-701"><span class="linenos">701</span></a><span class="sd"> Returns:</span> -</span><span id="Unionable-702"><a href="#Unionable-702"><span class="linenos">702</span></a><span class="sd"> Union: the Union expression.</span> -</span><span id="Unionable-703"><a href="#Unionable-703"><span class="linenos">703</span></a><span class="sd"> """</span> -</span><span id="Unionable-704"><a href="#Unionable-704"><span class="linenos">704</span></a> <span class="k">return</span> <span class="n">union</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Unionable-705"><a href="#Unionable-705"><span class="linenos">705</span></a> -</span><span id="Unionable-706"><a href="#Unionable-706"><span class="linenos">706</span></a> <span class="k">def</span> <span class="nf">intersect</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Unionable-707"><a href="#Unionable-707"><span class="linenos">707</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Unionable-708"><a href="#Unionable-708"><span class="linenos">708</span></a><span class="sd"> Builds an INTERSECT expression.</span> -</span><span id="Unionable-709"><a href="#Unionable-709"><span class="linenos">709</span></a> -</span><span id="Unionable-710"><a href="#Unionable-710"><span class="linenos">710</span></a><span class="sd"> Example:</span> -</span><span id="Unionable-711"><a href="#Unionable-711"><span class="linenos">711</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Unionable-712"><a href="#Unionable-712"><span class="linenos">712</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()</span> -</span><span id="Unionable-713"><a href="#Unionable-713"><span class="linenos">713</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> -</span><span id="Unionable-714"><a href="#Unionable-714"><span class="linenos">714</span></a> -</span><span id="Unionable-715"><a href="#Unionable-715"><span class="linenos">715</span></a><span class="sd"> Args:</span> -</span><span id="Unionable-716"><a href="#Unionable-716"><span class="linenos">716</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> -</span><span id="Unionable-717"><a href="#Unionable-717"><span class="linenos">717</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Unionable-718"><a href="#Unionable-718"><span class="linenos">718</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="Unionable-719"><a href="#Unionable-719"><span class="linenos">719</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Unionable-720"><a href="#Unionable-720"><span class="linenos">720</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Unionable-721"><a href="#Unionable-721"><span class="linenos">721</span></a><span class="sd"> Returns:</span> -</span><span id="Unionable-722"><a href="#Unionable-722"><span class="linenos">722</span></a><span class="sd"> Intersect: the Intersect expression</span> -</span><span id="Unionable-723"><a href="#Unionable-723"><span class="linenos">723</span></a><span class="sd"> """</span> -</span><span id="Unionable-724"><a href="#Unionable-724"><span class="linenos">724</span></a> <span class="k">return</span> <span class="n">intersect</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Unionable-725"><a href="#Unionable-725"><span class="linenos">725</span></a> -</span><span id="Unionable-726"><a href="#Unionable-726"><span class="linenos">726</span></a> <span class="k">def</span> <span class="nf">except_</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Unionable-727"><a href="#Unionable-727"><span class="linenos">727</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Unionable-728"><a href="#Unionable-728"><span class="linenos">728</span></a><span class="sd"> Builds an EXCEPT expression.</span> -</span><span id="Unionable-729"><a href="#Unionable-729"><span class="linenos">729</span></a> -</span><span id="Unionable-730"><a href="#Unionable-730"><span class="linenos">730</span></a><span class="sd"> Example:</span> -</span><span id="Unionable-731"><a href="#Unionable-731"><span class="linenos">731</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Unionable-732"><a href="#Unionable-732"><span class="linenos">732</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()</span> -</span><span id="Unionable-733"><a href="#Unionable-733"><span class="linenos">733</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> -</span><span id="Unionable-734"><a href="#Unionable-734"><span class="linenos">734</span></a> -</span><span id="Unionable-735"><a href="#Unionable-735"><span class="linenos">735</span></a><span class="sd"> Args:</span> -</span><span id="Unionable-736"><a href="#Unionable-736"><span class="linenos">736</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> -</span><span id="Unionable-737"><a href="#Unionable-737"><span class="linenos">737</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Unionable-738"><a href="#Unionable-738"><span class="linenos">738</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="Unionable-739"><a href="#Unionable-739"><span class="linenos">739</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Unionable-740"><a href="#Unionable-740"><span class="linenos">740</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Unionable-741"><a href="#Unionable-741"><span class="linenos">741</span></a><span class="sd"> Returns:</span> -</span><span id="Unionable-742"><a href="#Unionable-742"><span class="linenos">742</span></a><span class="sd"> Except: the Except expression</span> -</span><span id="Unionable-743"><a href="#Unionable-743"><span class="linenos">743</span></a><span class="sd"> """</span> -</span><span id="Unionable-744"><a href="#Unionable-744"><span class="linenos">744</span></a> <span class="k">return</span> <span class="n">except_</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unionable-699"><a href="#Unionable-699"><span class="linenos">699</span></a><span class="k">class</span> <span class="nc">Unionable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Unionable-700"><a href="#Unionable-700"><span class="linenos">700</span></a> <span class="k">def</span> <span class="nf">union</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Unionable-701"><a href="#Unionable-701"><span class="linenos">701</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Unionable-702"><a href="#Unionable-702"><span class="linenos">702</span></a><span class="sd"> Builds a UNION expression.</span> +</span><span id="Unionable-703"><a href="#Unionable-703"><span class="linenos">703</span></a> +</span><span id="Unionable-704"><a href="#Unionable-704"><span class="linenos">704</span></a><span class="sd"> Example:</span> +</span><span id="Unionable-705"><a href="#Unionable-705"><span class="linenos">705</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Unionable-706"><a href="#Unionable-706"><span class="linenos">706</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()</span> +</span><span id="Unionable-707"><a href="#Unionable-707"><span class="linenos">707</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> +</span><span id="Unionable-708"><a href="#Unionable-708"><span class="linenos">708</span></a> +</span><span id="Unionable-709"><a href="#Unionable-709"><span class="linenos">709</span></a><span class="sd"> Args:</span> +</span><span id="Unionable-710"><a href="#Unionable-710"><span class="linenos">710</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> +</span><span id="Unionable-711"><a href="#Unionable-711"><span class="linenos">711</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Unionable-712"><a href="#Unionable-712"><span class="linenos">712</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="Unionable-713"><a href="#Unionable-713"><span class="linenos">713</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Unionable-714"><a href="#Unionable-714"><span class="linenos">714</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Unionable-715"><a href="#Unionable-715"><span class="linenos">715</span></a><span class="sd"> Returns:</span> +</span><span id="Unionable-716"><a href="#Unionable-716"><span class="linenos">716</span></a><span class="sd"> Union: the Union expression.</span> +</span><span id="Unionable-717"><a href="#Unionable-717"><span class="linenos">717</span></a><span class="sd"> """</span> +</span><span id="Unionable-718"><a href="#Unionable-718"><span class="linenos">718</span></a> <span class="k">return</span> <span class="n">union</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Unionable-719"><a href="#Unionable-719"><span class="linenos">719</span></a> +</span><span id="Unionable-720"><a href="#Unionable-720"><span class="linenos">720</span></a> <span class="k">def</span> <span class="nf">intersect</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Unionable-721"><a href="#Unionable-721"><span class="linenos">721</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Unionable-722"><a href="#Unionable-722"><span class="linenos">722</span></a><span class="sd"> Builds an INTERSECT expression.</span> +</span><span id="Unionable-723"><a href="#Unionable-723"><span class="linenos">723</span></a> +</span><span id="Unionable-724"><a href="#Unionable-724"><span class="linenos">724</span></a><span class="sd"> Example:</span> +</span><span id="Unionable-725"><a href="#Unionable-725"><span class="linenos">725</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Unionable-726"><a href="#Unionable-726"><span class="linenos">726</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()</span> +</span><span id="Unionable-727"><a href="#Unionable-727"><span class="linenos">727</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> +</span><span id="Unionable-728"><a href="#Unionable-728"><span class="linenos">728</span></a> +</span><span id="Unionable-729"><a href="#Unionable-729"><span class="linenos">729</span></a><span class="sd"> Args:</span> +</span><span id="Unionable-730"><a href="#Unionable-730"><span class="linenos">730</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> +</span><span id="Unionable-731"><a href="#Unionable-731"><span class="linenos">731</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Unionable-732"><a href="#Unionable-732"><span class="linenos">732</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="Unionable-733"><a href="#Unionable-733"><span class="linenos">733</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Unionable-734"><a href="#Unionable-734"><span class="linenos">734</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Unionable-735"><a href="#Unionable-735"><span class="linenos">735</span></a><span class="sd"> Returns:</span> +</span><span id="Unionable-736"><a href="#Unionable-736"><span class="linenos">736</span></a><span class="sd"> Intersect: the Intersect expression</span> +</span><span id="Unionable-737"><a href="#Unionable-737"><span class="linenos">737</span></a><span class="sd"> """</span> +</span><span id="Unionable-738"><a href="#Unionable-738"><span class="linenos">738</span></a> <span class="k">return</span> <span class="n">intersect</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Unionable-739"><a href="#Unionable-739"><span class="linenos">739</span></a> +</span><span id="Unionable-740"><a href="#Unionable-740"><span class="linenos">740</span></a> <span class="k">def</span> <span class="nf">except_</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Unionable-741"><a href="#Unionable-741"><span class="linenos">741</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Unionable-742"><a href="#Unionable-742"><span class="linenos">742</span></a><span class="sd"> Builds an EXCEPT expression.</span> +</span><span id="Unionable-743"><a href="#Unionable-743"><span class="linenos">743</span></a> +</span><span id="Unionable-744"><a href="#Unionable-744"><span class="linenos">744</span></a><span class="sd"> Example:</span> +</span><span id="Unionable-745"><a href="#Unionable-745"><span class="linenos">745</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Unionable-746"><a href="#Unionable-746"><span class="linenos">746</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()</span> +</span><span id="Unionable-747"><a href="#Unionable-747"><span class="linenos">747</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> +</span><span id="Unionable-748"><a href="#Unionable-748"><span class="linenos">748</span></a> +</span><span id="Unionable-749"><a href="#Unionable-749"><span class="linenos">749</span></a><span class="sd"> Args:</span> +</span><span id="Unionable-750"><a href="#Unionable-750"><span class="linenos">750</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> +</span><span id="Unionable-751"><a href="#Unionable-751"><span class="linenos">751</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Unionable-752"><a href="#Unionable-752"><span class="linenos">752</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="Unionable-753"><a href="#Unionable-753"><span class="linenos">753</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Unionable-754"><a href="#Unionable-754"><span class="linenos">754</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Unionable-755"><a href="#Unionable-755"><span class="linenos">755</span></a><span class="sd"> Returns:</span> +</span><span id="Unionable-756"><a href="#Unionable-756"><span class="linenos">756</span></a><span class="sd"> Except: the Except expression</span> +</span><span id="Unionable-757"><a href="#Unionable-757"><span class="linenos">757</span></a><span class="sd"> """</span> +</span><span id="Unionable-758"><a href="#Unionable-758"><span class="linenos">758</span></a> <span class="k">return</span> <span class="n">except_</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -9765,25 +9913,25 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Unionable.union"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unionable.union-686"><a href="#Unionable.union-686"><span class="linenos">686</span></a> <span class="k">def</span> <span class="nf">union</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Unionable.union-687"><a href="#Unionable.union-687"><span class="linenos">687</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Unionable.union-688"><a href="#Unionable.union-688"><span class="linenos">688</span></a><span class="sd"> Builds a UNION expression.</span> -</span><span id="Unionable.union-689"><a href="#Unionable.union-689"><span class="linenos">689</span></a> -</span><span id="Unionable.union-690"><a href="#Unionable.union-690"><span class="linenos">690</span></a><span class="sd"> Example:</span> -</span><span id="Unionable.union-691"><a href="#Unionable.union-691"><span class="linenos">691</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Unionable.union-692"><a href="#Unionable.union-692"><span class="linenos">692</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()</span> -</span><span id="Unionable.union-693"><a href="#Unionable.union-693"><span class="linenos">693</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> -</span><span id="Unionable.union-694"><a href="#Unionable.union-694"><span class="linenos">694</span></a> -</span><span id="Unionable.union-695"><a href="#Unionable.union-695"><span class="linenos">695</span></a><span class="sd"> Args:</span> -</span><span id="Unionable.union-696"><a href="#Unionable.union-696"><span class="linenos">696</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> -</span><span id="Unionable.union-697"><a href="#Unionable.union-697"><span class="linenos">697</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Unionable.union-698"><a href="#Unionable.union-698"><span class="linenos">698</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="Unionable.union-699"><a href="#Unionable.union-699"><span class="linenos">699</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Unionable.union-700"><a href="#Unionable.union-700"><span class="linenos">700</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Unionable.union-701"><a href="#Unionable.union-701"><span class="linenos">701</span></a><span class="sd"> Returns:</span> -</span><span id="Unionable.union-702"><a href="#Unionable.union-702"><span class="linenos">702</span></a><span class="sd"> Union: the Union expression.</span> -</span><span id="Unionable.union-703"><a href="#Unionable.union-703"><span class="linenos">703</span></a><span class="sd"> """</span> -</span><span id="Unionable.union-704"><a href="#Unionable.union-704"><span class="linenos">704</span></a> <span class="k">return</span> <span class="n">union</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unionable.union-700"><a href="#Unionable.union-700"><span class="linenos">700</span></a> <span class="k">def</span> <span class="nf">union</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Unionable.union-701"><a href="#Unionable.union-701"><span class="linenos">701</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Unionable.union-702"><a href="#Unionable.union-702"><span class="linenos">702</span></a><span class="sd"> Builds a UNION expression.</span> +</span><span id="Unionable.union-703"><a href="#Unionable.union-703"><span class="linenos">703</span></a> +</span><span id="Unionable.union-704"><a href="#Unionable.union-704"><span class="linenos">704</span></a><span class="sd"> Example:</span> +</span><span id="Unionable.union-705"><a href="#Unionable.union-705"><span class="linenos">705</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Unionable.union-706"><a href="#Unionable.union-706"><span class="linenos">706</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").union("SELECT * FROM bla").sql()</span> +</span><span id="Unionable.union-707"><a href="#Unionable.union-707"><span class="linenos">707</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> +</span><span id="Unionable.union-708"><a href="#Unionable.union-708"><span class="linenos">708</span></a> +</span><span id="Unionable.union-709"><a href="#Unionable.union-709"><span class="linenos">709</span></a><span class="sd"> Args:</span> +</span><span id="Unionable.union-710"><a href="#Unionable.union-710"><span class="linenos">710</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> +</span><span id="Unionable.union-711"><a href="#Unionable.union-711"><span class="linenos">711</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Unionable.union-712"><a href="#Unionable.union-712"><span class="linenos">712</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="Unionable.union-713"><a href="#Unionable.union-713"><span class="linenos">713</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Unionable.union-714"><a href="#Unionable.union-714"><span class="linenos">714</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Unionable.union-715"><a href="#Unionable.union-715"><span class="linenos">715</span></a><span class="sd"> Returns:</span> +</span><span id="Unionable.union-716"><a href="#Unionable.union-716"><span class="linenos">716</span></a><span class="sd"> Union: the Union expression.</span> +</span><span id="Unionable.union-717"><a href="#Unionable.union-717"><span class="linenos">717</span></a><span class="sd"> """</span> +</span><span id="Unionable.union-718"><a href="#Unionable.union-718"><span class="linenos">718</span></a> <span class="k">return</span> <span class="n">union</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -9830,25 +9978,25 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Unionable.intersect"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unionable.intersect-706"><a href="#Unionable.intersect-706"><span class="linenos">706</span></a> <span class="k">def</span> <span class="nf">intersect</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Unionable.intersect-707"><a href="#Unionable.intersect-707"><span class="linenos">707</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Unionable.intersect-708"><a href="#Unionable.intersect-708"><span class="linenos">708</span></a><span class="sd"> Builds an INTERSECT expression.</span> -</span><span id="Unionable.intersect-709"><a href="#Unionable.intersect-709"><span class="linenos">709</span></a> -</span><span id="Unionable.intersect-710"><a href="#Unionable.intersect-710"><span class="linenos">710</span></a><span class="sd"> Example:</span> -</span><span id="Unionable.intersect-711"><a href="#Unionable.intersect-711"><span class="linenos">711</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Unionable.intersect-712"><a href="#Unionable.intersect-712"><span class="linenos">712</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()</span> -</span><span id="Unionable.intersect-713"><a href="#Unionable.intersect-713"><span class="linenos">713</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> -</span><span id="Unionable.intersect-714"><a href="#Unionable.intersect-714"><span class="linenos">714</span></a> -</span><span id="Unionable.intersect-715"><a href="#Unionable.intersect-715"><span class="linenos">715</span></a><span class="sd"> Args:</span> -</span><span id="Unionable.intersect-716"><a href="#Unionable.intersect-716"><span class="linenos">716</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> -</span><span id="Unionable.intersect-717"><a href="#Unionable.intersect-717"><span class="linenos">717</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Unionable.intersect-718"><a href="#Unionable.intersect-718"><span class="linenos">718</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="Unionable.intersect-719"><a href="#Unionable.intersect-719"><span class="linenos">719</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Unionable.intersect-720"><a href="#Unionable.intersect-720"><span class="linenos">720</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Unionable.intersect-721"><a href="#Unionable.intersect-721"><span class="linenos">721</span></a><span class="sd"> Returns:</span> -</span><span id="Unionable.intersect-722"><a href="#Unionable.intersect-722"><span class="linenos">722</span></a><span class="sd"> Intersect: the Intersect expression</span> -</span><span id="Unionable.intersect-723"><a href="#Unionable.intersect-723"><span class="linenos">723</span></a><span class="sd"> """</span> -</span><span id="Unionable.intersect-724"><a href="#Unionable.intersect-724"><span class="linenos">724</span></a> <span class="k">return</span> <span class="n">intersect</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unionable.intersect-720"><a href="#Unionable.intersect-720"><span class="linenos">720</span></a> <span class="k">def</span> <span class="nf">intersect</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Unionable.intersect-721"><a href="#Unionable.intersect-721"><span class="linenos">721</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Unionable.intersect-722"><a href="#Unionable.intersect-722"><span class="linenos">722</span></a><span class="sd"> Builds an INTERSECT expression.</span> +</span><span id="Unionable.intersect-723"><a href="#Unionable.intersect-723"><span class="linenos">723</span></a> +</span><span id="Unionable.intersect-724"><a href="#Unionable.intersect-724"><span class="linenos">724</span></a><span class="sd"> Example:</span> +</span><span id="Unionable.intersect-725"><a href="#Unionable.intersect-725"><span class="linenos">725</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Unionable.intersect-726"><a href="#Unionable.intersect-726"><span class="linenos">726</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").intersect("SELECT * FROM bla").sql()</span> +</span><span id="Unionable.intersect-727"><a href="#Unionable.intersect-727"><span class="linenos">727</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> +</span><span id="Unionable.intersect-728"><a href="#Unionable.intersect-728"><span class="linenos">728</span></a> +</span><span id="Unionable.intersect-729"><a href="#Unionable.intersect-729"><span class="linenos">729</span></a><span class="sd"> Args:</span> +</span><span id="Unionable.intersect-730"><a href="#Unionable.intersect-730"><span class="linenos">730</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> +</span><span id="Unionable.intersect-731"><a href="#Unionable.intersect-731"><span class="linenos">731</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Unionable.intersect-732"><a href="#Unionable.intersect-732"><span class="linenos">732</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="Unionable.intersect-733"><a href="#Unionable.intersect-733"><span class="linenos">733</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Unionable.intersect-734"><a href="#Unionable.intersect-734"><span class="linenos">734</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Unionable.intersect-735"><a href="#Unionable.intersect-735"><span class="linenos">735</span></a><span class="sd"> Returns:</span> +</span><span id="Unionable.intersect-736"><a href="#Unionable.intersect-736"><span class="linenos">736</span></a><span class="sd"> Intersect: the Intersect expression</span> +</span><span id="Unionable.intersect-737"><a href="#Unionable.intersect-737"><span class="linenos">737</span></a><span class="sd"> """</span> +</span><span id="Unionable.intersect-738"><a href="#Unionable.intersect-738"><span class="linenos">738</span></a> <span class="k">return</span> <span class="n">intersect</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -9895,25 +10043,25 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Unionable.except_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unionable.except_-726"><a href="#Unionable.except_-726"><span class="linenos">726</span></a> <span class="k">def</span> <span class="nf">except_</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Unionable.except_-727"><a href="#Unionable.except_-727"><span class="linenos">727</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Unionable.except_-728"><a href="#Unionable.except_-728"><span class="linenos">728</span></a><span class="sd"> Builds an EXCEPT expression.</span> -</span><span id="Unionable.except_-729"><a href="#Unionable.except_-729"><span class="linenos">729</span></a> -</span><span id="Unionable.except_-730"><a href="#Unionable.except_-730"><span class="linenos">730</span></a><span class="sd"> Example:</span> -</span><span id="Unionable.except_-731"><a href="#Unionable.except_-731"><span class="linenos">731</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Unionable.except_-732"><a href="#Unionable.except_-732"><span class="linenos">732</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()</span> -</span><span id="Unionable.except_-733"><a href="#Unionable.except_-733"><span class="linenos">733</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> -</span><span id="Unionable.except_-734"><a href="#Unionable.except_-734"><span class="linenos">734</span></a> -</span><span id="Unionable.except_-735"><a href="#Unionable.except_-735"><span class="linenos">735</span></a><span class="sd"> Args:</span> -</span><span id="Unionable.except_-736"><a href="#Unionable.except_-736"><span class="linenos">736</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> -</span><span id="Unionable.except_-737"><a href="#Unionable.except_-737"><span class="linenos">737</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Unionable.except_-738"><a href="#Unionable.except_-738"><span class="linenos">738</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="Unionable.except_-739"><a href="#Unionable.except_-739"><span class="linenos">739</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Unionable.except_-740"><a href="#Unionable.except_-740"><span class="linenos">740</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Unionable.except_-741"><a href="#Unionable.except_-741"><span class="linenos">741</span></a><span class="sd"> Returns:</span> -</span><span id="Unionable.except_-742"><a href="#Unionable.except_-742"><span class="linenos">742</span></a><span class="sd"> Except: the Except expression</span> -</span><span id="Unionable.except_-743"><a href="#Unionable.except_-743"><span class="linenos">743</span></a><span class="sd"> """</span> -</span><span id="Unionable.except_-744"><a href="#Unionable.except_-744"><span class="linenos">744</span></a> <span class="k">return</span> <span class="n">except_</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unionable.except_-740"><a href="#Unionable.except_-740"><span class="linenos">740</span></a> <span class="k">def</span> <span class="nf">except_</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">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Unionable.except_-741"><a href="#Unionable.except_-741"><span class="linenos">741</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Unionable.except_-742"><a href="#Unionable.except_-742"><span class="linenos">742</span></a><span class="sd"> Builds an EXCEPT expression.</span> +</span><span id="Unionable.except_-743"><a href="#Unionable.except_-743"><span class="linenos">743</span></a> +</span><span id="Unionable.except_-744"><a href="#Unionable.except_-744"><span class="linenos">744</span></a><span class="sd"> Example:</span> +</span><span id="Unionable.except_-745"><a href="#Unionable.except_-745"><span class="linenos">745</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Unionable.except_-746"><a href="#Unionable.except_-746"><span class="linenos">746</span></a><span class="sd"> >>> sqlglot.parse_one("SELECT * FROM foo").except_("SELECT * FROM bla").sql()</span> +</span><span id="Unionable.except_-747"><a href="#Unionable.except_-747"><span class="linenos">747</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> +</span><span id="Unionable.except_-748"><a href="#Unionable.except_-748"><span class="linenos">748</span></a> +</span><span id="Unionable.except_-749"><a href="#Unionable.except_-749"><span class="linenos">749</span></a><span class="sd"> Args:</span> +</span><span id="Unionable.except_-750"><a href="#Unionable.except_-750"><span class="linenos">750</span></a><span class="sd"> expression (str | Expression): the SQL code string.</span> +</span><span id="Unionable.except_-751"><a href="#Unionable.except_-751"><span class="linenos">751</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Unionable.except_-752"><a href="#Unionable.except_-752"><span class="linenos">752</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="Unionable.except_-753"><a href="#Unionable.except_-753"><span class="linenos">753</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Unionable.except_-754"><a href="#Unionable.except_-754"><span class="linenos">754</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Unionable.except_-755"><a href="#Unionable.except_-755"><span class="linenos">755</span></a><span class="sd"> Returns:</span> +</span><span id="Unionable.except_-756"><a href="#Unionable.except_-756"><span class="linenos">756</span></a><span class="sd"> Except: the Except expression</span> +</span><span id="Unionable.except_-757"><a href="#Unionable.except_-757"><span class="linenos">757</span></a><span class="sd"> """</span> +</span><span id="Unionable.except_-758"><a href="#Unionable.except_-758"><span class="linenos">758</span></a> <span class="k">return</span> <span class="n">except_</span><span class="p">(</span><span class="n">left</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">right</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -10003,8 +10151,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#UDTF"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UDTF-747"><a href="#UDTF-747"><span class="linenos">747</span></a><span class="k">class</span> <span class="nc">UDTF</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">,</span> <span class="n">Unionable</span><span class="p">):</span> -</span><span id="UDTF-748"><a href="#UDTF-748"><span class="linenos">748</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UDTF-761"><a href="#UDTF-761"><span class="linenos">761</span></a><span class="k">class</span> <span class="nc">UDTF</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">,</span> <span class="n">Unionable</span><span class="p">):</span> +</span><span id="UDTF-762"><a href="#UDTF-762"><span class="linenos">762</span></a> <span class="k">pass</span> </span></pre></div> @@ -10070,14 +10218,14 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Cache"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cache-751"><a href="#Cache-751"><span class="linenos">751</span></a><span class="k">class</span> <span class="nc">Cache</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Cache-752"><a href="#Cache-752"><span class="linenos">752</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Cache-753"><a href="#Cache-753"><span class="linenos">753</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Cache-754"><a href="#Cache-754"><span class="linenos">754</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Cache-755"><a href="#Cache-755"><span class="linenos">755</span></a> <span class="s2">"lazy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Cache-756"><a href="#Cache-756"><span class="linenos">756</span></a> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Cache-757"><a href="#Cache-757"><span class="linenos">757</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Cache-758"><a href="#Cache-758"><span class="linenos">758</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cache-765"><a href="#Cache-765"><span class="linenos">765</span></a><span class="k">class</span> <span class="nc">Cache</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Cache-766"><a href="#Cache-766"><span class="linenos">766</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Cache-767"><a href="#Cache-767"><span class="linenos">767</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Cache-768"><a href="#Cache-768"><span class="linenos">768</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Cache-769"><a href="#Cache-769"><span class="linenos">769</span></a> <span class="s2">"lazy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Cache-770"><a href="#Cache-770"><span class="linenos">770</span></a> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Cache-771"><a href="#Cache-771"><span class="linenos">771</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Cache-772"><a href="#Cache-772"><span class="linenos">772</span></a> <span class="p">}</span> </span></pre></div> @@ -10137,8 +10285,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Uncache"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Uncache-761"><a href="#Uncache-761"><span class="linenos">761</span></a><span class="k">class</span> <span class="nc">Uncache</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Uncache-762"><a href="#Uncache-762"><span class="linenos">762</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Uncache-775"><a href="#Uncache-775"><span class="linenos">775</span></a><span class="k">class</span> <span class="nc">Uncache</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Uncache-776"><a href="#Uncache-776"><span class="linenos">776</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -10198,31 +10346,20 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Create"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Create-765"><a href="#Create-765"><span class="linenos">765</span></a><span class="k">class</span> <span class="nc">Create</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Create-766"><a href="#Create-766"><span class="linenos">766</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Create-767"><a href="#Create-767"><span class="linenos">767</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-768"><a href="#Create-768"><span class="linenos">768</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Create-769"><a href="#Create-769"><span class="linenos">769</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Create-770"><a href="#Create-770"><span class="linenos">770</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-771"><a href="#Create-771"><span class="linenos">771</span></a> <span class="s2">"set"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-772"><a href="#Create-772"><span class="linenos">772</span></a> <span class="s2">"multiset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-773"><a href="#Create-773"><span class="linenos">773</span></a> <span class="s2">"global_temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-774"><a href="#Create-774"><span class="linenos">774</span></a> <span class="s2">"volatile"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-775"><a href="#Create-775"><span class="linenos">775</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-776"><a href="#Create-776"><span class="linenos">776</span></a> <span class="s2">"properties"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-777"><a href="#Create-777"><span class="linenos">777</span></a> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-778"><a href="#Create-778"><span class="linenos">778</span></a> <span class="s2">"transient"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-779"><a href="#Create-779"><span class="linenos">779</span></a> <span class="s2">"external"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-780"><a href="#Create-780"><span class="linenos">780</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-781"><a href="#Create-781"><span class="linenos">781</span></a> <span class="s2">"unique"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-782"><a href="#Create-782"><span class="linenos">782</span></a> <span class="s2">"materialized"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-783"><a href="#Create-783"><span class="linenos">783</span></a> <span class="s2">"data"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-784"><a href="#Create-784"><span class="linenos">784</span></a> <span class="s2">"statistics"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-785"><a href="#Create-785"><span class="linenos">785</span></a> <span class="s2">"no_primary_index"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-786"><a href="#Create-786"><span class="linenos">786</span></a> <span class="s2">"indexes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-787"><a href="#Create-787"><span class="linenos">787</span></a> <span class="s2">"no_schema_binding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-788"><a href="#Create-788"><span class="linenos">788</span></a> <span class="s2">"begin"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Create-789"><a href="#Create-789"><span class="linenos">789</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Create-779"><a href="#Create-779"><span class="linenos">779</span></a><span class="k">class</span> <span class="nc">Create</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Create-780"><a href="#Create-780"><span class="linenos">780</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Create-781"><a href="#Create-781"><span class="linenos">781</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Create-782"><a href="#Create-782"><span class="linenos">782</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Create-783"><a href="#Create-783"><span class="linenos">783</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Create-784"><a href="#Create-784"><span class="linenos">784</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Create-785"><a href="#Create-785"><span class="linenos">785</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Create-786"><a href="#Create-786"><span class="linenos">786</span></a> <span class="s2">"properties"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Create-787"><a href="#Create-787"><span class="linenos">787</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Create-788"><a href="#Create-788"><span class="linenos">788</span></a> <span class="s2">"unique"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Create-789"><a href="#Create-789"><span class="linenos">789</span></a> <span class="s2">"indexes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Create-790"><a href="#Create-790"><span class="linenos">790</span></a> <span class="s2">"no_schema_binding"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Create-791"><a href="#Create-791"><span class="linenos">791</span></a> <span class="s2">"begin"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Create-792"><a href="#Create-792"><span class="linenos">792</span></a> <span class="p">}</span> </span></pre></div> @@ -10282,8 +10419,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Describe"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Describe-792"><a href="#Describe-792"><span class="linenos">792</span></a><span class="k">class</span> <span class="nc">Describe</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Describe-793"><a href="#Describe-793"><span class="linenos">793</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Describe-795"><a href="#Describe-795"><span class="linenos">795</span></a><span class="k">class</span> <span class="nc">Describe</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Describe-796"><a href="#Describe-796"><span class="linenos">796</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -10343,8 +10480,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Set"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Set-796"><a href="#Set-796"><span class="linenos">796</span></a><span class="k">class</span> <span class="nc">Set</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Set-797"><a href="#Set-797"><span class="linenos">797</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Set-799"><a href="#Set-799"><span class="linenos">799</span></a><span class="k">class</span> <span class="nc">Set</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Set-800"><a href="#Set-800"><span class="linenos">800</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -10404,14 +10541,14 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#SetItem"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SetItem-800"><a href="#SetItem-800"><span class="linenos">800</span></a><span class="k">class</span> <span class="nc">SetItem</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="SetItem-801"><a href="#SetItem-801"><span class="linenos">801</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="SetItem-802"><a href="#SetItem-802"><span class="linenos">802</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="SetItem-803"><a href="#SetItem-803"><span class="linenos">803</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="SetItem-804"><a href="#SetItem-804"><span class="linenos">804</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="SetItem-805"><a href="#SetItem-805"><span class="linenos">805</span></a> <span class="s2">"collate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="c1"># MySQL SET NAMES statement</span> -</span><span id="SetItem-806"><a href="#SetItem-806"><span class="linenos">806</span></a> <span class="s2">"global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="SetItem-807"><a href="#SetItem-807"><span class="linenos">807</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SetItem-803"><a href="#SetItem-803"><span class="linenos">803</span></a><span class="k">class</span> <span class="nc">SetItem</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="SetItem-804"><a href="#SetItem-804"><span class="linenos">804</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="SetItem-805"><a href="#SetItem-805"><span class="linenos">805</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="SetItem-806"><a href="#SetItem-806"><span class="linenos">806</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="SetItem-807"><a href="#SetItem-807"><span class="linenos">807</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="SetItem-808"><a href="#SetItem-808"><span class="linenos">808</span></a> <span class="s2">"collate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="c1"># MySQL SET NAMES statement</span> +</span><span id="SetItem-809"><a href="#SetItem-809"><span class="linenos">809</span></a> <span class="s2">"global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="SetItem-810"><a href="#SetItem-810"><span class="linenos">810</span></a> <span class="p">}</span> </span></pre></div> @@ -10471,24 +10608,24 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Show"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Show-810"><a href="#Show-810"><span class="linenos">810</span></a><span class="k">class</span> <span class="nc">Show</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Show-811"><a href="#Show-811"><span class="linenos">811</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Show-812"><a href="#Show-812"><span class="linenos">812</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Show-813"><a href="#Show-813"><span class="linenos">813</span></a> <span class="s2">"target"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-814"><a href="#Show-814"><span class="linenos">814</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-815"><a href="#Show-815"><span class="linenos">815</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-816"><a href="#Show-816"><span class="linenos">816</span></a> <span class="s2">"like"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-817"><a href="#Show-817"><span class="linenos">817</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-818"><a href="#Show-818"><span class="linenos">818</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-819"><a href="#Show-819"><span class="linenos">819</span></a> <span class="s2">"full"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-820"><a href="#Show-820"><span class="linenos">820</span></a> <span class="s2">"mutex"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-821"><a href="#Show-821"><span class="linenos">821</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-822"><a href="#Show-822"><span class="linenos">822</span></a> <span class="s2">"channel"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-823"><a href="#Show-823"><span class="linenos">823</span></a> <span class="s2">"global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-824"><a href="#Show-824"><span class="linenos">824</span></a> <span class="s2">"log"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-825"><a href="#Show-825"><span class="linenos">825</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-826"><a href="#Show-826"><span class="linenos">826</span></a> <span class="s2">"types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Show-827"><a href="#Show-827"><span class="linenos">827</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Show-813"><a href="#Show-813"><span class="linenos">813</span></a><span class="k">class</span> <span class="nc">Show</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Show-814"><a href="#Show-814"><span class="linenos">814</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Show-815"><a href="#Show-815"><span class="linenos">815</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Show-816"><a href="#Show-816"><span class="linenos">816</span></a> <span class="s2">"target"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-817"><a href="#Show-817"><span class="linenos">817</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-818"><a href="#Show-818"><span class="linenos">818</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-819"><a href="#Show-819"><span class="linenos">819</span></a> <span class="s2">"like"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-820"><a href="#Show-820"><span class="linenos">820</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-821"><a href="#Show-821"><span class="linenos">821</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-822"><a href="#Show-822"><span class="linenos">822</span></a> <span class="s2">"full"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-823"><a href="#Show-823"><span class="linenos">823</span></a> <span class="s2">"mutex"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-824"><a href="#Show-824"><span class="linenos">824</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-825"><a href="#Show-825"><span class="linenos">825</span></a> <span class="s2">"channel"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-826"><a href="#Show-826"><span class="linenos">826</span></a> <span class="s2">"global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-827"><a href="#Show-827"><span class="linenos">827</span></a> <span class="s2">"log"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-828"><a href="#Show-828"><span class="linenos">828</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-829"><a href="#Show-829"><span class="linenos">829</span></a> <span class="s2">"types"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Show-830"><a href="#Show-830"><span class="linenos">830</span></a> <span class="p">}</span> </span></pre></div> @@ -10548,8 +10685,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#UserDefinedFunction"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UserDefinedFunction-830"><a href="#UserDefinedFunction-830"><span class="linenos">830</span></a><span class="k">class</span> <span class="nc">UserDefinedFunction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="UserDefinedFunction-831"><a href="#UserDefinedFunction-831"><span class="linenos">831</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"wrapped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UserDefinedFunction-833"><a href="#UserDefinedFunction-833"><span class="linenos">833</span></a><span class="k">class</span> <span class="nc">UserDefinedFunction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="UserDefinedFunction-834"><a href="#UserDefinedFunction-834"><span class="linenos">834</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"wrapped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -10609,8 +10746,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#CharacterSet"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CharacterSet-834"><a href="#CharacterSet-834"><span class="linenos">834</span></a><span class="k">class</span> <span class="nc">CharacterSet</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="CharacterSet-835"><a href="#CharacterSet-835"><span class="linenos">835</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CharacterSet-837"><a href="#CharacterSet-837"><span class="linenos">837</span></a><span class="k">class</span> <span class="nc">CharacterSet</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="CharacterSet-838"><a href="#CharacterSet-838"><span class="linenos">838</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -10670,12 +10807,12 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#With"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="With-838"><a href="#With-838"><span class="linenos">838</span></a><span class="k">class</span> <span class="nc">With</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="With-839"><a href="#With-839"><span class="linenos">839</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"recursive"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="With-840"><a href="#With-840"><span class="linenos">840</span></a> -</span><span id="With-841"><a href="#With-841"><span class="linenos">841</span></a> <span class="nd">@property</span> -</span><span id="With-842"><a href="#With-842"><span class="linenos">842</span></a> <span class="k">def</span> <span class="nf">recursive</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="With-843"><a href="#With-843"><span class="linenos">843</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</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">"recursive"</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="With-841"><a href="#With-841"><span class="linenos">841</span></a><span class="k">class</span> <span class="nc">With</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="With-842"><a href="#With-842"><span class="linenos">842</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"recursive"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="With-843"><a href="#With-843"><span class="linenos">843</span></a> +</span><span id="With-844"><a href="#With-844"><span class="linenos">844</span></a> <span class="nd">@property</span> +</span><span id="With-845"><a href="#With-845"><span class="linenos">845</span></a> <span class="k">def</span> <span class="nf">recursive</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="With-846"><a href="#With-846"><span class="linenos">846</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</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">"recursive"</span><span class="p">))</span> </span></pre></div> @@ -10735,8 +10872,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#WithinGroup"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="WithinGroup-846"><a href="#WithinGroup-846"><span class="linenos">846</span></a><span class="k">class</span> <span class="nc">WithinGroup</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="WithinGroup-847"><a href="#WithinGroup-847"><span class="linenos">847</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="WithinGroup-849"><a href="#WithinGroup-849"><span class="linenos">849</span></a><span class="k">class</span> <span class="nc">WithinGroup</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="WithinGroup-850"><a href="#WithinGroup-850"><span class="linenos">850</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -10796,8 +10933,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#CTE"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CTE-850"><a href="#CTE-850"><span class="linenos">850</span></a><span class="k">class</span> <span class="nc">CTE</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">):</span> -</span><span id="CTE-851"><a href="#CTE-851"><span class="linenos">851</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CTE-853"><a href="#CTE-853"><span class="linenos">853</span></a><span class="k">class</span> <span class="nc">CTE</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">):</span> +</span><span id="CTE-854"><a href="#CTE-854"><span class="linenos">854</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -10857,12 +10994,12 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#TableAlias"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TableAlias-854"><a href="#TableAlias-854"><span class="linenos">854</span></a><span class="k">class</span> <span class="nc">TableAlias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="TableAlias-855"><a href="#TableAlias-855"><span class="linenos">855</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="TableAlias-856"><a href="#TableAlias-856"><span class="linenos">856</span></a> -</span><span id="TableAlias-857"><a href="#TableAlias-857"><span class="linenos">857</span></a> <span class="nd">@property</span> -</span><span id="TableAlias-858"><a href="#TableAlias-858"><span class="linenos">858</span></a> <span class="k">def</span> <span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="TableAlias-859"><a href="#TableAlias-859"><span class="linenos">859</span></a> <span class="k">return</span> <span class="bp">self</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">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TableAlias-857"><a href="#TableAlias-857"><span class="linenos">857</span></a><span class="k">class</span> <span class="nc">TableAlias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="TableAlias-858"><a href="#TableAlias-858"><span class="linenos">858</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="TableAlias-859"><a href="#TableAlias-859"><span class="linenos">859</span></a> +</span><span id="TableAlias-860"><a href="#TableAlias-860"><span class="linenos">860</span></a> <span class="nd">@property</span> +</span><span id="TableAlias-861"><a href="#TableAlias-861"><span class="linenos">861</span></a> <span class="k">def</span> <span class="nf">columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="TableAlias-862"><a href="#TableAlias-862"><span class="linenos">862</span></a> <span class="k">return</span> <span class="bp">self</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">"columns"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]</span> </span></pre></div> @@ -10922,8 +11059,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#BitString"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitString-862"><a href="#BitString-862"><span class="linenos">862</span></a><span class="k">class</span> <span class="nc">BitString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="BitString-863"><a href="#BitString-863"><span class="linenos">863</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitString-865"><a href="#BitString-865"><span class="linenos">865</span></a><span class="k">class</span> <span class="nc">BitString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="BitString-866"><a href="#BitString-866"><span class="linenos">866</span></a> <span class="k">pass</span> </span></pre></div> @@ -10989,8 +11126,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#HexString"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="HexString-866"><a href="#HexString-866"><span class="linenos">866</span></a><span class="k">class</span> <span class="nc">HexString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="HexString-867"><a href="#HexString-867"><span class="linenos">867</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="HexString-869"><a href="#HexString-869"><span class="linenos">869</span></a><span class="k">class</span> <span class="nc">HexString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="HexString-870"><a href="#HexString-870"><span class="linenos">870</span></a> <span class="k">pass</span> </span></pre></div> @@ -11056,8 +11193,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#ByteString"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ByteString-870"><a href="#ByteString-870"><span class="linenos">870</span></a><span class="k">class</span> <span class="nc">ByteString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="ByteString-871"><a href="#ByteString-871"><span class="linenos">871</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ByteString-873"><a href="#ByteString-873"><span class="linenos">873</span></a><span class="k">class</span> <span class="nc">ByteString</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="ByteString-874"><a href="#ByteString-874"><span class="linenos">874</span></a> <span class="k">pass</span> </span></pre></div> @@ -11123,24 +11260,24 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Column"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Column-874"><a href="#Column-874"><span class="linenos">874</span></a><span class="k">class</span> <span class="nc">Column</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Column-875"><a href="#Column-875"><span class="linenos">875</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"catalog"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Column-876"><a href="#Column-876"><span class="linenos">876</span></a> -</span><span id="Column-877"><a href="#Column-877"><span class="linenos">877</span></a> <span class="nd">@property</span> -</span><span id="Column-878"><a href="#Column-878"><span class="linenos">878</span></a> <span class="k">def</span> <span class="nf">table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Column-879"><a href="#Column-879"><span class="linenos">879</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"table"</span><span class="p">)</span> -</span><span id="Column-880"><a href="#Column-880"><span class="linenos">880</span></a> -</span><span id="Column-881"><a href="#Column-881"><span class="linenos">881</span></a> <span class="nd">@property</span> -</span><span id="Column-882"><a href="#Column-882"><span class="linenos">882</span></a> <span class="k">def</span> <span class="nf">db</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Column-883"><a href="#Column-883"><span class="linenos">883</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">)</span> -</span><span id="Column-884"><a href="#Column-884"><span class="linenos">884</span></a> -</span><span id="Column-885"><a href="#Column-885"><span class="linenos">885</span></a> <span class="nd">@property</span> -</span><span id="Column-886"><a href="#Column-886"><span class="linenos">886</span></a> <span class="k">def</span> <span class="nf">catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Column-887"><a href="#Column-887"><span class="linenos">887</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">)</span> -</span><span id="Column-888"><a href="#Column-888"><span class="linenos">888</span></a> -</span><span id="Column-889"><a href="#Column-889"><span class="linenos">889</span></a> <span class="nd">@property</span> -</span><span id="Column-890"><a href="#Column-890"><span class="linenos">890</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Column-891"><a href="#Column-891"><span class="linenos">891</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Column-877"><a href="#Column-877"><span class="linenos">877</span></a><span class="k">class</span> <span class="nc">Column</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Column-878"><a href="#Column-878"><span class="linenos">878</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"catalog"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Column-879"><a href="#Column-879"><span class="linenos">879</span></a> +</span><span id="Column-880"><a href="#Column-880"><span class="linenos">880</span></a> <span class="nd">@property</span> +</span><span id="Column-881"><a href="#Column-881"><span class="linenos">881</span></a> <span class="k">def</span> <span class="nf">table</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Column-882"><a href="#Column-882"><span class="linenos">882</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"table"</span><span class="p">)</span> +</span><span id="Column-883"><a href="#Column-883"><span class="linenos">883</span></a> +</span><span id="Column-884"><a href="#Column-884"><span class="linenos">884</span></a> <span class="nd">@property</span> +</span><span id="Column-885"><a href="#Column-885"><span class="linenos">885</span></a> <span class="k">def</span> <span class="nf">db</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Column-886"><a href="#Column-886"><span class="linenos">886</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">)</span> +</span><span id="Column-887"><a href="#Column-887"><span class="linenos">887</span></a> +</span><span id="Column-888"><a href="#Column-888"><span class="linenos">888</span></a> <span class="nd">@property</span> +</span><span id="Column-889"><a href="#Column-889"><span class="linenos">889</span></a> <span class="k">def</span> <span class="nf">catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Column-890"><a href="#Column-890"><span class="linenos">890</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">)</span> +</span><span id="Column-891"><a href="#Column-891"><span class="linenos">891</span></a> +</span><span id="Column-892"><a href="#Column-892"><span class="linenos">892</span></a> <span class="nd">@property</span> +</span><span id="Column-893"><a href="#Column-893"><span class="linenos">893</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Column-894"><a href="#Column-894"><span class="linenos">894</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -11235,13 +11372,13 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#ColumnDef"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ColumnDef-894"><a href="#ColumnDef-894"><span class="linenos">894</span></a><span class="k">class</span> <span class="nc">ColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="ColumnDef-895"><a href="#ColumnDef-895"><span class="linenos">895</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="ColumnDef-896"><a href="#ColumnDef-896"><span class="linenos">896</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="ColumnDef-897"><a href="#ColumnDef-897"><span class="linenos">897</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ColumnDef-898"><a href="#ColumnDef-898"><span class="linenos">898</span></a> <span class="s2">"constraints"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ColumnDef-899"><a href="#ColumnDef-899"><span class="linenos">899</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ColumnDef-900"><a href="#ColumnDef-900"><span class="linenos">900</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ColumnDef-897"><a href="#ColumnDef-897"><span class="linenos">897</span></a><span class="k">class</span> <span class="nc">ColumnDef</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="ColumnDef-898"><a href="#ColumnDef-898"><span class="linenos">898</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="ColumnDef-899"><a href="#ColumnDef-899"><span class="linenos">899</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="ColumnDef-900"><a href="#ColumnDef-900"><span class="linenos">900</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ColumnDef-901"><a href="#ColumnDef-901"><span class="linenos">901</span></a> <span class="s2">"constraints"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ColumnDef-902"><a href="#ColumnDef-902"><span class="linenos">902</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ColumnDef-903"><a href="#ColumnDef-903"><span class="linenos">903</span></a> <span class="p">}</span> </span></pre></div> @@ -11301,15 +11438,15 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#AlterColumn"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AlterColumn-903"><a href="#AlterColumn-903"><span class="linenos">903</span></a><span class="k">class</span> <span class="nc">AlterColumn</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="AlterColumn-904"><a href="#AlterColumn-904"><span class="linenos">904</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="AlterColumn-905"><a href="#AlterColumn-905"><span class="linenos">905</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="AlterColumn-906"><a href="#AlterColumn-906"><span class="linenos">906</span></a> <span class="s2">"dtype"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="AlterColumn-907"><a href="#AlterColumn-907"><span class="linenos">907</span></a> <span class="s2">"collate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="AlterColumn-908"><a href="#AlterColumn-908"><span class="linenos">908</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="AlterColumn-909"><a href="#AlterColumn-909"><span class="linenos">909</span></a> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="AlterColumn-910"><a href="#AlterColumn-910"><span class="linenos">910</span></a> <span class="s2">"drop"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="AlterColumn-911"><a href="#AlterColumn-911"><span class="linenos">911</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AlterColumn-906"><a href="#AlterColumn-906"><span class="linenos">906</span></a><span class="k">class</span> <span class="nc">AlterColumn</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="AlterColumn-907"><a href="#AlterColumn-907"><span class="linenos">907</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="AlterColumn-908"><a href="#AlterColumn-908"><span class="linenos">908</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="AlterColumn-909"><a href="#AlterColumn-909"><span class="linenos">909</span></a> <span class="s2">"dtype"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="AlterColumn-910"><a href="#AlterColumn-910"><span class="linenos">910</span></a> <span class="s2">"collate"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="AlterColumn-911"><a href="#AlterColumn-911"><span class="linenos">911</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="AlterColumn-912"><a href="#AlterColumn-912"><span class="linenos">912</span></a> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="AlterColumn-913"><a href="#AlterColumn-913"><span class="linenos">913</span></a> <span class="s2">"drop"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="AlterColumn-914"><a href="#AlterColumn-914"><span class="linenos">914</span></a> <span class="p">}</span> </span></pre></div> @@ -11369,8 +11506,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#RenameTable"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RenameTable-914"><a href="#RenameTable-914"><span class="linenos">914</span></a><span class="k">class</span> <span class="nc">RenameTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="RenameTable-915"><a href="#RenameTable-915"><span class="linenos">915</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RenameTable-917"><a href="#RenameTable-917"><span class="linenos">917</span></a><span class="k">class</span> <span class="nc">RenameTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="RenameTable-918"><a href="#RenameTable-918"><span class="linenos">918</span></a> <span class="k">pass</span> </span></pre></div> @@ -11430,8 +11567,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#ColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ColumnConstraint-918"><a href="#ColumnConstraint-918"><span class="linenos">918</span></a><span class="k">class</span> <span class="nc">ColumnConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="ColumnConstraint-919"><a href="#ColumnConstraint-919"><span class="linenos">919</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ColumnConstraint-921"><a href="#ColumnConstraint-921"><span class="linenos">921</span></a><span class="k">class</span> <span class="nc">ColumnConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="ColumnConstraint-922"><a href="#ColumnConstraint-922"><span class="linenos">922</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -11491,8 +11628,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#ColumnConstraintKind"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ColumnConstraintKind-922"><a href="#ColumnConstraintKind-922"><span class="linenos">922</span></a><span class="k">class</span> <span class="nc">ColumnConstraintKind</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="ColumnConstraintKind-923"><a href="#ColumnConstraintKind-923"><span class="linenos">923</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ColumnConstraintKind-925"><a href="#ColumnConstraintKind-925"><span class="linenos">925</span></a><span class="k">class</span> <span class="nc">ColumnConstraintKind</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="ColumnConstraintKind-926"><a href="#ColumnConstraintKind-926"><span class="linenos">926</span></a> <span class="k">pass</span> </span></pre></div> @@ -11552,8 +11689,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#AutoIncrementColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AutoIncrementColumnConstraint-926"><a href="#AutoIncrementColumnConstraint-926"><span class="linenos">926</span></a><span class="k">class</span> <span class="nc">AutoIncrementColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="AutoIncrementColumnConstraint-927"><a href="#AutoIncrementColumnConstraint-927"><span class="linenos">927</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AutoIncrementColumnConstraint-929"><a href="#AutoIncrementColumnConstraint-929"><span class="linenos">929</span></a><span class="k">class</span> <span class="nc">AutoIncrementColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="AutoIncrementColumnConstraint-930"><a href="#AutoIncrementColumnConstraint-930"><span class="linenos">930</span></a> <span class="k">pass</span> </span></pre></div> @@ -11613,8 +11750,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#CaseSpecificColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CaseSpecificColumnConstraint-930"><a href="#CaseSpecificColumnConstraint-930"><span class="linenos">930</span></a><span class="k">class</span> <span class="nc">CaseSpecificColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="CaseSpecificColumnConstraint-931"><a href="#CaseSpecificColumnConstraint-931"><span class="linenos">931</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"not_"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CaseSpecificColumnConstraint-933"><a href="#CaseSpecificColumnConstraint-933"><span class="linenos">933</span></a><span class="k">class</span> <span class="nc">CaseSpecificColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="CaseSpecificColumnConstraint-934"><a href="#CaseSpecificColumnConstraint-934"><span class="linenos">934</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"not_"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -11674,8 +11811,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#CharacterSetColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CharacterSetColumnConstraint-934"><a href="#CharacterSetColumnConstraint-934"><span class="linenos">934</span></a><span class="k">class</span> <span class="nc">CharacterSetColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="CharacterSetColumnConstraint-935"><a href="#CharacterSetColumnConstraint-935"><span class="linenos">935</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CharacterSetColumnConstraint-937"><a href="#CharacterSetColumnConstraint-937"><span class="linenos">937</span></a><span class="k">class</span> <span class="nc">CharacterSetColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="CharacterSetColumnConstraint-938"><a href="#CharacterSetColumnConstraint-938"><span class="linenos">938</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -11735,8 +11872,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#CheckColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CheckColumnConstraint-938"><a href="#CheckColumnConstraint-938"><span class="linenos">938</span></a><span class="k">class</span> <span class="nc">CheckColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="CheckColumnConstraint-939"><a href="#CheckColumnConstraint-939"><span class="linenos">939</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CheckColumnConstraint-941"><a href="#CheckColumnConstraint-941"><span class="linenos">941</span></a><span class="k">class</span> <span class="nc">CheckColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="CheckColumnConstraint-942"><a href="#CheckColumnConstraint-942"><span class="linenos">942</span></a> <span class="k">pass</span> </span></pre></div> @@ -11796,8 +11933,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#CollateColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CollateColumnConstraint-942"><a href="#CollateColumnConstraint-942"><span class="linenos">942</span></a><span class="k">class</span> <span class="nc">CollateColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="CollateColumnConstraint-943"><a href="#CollateColumnConstraint-943"><span class="linenos">943</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CollateColumnConstraint-945"><a href="#CollateColumnConstraint-945"><span class="linenos">945</span></a><span class="k">class</span> <span class="nc">CollateColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="CollateColumnConstraint-946"><a href="#CollateColumnConstraint-946"><span class="linenos">946</span></a> <span class="k">pass</span> </span></pre></div> @@ -11857,8 +11994,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#CommentColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CommentColumnConstraint-946"><a href="#CommentColumnConstraint-946"><span class="linenos">946</span></a><span class="k">class</span> <span class="nc">CommentColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="CommentColumnConstraint-947"><a href="#CommentColumnConstraint-947"><span class="linenos">947</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CommentColumnConstraint-949"><a href="#CommentColumnConstraint-949"><span class="linenos">949</span></a><span class="k">class</span> <span class="nc">CommentColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="CommentColumnConstraint-950"><a href="#CommentColumnConstraint-950"><span class="linenos">950</span></a> <span class="k">pass</span> </span></pre></div> @@ -11907,6 +12044,67 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </dl> </div> </section> + <section id="CompressColumnConstraint"> + <input id="CompressColumnConstraint-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">CompressColumnConstraint</span><wbr>(<span class="base"><a href="#ColumnConstraintKind">ColumnConstraintKind</a></span>): + + <label class="view-source-button" for="CompressColumnConstraint-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#CompressColumnConstraint"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="CompressColumnConstraint-953"><a href="#CompressColumnConstraint-953"><span class="linenos">953</span></a><span class="k">class</span> <span class="nc">CompressColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="CompressColumnConstraint-954"><a href="#CompressColumnConstraint-954"><span class="linenos">954</span></a> <span class="k">pass</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="CompressColumnConstraint.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="CompressColumnConstraint.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="CompressColumnConstraint.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="CompressColumnConstraint.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="CompressColumnConstraint.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="CompressColumnConstraint.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="CompressColumnConstraint.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="CompressColumnConstraint.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="CompressColumnConstraint.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="CompressColumnConstraint.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="CompressColumnConstraint.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="CompressColumnConstraint.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="CompressColumnConstraint.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="CompressColumnConstraint.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="CompressColumnConstraint.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="CompressColumnConstraint.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="CompressColumnConstraint.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="CompressColumnConstraint.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="CompressColumnConstraint.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="CompressColumnConstraint.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="CompressColumnConstraint.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="CompressColumnConstraint.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="CompressColumnConstraint.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="CompressColumnConstraint.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="CompressColumnConstraint.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="CompressColumnConstraint.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="CompressColumnConstraint.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="CompressColumnConstraint.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="CompressColumnConstraint.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="CompressColumnConstraint.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="CompressColumnConstraint.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="CompressColumnConstraint.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="CompressColumnConstraint.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="CompressColumnConstraint.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> <section id="DateFormatColumnConstraint"> <input id="DateFormatColumnConstraint-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr class"> @@ -11918,8 +12116,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#DateFormatColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateFormatColumnConstraint-950"><a href="#DateFormatColumnConstraint-950"><span class="linenos">950</span></a><span class="k">class</span> <span class="nc">DateFormatColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="DateFormatColumnConstraint-951"><a href="#DateFormatColumnConstraint-951"><span class="linenos">951</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateFormatColumnConstraint-957"><a href="#DateFormatColumnConstraint-957"><span class="linenos">957</span></a><span class="k">class</span> <span class="nc">DateFormatColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="DateFormatColumnConstraint-958"><a href="#DateFormatColumnConstraint-958"><span class="linenos">958</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -11979,8 +12177,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#DefaultColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DefaultColumnConstraint-954"><a href="#DefaultColumnConstraint-954"><span class="linenos">954</span></a><span class="k">class</span> <span class="nc">DefaultColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="DefaultColumnConstraint-955"><a href="#DefaultColumnConstraint-955"><span class="linenos">955</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DefaultColumnConstraint-961"><a href="#DefaultColumnConstraint-961"><span class="linenos">961</span></a><span class="k">class</span> <span class="nc">DefaultColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="DefaultColumnConstraint-962"><a href="#DefaultColumnConstraint-962"><span class="linenos">962</span></a> <span class="k">pass</span> </span></pre></div> @@ -12040,8 +12238,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#EncodeColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="EncodeColumnConstraint-958"><a href="#EncodeColumnConstraint-958"><span class="linenos">958</span></a><span class="k">class</span> <span class="nc">EncodeColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="EncodeColumnConstraint-959"><a href="#EncodeColumnConstraint-959"><span class="linenos">959</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="EncodeColumnConstraint-965"><a href="#EncodeColumnConstraint-965"><span class="linenos">965</span></a><span class="k">class</span> <span class="nc">EncodeColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="EncodeColumnConstraint-966"><a href="#EncodeColumnConstraint-966"><span class="linenos">966</span></a> <span class="k">pass</span> </span></pre></div> @@ -12101,16 +12299,16 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#GeneratedAsIdentityColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GeneratedAsIdentityColumnConstraint-962"><a href="#GeneratedAsIdentityColumnConstraint-962"><span class="linenos">962</span></a><span class="k">class</span> <span class="nc">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="GeneratedAsIdentityColumnConstraint-963"><a href="#GeneratedAsIdentityColumnConstraint-963"><span class="linenos">963</span></a> <span class="c1"># this: True -> ALWAYS, this: False -> BY DEFAULT</span> -</span><span id="GeneratedAsIdentityColumnConstraint-964"><a href="#GeneratedAsIdentityColumnConstraint-964"><span class="linenos">964</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="GeneratedAsIdentityColumnConstraint-965"><a href="#GeneratedAsIdentityColumnConstraint-965"><span class="linenos">965</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GeneratedAsIdentityColumnConstraint-966"><a href="#GeneratedAsIdentityColumnConstraint-966"><span class="linenos">966</span></a> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GeneratedAsIdentityColumnConstraint-967"><a href="#GeneratedAsIdentityColumnConstraint-967"><span class="linenos">967</span></a> <span class="s2">"increment"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GeneratedAsIdentityColumnConstraint-968"><a href="#GeneratedAsIdentityColumnConstraint-968"><span class="linenos">968</span></a> <span class="s2">"minvalue"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GeneratedAsIdentityColumnConstraint-969"><a href="#GeneratedAsIdentityColumnConstraint-969"><span class="linenos">969</span></a> <span class="s2">"maxvalue"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GeneratedAsIdentityColumnConstraint-970"><a href="#GeneratedAsIdentityColumnConstraint-970"><span class="linenos">970</span></a> <span class="s2">"cycle"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="GeneratedAsIdentityColumnConstraint-971"><a href="#GeneratedAsIdentityColumnConstraint-971"><span class="linenos">971</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GeneratedAsIdentityColumnConstraint-969"><a href="#GeneratedAsIdentityColumnConstraint-969"><span class="linenos">969</span></a><span class="k">class</span> <span class="nc">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="GeneratedAsIdentityColumnConstraint-970"><a href="#GeneratedAsIdentityColumnConstraint-970"><span class="linenos">970</span></a> <span class="c1"># this: True -> ALWAYS, this: False -> BY DEFAULT</span> +</span><span id="GeneratedAsIdentityColumnConstraint-971"><a href="#GeneratedAsIdentityColumnConstraint-971"><span class="linenos">971</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="GeneratedAsIdentityColumnConstraint-972"><a href="#GeneratedAsIdentityColumnConstraint-972"><span class="linenos">972</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GeneratedAsIdentityColumnConstraint-973"><a href="#GeneratedAsIdentityColumnConstraint-973"><span class="linenos">973</span></a> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GeneratedAsIdentityColumnConstraint-974"><a href="#GeneratedAsIdentityColumnConstraint-974"><span class="linenos">974</span></a> <span class="s2">"increment"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GeneratedAsIdentityColumnConstraint-975"><a href="#GeneratedAsIdentityColumnConstraint-975"><span class="linenos">975</span></a> <span class="s2">"minvalue"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GeneratedAsIdentityColumnConstraint-976"><a href="#GeneratedAsIdentityColumnConstraint-976"><span class="linenos">976</span></a> <span class="s2">"maxvalue"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GeneratedAsIdentityColumnConstraint-977"><a href="#GeneratedAsIdentityColumnConstraint-977"><span class="linenos">977</span></a> <span class="s2">"cycle"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="GeneratedAsIdentityColumnConstraint-978"><a href="#GeneratedAsIdentityColumnConstraint-978"><span class="linenos">978</span></a> <span class="p">}</span> </span></pre></div> @@ -12159,6 +12357,67 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </dl> </div> </section> + <section id="InlineLengthColumnConstraint"> + <input id="InlineLengthColumnConstraint-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">InlineLengthColumnConstraint</span><wbr>(<span class="base"><a href="#ColumnConstraintKind">ColumnConstraintKind</a></span>): + + <label class="view-source-button" for="InlineLengthColumnConstraint-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#InlineLengthColumnConstraint"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="InlineLengthColumnConstraint-981"><a href="#InlineLengthColumnConstraint-981"><span class="linenos">981</span></a><span class="k">class</span> <span class="nc">InlineLengthColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="InlineLengthColumnConstraint-982"><a href="#InlineLengthColumnConstraint-982"><span class="linenos">982</span></a> <span class="k">pass</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="InlineLengthColumnConstraint.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="InlineLengthColumnConstraint.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="InlineLengthColumnConstraint.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="InlineLengthColumnConstraint.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="InlineLengthColumnConstraint.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="InlineLengthColumnConstraint.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="InlineLengthColumnConstraint.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="InlineLengthColumnConstraint.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="InlineLengthColumnConstraint.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="InlineLengthColumnConstraint.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="InlineLengthColumnConstraint.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="InlineLengthColumnConstraint.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="InlineLengthColumnConstraint.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="InlineLengthColumnConstraint.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="InlineLengthColumnConstraint.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="InlineLengthColumnConstraint.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="InlineLengthColumnConstraint.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="InlineLengthColumnConstraint.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="InlineLengthColumnConstraint.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="InlineLengthColumnConstraint.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="InlineLengthColumnConstraint.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="InlineLengthColumnConstraint.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="InlineLengthColumnConstraint.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="InlineLengthColumnConstraint.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="InlineLengthColumnConstraint.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="InlineLengthColumnConstraint.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="InlineLengthColumnConstraint.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="InlineLengthColumnConstraint.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="InlineLengthColumnConstraint.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="InlineLengthColumnConstraint.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="InlineLengthColumnConstraint.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="InlineLengthColumnConstraint.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="InlineLengthColumnConstraint.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="InlineLengthColumnConstraint.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> <section id="NotNullColumnConstraint"> <input id="NotNullColumnConstraint-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr class"> @@ -12170,8 +12429,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#NotNullColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NotNullColumnConstraint-974"><a href="#NotNullColumnConstraint-974"><span class="linenos">974</span></a><span class="k">class</span> <span class="nc">NotNullColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="NotNullColumnConstraint-975"><a href="#NotNullColumnConstraint-975"><span class="linenos">975</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"allow_null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NotNullColumnConstraint-985"><a href="#NotNullColumnConstraint-985"><span class="linenos">985</span></a><span class="k">class</span> <span class="nc">NotNullColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="NotNullColumnConstraint-986"><a href="#NotNullColumnConstraint-986"><span class="linenos">986</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"allow_null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -12231,8 +12490,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#PrimaryKeyColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PrimaryKeyColumnConstraint-978"><a href="#PrimaryKeyColumnConstraint-978"><span class="linenos">978</span></a><span class="k">class</span> <span class="nc">PrimaryKeyColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="PrimaryKeyColumnConstraint-979"><a href="#PrimaryKeyColumnConstraint-979"><span class="linenos">979</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"desc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PrimaryKeyColumnConstraint-989"><a href="#PrimaryKeyColumnConstraint-989"><span class="linenos">989</span></a><span class="k">class</span> <span class="nc">PrimaryKeyColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="PrimaryKeyColumnConstraint-990"><a href="#PrimaryKeyColumnConstraint-990"><span class="linenos">990</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"desc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -12292,8 +12551,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#TitleColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TitleColumnConstraint-982"><a href="#TitleColumnConstraint-982"><span class="linenos">982</span></a><span class="k">class</span> <span class="nc">TitleColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="TitleColumnConstraint-983"><a href="#TitleColumnConstraint-983"><span class="linenos">983</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TitleColumnConstraint-993"><a href="#TitleColumnConstraint-993"><span class="linenos">993</span></a><span class="k">class</span> <span class="nc">TitleColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="TitleColumnConstraint-994"><a href="#TitleColumnConstraint-994"><span class="linenos">994</span></a> <span class="k">pass</span> </span></pre></div> @@ -12353,8 +12612,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#UniqueColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UniqueColumnConstraint-986"><a href="#UniqueColumnConstraint-986"><span class="linenos">986</span></a><span class="k">class</span> <span class="nc">UniqueColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="UniqueColumnConstraint-987"><a href="#UniqueColumnConstraint-987"><span class="linenos">987</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UniqueColumnConstraint-997"><a href="#UniqueColumnConstraint-997"><span class="linenos">997</span></a><span class="k">class</span> <span class="nc">UniqueColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="UniqueColumnConstraint-998"><a href="#UniqueColumnConstraint-998"><span class="linenos">998</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span></pre></div> @@ -12414,8 +12673,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#UppercaseColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UppercaseColumnConstraint-990"><a href="#UppercaseColumnConstraint-990"><span class="linenos">990</span></a><span class="k">class</span> <span class="nc">UppercaseColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="UppercaseColumnConstraint-991"><a href="#UppercaseColumnConstraint-991"><span class="linenos">991</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UppercaseColumnConstraint-1001"><a href="#UppercaseColumnConstraint-1001"><span class="linenos">1001</span></a><span class="k">class</span> <span class="nc">UppercaseColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="UppercaseColumnConstraint-1002"><a href="#UppercaseColumnConstraint-1002"><span class="linenos">1002</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span></pre></div> @@ -12475,8 +12734,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#PathColumnConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PathColumnConstraint-994"><a href="#PathColumnConstraint-994"><span class="linenos">994</span></a><span class="k">class</span> <span class="nc">PathColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> -</span><span id="PathColumnConstraint-995"><a href="#PathColumnConstraint-995"><span class="linenos">995</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PathColumnConstraint-1005"><a href="#PathColumnConstraint-1005"><span class="linenos">1005</span></a><span class="k">class</span> <span class="nc">PathColumnConstraint</span><span class="p">(</span><span class="n">ColumnConstraintKind</span><span class="p">):</span> +</span><span id="PathColumnConstraint-1006"><a href="#PathColumnConstraint-1006"><span class="linenos">1006</span></a> <span class="k">pass</span> </span></pre></div> @@ -12536,8 +12795,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Constraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Constraint-998"><a href="#Constraint-998"><span class="linenos">998</span></a><span class="k">class</span> <span class="nc">Constraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Constraint-999"><a href="#Constraint-999"><span class="linenos">999</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Constraint-1009"><a href="#Constraint-1009"><span class="linenos">1009</span></a><span class="k">class</span> <span class="nc">Constraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Constraint-1010"><a href="#Constraint-1010"><span class="linenos">1010</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -12597,8 +12856,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Delete"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Delete-1002"><a href="#Delete-1002"><span class="linenos">1002</span></a><span class="k">class</span> <span class="nc">Delete</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Delete-1003"><a href="#Delete-1003"><span class="linenos">1003</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Delete-1013"><a href="#Delete-1013"><span class="linenos">1013</span></a><span class="k">class</span> <span class="nc">Delete</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Delete-1014"><a href="#Delete-1014"><span class="linenos">1014</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -12658,15 +12917,15 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Drop"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Drop-1006"><a href="#Drop-1006"><span class="linenos">1006</span></a><span class="k">class</span> <span class="nc">Drop</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Drop-1007"><a href="#Drop-1007"><span class="linenos">1007</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Drop-1008"><a href="#Drop-1008"><span class="linenos">1008</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Drop-1009"><a href="#Drop-1009"><span class="linenos">1009</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Drop-1010"><a href="#Drop-1010"><span class="linenos">1010</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Drop-1011"><a href="#Drop-1011"><span class="linenos">1011</span></a> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Drop-1012"><a href="#Drop-1012"><span class="linenos">1012</span></a> <span class="s2">"materialized"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Drop-1013"><a href="#Drop-1013"><span class="linenos">1013</span></a> <span class="s2">"cascade"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Drop-1014"><a href="#Drop-1014"><span class="linenos">1014</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Drop-1017"><a href="#Drop-1017"><span class="linenos">1017</span></a><span class="k">class</span> <span class="nc">Drop</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Drop-1018"><a href="#Drop-1018"><span class="linenos">1018</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Drop-1019"><a href="#Drop-1019"><span class="linenos">1019</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Drop-1020"><a href="#Drop-1020"><span class="linenos">1020</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Drop-1021"><a href="#Drop-1021"><span class="linenos">1021</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Drop-1022"><a href="#Drop-1022"><span class="linenos">1022</span></a> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Drop-1023"><a href="#Drop-1023"><span class="linenos">1023</span></a> <span class="s2">"materialized"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Drop-1024"><a href="#Drop-1024"><span class="linenos">1024</span></a> <span class="s2">"cascade"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Drop-1025"><a href="#Drop-1025"><span class="linenos">1025</span></a> <span class="p">}</span> </span></pre></div> @@ -12726,8 +12985,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Filter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Filter-1017"><a href="#Filter-1017"><span class="linenos">1017</span></a><span class="k">class</span> <span class="nc">Filter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Filter-1018"><a href="#Filter-1018"><span class="linenos">1018</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Filter-1028"><a href="#Filter-1028"><span class="linenos">1028</span></a><span class="k">class</span> <span class="nc">Filter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Filter-1029"><a href="#Filter-1029"><span class="linenos">1029</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -12787,8 +13046,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Check"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Check-1021"><a href="#Check-1021"><span class="linenos">1021</span></a><span class="k">class</span> <span class="nc">Check</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Check-1022"><a href="#Check-1022"><span class="linenos">1022</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Check-1032"><a href="#Check-1032"><span class="linenos">1032</span></a><span class="k">class</span> <span class="nc">Check</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Check-1033"><a href="#Check-1033"><span class="linenos">1033</span></a> <span class="k">pass</span> </span></pre></div> @@ -12848,9 +13107,9 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Directory"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Directory-1025"><a href="#Directory-1025"><span class="linenos">1025</span></a><span class="k">class</span> <span class="nc">Directory</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Directory-1026"><a href="#Directory-1026"><span class="linenos">1026</span></a> <span class="c1"># https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html</span> -</span><span id="Directory-1027"><a href="#Directory-1027"><span class="linenos">1027</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"row_format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Directory-1036"><a href="#Directory-1036"><span class="linenos">1036</span></a><span class="k">class</span> <span class="nc">Directory</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Directory-1037"><a href="#Directory-1037"><span class="linenos">1037</span></a> <span class="c1"># https://spark.apache.org/docs/3.0.0-preview/sql-ref-syntax-dml-insert-overwrite-directory-hive.html</span> +</span><span id="Directory-1038"><a href="#Directory-1038"><span class="linenos">1038</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"row_format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -12910,13 +13169,13 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#ForeignKey"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ForeignKey-1030"><a href="#ForeignKey-1030"><span class="linenos">1030</span></a><span class="k">class</span> <span class="nc">ForeignKey</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="ForeignKey-1031"><a href="#ForeignKey-1031"><span class="linenos">1031</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="ForeignKey-1032"><a href="#ForeignKey-1032"><span class="linenos">1032</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="ForeignKey-1033"><a href="#ForeignKey-1033"><span class="linenos">1033</span></a> <span class="s2">"reference"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ForeignKey-1034"><a href="#ForeignKey-1034"><span class="linenos">1034</span></a> <span class="s2">"delete"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ForeignKey-1035"><a href="#ForeignKey-1035"><span class="linenos">1035</span></a> <span class="s2">"update"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="ForeignKey-1036"><a href="#ForeignKey-1036"><span class="linenos">1036</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ForeignKey-1041"><a href="#ForeignKey-1041"><span class="linenos">1041</span></a><span class="k">class</span> <span class="nc">ForeignKey</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="ForeignKey-1042"><a href="#ForeignKey-1042"><span class="linenos">1042</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="ForeignKey-1043"><a href="#ForeignKey-1043"><span class="linenos">1043</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="ForeignKey-1044"><a href="#ForeignKey-1044"><span class="linenos">1044</span></a> <span class="s2">"reference"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ForeignKey-1045"><a href="#ForeignKey-1045"><span class="linenos">1045</span></a> <span class="s2">"delete"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ForeignKey-1046"><a href="#ForeignKey-1046"><span class="linenos">1046</span></a> <span class="s2">"update"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="ForeignKey-1047"><a href="#ForeignKey-1047"><span class="linenos">1047</span></a> <span class="p">}</span> </span></pre></div> @@ -12976,8 +13235,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#PrimaryKey"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PrimaryKey-1039"><a href="#PrimaryKey-1039"><span class="linenos">1039</span></a><span class="k">class</span> <span class="nc">PrimaryKey</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="PrimaryKey-1040"><a href="#PrimaryKey-1040"><span class="linenos">1040</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PrimaryKey-1050"><a href="#PrimaryKey-1050"><span class="linenos">1050</span></a><span class="k">class</span> <span class="nc">PrimaryKey</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="PrimaryKey-1051"><a href="#PrimaryKey-1051"><span class="linenos">1051</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -13037,8 +13296,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Unique"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unique-1043"><a href="#Unique-1043"><span class="linenos">1043</span></a><span class="k">class</span> <span class="nc">Unique</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Unique-1044"><a href="#Unique-1044"><span class="linenos">1044</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unique-1054"><a href="#Unique-1054"><span class="linenos">1054</span></a><span class="k">class</span> <span class="nc">Unique</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Unique-1055"><a href="#Unique-1055"><span class="linenos">1055</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -13098,8 +13357,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Into"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Into-1049"><a href="#Into-1049"><span class="linenos">1049</span></a><span class="k">class</span> <span class="nc">Into</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Into-1050"><a href="#Into-1050"><span class="linenos">1050</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unlogged"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Into-1060"><a href="#Into-1060"><span class="linenos">1060</span></a><span class="k">class</span> <span class="nc">Into</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Into-1061"><a href="#Into-1061"><span class="linenos">1061</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"temporary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unlogged"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -13159,8 +13418,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#From"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="From-1053"><a href="#From-1053"><span class="linenos">1053</span></a><span class="k">class</span> <span class="nc">From</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="From-1054"><a href="#From-1054"><span class="linenos">1054</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="From-1064"><a href="#From-1064"><span class="linenos">1064</span></a><span class="k">class</span> <span class="nc">From</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="From-1065"><a href="#From-1065"><span class="linenos">1065</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -13220,8 +13479,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Having"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Having-1057"><a href="#Having-1057"><span class="linenos">1057</span></a><span class="k">class</span> <span class="nc">Having</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Having-1058"><a href="#Having-1058"><span class="linenos">1058</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Having-1068"><a href="#Having-1068"><span class="linenos">1068</span></a><span class="k">class</span> <span class="nc">Having</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Having-1069"><a href="#Having-1069"><span class="linenos">1069</span></a> <span class="k">pass</span> </span></pre></div> @@ -13281,8 +13540,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Hint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Hint-1061"><a href="#Hint-1061"><span class="linenos">1061</span></a><span class="k">class</span> <span class="nc">Hint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Hint-1062"><a href="#Hint-1062"><span class="linenos">1062</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Hint-1072"><a href="#Hint-1072"><span class="linenos">1072</span></a><span class="k">class</span> <span class="nc">Hint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Hint-1073"><a href="#Hint-1073"><span class="linenos">1073</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -13342,8 +13601,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#JoinHint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JoinHint-1065"><a href="#JoinHint-1065"><span class="linenos">1065</span></a><span class="k">class</span> <span class="nc">JoinHint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="JoinHint-1066"><a href="#JoinHint-1066"><span class="linenos">1066</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JoinHint-1076"><a href="#JoinHint-1076"><span class="linenos">1076</span></a><span class="k">class</span> <span class="nc">JoinHint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="JoinHint-1077"><a href="#JoinHint-1077"><span class="linenos">1077</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -13403,22 +13662,22 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Identifier"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Identifier-1069"><a href="#Identifier-1069"><span class="linenos">1069</span></a><span class="k">class</span> <span class="nc">Identifier</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Identifier-1070"><a href="#Identifier-1070"><span class="linenos">1070</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Identifier-1071"><a href="#Identifier-1071"><span class="linenos">1071</span></a> -</span><span id="Identifier-1072"><a href="#Identifier-1072"><span class="linenos">1072</span></a> <span class="nd">@property</span> -</span><span id="Identifier-1073"><a href="#Identifier-1073"><span class="linenos">1073</span></a> <span class="k">def</span> <span class="nf">quoted</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Identifier-1074"><a href="#Identifier-1074"><span class="linenos">1074</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</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">"quoted"</span><span class="p">))</span> -</span><span id="Identifier-1075"><a href="#Identifier-1075"><span class="linenos">1075</span></a> -</span><span id="Identifier-1076"><a href="#Identifier-1076"><span class="linenos">1076</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> -</span><span id="Identifier-1077"><a href="#Identifier-1077"><span class="linenos">1077</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> <span class="ow">and</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">==</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> -</span><span id="Identifier-1078"><a href="#Identifier-1078"><span class="linenos">1078</span></a> -</span><span id="Identifier-1079"><a href="#Identifier-1079"><span class="linenos">1079</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Identifier-1080"><a href="#Identifier-1080"><span class="linenos">1080</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span> -</span><span id="Identifier-1081"><a href="#Identifier-1081"><span class="linenos">1081</span></a> -</span><span id="Identifier-1082"><a href="#Identifier-1082"><span class="linenos">1082</span></a> <span class="nd">@property</span> -</span><span id="Identifier-1083"><a href="#Identifier-1083"><span class="linenos">1083</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Identifier-1084"><a href="#Identifier-1084"><span class="linenos">1084</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Identifier-1080"><a href="#Identifier-1080"><span class="linenos">1080</span></a><span class="k">class</span> <span class="nc">Identifier</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Identifier-1081"><a href="#Identifier-1081"><span class="linenos">1081</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quoted"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Identifier-1082"><a href="#Identifier-1082"><span class="linenos">1082</span></a> +</span><span id="Identifier-1083"><a href="#Identifier-1083"><span class="linenos">1083</span></a> <span class="nd">@property</span> +</span><span id="Identifier-1084"><a href="#Identifier-1084"><span class="linenos">1084</span></a> <span class="k">def</span> <span class="nf">quoted</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Identifier-1085"><a href="#Identifier-1085"><span class="linenos">1085</span></a> <span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</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">"quoted"</span><span class="p">))</span> +</span><span id="Identifier-1086"><a href="#Identifier-1086"><span class="linenos">1086</span></a> +</span><span id="Identifier-1087"><a href="#Identifier-1087"><span class="linenos">1087</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> +</span><span id="Identifier-1088"><a href="#Identifier-1088"><span class="linenos">1088</span></a> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> <span class="ow">and</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">==</span> <span class="n">_norm_arg</span><span class="p">(</span><span class="n">other</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> +</span><span id="Identifier-1089"><a href="#Identifier-1089"><span class="linenos">1089</span></a> +</span><span id="Identifier-1090"><a href="#Identifier-1090"><span class="linenos">1090</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Identifier-1091"><a href="#Identifier-1091"><span class="linenos">1091</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">lower</span><span class="p">()))</span> +</span><span id="Identifier-1092"><a href="#Identifier-1092"><span class="linenos">1092</span></a> +</span><span id="Identifier-1093"><a href="#Identifier-1093"><span class="linenos">1093</span></a> <span class="nd">@property</span> +</span><span id="Identifier-1094"><a href="#Identifier-1094"><span class="linenos">1094</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Identifier-1095"><a href="#Identifier-1095"><span class="linenos">1095</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -13507,16 +13766,16 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Index"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Index-1087"><a href="#Index-1087"><span class="linenos">1087</span></a><span class="k">class</span> <span class="nc">Index</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Index-1088"><a href="#Index-1088"><span class="linenos">1088</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Index-1089"><a href="#Index-1089"><span class="linenos">1089</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Index-1090"><a href="#Index-1090"><span class="linenos">1090</span></a> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Index-1091"><a href="#Index-1091"><span class="linenos">1091</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Index-1092"><a href="#Index-1092"><span class="linenos">1092</span></a> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Index-1093"><a href="#Index-1093"><span class="linenos">1093</span></a> <span class="s2">"unique"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Index-1094"><a href="#Index-1094"><span class="linenos">1094</span></a> <span class="s2">"primary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Index-1095"><a href="#Index-1095"><span class="linenos">1095</span></a> <span class="s2">"amp"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="c1"># teradata</span> -</span><span id="Index-1096"><a href="#Index-1096"><span class="linenos">1096</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Index-1098"><a href="#Index-1098"><span class="linenos">1098</span></a><span class="k">class</span> <span class="nc">Index</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Index-1099"><a href="#Index-1099"><span class="linenos">1099</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Index-1100"><a href="#Index-1100"><span class="linenos">1100</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Index-1101"><a href="#Index-1101"><span class="linenos">1101</span></a> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Index-1102"><a href="#Index-1102"><span class="linenos">1102</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Index-1103"><a href="#Index-1103"><span class="linenos">1103</span></a> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Index-1104"><a href="#Index-1104"><span class="linenos">1104</span></a> <span class="s2">"unique"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Index-1105"><a href="#Index-1105"><span class="linenos">1105</span></a> <span class="s2">"primary"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Index-1106"><a href="#Index-1106"><span class="linenos">1106</span></a> <span class="s2">"amp"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="c1"># teradata</span> +</span><span id="Index-1107"><a href="#Index-1107"><span class="linenos">1107</span></a> <span class="p">}</span> </span></pre></div> @@ -13576,16 +13835,16 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Insert"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Insert-1099"><a href="#Insert-1099"><span class="linenos">1099</span></a><span class="k">class</span> <span class="nc">Insert</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Insert-1100"><a href="#Insert-1100"><span class="linenos">1100</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Insert-1101"><a href="#Insert-1101"><span class="linenos">1101</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Insert-1102"><a href="#Insert-1102"><span class="linenos">1102</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Insert-1103"><a href="#Insert-1103"><span class="linenos">1103</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Insert-1104"><a href="#Insert-1104"><span class="linenos">1104</span></a> <span class="s2">"overwrite"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Insert-1105"><a href="#Insert-1105"><span class="linenos">1105</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Insert-1106"><a href="#Insert-1106"><span class="linenos">1106</span></a> <span class="s2">"partition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Insert-1107"><a href="#Insert-1107"><span class="linenos">1107</span></a> <span class="s2">"alternative"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Insert-1108"><a href="#Insert-1108"><span class="linenos">1108</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Insert-1110"><a href="#Insert-1110"><span class="linenos">1110</span></a><span class="k">class</span> <span class="nc">Insert</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Insert-1111"><a href="#Insert-1111"><span class="linenos">1111</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Insert-1112"><a href="#Insert-1112"><span class="linenos">1112</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Insert-1113"><a href="#Insert-1113"><span class="linenos">1113</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Insert-1114"><a href="#Insert-1114"><span class="linenos">1114</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Insert-1115"><a href="#Insert-1115"><span class="linenos">1115</span></a> <span class="s2">"overwrite"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Insert-1116"><a href="#Insert-1116"><span class="linenos">1116</span></a> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Insert-1117"><a href="#Insert-1117"><span class="linenos">1117</span></a> <span class="s2">"partition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Insert-1118"><a href="#Insert-1118"><span class="linenos">1118</span></a> <span class="s2">"alternative"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Insert-1119"><a href="#Insert-1119"><span class="linenos">1119</span></a> <span class="p">}</span> </span></pre></div> @@ -13645,8 +13904,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Introducer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Introducer-1112"><a href="#Introducer-1112"><span class="linenos">1112</span></a><span class="k">class</span> <span class="nc">Introducer</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Introducer-1113"><a href="#Introducer-1113"><span class="linenos">1113</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Introducer-1123"><a href="#Introducer-1123"><span class="linenos">1123</span></a><span class="k">class</span> <span class="nc">Introducer</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Introducer-1124"><a href="#Introducer-1124"><span class="linenos">1124</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -13706,8 +13965,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#National"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="National-1117"><a href="#National-1117"><span class="linenos">1117</span></a><span class="k">class</span> <span class="nc">National</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="National-1118"><a href="#National-1118"><span class="linenos">1118</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="National-1128"><a href="#National-1128"><span class="linenos">1128</span></a><span class="k">class</span> <span class="nc">National</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="National-1129"><a href="#National-1129"><span class="linenos">1129</span></a> <span class="k">pass</span> </span></pre></div> @@ -13767,16 +14026,16 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#LoadData"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LoadData-1121"><a href="#LoadData-1121"><span class="linenos">1121</span></a><span class="k">class</span> <span class="nc">LoadData</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="LoadData-1122"><a href="#LoadData-1122"><span class="linenos">1122</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="LoadData-1123"><a href="#LoadData-1123"><span class="linenos">1123</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="LoadData-1124"><a href="#LoadData-1124"><span class="linenos">1124</span></a> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="LoadData-1125"><a href="#LoadData-1125"><span class="linenos">1125</span></a> <span class="s2">"overwrite"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="LoadData-1126"><a href="#LoadData-1126"><span class="linenos">1126</span></a> <span class="s2">"inpath"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="LoadData-1127"><a href="#LoadData-1127"><span class="linenos">1127</span></a> <span class="s2">"partition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="LoadData-1128"><a href="#LoadData-1128"><span class="linenos">1128</span></a> <span class="s2">"input_format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="LoadData-1129"><a href="#LoadData-1129"><span class="linenos">1129</span></a> <span class="s2">"serde"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="LoadData-1130"><a href="#LoadData-1130"><span class="linenos">1130</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LoadData-1132"><a href="#LoadData-1132"><span class="linenos">1132</span></a><span class="k">class</span> <span class="nc">LoadData</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="LoadData-1133"><a href="#LoadData-1133"><span class="linenos">1133</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="LoadData-1134"><a href="#LoadData-1134"><span class="linenos">1134</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="LoadData-1135"><a href="#LoadData-1135"><span class="linenos">1135</span></a> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="LoadData-1136"><a href="#LoadData-1136"><span class="linenos">1136</span></a> <span class="s2">"overwrite"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="LoadData-1137"><a href="#LoadData-1137"><span class="linenos">1137</span></a> <span class="s2">"inpath"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="LoadData-1138"><a href="#LoadData-1138"><span class="linenos">1138</span></a> <span class="s2">"partition"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="LoadData-1139"><a href="#LoadData-1139"><span class="linenos">1139</span></a> <span class="s2">"input_format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="LoadData-1140"><a href="#LoadData-1140"><span class="linenos">1140</span></a> <span class="s2">"serde"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="LoadData-1141"><a href="#LoadData-1141"><span class="linenos">1141</span></a> <span class="p">}</span> </span></pre></div> @@ -13836,8 +14095,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Partition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Partition-1133"><a href="#Partition-1133"><span class="linenos">1133</span></a><span class="k">class</span> <span class="nc">Partition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Partition-1134"><a href="#Partition-1134"><span class="linenos">1134</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Partition-1144"><a href="#Partition-1144"><span class="linenos">1144</span></a><span class="k">class</span> <span class="nc">Partition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Partition-1145"><a href="#Partition-1145"><span class="linenos">1145</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -13897,8 +14156,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Fetch"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Fetch-1137"><a href="#Fetch-1137"><span class="linenos">1137</span></a><span class="k">class</span> <span class="nc">Fetch</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Fetch-1138"><a href="#Fetch-1138"><span class="linenos">1138</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"direction"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Fetch-1148"><a href="#Fetch-1148"><span class="linenos">1148</span></a><span class="k">class</span> <span class="nc">Fetch</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Fetch-1149"><a href="#Fetch-1149"><span class="linenos">1149</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"direction"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"count"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -13958,13 +14217,13 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Group"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Group-1141"><a href="#Group-1141"><span class="linenos">1141</span></a><span class="k">class</span> <span class="nc">Group</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Group-1142"><a href="#Group-1142"><span class="linenos">1142</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Group-1143"><a href="#Group-1143"><span class="linenos">1143</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Group-1144"><a href="#Group-1144"><span class="linenos">1144</span></a> <span class="s2">"grouping_sets"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Group-1145"><a href="#Group-1145"><span class="linenos">1145</span></a> <span class="s2">"cube"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Group-1146"><a href="#Group-1146"><span class="linenos">1146</span></a> <span class="s2">"rollup"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Group-1147"><a href="#Group-1147"><span class="linenos">1147</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Group-1152"><a href="#Group-1152"><span class="linenos">1152</span></a><span class="k">class</span> <span class="nc">Group</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Group-1153"><a href="#Group-1153"><span class="linenos">1153</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Group-1154"><a href="#Group-1154"><span class="linenos">1154</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Group-1155"><a href="#Group-1155"><span class="linenos">1155</span></a> <span class="s2">"grouping_sets"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Group-1156"><a href="#Group-1156"><span class="linenos">1156</span></a> <span class="s2">"cube"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Group-1157"><a href="#Group-1157"><span class="linenos">1157</span></a> <span class="s2">"rollup"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Group-1158"><a href="#Group-1158"><span class="linenos">1158</span></a> <span class="p">}</span> </span></pre></div> @@ -14024,8 +14283,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Lambda"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Lambda-1150"><a href="#Lambda-1150"><span class="linenos">1150</span></a><span class="k">class</span> <span class="nc">Lambda</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Lambda-1151"><a href="#Lambda-1151"><span class="linenos">1151</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Lambda-1161"><a href="#Lambda-1161"><span class="linenos">1161</span></a><span class="k">class</span> <span class="nc">Lambda</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Lambda-1162"><a href="#Lambda-1162"><span class="linenos">1162</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -14085,8 +14344,8 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Limit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Limit-1154"><a href="#Limit-1154"><span class="linenos">1154</span></a><span class="k">class</span> <span class="nc">Limit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Limit-1155"><a href="#Limit-1155"><span class="linenos">1155</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Limit-1165"><a href="#Limit-1165"><span class="linenos">1165</span></a><span class="k">class</span> <span class="nc">Limit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Limit-1166"><a href="#Limit-1166"><span class="linenos">1166</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -14146,30 +14405,30 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Literal"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Literal-1158"><a href="#Literal-1158"><span class="linenos">1158</span></a><span class="k">class</span> <span class="nc">Literal</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Literal-1159"><a href="#Literal-1159"><span class="linenos">1159</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"is_string"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Literal-1160"><a href="#Literal-1160"><span class="linenos">1160</span></a> -</span><span id="Literal-1161"><a href="#Literal-1161"><span class="linenos">1161</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> -</span><span id="Literal-1162"><a href="#Literal-1162"><span class="linenos">1162</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="Literal-1163"><a href="#Literal-1163"><span class="linenos">1163</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> -</span><span id="Literal-1164"><a href="#Literal-1164"><span class="linenos">1164</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> -</span><span id="Literal-1165"><a href="#Literal-1165"><span class="linenos">1165</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> -</span><span id="Literal-1166"><a href="#Literal-1166"><span class="linenos">1166</span></a> <span class="p">)</span> -</span><span id="Literal-1167"><a href="#Literal-1167"><span class="linenos">1167</span></a> -</span><span id="Literal-1168"><a href="#Literal-1168"><span class="linenos">1168</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Literal-1169"><a href="#Literal-1169"><span class="linenos">1169</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</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">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]))</span> -</span><span id="Literal-1170"><a href="#Literal-1170"><span class="linenos">1170</span></a> -</span><span id="Literal-1171"><a href="#Literal-1171"><span class="linenos">1171</span></a> <span class="nd">@classmethod</span> -</span><span id="Literal-1172"><a href="#Literal-1172"><span class="linenos">1172</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> -</span><span id="Literal-1173"><a href="#Literal-1173"><span class="linenos">1173</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Literal-1174"><a href="#Literal-1174"><span class="linenos">1174</span></a> -</span><span id="Literal-1175"><a href="#Literal-1175"><span class="linenos">1175</span></a> <span class="nd">@classmethod</span> -</span><span id="Literal-1176"><a href="#Literal-1176"><span class="linenos">1176</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> -</span><span id="Literal-1177"><a href="#Literal-1177"><span class="linenos">1177</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">string</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Literal-1169"><a href="#Literal-1169"><span class="linenos">1169</span></a><span class="k">class</span> <span class="nc">Literal</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Literal-1170"><a href="#Literal-1170"><span class="linenos">1170</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"is_string"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Literal-1171"><a href="#Literal-1171"><span class="linenos">1171</span></a> +</span><span id="Literal-1172"><a href="#Literal-1172"><span class="linenos">1172</span></a> <span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span> +</span><span id="Literal-1173"><a href="#Literal-1173"><span class="linenos">1173</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="Literal-1174"><a href="#Literal-1174"><span class="linenos">1174</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Literal</span><span class="p">)</span> +</span><span id="Literal-1175"><a href="#Literal-1175"><span class="linenos">1175</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">this</span> +</span><span id="Literal-1176"><a href="#Literal-1176"><span class="linenos">1176</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> <span class="o">==</span> <span class="n">other</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]</span> +</span><span id="Literal-1177"><a href="#Literal-1177"><span class="linenos">1177</span></a> <span class="p">)</span> </span><span id="Literal-1178"><a href="#Literal-1178"><span class="linenos">1178</span></a> -</span><span id="Literal-1179"><a href="#Literal-1179"><span class="linenos">1179</span></a> <span class="nd">@property</span> -</span><span id="Literal-1180"><a href="#Literal-1180"><span class="linenos">1180</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Literal-1181"><a href="#Literal-1181"><span class="linenos">1181</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="Literal-1179"><a href="#Literal-1179"><span class="linenos">1179</span></a> <span class="k">def</span> <span class="fm">__hash__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Literal-1180"><a href="#Literal-1180"><span class="linenos">1180</span></a> <span class="k">return</span> <span class="nb">hash</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="bp">self</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">args</span><span class="p">[</span><span class="s2">"is_string"</span><span class="p">]))</span> +</span><span id="Literal-1181"><a href="#Literal-1181"><span class="linenos">1181</span></a> +</span><span id="Literal-1182"><a href="#Literal-1182"><span class="linenos">1182</span></a> <span class="nd">@classmethod</span> +</span><span id="Literal-1183"><a href="#Literal-1183"><span class="linenos">1183</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> +</span><span id="Literal-1184"><a href="#Literal-1184"><span class="linenos">1184</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Literal-1185"><a href="#Literal-1185"><span class="linenos">1185</span></a> +</span><span id="Literal-1186"><a href="#Literal-1186"><span class="linenos">1186</span></a> <span class="nd">@classmethod</span> +</span><span id="Literal-1187"><a href="#Literal-1187"><span class="linenos">1187</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> +</span><span id="Literal-1188"><a href="#Literal-1188"><span class="linenos">1188</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">string</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Literal-1189"><a href="#Literal-1189"><span class="linenos">1189</span></a> +</span><span id="Literal-1190"><a href="#Literal-1190"><span class="linenos">1190</span></a> <span class="nd">@property</span> +</span><span id="Literal-1191"><a href="#Literal-1191"><span class="linenos">1191</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Literal-1192"><a href="#Literal-1192"><span class="linenos">1192</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -14187,9 +14446,9 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Literal.number"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Literal.number-1171"><a href="#Literal.number-1171"><span class="linenos">1171</span></a> <span class="nd">@classmethod</span> -</span><span id="Literal.number-1172"><a href="#Literal.number-1172"><span class="linenos">1172</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> -</span><span id="Literal.number-1173"><a href="#Literal.number-1173"><span class="linenos">1173</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Literal.number-1182"><a href="#Literal.number-1182"><span class="linenos">1182</span></a> <span class="nd">@classmethod</span> +</span><span id="Literal.number-1183"><a href="#Literal.number-1183"><span class="linenos">1183</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> +</span><span id="Literal.number-1184"><a href="#Literal.number-1184"><span class="linenos">1184</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> </span></pre></div> @@ -14208,9 +14467,9 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Literal.string"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Literal.string-1175"><a href="#Literal.string-1175"><span class="linenos">1175</span></a> <span class="nd">@classmethod</span> -</span><span id="Literal.string-1176"><a href="#Literal.string-1176"><span class="linenos">1176</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> -</span><span id="Literal.string-1177"><a href="#Literal.string-1177"><span class="linenos">1177</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">string</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Literal.string-1186"><a href="#Literal.string-1186"><span class="linenos">1186</span></a> <span class="nd">@classmethod</span> +</span><span id="Literal.string-1187"><a href="#Literal.string-1187"><span class="linenos">1187</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> <span class="o">-></span> <span class="n">Literal</span><span class="p">:</span> +</span><span id="Literal.string-1188"><a href="#Literal.string-1188"><span class="linenos">1188</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">string</span><span class="p">),</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span></pre></div> @@ -14306,100 +14565,100 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Join"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Join-1184"><a href="#Join-1184"><span class="linenos">1184</span></a><span class="k">class</span> <span class="nc">Join</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Join-1185"><a href="#Join-1185"><span class="linenos">1185</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Join-1186"><a href="#Join-1186"><span class="linenos">1186</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Join-1187"><a href="#Join-1187"><span class="linenos">1187</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Join-1188"><a href="#Join-1188"><span class="linenos">1188</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Join-1189"><a href="#Join-1189"><span class="linenos">1189</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Join-1190"><a href="#Join-1190"><span class="linenos">1190</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Join-1191"><a href="#Join-1191"><span class="linenos">1191</span></a> <span class="s2">"natural"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Join-1192"><a href="#Join-1192"><span class="linenos">1192</span></a> <span class="p">}</span> -</span><span id="Join-1193"><a href="#Join-1193"><span class="linenos">1193</span></a> -</span><span id="Join-1194"><a href="#Join-1194"><span class="linenos">1194</span></a> <span class="nd">@property</span> -</span><span id="Join-1195"><a href="#Join-1195"><span class="linenos">1195</span></a> <span class="k">def</span> <span class="nf">kind</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Join-1196"><a href="#Join-1196"><span class="linenos">1196</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Join-1197"><a href="#Join-1197"><span class="linenos">1197</span></a> -</span><span id="Join-1198"><a href="#Join-1198"><span class="linenos">1198</span></a> <span class="nd">@property</span> -</span><span id="Join-1199"><a href="#Join-1199"><span class="linenos">1199</span></a> <span class="k">def</span> <span class="nf">side</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Join-1200"><a href="#Join-1200"><span class="linenos">1200</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"side"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Join-1201"><a href="#Join-1201"><span class="linenos">1201</span></a> -</span><span id="Join-1202"><a href="#Join-1202"><span class="linenos">1202</span></a> <span class="nd">@property</span> -</span><span id="Join-1203"><a href="#Join-1203"><span class="linenos">1203</span></a> <span class="k">def</span> <span class="nf">alias_or_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Join-1204"><a href="#Join-1204"><span class="linenos">1204</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias_or_name</span> -</span><span id="Join-1205"><a href="#Join-1205"><span class="linenos">1205</span></a> -</span><span id="Join-1206"><a href="#Join-1206"><span class="linenos">1206</span></a> <span class="k">def</span> <span class="nf">on</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Join-1207"><a href="#Join-1207"><span class="linenos">1207</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Join-1208"><a href="#Join-1208"><span class="linenos">1208</span></a><span class="sd"> Append to or set the ON expressions.</span> -</span><span id="Join-1209"><a href="#Join-1209"><span class="linenos">1209</span></a> -</span><span id="Join-1210"><a href="#Join-1210"><span class="linenos">1210</span></a><span class="sd"> Example:</span> -</span><span id="Join-1211"><a href="#Join-1211"><span class="linenos">1211</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Join-1212"><a href="#Join-1212"><span class="linenos">1212</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()</span> -</span><span id="Join-1213"><a href="#Join-1213"><span class="linenos">1213</span></a><span class="sd"> 'JOIN x ON y = 1'</span> -</span><span id="Join-1214"><a href="#Join-1214"><span class="linenos">1214</span></a> -</span><span id="Join-1215"><a href="#Join-1215"><span class="linenos">1215</span></a><span class="sd"> Args:</span> -</span><span id="Join-1216"><a href="#Join-1216"><span class="linenos">1216</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Join-1217"><a href="#Join-1217"><span class="linenos">1217</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Join-1218"><a href="#Join-1218"><span class="linenos">1218</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> -</span><span id="Join-1219"><a href="#Join-1219"><span class="linenos">1219</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> -</span><span id="Join-1220"><a href="#Join-1220"><span class="linenos">1220</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="Join-1221"><a href="#Join-1221"><span class="linenos">1221</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Join-1222"><a href="#Join-1222"><span class="linenos">1222</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Join-1223"><a href="#Join-1223"><span class="linenos">1223</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Join-1224"><a href="#Join-1224"><span class="linenos">1224</span></a> -</span><span id="Join-1225"><a href="#Join-1225"><span class="linenos">1225</span></a><span class="sd"> Returns:</span> -</span><span id="Join-1226"><a href="#Join-1226"><span class="linenos">1226</span></a><span class="sd"> Join: the modified join expression.</span> -</span><span id="Join-1227"><a href="#Join-1227"><span class="linenos">1227</span></a><span class="sd"> """</span> -</span><span id="Join-1228"><a href="#Join-1228"><span class="linenos">1228</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="Join-1229"><a href="#Join-1229"><span class="linenos">1229</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Join-1230"><a href="#Join-1230"><span class="linenos">1230</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Join-1231"><a href="#Join-1231"><span class="linenos">1231</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"on"</span><span class="p">,</span> -</span><span id="Join-1232"><a href="#Join-1232"><span class="linenos">1232</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Join-1233"><a href="#Join-1233"><span class="linenos">1233</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Join-1234"><a href="#Join-1234"><span class="linenos">1234</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Join-1235"><a href="#Join-1235"><span class="linenos">1235</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Join-1236"><a href="#Join-1236"><span class="linenos">1236</span></a> <span class="p">)</span> -</span><span id="Join-1237"><a href="#Join-1237"><span class="linenos">1237</span></a> -</span><span id="Join-1238"><a href="#Join-1238"><span class="linenos">1238</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> -</span><span id="Join-1239"><a href="#Join-1239"><span class="linenos">1239</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Join-1240"><a href="#Join-1240"><span class="linenos">1240</span></a> -</span><span id="Join-1241"><a href="#Join-1241"><span class="linenos">1241</span></a> <span class="k">return</span> <span class="n">join</span> -</span><span id="Join-1242"><a href="#Join-1242"><span class="linenos">1242</span></a> -</span><span id="Join-1243"><a href="#Join-1243"><span class="linenos">1243</span></a> <span class="k">def</span> <span class="nf">using</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Join-1244"><a href="#Join-1244"><span class="linenos">1244</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Join-1245"><a href="#Join-1245"><span class="linenos">1245</span></a><span class="sd"> Append to or set the USING expressions.</span> -</span><span id="Join-1246"><a href="#Join-1246"><span class="linenos">1246</span></a> -</span><span id="Join-1247"><a href="#Join-1247"><span class="linenos">1247</span></a><span class="sd"> Example:</span> -</span><span id="Join-1248"><a href="#Join-1248"><span class="linenos">1248</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Join-1249"><a href="#Join-1249"><span class="linenos">1249</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()</span> -</span><span id="Join-1250"><a href="#Join-1250"><span class="linenos">1250</span></a><span class="sd"> 'JOIN x USING (foo, bla)'</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Join-1195"><a href="#Join-1195"><span class="linenos">1195</span></a><span class="k">class</span> <span class="nc">Join</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Join-1196"><a href="#Join-1196"><span class="linenos">1196</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Join-1197"><a href="#Join-1197"><span class="linenos">1197</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Join-1198"><a href="#Join-1198"><span class="linenos">1198</span></a> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Join-1199"><a href="#Join-1199"><span class="linenos">1199</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Join-1200"><a href="#Join-1200"><span class="linenos">1200</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Join-1201"><a href="#Join-1201"><span class="linenos">1201</span></a> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Join-1202"><a href="#Join-1202"><span class="linenos">1202</span></a> <span class="s2">"natural"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Join-1203"><a href="#Join-1203"><span class="linenos">1203</span></a> <span class="p">}</span> +</span><span id="Join-1204"><a href="#Join-1204"><span class="linenos">1204</span></a> +</span><span id="Join-1205"><a href="#Join-1205"><span class="linenos">1205</span></a> <span class="nd">@property</span> +</span><span id="Join-1206"><a href="#Join-1206"><span class="linenos">1206</span></a> <span class="k">def</span> <span class="nf">kind</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Join-1207"><a href="#Join-1207"><span class="linenos">1207</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Join-1208"><a href="#Join-1208"><span class="linenos">1208</span></a> +</span><span id="Join-1209"><a href="#Join-1209"><span class="linenos">1209</span></a> <span class="nd">@property</span> +</span><span id="Join-1210"><a href="#Join-1210"><span class="linenos">1210</span></a> <span class="k">def</span> <span class="nf">side</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Join-1211"><a href="#Join-1211"><span class="linenos">1211</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"side"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Join-1212"><a href="#Join-1212"><span class="linenos">1212</span></a> +</span><span id="Join-1213"><a href="#Join-1213"><span class="linenos">1213</span></a> <span class="nd">@property</span> +</span><span id="Join-1214"><a href="#Join-1214"><span class="linenos">1214</span></a> <span class="k">def</span> <span class="nf">alias_or_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Join-1215"><a href="#Join-1215"><span class="linenos">1215</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias_or_name</span> +</span><span id="Join-1216"><a href="#Join-1216"><span class="linenos">1216</span></a> +</span><span id="Join-1217"><a href="#Join-1217"><span class="linenos">1217</span></a> <span class="k">def</span> <span class="nf">on</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Join-1218"><a href="#Join-1218"><span class="linenos">1218</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Join-1219"><a href="#Join-1219"><span class="linenos">1219</span></a><span class="sd"> Append to or set the ON expressions.</span> +</span><span id="Join-1220"><a href="#Join-1220"><span class="linenos">1220</span></a> +</span><span id="Join-1221"><a href="#Join-1221"><span class="linenos">1221</span></a><span class="sd"> Example:</span> +</span><span id="Join-1222"><a href="#Join-1222"><span class="linenos">1222</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Join-1223"><a href="#Join-1223"><span class="linenos">1223</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()</span> +</span><span id="Join-1224"><a href="#Join-1224"><span class="linenos">1224</span></a><span class="sd"> 'JOIN x ON y = 1'</span> +</span><span id="Join-1225"><a href="#Join-1225"><span class="linenos">1225</span></a> +</span><span id="Join-1226"><a href="#Join-1226"><span class="linenos">1226</span></a><span class="sd"> Args:</span> +</span><span id="Join-1227"><a href="#Join-1227"><span class="linenos">1227</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Join-1228"><a href="#Join-1228"><span class="linenos">1228</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Join-1229"><a href="#Join-1229"><span class="linenos">1229</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> +</span><span id="Join-1230"><a href="#Join-1230"><span class="linenos">1230</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> +</span><span id="Join-1231"><a href="#Join-1231"><span class="linenos">1231</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="Join-1232"><a href="#Join-1232"><span class="linenos">1232</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Join-1233"><a href="#Join-1233"><span class="linenos">1233</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Join-1234"><a href="#Join-1234"><span class="linenos">1234</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Join-1235"><a href="#Join-1235"><span class="linenos">1235</span></a> +</span><span id="Join-1236"><a href="#Join-1236"><span class="linenos">1236</span></a><span class="sd"> Returns:</span> +</span><span id="Join-1237"><a href="#Join-1237"><span class="linenos">1237</span></a><span class="sd"> Join: the modified join expression.</span> +</span><span id="Join-1238"><a href="#Join-1238"><span class="linenos">1238</span></a><span class="sd"> """</span> +</span><span id="Join-1239"><a href="#Join-1239"><span class="linenos">1239</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="Join-1240"><a href="#Join-1240"><span class="linenos">1240</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Join-1241"><a href="#Join-1241"><span class="linenos">1241</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Join-1242"><a href="#Join-1242"><span class="linenos">1242</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"on"</span><span class="p">,</span> +</span><span id="Join-1243"><a href="#Join-1243"><span class="linenos">1243</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Join-1244"><a href="#Join-1244"><span class="linenos">1244</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Join-1245"><a href="#Join-1245"><span class="linenos">1245</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Join-1246"><a href="#Join-1246"><span class="linenos">1246</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Join-1247"><a href="#Join-1247"><span class="linenos">1247</span></a> <span class="p">)</span> +</span><span id="Join-1248"><a href="#Join-1248"><span class="linenos">1248</span></a> +</span><span id="Join-1249"><a href="#Join-1249"><span class="linenos">1249</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> +</span><span id="Join-1250"><a href="#Join-1250"><span class="linenos">1250</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> </span><span id="Join-1251"><a href="#Join-1251"><span class="linenos">1251</span></a> -</span><span id="Join-1252"><a href="#Join-1252"><span class="linenos">1252</span></a><span class="sd"> Args:</span> -</span><span id="Join-1253"><a href="#Join-1253"><span class="linenos">1253</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Join-1254"><a href="#Join-1254"><span class="linenos">1254</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Join-1255"><a href="#Join-1255"><span class="linenos">1255</span></a><span class="sd"> append (bool): if `True`, concatenate the new expressions to the existing "using" list.</span> -</span><span id="Join-1256"><a href="#Join-1256"><span class="linenos">1256</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="Join-1257"><a href="#Join-1257"><span class="linenos">1257</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Join-1258"><a href="#Join-1258"><span class="linenos">1258</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Join-1259"><a href="#Join-1259"><span class="linenos">1259</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Join-1260"><a href="#Join-1260"><span class="linenos">1260</span></a> -</span><span id="Join-1261"><a href="#Join-1261"><span class="linenos">1261</span></a><span class="sd"> Returns:</span> -</span><span id="Join-1262"><a href="#Join-1262"><span class="linenos">1262</span></a><span class="sd"> Join: the modified join expression.</span> -</span><span id="Join-1263"><a href="#Join-1263"><span class="linenos">1263</span></a><span class="sd"> """</span> -</span><span id="Join-1264"><a href="#Join-1264"><span class="linenos">1264</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Join-1265"><a href="#Join-1265"><span class="linenos">1265</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Join-1266"><a href="#Join-1266"><span class="linenos">1266</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Join-1267"><a href="#Join-1267"><span class="linenos">1267</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> -</span><span id="Join-1268"><a href="#Join-1268"><span class="linenos">1268</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Join-1269"><a href="#Join-1269"><span class="linenos">1269</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Join-1270"><a href="#Join-1270"><span class="linenos">1270</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Join-1271"><a href="#Join-1271"><span class="linenos">1271</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Join-1272"><a href="#Join-1272"><span class="linenos">1272</span></a> <span class="p">)</span> -</span><span id="Join-1273"><a href="#Join-1273"><span class="linenos">1273</span></a> -</span><span id="Join-1274"><a href="#Join-1274"><span class="linenos">1274</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> -</span><span id="Join-1275"><a href="#Join-1275"><span class="linenos">1275</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Join-1276"><a href="#Join-1276"><span class="linenos">1276</span></a> -</span><span id="Join-1277"><a href="#Join-1277"><span class="linenos">1277</span></a> <span class="k">return</span> <span class="n">join</span> +</span><span id="Join-1252"><a href="#Join-1252"><span class="linenos">1252</span></a> <span class="k">return</span> <span class="n">join</span> +</span><span id="Join-1253"><a href="#Join-1253"><span class="linenos">1253</span></a> +</span><span id="Join-1254"><a href="#Join-1254"><span class="linenos">1254</span></a> <span class="k">def</span> <span class="nf">using</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Join-1255"><a href="#Join-1255"><span class="linenos">1255</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Join-1256"><a href="#Join-1256"><span class="linenos">1256</span></a><span class="sd"> Append to or set the USING expressions.</span> +</span><span id="Join-1257"><a href="#Join-1257"><span class="linenos">1257</span></a> +</span><span id="Join-1258"><a href="#Join-1258"><span class="linenos">1258</span></a><span class="sd"> Example:</span> +</span><span id="Join-1259"><a href="#Join-1259"><span class="linenos">1259</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Join-1260"><a href="#Join-1260"><span class="linenos">1260</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()</span> +</span><span id="Join-1261"><a href="#Join-1261"><span class="linenos">1261</span></a><span class="sd"> 'JOIN x USING (foo, bla)'</span> +</span><span id="Join-1262"><a href="#Join-1262"><span class="linenos">1262</span></a> +</span><span id="Join-1263"><a href="#Join-1263"><span class="linenos">1263</span></a><span class="sd"> Args:</span> +</span><span id="Join-1264"><a href="#Join-1264"><span class="linenos">1264</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Join-1265"><a href="#Join-1265"><span class="linenos">1265</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Join-1266"><a href="#Join-1266"><span class="linenos">1266</span></a><span class="sd"> append (bool): if `True`, concatenate the new expressions to the existing "using" list.</span> +</span><span id="Join-1267"><a href="#Join-1267"><span class="linenos">1267</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="Join-1268"><a href="#Join-1268"><span class="linenos">1268</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Join-1269"><a href="#Join-1269"><span class="linenos">1269</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Join-1270"><a href="#Join-1270"><span class="linenos">1270</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Join-1271"><a href="#Join-1271"><span class="linenos">1271</span></a> +</span><span id="Join-1272"><a href="#Join-1272"><span class="linenos">1272</span></a><span class="sd"> Returns:</span> +</span><span id="Join-1273"><a href="#Join-1273"><span class="linenos">1273</span></a><span class="sd"> Join: the modified join expression.</span> +</span><span id="Join-1274"><a href="#Join-1274"><span class="linenos">1274</span></a><span class="sd"> """</span> +</span><span id="Join-1275"><a href="#Join-1275"><span class="linenos">1275</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Join-1276"><a href="#Join-1276"><span class="linenos">1276</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Join-1277"><a href="#Join-1277"><span class="linenos">1277</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Join-1278"><a href="#Join-1278"><span class="linenos">1278</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> +</span><span id="Join-1279"><a href="#Join-1279"><span class="linenos">1279</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Join-1280"><a href="#Join-1280"><span class="linenos">1280</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Join-1281"><a href="#Join-1281"><span class="linenos">1281</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Join-1282"><a href="#Join-1282"><span class="linenos">1282</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Join-1283"><a href="#Join-1283"><span class="linenos">1283</span></a> <span class="p">)</span> +</span><span id="Join-1284"><a href="#Join-1284"><span class="linenos">1284</span></a> +</span><span id="Join-1285"><a href="#Join-1285"><span class="linenos">1285</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> +</span><span id="Join-1286"><a href="#Join-1286"><span class="linenos">1286</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Join-1287"><a href="#Join-1287"><span class="linenos">1287</span></a> +</span><span id="Join-1288"><a href="#Join-1288"><span class="linenos">1288</span></a> <span class="k">return</span> <span class="n">join</span> </span></pre></div> @@ -14416,42 +14675,42 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#Join.on"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Join.on-1206"><a href="#Join.on-1206"><span class="linenos">1206</span></a> <span class="k">def</span> <span class="nf">on</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Join.on-1207"><a href="#Join.on-1207"><span class="linenos">1207</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Join.on-1208"><a href="#Join.on-1208"><span class="linenos">1208</span></a><span class="sd"> Append to or set the ON expressions.</span> -</span><span id="Join.on-1209"><a href="#Join.on-1209"><span class="linenos">1209</span></a> -</span><span id="Join.on-1210"><a href="#Join.on-1210"><span class="linenos">1210</span></a><span class="sd"> Example:</span> -</span><span id="Join.on-1211"><a href="#Join.on-1211"><span class="linenos">1211</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Join.on-1212"><a href="#Join.on-1212"><span class="linenos">1212</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()</span> -</span><span id="Join.on-1213"><a href="#Join.on-1213"><span class="linenos">1213</span></a><span class="sd"> 'JOIN x ON y = 1'</span> -</span><span id="Join.on-1214"><a href="#Join.on-1214"><span class="linenos">1214</span></a> -</span><span id="Join.on-1215"><a href="#Join.on-1215"><span class="linenos">1215</span></a><span class="sd"> Args:</span> -</span><span id="Join.on-1216"><a href="#Join.on-1216"><span class="linenos">1216</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Join.on-1217"><a href="#Join.on-1217"><span class="linenos">1217</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Join.on-1218"><a href="#Join.on-1218"><span class="linenos">1218</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> -</span><span id="Join.on-1219"><a href="#Join.on-1219"><span class="linenos">1219</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> -</span><span id="Join.on-1220"><a href="#Join.on-1220"><span class="linenos">1220</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="Join.on-1221"><a href="#Join.on-1221"><span class="linenos">1221</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Join.on-1222"><a href="#Join.on-1222"><span class="linenos">1222</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Join.on-1223"><a href="#Join.on-1223"><span class="linenos">1223</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Join.on-1224"><a href="#Join.on-1224"><span class="linenos">1224</span></a> -</span><span id="Join.on-1225"><a href="#Join.on-1225"><span class="linenos">1225</span></a><span class="sd"> Returns:</span> -</span><span id="Join.on-1226"><a href="#Join.on-1226"><span class="linenos">1226</span></a><span class="sd"> Join: the modified join expression.</span> -</span><span id="Join.on-1227"><a href="#Join.on-1227"><span class="linenos">1227</span></a><span class="sd"> """</span> -</span><span id="Join.on-1228"><a href="#Join.on-1228"><span class="linenos">1228</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="Join.on-1229"><a href="#Join.on-1229"><span class="linenos">1229</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Join.on-1230"><a href="#Join.on-1230"><span class="linenos">1230</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Join.on-1231"><a href="#Join.on-1231"><span class="linenos">1231</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"on"</span><span class="p">,</span> -</span><span id="Join.on-1232"><a href="#Join.on-1232"><span class="linenos">1232</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Join.on-1233"><a href="#Join.on-1233"><span class="linenos">1233</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Join.on-1234"><a href="#Join.on-1234"><span class="linenos">1234</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Join.on-1235"><a href="#Join.on-1235"><span class="linenos">1235</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Join.on-1236"><a href="#Join.on-1236"><span class="linenos">1236</span></a> <span class="p">)</span> -</span><span id="Join.on-1237"><a href="#Join.on-1237"><span class="linenos">1237</span></a> -</span><span id="Join.on-1238"><a href="#Join.on-1238"><span class="linenos">1238</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> -</span><span id="Join.on-1239"><a href="#Join.on-1239"><span class="linenos">1239</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Join.on-1240"><a href="#Join.on-1240"><span class="linenos">1240</span></a> -</span><span id="Join.on-1241"><a href="#Join.on-1241"><span class="linenos">1241</span></a> <span class="k">return</span> <span class="n">join</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Join.on-1217"><a href="#Join.on-1217"><span class="linenos">1217</span></a> <span class="k">def</span> <span class="nf">on</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Join.on-1218"><a href="#Join.on-1218"><span class="linenos">1218</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Join.on-1219"><a href="#Join.on-1219"><span class="linenos">1219</span></a><span class="sd"> Append to or set the ON expressions.</span> +</span><span id="Join.on-1220"><a href="#Join.on-1220"><span class="linenos">1220</span></a> +</span><span id="Join.on-1221"><a href="#Join.on-1221"><span class="linenos">1221</span></a><span class="sd"> Example:</span> +</span><span id="Join.on-1222"><a href="#Join.on-1222"><span class="linenos">1222</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Join.on-1223"><a href="#Join.on-1223"><span class="linenos">1223</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).on("y = 1").sql()</span> +</span><span id="Join.on-1224"><a href="#Join.on-1224"><span class="linenos">1224</span></a><span class="sd"> 'JOIN x ON y = 1'</span> +</span><span id="Join.on-1225"><a href="#Join.on-1225"><span class="linenos">1225</span></a> +</span><span id="Join.on-1226"><a href="#Join.on-1226"><span class="linenos">1226</span></a><span class="sd"> Args:</span> +</span><span id="Join.on-1227"><a href="#Join.on-1227"><span class="linenos">1227</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Join.on-1228"><a href="#Join.on-1228"><span class="linenos">1228</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Join.on-1229"><a href="#Join.on-1229"><span class="linenos">1229</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> +</span><span id="Join.on-1230"><a href="#Join.on-1230"><span class="linenos">1230</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> +</span><span id="Join.on-1231"><a href="#Join.on-1231"><span class="linenos">1231</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="Join.on-1232"><a href="#Join.on-1232"><span class="linenos">1232</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Join.on-1233"><a href="#Join.on-1233"><span class="linenos">1233</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Join.on-1234"><a href="#Join.on-1234"><span class="linenos">1234</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Join.on-1235"><a href="#Join.on-1235"><span class="linenos">1235</span></a> +</span><span id="Join.on-1236"><a href="#Join.on-1236"><span class="linenos">1236</span></a><span class="sd"> Returns:</span> +</span><span id="Join.on-1237"><a href="#Join.on-1237"><span class="linenos">1237</span></a><span class="sd"> Join: the modified join expression.</span> +</span><span id="Join.on-1238"><a href="#Join.on-1238"><span class="linenos">1238</span></a><span class="sd"> """</span> +</span><span id="Join.on-1239"><a href="#Join.on-1239"><span class="linenos">1239</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="Join.on-1240"><a href="#Join.on-1240"><span class="linenos">1240</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Join.on-1241"><a href="#Join.on-1241"><span class="linenos">1241</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Join.on-1242"><a href="#Join.on-1242"><span class="linenos">1242</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"on"</span><span class="p">,</span> +</span><span id="Join.on-1243"><a href="#Join.on-1243"><span class="linenos">1243</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Join.on-1244"><a href="#Join.on-1244"><span class="linenos">1244</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Join.on-1245"><a href="#Join.on-1245"><span class="linenos">1245</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Join.on-1246"><a href="#Join.on-1246"><span class="linenos">1246</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Join.on-1247"><a href="#Join.on-1247"><span class="linenos">1247</span></a> <span class="p">)</span> +</span><span id="Join.on-1248"><a href="#Join.on-1248"><span class="linenos">1248</span></a> +</span><span id="Join.on-1249"><a href="#Join.on-1249"><span class="linenos">1249</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> +</span><span id="Join.on-1250"><a href="#Join.on-1250"><span class="linenos">1250</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Join.on-1251"><a href="#Join.on-1251"><span class="linenos">1251</span></a> +</span><span id="Join.on-1252"><a href="#Join.on-1252"><span class="linenos">1252</span></a> <span class="k">return</span> <span class="n">join</span> </span></pre></div> @@ -14501,41 +14760,41 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Join.using"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Join.using-1243"><a href="#Join.using-1243"><span class="linenos">1243</span></a> <span class="k">def</span> <span class="nf">using</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="Join.using-1244"><a href="#Join.using-1244"><span class="linenos">1244</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Join.using-1245"><a href="#Join.using-1245"><span class="linenos">1245</span></a><span class="sd"> Append to or set the USING expressions.</span> -</span><span id="Join.using-1246"><a href="#Join.using-1246"><span class="linenos">1246</span></a> -</span><span id="Join.using-1247"><a href="#Join.using-1247"><span class="linenos">1247</span></a><span class="sd"> Example:</span> -</span><span id="Join.using-1248"><a href="#Join.using-1248"><span class="linenos">1248</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="Join.using-1249"><a href="#Join.using-1249"><span class="linenos">1249</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()</span> -</span><span id="Join.using-1250"><a href="#Join.using-1250"><span class="linenos">1250</span></a><span class="sd"> 'JOIN x USING (foo, bla)'</span> -</span><span id="Join.using-1251"><a href="#Join.using-1251"><span class="linenos">1251</span></a> -</span><span id="Join.using-1252"><a href="#Join.using-1252"><span class="linenos">1252</span></a><span class="sd"> Args:</span> -</span><span id="Join.using-1253"><a href="#Join.using-1253"><span class="linenos">1253</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Join.using-1254"><a href="#Join.using-1254"><span class="linenos">1254</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Join.using-1255"><a href="#Join.using-1255"><span class="linenos">1255</span></a><span class="sd"> append (bool): if `True`, concatenate the new expressions to the existing "using" list.</span> -</span><span id="Join.using-1256"><a href="#Join.using-1256"><span class="linenos">1256</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="Join.using-1257"><a href="#Join.using-1257"><span class="linenos">1257</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Join.using-1258"><a href="#Join.using-1258"><span class="linenos">1258</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Join.using-1259"><a href="#Join.using-1259"><span class="linenos">1259</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Join.using-1260"><a href="#Join.using-1260"><span class="linenos">1260</span></a> -</span><span id="Join.using-1261"><a href="#Join.using-1261"><span class="linenos">1261</span></a><span class="sd"> Returns:</span> -</span><span id="Join.using-1262"><a href="#Join.using-1262"><span class="linenos">1262</span></a><span class="sd"> Join: the modified join expression.</span> -</span><span id="Join.using-1263"><a href="#Join.using-1263"><span class="linenos">1263</span></a><span class="sd"> """</span> -</span><span id="Join.using-1264"><a href="#Join.using-1264"><span class="linenos">1264</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Join.using-1265"><a href="#Join.using-1265"><span class="linenos">1265</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Join.using-1266"><a href="#Join.using-1266"><span class="linenos">1266</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Join.using-1267"><a href="#Join.using-1267"><span class="linenos">1267</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> -</span><span id="Join.using-1268"><a href="#Join.using-1268"><span class="linenos">1268</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Join.using-1269"><a href="#Join.using-1269"><span class="linenos">1269</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Join.using-1270"><a href="#Join.using-1270"><span class="linenos">1270</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Join.using-1271"><a href="#Join.using-1271"><span class="linenos">1271</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Join.using-1272"><a href="#Join.using-1272"><span class="linenos">1272</span></a> <span class="p">)</span> -</span><span id="Join.using-1273"><a href="#Join.using-1273"><span class="linenos">1273</span></a> -</span><span id="Join.using-1274"><a href="#Join.using-1274"><span class="linenos">1274</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> -</span><span id="Join.using-1275"><a href="#Join.using-1275"><span class="linenos">1275</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Join.using-1276"><a href="#Join.using-1276"><span class="linenos">1276</span></a> -</span><span id="Join.using-1277"><a href="#Join.using-1277"><span class="linenos">1277</span></a> <span class="k">return</span> <span class="n">join</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Join.using-1254"><a href="#Join.using-1254"><span class="linenos">1254</span></a> <span class="k">def</span> <span class="nf">using</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="Join.using-1255"><a href="#Join.using-1255"><span class="linenos">1255</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Join.using-1256"><a href="#Join.using-1256"><span class="linenos">1256</span></a><span class="sd"> Append to or set the USING expressions.</span> +</span><span id="Join.using-1257"><a href="#Join.using-1257"><span class="linenos">1257</span></a> +</span><span id="Join.using-1258"><a href="#Join.using-1258"><span class="linenos">1258</span></a><span class="sd"> Example:</span> +</span><span id="Join.using-1259"><a href="#Join.using-1259"><span class="linenos">1259</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="Join.using-1260"><a href="#Join.using-1260"><span class="linenos">1260</span></a><span class="sd"> >>> sqlglot.parse_one("JOIN x", into=Join).using("foo", "bla").sql()</span> +</span><span id="Join.using-1261"><a href="#Join.using-1261"><span class="linenos">1261</span></a><span class="sd"> 'JOIN x USING (foo, bla)'</span> +</span><span id="Join.using-1262"><a href="#Join.using-1262"><span class="linenos">1262</span></a> +</span><span id="Join.using-1263"><a href="#Join.using-1263"><span class="linenos">1263</span></a><span class="sd"> Args:</span> +</span><span id="Join.using-1264"><a href="#Join.using-1264"><span class="linenos">1264</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Join.using-1265"><a href="#Join.using-1265"><span class="linenos">1265</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Join.using-1266"><a href="#Join.using-1266"><span class="linenos">1266</span></a><span class="sd"> append (bool): if `True`, concatenate the new expressions to the existing "using" list.</span> +</span><span id="Join.using-1267"><a href="#Join.using-1267"><span class="linenos">1267</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="Join.using-1268"><a href="#Join.using-1268"><span class="linenos">1268</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Join.using-1269"><a href="#Join.using-1269"><span class="linenos">1269</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Join.using-1270"><a href="#Join.using-1270"><span class="linenos">1270</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Join.using-1271"><a href="#Join.using-1271"><span class="linenos">1271</span></a> +</span><span id="Join.using-1272"><a href="#Join.using-1272"><span class="linenos">1272</span></a><span class="sd"> Returns:</span> +</span><span id="Join.using-1273"><a href="#Join.using-1273"><span class="linenos">1273</span></a><span class="sd"> Join: the modified join expression.</span> +</span><span id="Join.using-1274"><a href="#Join.using-1274"><span class="linenos">1274</span></a><span class="sd"> """</span> +</span><span id="Join.using-1275"><a href="#Join.using-1275"><span class="linenos">1275</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Join.using-1276"><a href="#Join.using-1276"><span class="linenos">1276</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Join.using-1277"><a href="#Join.using-1277"><span class="linenos">1277</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Join.using-1278"><a href="#Join.using-1278"><span class="linenos">1278</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> +</span><span id="Join.using-1279"><a href="#Join.using-1279"><span class="linenos">1279</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Join.using-1280"><a href="#Join.using-1280"><span class="linenos">1280</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Join.using-1281"><a href="#Join.using-1281"><span class="linenos">1281</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Join.using-1282"><a href="#Join.using-1282"><span class="linenos">1282</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Join.using-1283"><a href="#Join.using-1283"><span class="linenos">1283</span></a> <span class="p">)</span> +</span><span id="Join.using-1284"><a href="#Join.using-1284"><span class="linenos">1284</span></a> +</span><span id="Join.using-1285"><a href="#Join.using-1285"><span class="linenos">1285</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"CROSS"</span><span class="p">:</span> +</span><span id="Join.using-1286"><a href="#Join.using-1286"><span class="linenos">1286</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Join.using-1287"><a href="#Join.using-1287"><span class="linenos">1287</span></a> +</span><span id="Join.using-1288"><a href="#Join.using-1288"><span class="linenos">1288</span></a> <span class="k">return</span> <span class="n">join</span> </span></pre></div> @@ -14627,8 +14886,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Lateral"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Lateral-1280"><a href="#Lateral-1280"><span class="linenos">1280</span></a><span class="k">class</span> <span class="nc">Lateral</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> -</span><span id="Lateral-1281"><a href="#Lateral-1281"><span class="linenos">1281</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"view"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"outer"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Lateral-1291"><a href="#Lateral-1291"><span class="linenos">1291</span></a><span class="k">class</span> <span class="nc">Lateral</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> +</span><span id="Lateral-1292"><a href="#Lateral-1292"><span class="linenos">1292</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"view"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"outer"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -14694,16 +14953,16 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#MatchRecognize"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MatchRecognize-1284"><a href="#MatchRecognize-1284"><span class="linenos">1284</span></a><span class="k">class</span> <span class="nc">MatchRecognize</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="MatchRecognize-1285"><a href="#MatchRecognize-1285"><span class="linenos">1285</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="MatchRecognize-1286"><a href="#MatchRecognize-1286"><span class="linenos">1286</span></a> <span class="s2">"partition_by"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="MatchRecognize-1287"><a href="#MatchRecognize-1287"><span class="linenos">1287</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="MatchRecognize-1288"><a href="#MatchRecognize-1288"><span class="linenos">1288</span></a> <span class="s2">"measures"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="MatchRecognize-1289"><a href="#MatchRecognize-1289"><span class="linenos">1289</span></a> <span class="s2">"rows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="MatchRecognize-1290"><a href="#MatchRecognize-1290"><span class="linenos">1290</span></a> <span class="s2">"after"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="MatchRecognize-1291"><a href="#MatchRecognize-1291"><span class="linenos">1291</span></a> <span class="s2">"pattern"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="MatchRecognize-1292"><a href="#MatchRecognize-1292"><span class="linenos">1292</span></a> <span class="s2">"define"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="MatchRecognize-1293"><a href="#MatchRecognize-1293"><span class="linenos">1293</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="MatchRecognize-1295"><a href="#MatchRecognize-1295"><span class="linenos">1295</span></a><span class="k">class</span> <span class="nc">MatchRecognize</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="MatchRecognize-1296"><a href="#MatchRecognize-1296"><span class="linenos">1296</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="MatchRecognize-1297"><a href="#MatchRecognize-1297"><span class="linenos">1297</span></a> <span class="s2">"partition_by"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="MatchRecognize-1298"><a href="#MatchRecognize-1298"><span class="linenos">1298</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="MatchRecognize-1299"><a href="#MatchRecognize-1299"><span class="linenos">1299</span></a> <span class="s2">"measures"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="MatchRecognize-1300"><a href="#MatchRecognize-1300"><span class="linenos">1300</span></a> <span class="s2">"rows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="MatchRecognize-1301"><a href="#MatchRecognize-1301"><span class="linenos">1301</span></a> <span class="s2">"after"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="MatchRecognize-1302"><a href="#MatchRecognize-1302"><span class="linenos">1302</span></a> <span class="s2">"pattern"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="MatchRecognize-1303"><a href="#MatchRecognize-1303"><span class="linenos">1303</span></a> <span class="s2">"define"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="MatchRecognize-1304"><a href="#MatchRecognize-1304"><span class="linenos">1304</span></a> <span class="p">}</span> </span></pre></div> @@ -14763,8 +15022,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Final"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Final-1298"><a href="#Final-1298"><span class="linenos">1298</span></a><span class="k">class</span> <span class="nc">Final</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Final-1299"><a href="#Final-1299"><span class="linenos">1299</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Final-1309"><a href="#Final-1309"><span class="linenos">1309</span></a><span class="k">class</span> <span class="nc">Final</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Final-1310"><a href="#Final-1310"><span class="linenos">1310</span></a> <span class="k">pass</span> </span></pre></div> @@ -14824,8 +15083,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Offset"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Offset-1302"><a href="#Offset-1302"><span class="linenos">1302</span></a><span class="k">class</span> <span class="nc">Offset</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Offset-1303"><a href="#Offset-1303"><span class="linenos">1303</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Offset-1313"><a href="#Offset-1313"><span class="linenos">1313</span></a><span class="k">class</span> <span class="nc">Offset</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Offset-1314"><a href="#Offset-1314"><span class="linenos">1314</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -14885,8 +15144,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Order"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Order-1306"><a href="#Order-1306"><span class="linenos">1306</span></a><span class="k">class</span> <span class="nc">Order</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Order-1307"><a href="#Order-1307"><span class="linenos">1307</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Order-1317"><a href="#Order-1317"><span class="linenos">1317</span></a><span class="k">class</span> <span class="nc">Order</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Order-1318"><a href="#Order-1318"><span class="linenos">1318</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -14946,8 +15205,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Cluster"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cluster-1312"><a href="#Cluster-1312"><span class="linenos">1312</span></a><span class="k">class</span> <span class="nc">Cluster</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> -</span><span id="Cluster-1313"><a href="#Cluster-1313"><span class="linenos">1313</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cluster-1323"><a href="#Cluster-1323"><span class="linenos">1323</span></a><span class="k">class</span> <span class="nc">Cluster</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> +</span><span id="Cluster-1324"><a href="#Cluster-1324"><span class="linenos">1324</span></a> <span class="k">pass</span> </span></pre></div> @@ -15007,8 +15266,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Distribute"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Distribute-1316"><a href="#Distribute-1316"><span class="linenos">1316</span></a><span class="k">class</span> <span class="nc">Distribute</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> -</span><span id="Distribute-1317"><a href="#Distribute-1317"><span class="linenos">1317</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Distribute-1327"><a href="#Distribute-1327"><span class="linenos">1327</span></a><span class="k">class</span> <span class="nc">Distribute</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> +</span><span id="Distribute-1328"><a href="#Distribute-1328"><span class="linenos">1328</span></a> <span class="k">pass</span> </span></pre></div> @@ -15068,8 +15327,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Sort"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Sort-1320"><a href="#Sort-1320"><span class="linenos">1320</span></a><span class="k">class</span> <span class="nc">Sort</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> -</span><span id="Sort-1321"><a href="#Sort-1321"><span class="linenos">1321</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Sort-1331"><a href="#Sort-1331"><span class="linenos">1331</span></a><span class="k">class</span> <span class="nc">Sort</span><span class="p">(</span><span class="n">Order</span><span class="p">):</span> +</span><span id="Sort-1332"><a href="#Sort-1332"><span class="linenos">1332</span></a> <span class="k">pass</span> </span></pre></div> @@ -15129,8 +15388,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Ordered"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Ordered-1324"><a href="#Ordered-1324"><span class="linenos">1324</span></a><span class="k">class</span> <span class="nc">Ordered</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Ordered-1325"><a href="#Ordered-1325"><span class="linenos">1325</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"nulls_first"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Ordered-1335"><a href="#Ordered-1335"><span class="linenos">1335</span></a><span class="k">class</span> <span class="nc">Ordered</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Ordered-1336"><a href="#Ordered-1336"><span class="linenos">1336</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"desc"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"nulls_first"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -15190,8 +15449,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Property"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Property-1328"><a href="#Property-1328"><span class="linenos">1328</span></a><span class="k">class</span> <span class="nc">Property</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Property-1329"><a href="#Property-1329"><span class="linenos">1329</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Property-1339"><a href="#Property-1339"><span class="linenos">1339</span></a><span class="k">class</span> <span class="nc">Property</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Property-1340"><a href="#Property-1340"><span class="linenos">1340</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"value"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -15240,6 +15499,67 @@ Otherwise, this resets the expression.</li> </dl> </div> </section> + <section id="AfterJournalProperty"> + <input id="AfterJournalProperty-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">AfterJournalProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="AfterJournalProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#AfterJournalProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="AfterJournalProperty-1343"><a href="#AfterJournalProperty-1343"><span class="linenos">1343</span></a><span class="k">class</span> <span class="nc">AfterJournalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="AfterJournalProperty-1344"><a href="#AfterJournalProperty-1344"><span class="linenos">1344</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"dual"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="AfterJournalProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="AfterJournalProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="AfterJournalProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="AfterJournalProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="AfterJournalProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="AfterJournalProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="AfterJournalProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="AfterJournalProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="AfterJournalProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="AfterJournalProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="AfterJournalProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="AfterJournalProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="AfterJournalProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="AfterJournalProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="AfterJournalProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="AfterJournalProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="AfterJournalProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="AfterJournalProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="AfterJournalProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="AfterJournalProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="AfterJournalProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="AfterJournalProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="AfterJournalProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="AfterJournalProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="AfterJournalProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="AfterJournalProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="AfterJournalProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="AfterJournalProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="AfterJournalProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="AfterJournalProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="AfterJournalProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="AfterJournalProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="AfterJournalProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="AfterJournalProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> <section id="AlgorithmProperty"> <input id="AlgorithmProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr class"> @@ -15251,8 +15571,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#AlgorithmProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AlgorithmProperty-1332"><a href="#AlgorithmProperty-1332"><span class="linenos">1332</span></a><span class="k">class</span> <span class="nc">AlgorithmProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="AlgorithmProperty-1333"><a href="#AlgorithmProperty-1333"><span class="linenos">1333</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AlgorithmProperty-1347"><a href="#AlgorithmProperty-1347"><span class="linenos">1347</span></a><span class="k">class</span> <span class="nc">AlgorithmProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="AlgorithmProperty-1348"><a href="#AlgorithmProperty-1348"><span class="linenos">1348</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -15301,6 +15621,372 @@ Otherwise, this resets the expression.</li> </dl> </div> </section> + <section id="AutoIncrementProperty"> + <input id="AutoIncrementProperty-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">AutoIncrementProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="AutoIncrementProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#AutoIncrementProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="AutoIncrementProperty-1351"><a href="#AutoIncrementProperty-1351"><span class="linenos">1351</span></a><span class="k">class</span> <span class="nc">AutoIncrementProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="AutoIncrementProperty-1352"><a href="#AutoIncrementProperty-1352"><span class="linenos">1352</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="AutoIncrementProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="AutoIncrementProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="AutoIncrementProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="AutoIncrementProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="AutoIncrementProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="AutoIncrementProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="AutoIncrementProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="AutoIncrementProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="AutoIncrementProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="AutoIncrementProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="AutoIncrementProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="AutoIncrementProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="AutoIncrementProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="AutoIncrementProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="AutoIncrementProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="AutoIncrementProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="AutoIncrementProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="AutoIncrementProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="AutoIncrementProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="AutoIncrementProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="AutoIncrementProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="AutoIncrementProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="AutoIncrementProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="AutoIncrementProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="AutoIncrementProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="AutoIncrementProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="AutoIncrementProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="AutoIncrementProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="AutoIncrementProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="AutoIncrementProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="AutoIncrementProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="AutoIncrementProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="AutoIncrementProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="AutoIncrementProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> + <section id="BlockCompressionProperty"> + <input id="BlockCompressionProperty-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">BlockCompressionProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="BlockCompressionProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#BlockCompressionProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="BlockCompressionProperty-1355"><a href="#BlockCompressionProperty-1355"><span class="linenos">1355</span></a><span class="k">class</span> <span class="nc">BlockCompressionProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="BlockCompressionProperty-1356"><a href="#BlockCompressionProperty-1356"><span class="linenos">1356</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"autotemp"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"always"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"manual"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"never"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="BlockCompressionProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="BlockCompressionProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="BlockCompressionProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="BlockCompressionProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="BlockCompressionProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="BlockCompressionProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="BlockCompressionProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="BlockCompressionProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="BlockCompressionProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="BlockCompressionProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="BlockCompressionProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="BlockCompressionProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="BlockCompressionProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="BlockCompressionProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="BlockCompressionProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="BlockCompressionProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="BlockCompressionProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="BlockCompressionProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="BlockCompressionProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="BlockCompressionProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="BlockCompressionProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="BlockCompressionProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="BlockCompressionProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="BlockCompressionProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="BlockCompressionProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="BlockCompressionProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="BlockCompressionProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="BlockCompressionProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="BlockCompressionProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="BlockCompressionProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="BlockCompressionProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="BlockCompressionProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="BlockCompressionProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="BlockCompressionProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> + <section id="CharacterSetProperty"> + <input id="CharacterSetProperty-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">CharacterSetProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="CharacterSetProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#CharacterSetProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="CharacterSetProperty-1359"><a href="#CharacterSetProperty-1359"><span class="linenos">1359</span></a><span class="k">class</span> <span class="nc">CharacterSetProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="CharacterSetProperty-1360"><a href="#CharacterSetProperty-1360"><span class="linenos">1360</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="CharacterSetProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="CharacterSetProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="CharacterSetProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="CharacterSetProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="CharacterSetProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="CharacterSetProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="CharacterSetProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="CharacterSetProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="CharacterSetProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="CharacterSetProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="CharacterSetProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="CharacterSetProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="CharacterSetProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="CharacterSetProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="CharacterSetProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="CharacterSetProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="CharacterSetProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="CharacterSetProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="CharacterSetProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="CharacterSetProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="CharacterSetProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="CharacterSetProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="CharacterSetProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="CharacterSetProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="CharacterSetProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="CharacterSetProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="CharacterSetProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="CharacterSetProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="CharacterSetProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="CharacterSetProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="CharacterSetProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="CharacterSetProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="CharacterSetProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="CharacterSetProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> + <section id="ChecksumProperty"> + <input id="ChecksumProperty-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">ChecksumProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="ChecksumProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#ChecksumProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="ChecksumProperty-1363"><a href="#ChecksumProperty-1363"><span class="linenos">1363</span></a><span class="k">class</span> <span class="nc">ChecksumProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="ChecksumProperty-1364"><a href="#ChecksumProperty-1364"><span class="linenos">1364</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="ChecksumProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="ChecksumProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="ChecksumProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="ChecksumProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="ChecksumProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="ChecksumProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="ChecksumProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="ChecksumProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="ChecksumProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="ChecksumProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="ChecksumProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="ChecksumProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="ChecksumProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="ChecksumProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="ChecksumProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="ChecksumProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="ChecksumProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="ChecksumProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="ChecksumProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="ChecksumProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="ChecksumProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="ChecksumProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="ChecksumProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="ChecksumProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="ChecksumProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="ChecksumProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="ChecksumProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="ChecksumProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="ChecksumProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="ChecksumProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="ChecksumProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="ChecksumProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="ChecksumProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="ChecksumProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> + <section id="CollateProperty"> + <input id="CollateProperty-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">CollateProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="CollateProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#CollateProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="CollateProperty-1367"><a href="#CollateProperty-1367"><span class="linenos">1367</span></a><span class="k">class</span> <span class="nc">CollateProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="CollateProperty-1368"><a href="#CollateProperty-1368"><span class="linenos">1368</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="CollateProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="CollateProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="CollateProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="CollateProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="CollateProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="CollateProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="CollateProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="CollateProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="CollateProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="CollateProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="CollateProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="CollateProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="CollateProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="CollateProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="CollateProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="CollateProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="CollateProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="CollateProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="CollateProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="CollateProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="CollateProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="CollateProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="CollateProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="CollateProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="CollateProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="CollateProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="CollateProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="CollateProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="CollateProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="CollateProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="CollateProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="CollateProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="CollateProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="CollateProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> + <section id="DataBlocksizeProperty"> + <input id="DataBlocksizeProperty-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">DataBlocksizeProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="DataBlocksizeProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#DataBlocksizeProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataBlocksizeProperty-1371"><a href="#DataBlocksizeProperty-1371"><span class="linenos">1371</span></a><span class="k">class</span> <span class="nc">DataBlocksizeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="DataBlocksizeProperty-1372"><a href="#DataBlocksizeProperty-1372"><span class="linenos">1372</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"size"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"units"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="DataBlocksizeProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="DataBlocksizeProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="DataBlocksizeProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="DataBlocksizeProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="DataBlocksizeProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="DataBlocksizeProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="DataBlocksizeProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="DataBlocksizeProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="DataBlocksizeProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="DataBlocksizeProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="DataBlocksizeProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="DataBlocksizeProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="DataBlocksizeProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="DataBlocksizeProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="DataBlocksizeProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="DataBlocksizeProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="DataBlocksizeProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="DataBlocksizeProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="DataBlocksizeProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="DataBlocksizeProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="DataBlocksizeProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="DataBlocksizeProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="DataBlocksizeProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="DataBlocksizeProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="DataBlocksizeProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="DataBlocksizeProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="DataBlocksizeProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="DataBlocksizeProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="DataBlocksizeProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="DataBlocksizeProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="DataBlocksizeProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="DataBlocksizeProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="DataBlocksizeProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="DataBlocksizeProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> <section id="DefinerProperty"> <input id="DefinerProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr class"> @@ -15312,8 +15998,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#DefinerProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DefinerProperty-1336"><a href="#DefinerProperty-1336"><span class="linenos">1336</span></a><span class="k">class</span> <span class="nc">DefinerProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="DefinerProperty-1337"><a href="#DefinerProperty-1337"><span class="linenos">1337</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DefinerProperty-1375"><a href="#DefinerProperty-1375"><span class="linenos">1375</span></a><span class="k">class</span> <span class="nc">DefinerProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="DefinerProperty-1376"><a href="#DefinerProperty-1376"><span class="linenos">1376</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -15362,19 +16048,19 @@ Otherwise, this resets the expression.</li> </dl> </div> </section> - <section id="SqlSecurityProperty"> - <input id="SqlSecurityProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="DistKeyProperty"> + <input id="DistKeyProperty-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">SqlSecurityProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">DistKeyProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="SqlSecurityProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="DistKeyProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#SqlSecurityProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SqlSecurityProperty-1340"><a href="#SqlSecurityProperty-1340"><span class="linenos">1340</span></a><span class="k">class</span> <span class="nc">SqlSecurityProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="SqlSecurityProperty-1341"><a href="#SqlSecurityProperty-1341"><span class="linenos">1341</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"definer"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#DistKeyProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="DistKeyProperty-1379"><a href="#DistKeyProperty-1379"><span class="linenos">1379</span></a><span class="k">class</span> <span class="nc">DistKeyProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="DistKeyProperty-1380"><a href="#DistKeyProperty-1380"><span class="linenos">1380</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -15384,58 +16070,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="SqlSecurityProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="SqlSecurityProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="SqlSecurityProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="SqlSecurityProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="SqlSecurityProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="SqlSecurityProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="SqlSecurityProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="SqlSecurityProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="SqlSecurityProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="SqlSecurityProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="SqlSecurityProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="SqlSecurityProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="SqlSecurityProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="SqlSecurityProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="SqlSecurityProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="SqlSecurityProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="SqlSecurityProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="SqlSecurityProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="SqlSecurityProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="SqlSecurityProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="SqlSecurityProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="SqlSecurityProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="SqlSecurityProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="SqlSecurityProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="SqlSecurityProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="SqlSecurityProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="SqlSecurityProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="SqlSecurityProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="SqlSecurityProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="SqlSecurityProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="SqlSecurityProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="SqlSecurityProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="SqlSecurityProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="SqlSecurityProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="DistKeyProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="DistKeyProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="DistKeyProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="DistKeyProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="DistKeyProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="DistKeyProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="DistKeyProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="DistKeyProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="DistKeyProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="DistKeyProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="DistKeyProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="DistKeyProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="DistKeyProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="DistKeyProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="DistKeyProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="DistKeyProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="DistKeyProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="DistKeyProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="DistKeyProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="DistKeyProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="DistKeyProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="DistKeyProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="DistKeyProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="DistKeyProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="DistKeyProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="DistKeyProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="DistKeyProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="DistKeyProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="DistKeyProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="DistKeyProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="DistKeyProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="DistKeyProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="DistKeyProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="DistKeyProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="TableFormatProperty"> - <input id="TableFormatProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="DistStyleProperty"> + <input id="DistStyleProperty-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">TableFormatProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">DistStyleProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="TableFormatProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="DistStyleProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#TableFormatProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TableFormatProperty-1344"><a href="#TableFormatProperty-1344"><span class="linenos">1344</span></a><span class="k">class</span> <span class="nc">TableFormatProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="TableFormatProperty-1345"><a href="#TableFormatProperty-1345"><span class="linenos">1345</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#DistStyleProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="DistStyleProperty-1383"><a href="#DistStyleProperty-1383"><span class="linenos">1383</span></a><span class="k">class</span> <span class="nc">DistStyleProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="DistStyleProperty-1384"><a href="#DistStyleProperty-1384"><span class="linenos">1384</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -15445,58 +16131,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="TableFormatProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="TableFormatProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="TableFormatProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="TableFormatProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="TableFormatProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="TableFormatProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="TableFormatProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="TableFormatProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="TableFormatProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="TableFormatProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="TableFormatProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="TableFormatProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="TableFormatProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="TableFormatProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="TableFormatProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="TableFormatProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="TableFormatProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="TableFormatProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="TableFormatProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="TableFormatProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="TableFormatProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="TableFormatProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="TableFormatProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="TableFormatProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="TableFormatProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="TableFormatProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="TableFormatProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="TableFormatProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="TableFormatProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="TableFormatProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="TableFormatProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="TableFormatProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="TableFormatProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="TableFormatProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="DistStyleProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="DistStyleProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="DistStyleProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="DistStyleProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="DistStyleProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="DistStyleProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="DistStyleProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="DistStyleProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="DistStyleProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="DistStyleProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="DistStyleProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="DistStyleProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="DistStyleProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="DistStyleProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="DistStyleProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="DistStyleProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="DistStyleProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="DistStyleProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="DistStyleProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="DistStyleProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="DistStyleProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="DistStyleProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="DistStyleProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="DistStyleProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="DistStyleProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="DistStyleProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="DistStyleProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="DistStyleProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="DistStyleProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="DistStyleProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="DistStyleProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="DistStyleProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="DistStyleProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="DistStyleProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="PartitionedByProperty"> - <input id="PartitionedByProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="EngineProperty"> + <input id="EngineProperty-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">PartitionedByProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">EngineProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="PartitionedByProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="EngineProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#PartitionedByProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PartitionedByProperty-1348"><a href="#PartitionedByProperty-1348"><span class="linenos">1348</span></a><span class="k">class</span> <span class="nc">PartitionedByProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="PartitionedByProperty-1349"><a href="#PartitionedByProperty-1349"><span class="linenos">1349</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#EngineProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="EngineProperty-1387"><a href="#EngineProperty-1387"><span class="linenos">1387</span></a><span class="k">class</span> <span class="nc">EngineProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="EngineProperty-1388"><a href="#EngineProperty-1388"><span class="linenos">1388</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -15506,40 +16192,223 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="PartitionedByProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="PartitionedByProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="PartitionedByProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="PartitionedByProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="PartitionedByProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="PartitionedByProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="PartitionedByProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="PartitionedByProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="PartitionedByProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="PartitionedByProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="PartitionedByProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="PartitionedByProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="PartitionedByProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="PartitionedByProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="PartitionedByProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="PartitionedByProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="PartitionedByProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="PartitionedByProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="PartitionedByProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="PartitionedByProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="PartitionedByProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="PartitionedByProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="PartitionedByProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="PartitionedByProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="PartitionedByProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="PartitionedByProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="PartitionedByProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="PartitionedByProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="PartitionedByProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="PartitionedByProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="PartitionedByProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="PartitionedByProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="PartitionedByProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="PartitionedByProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="EngineProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="EngineProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="EngineProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="EngineProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="EngineProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="EngineProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="EngineProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="EngineProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="EngineProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="EngineProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="EngineProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="EngineProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="EngineProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="EngineProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="EngineProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="EngineProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="EngineProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="EngineProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="EngineProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="EngineProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="EngineProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="EngineProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="EngineProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="EngineProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="EngineProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="EngineProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="EngineProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="EngineProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="EngineProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="EngineProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="EngineProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="EngineProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="EngineProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="EngineProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> + <section id="ExecuteAsProperty"> + <input id="ExecuteAsProperty-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">ExecuteAsProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="ExecuteAsProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#ExecuteAsProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="ExecuteAsProperty-1391"><a href="#ExecuteAsProperty-1391"><span class="linenos">1391</span></a><span class="k">class</span> <span class="nc">ExecuteAsProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="ExecuteAsProperty-1392"><a href="#ExecuteAsProperty-1392"><span class="linenos">1392</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="ExecuteAsProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="ExecuteAsProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="ExecuteAsProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="ExecuteAsProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="ExecuteAsProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="ExecuteAsProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="ExecuteAsProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="ExecuteAsProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="ExecuteAsProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="ExecuteAsProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="ExecuteAsProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="ExecuteAsProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="ExecuteAsProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="ExecuteAsProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="ExecuteAsProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="ExecuteAsProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="ExecuteAsProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="ExecuteAsProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="ExecuteAsProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="ExecuteAsProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="ExecuteAsProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="ExecuteAsProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="ExecuteAsProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="ExecuteAsProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="ExecuteAsProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="ExecuteAsProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="ExecuteAsProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="ExecuteAsProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="ExecuteAsProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="ExecuteAsProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="ExecuteAsProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="ExecuteAsProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="ExecuteAsProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="ExecuteAsProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> + <section id="ExternalProperty"> + <input id="ExternalProperty-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">ExternalProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="ExternalProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#ExternalProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="ExternalProperty-1395"><a href="#ExternalProperty-1395"><span class="linenos">1395</span></a><span class="k">class</span> <span class="nc">ExternalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="ExternalProperty-1396"><a href="#ExternalProperty-1396"><span class="linenos">1396</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="ExternalProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="ExternalProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="ExternalProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="ExternalProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="ExternalProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="ExternalProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="ExternalProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="ExternalProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="ExternalProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="ExternalProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="ExternalProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="ExternalProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="ExternalProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="ExternalProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="ExternalProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="ExternalProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="ExternalProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="ExternalProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="ExternalProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="ExternalProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="ExternalProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="ExternalProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="ExternalProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="ExternalProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="ExternalProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="ExternalProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="ExternalProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="ExternalProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="ExternalProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="ExternalProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="ExternalProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="ExternalProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="ExternalProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="ExternalProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> + <section id="FallbackProperty"> + <input id="FallbackProperty-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">FallbackProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="FallbackProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#FallbackProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="FallbackProperty-1399"><a href="#FallbackProperty-1399"><span class="linenos">1399</span></a><span class="k">class</span> <span class="nc">FallbackProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="FallbackProperty-1400"><a href="#FallbackProperty-1400"><span class="linenos">1400</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"protection"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="FallbackProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="FallbackProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="FallbackProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="FallbackProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="FallbackProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="FallbackProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="FallbackProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="FallbackProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="FallbackProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="FallbackProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="FallbackProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="FallbackProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="FallbackProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="FallbackProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="FallbackProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="FallbackProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="FallbackProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="FallbackProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="FallbackProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="FallbackProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="FallbackProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="FallbackProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="FallbackProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="FallbackProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="FallbackProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="FallbackProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="FallbackProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="FallbackProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="FallbackProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="FallbackProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="FallbackProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="FallbackProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="FallbackProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="FallbackProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> @@ -15556,8 +16425,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#FileFormatProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="FileFormatProperty-1352"><a href="#FileFormatProperty-1352"><span class="linenos">1352</span></a><span class="k">class</span> <span class="nc">FileFormatProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="FileFormatProperty-1353"><a href="#FileFormatProperty-1353"><span class="linenos">1353</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="FileFormatProperty-1403"><a href="#FileFormatProperty-1403"><span class="linenos">1403</span></a><span class="k">class</span> <span class="nc">FileFormatProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="FileFormatProperty-1404"><a href="#FileFormatProperty-1404"><span class="linenos">1404</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -15606,19 +16475,19 @@ Otherwise, this resets the expression.</li> </dl> </div> </section> - <section id="DistKeyProperty"> - <input id="DistKeyProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="FreespaceProperty"> + <input id="FreespaceProperty-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">DistKeyProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">FreespaceProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="DistKeyProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="FreespaceProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#DistKeyProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DistKeyProperty-1356"><a href="#DistKeyProperty-1356"><span class="linenos">1356</span></a><span class="k">class</span> <span class="nc">DistKeyProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="DistKeyProperty-1357"><a href="#DistKeyProperty-1357"><span class="linenos">1357</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#FreespaceProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="FreespaceProperty-1407"><a href="#FreespaceProperty-1407"><span class="linenos">1407</span></a><span class="k">class</span> <span class="nc">FreespaceProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="FreespaceProperty-1408"><a href="#FreespaceProperty-1408"><span class="linenos">1408</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -15628,58 +16497,64 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="DistKeyProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="DistKeyProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="DistKeyProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="DistKeyProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="DistKeyProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="DistKeyProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="DistKeyProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="DistKeyProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="DistKeyProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="DistKeyProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="DistKeyProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="DistKeyProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="DistKeyProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="DistKeyProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="DistKeyProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="DistKeyProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="DistKeyProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="DistKeyProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="DistKeyProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="DistKeyProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="DistKeyProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="DistKeyProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="DistKeyProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="DistKeyProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="DistKeyProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="DistKeyProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="DistKeyProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="DistKeyProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="DistKeyProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="DistKeyProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="DistKeyProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="DistKeyProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="DistKeyProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="DistKeyProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="FreespaceProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="FreespaceProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="FreespaceProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="FreespaceProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="FreespaceProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="FreespaceProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="FreespaceProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="FreespaceProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="FreespaceProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="FreespaceProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="FreespaceProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="FreespaceProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="FreespaceProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="FreespaceProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="FreespaceProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="FreespaceProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="FreespaceProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="FreespaceProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="FreespaceProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="FreespaceProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="FreespaceProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="FreespaceProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="FreespaceProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="FreespaceProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="FreespaceProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="FreespaceProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="FreespaceProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="FreespaceProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="FreespaceProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="FreespaceProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="FreespaceProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="FreespaceProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="FreespaceProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="FreespaceProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="SortKeyProperty"> - <input id="SortKeyProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="IsolatedLoadingProperty"> + <input id="IsolatedLoadingProperty-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">SortKeyProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">IsolatedLoadingProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="SortKeyProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="IsolatedLoadingProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#SortKeyProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SortKeyProperty-1360"><a href="#SortKeyProperty-1360"><span class="linenos">1360</span></a><span class="k">class</span> <span class="nc">SortKeyProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="SortKeyProperty-1361"><a href="#SortKeyProperty-1361"><span class="linenos">1361</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"compound"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <a class="headerlink" href="#IsolatedLoadingProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="IsolatedLoadingProperty-1411"><a href="#IsolatedLoadingProperty-1411"><span class="linenos">1411</span></a><span class="k">class</span> <span class="nc">IsolatedLoadingProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="IsolatedLoadingProperty-1412"><a href="#IsolatedLoadingProperty-1412"><span class="linenos">1412</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="IsolatedLoadingProperty-1413"><a href="#IsolatedLoadingProperty-1413"><span class="linenos">1413</span></a> <span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="IsolatedLoadingProperty-1414"><a href="#IsolatedLoadingProperty-1414"><span class="linenos">1414</span></a> <span class="s2">"concurrent"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="IsolatedLoadingProperty-1415"><a href="#IsolatedLoadingProperty-1415"><span class="linenos">1415</span></a> <span class="s2">"for_all"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="IsolatedLoadingProperty-1416"><a href="#IsolatedLoadingProperty-1416"><span class="linenos">1416</span></a> <span class="s2">"for_insert"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="IsolatedLoadingProperty-1417"><a href="#IsolatedLoadingProperty-1417"><span class="linenos">1417</span></a> <span class="s2">"for_none"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="IsolatedLoadingProperty-1418"><a href="#IsolatedLoadingProperty-1418"><span class="linenos">1418</span></a> <span class="p">}</span> </span></pre></div> @@ -15689,58 +16564,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="SortKeyProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="SortKeyProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="SortKeyProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="SortKeyProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="SortKeyProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="SortKeyProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="SortKeyProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="SortKeyProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="SortKeyProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="SortKeyProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="SortKeyProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="SortKeyProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="SortKeyProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="SortKeyProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="SortKeyProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="SortKeyProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="SortKeyProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="SortKeyProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="SortKeyProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="SortKeyProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="SortKeyProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="SortKeyProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="SortKeyProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="SortKeyProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="SortKeyProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="SortKeyProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="SortKeyProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="SortKeyProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="SortKeyProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="SortKeyProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="SortKeyProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="SortKeyProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="SortKeyProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="SortKeyProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="IsolatedLoadingProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="IsolatedLoadingProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="IsolatedLoadingProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="IsolatedLoadingProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="IsolatedLoadingProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="IsolatedLoadingProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="IsolatedLoadingProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="IsolatedLoadingProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="IsolatedLoadingProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="IsolatedLoadingProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="IsolatedLoadingProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="IsolatedLoadingProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="IsolatedLoadingProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="IsolatedLoadingProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="IsolatedLoadingProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="IsolatedLoadingProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="IsolatedLoadingProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="IsolatedLoadingProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="IsolatedLoadingProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="IsolatedLoadingProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="IsolatedLoadingProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="IsolatedLoadingProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="IsolatedLoadingProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="IsolatedLoadingProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="IsolatedLoadingProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="IsolatedLoadingProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="IsolatedLoadingProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="IsolatedLoadingProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="IsolatedLoadingProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="IsolatedLoadingProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="IsolatedLoadingProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="IsolatedLoadingProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="IsolatedLoadingProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="IsolatedLoadingProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="DistStyleProperty"> - <input id="DistStyleProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="JournalProperty"> + <input id="JournalProperty-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">DistStyleProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">JournalProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="DistStyleProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="JournalProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#DistStyleProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DistStyleProperty-1364"><a href="#DistStyleProperty-1364"><span class="linenos">1364</span></a><span class="k">class</span> <span class="nc">DistStyleProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="DistStyleProperty-1365"><a href="#DistStyleProperty-1365"><span class="linenos">1365</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#JournalProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="JournalProperty-1421"><a href="#JournalProperty-1421"><span class="linenos">1421</span></a><span class="k">class</span> <span class="nc">JournalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="JournalProperty-1422"><a href="#JournalProperty-1422"><span class="linenos">1422</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"dual"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"before"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -15750,40 +16625,101 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="DistStyleProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="DistStyleProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="DistStyleProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="DistStyleProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="DistStyleProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="DistStyleProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="DistStyleProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="DistStyleProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="DistStyleProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="DistStyleProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="DistStyleProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="DistStyleProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="DistStyleProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="DistStyleProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="DistStyleProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="DistStyleProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="DistStyleProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="DistStyleProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="DistStyleProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="DistStyleProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="DistStyleProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="DistStyleProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="DistStyleProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="DistStyleProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="DistStyleProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="DistStyleProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="DistStyleProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="DistStyleProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="DistStyleProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="DistStyleProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="DistStyleProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="DistStyleProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="DistStyleProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="DistStyleProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="JournalProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="JournalProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="JournalProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="JournalProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="JournalProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="JournalProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="JournalProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="JournalProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="JournalProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="JournalProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="JournalProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="JournalProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="JournalProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="JournalProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="JournalProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="JournalProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="JournalProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="JournalProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="JournalProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="JournalProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="JournalProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="JournalProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="JournalProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="JournalProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="JournalProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="JournalProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="JournalProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="JournalProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="JournalProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="JournalProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="JournalProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="JournalProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="JournalProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="JournalProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> + <section id="LanguageProperty"> + <input id="LanguageProperty-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">LanguageProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="LanguageProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#LanguageProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="LanguageProperty-1425"><a href="#LanguageProperty-1425"><span class="linenos">1425</span></a><span class="k">class</span> <span class="nc">LanguageProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="LanguageProperty-1426"><a href="#LanguageProperty-1426"><span class="linenos">1426</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="LanguageProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="LanguageProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="LanguageProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="LanguageProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="LanguageProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="LanguageProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="LanguageProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="LanguageProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="LanguageProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="LanguageProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="LanguageProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="LanguageProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="LanguageProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="LanguageProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="LanguageProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="LanguageProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="LanguageProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="LanguageProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="LanguageProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="LanguageProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="LanguageProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="LanguageProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="LanguageProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="LanguageProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="LanguageProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="LanguageProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="LanguageProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="LanguageProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="LanguageProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="LanguageProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="LanguageProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="LanguageProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="LanguageProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="LanguageProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> @@ -15800,8 +16736,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#LikeProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LikeProperty-1368"><a href="#LikeProperty-1368"><span class="linenos">1368</span></a><span class="k">class</span> <span class="nc">LikeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="LikeProperty-1369"><a href="#LikeProperty-1369"><span class="linenos">1369</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LikeProperty-1429"><a href="#LikeProperty-1429"><span class="linenos">1429</span></a><span class="k">class</span> <span class="nc">LikeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="LikeProperty-1430"><a href="#LikeProperty-1430"><span class="linenos">1430</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -15861,8 +16797,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#LocationProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LocationProperty-1372"><a href="#LocationProperty-1372"><span class="linenos">1372</span></a><span class="k">class</span> <span class="nc">LocationProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="LocationProperty-1373"><a href="#LocationProperty-1373"><span class="linenos">1373</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LocationProperty-1433"><a href="#LocationProperty-1433"><span class="linenos">1433</span></a><span class="k">class</span> <span class="nc">LocationProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="LocationProperty-1434"><a href="#LocationProperty-1434"><span class="linenos">1434</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -15911,80 +16847,25 @@ Otherwise, this resets the expression.</li> </dl> </div> </section> - <section id="EngineProperty"> - <input id="EngineProperty-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">EngineProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - - <label class="view-source-button" for="EngineProperty-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#EngineProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="EngineProperty-1376"><a href="#EngineProperty-1376"><span class="linenos">1376</span></a><span class="k">class</span> <span class="nc">EngineProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="EngineProperty-1377"><a href="#EngineProperty-1377"><span class="linenos">1377</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span></pre></div> - - - - - <div class="inherited"> - <h5>Inherited Members</h5> - <dl> - <div><dt><a href="#Expression">Expression</a></dt> - <dd id="EngineProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="EngineProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="EngineProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="EngineProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="EngineProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="EngineProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="EngineProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="EngineProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="EngineProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="EngineProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="EngineProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="EngineProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="EngineProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="EngineProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="EngineProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="EngineProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="EngineProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="EngineProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="EngineProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="EngineProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="EngineProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="EngineProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="EngineProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="EngineProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="EngineProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="EngineProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="EngineProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="EngineProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="EngineProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="EngineProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="EngineProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="EngineProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="EngineProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="EngineProperty.load" class="function"><a href="#Expression.load">load</a></dd> - - </div> - </dl> - </div> - </section> - <section id="AutoIncrementProperty"> - <input id="AutoIncrementProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="LockingProperty"> + <input id="LockingProperty-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">AutoIncrementProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">LockingProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="AutoIncrementProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="LockingProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#AutoIncrementProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AutoIncrementProperty-1380"><a href="#AutoIncrementProperty-1380"><span class="linenos">1380</span></a><span class="k">class</span> <span class="nc">AutoIncrementProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="AutoIncrementProperty-1381"><a href="#AutoIncrementProperty-1381"><span class="linenos">1381</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#LockingProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="LockingProperty-1437"><a href="#LockingProperty-1437"><span class="linenos">1437</span></a><span class="k">class</span> <span class="nc">LockingProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="LockingProperty-1438"><a href="#LockingProperty-1438"><span class="linenos">1438</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="LockingProperty-1439"><a href="#LockingProperty-1439"><span class="linenos">1439</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="LockingProperty-1440"><a href="#LockingProperty-1440"><span class="linenos">1440</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="LockingProperty-1441"><a href="#LockingProperty-1441"><span class="linenos">1441</span></a> <span class="s2">"for_or_in"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="LockingProperty-1442"><a href="#LockingProperty-1442"><span class="linenos">1442</span></a> <span class="s2">"lock_type"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="LockingProperty-1443"><a href="#LockingProperty-1443"><span class="linenos">1443</span></a> <span class="s2">"override"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="LockingProperty-1444"><a href="#LockingProperty-1444"><span class="linenos">1444</span></a> <span class="p">}</span> </span></pre></div> @@ -15994,58 +16875,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="AutoIncrementProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="AutoIncrementProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="AutoIncrementProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="AutoIncrementProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="AutoIncrementProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="AutoIncrementProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="AutoIncrementProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="AutoIncrementProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="AutoIncrementProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="AutoIncrementProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="AutoIncrementProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="AutoIncrementProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="AutoIncrementProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="AutoIncrementProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="AutoIncrementProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="AutoIncrementProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="AutoIncrementProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="AutoIncrementProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="AutoIncrementProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="AutoIncrementProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="AutoIncrementProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="AutoIncrementProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="AutoIncrementProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="AutoIncrementProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="AutoIncrementProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="AutoIncrementProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="AutoIncrementProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="AutoIncrementProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="AutoIncrementProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="AutoIncrementProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="AutoIncrementProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="AutoIncrementProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="AutoIncrementProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="AutoIncrementProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="LockingProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="LockingProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="LockingProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="LockingProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="LockingProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="LockingProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="LockingProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="LockingProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="LockingProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="LockingProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="LockingProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="LockingProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="LockingProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="LockingProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="LockingProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="LockingProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="LockingProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="LockingProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="LockingProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="LockingProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="LockingProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="LockingProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="LockingProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="LockingProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="LockingProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="LockingProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="LockingProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="LockingProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="LockingProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="LockingProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="LockingProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="LockingProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="LockingProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="LockingProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="CharacterSetProperty"> - <input id="CharacterSetProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="LogProperty"> + <input id="LogProperty-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">CharacterSetProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">LogProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="CharacterSetProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="LogProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#CharacterSetProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CharacterSetProperty-1384"><a href="#CharacterSetProperty-1384"><span class="linenos">1384</span></a><span class="k">class</span> <span class="nc">CharacterSetProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="CharacterSetProperty-1385"><a href="#CharacterSetProperty-1385"><span class="linenos">1385</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#LogProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="LogProperty-1447"><a href="#LogProperty-1447"><span class="linenos">1447</span></a><span class="k">class</span> <span class="nc">LogProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="LogProperty-1448"><a href="#LogProperty-1448"><span class="linenos">1448</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -16055,58 +16936,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="CharacterSetProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="CharacterSetProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="CharacterSetProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="CharacterSetProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="CharacterSetProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="CharacterSetProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="CharacterSetProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="CharacterSetProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="CharacterSetProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="CharacterSetProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="CharacterSetProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="CharacterSetProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="CharacterSetProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="CharacterSetProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="CharacterSetProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="CharacterSetProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="CharacterSetProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="CharacterSetProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="CharacterSetProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="CharacterSetProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="CharacterSetProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="CharacterSetProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="CharacterSetProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="CharacterSetProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="CharacterSetProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="CharacterSetProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="CharacterSetProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="CharacterSetProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="CharacterSetProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="CharacterSetProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="CharacterSetProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="CharacterSetProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="CharacterSetProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="CharacterSetProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="LogProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="LogProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="LogProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="LogProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="LogProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="LogProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="LogProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="LogProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="LogProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="LogProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="LogProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="LogProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="LogProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="LogProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="LogProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="LogProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="LogProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="LogProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="LogProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="LogProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="LogProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="LogProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="LogProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="LogProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="LogProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="LogProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="LogProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="LogProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="LogProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="LogProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="LogProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="LogProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="LogProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="LogProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="CollateProperty"> - <input id="CollateProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="MaterializedProperty"> + <input id="MaterializedProperty-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">CollateProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">MaterializedProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="CollateProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="MaterializedProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#CollateProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CollateProperty-1388"><a href="#CollateProperty-1388"><span class="linenos">1388</span></a><span class="k">class</span> <span class="nc">CollateProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="CollateProperty-1389"><a href="#CollateProperty-1389"><span class="linenos">1389</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#MaterializedProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="MaterializedProperty-1451"><a href="#MaterializedProperty-1451"><span class="linenos">1451</span></a><span class="k">class</span> <span class="nc">MaterializedProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="MaterializedProperty-1452"><a href="#MaterializedProperty-1452"><span class="linenos">1452</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -16116,58 +16997,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="CollateProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="CollateProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="CollateProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="CollateProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="CollateProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="CollateProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="CollateProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="CollateProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="CollateProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="CollateProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="CollateProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="CollateProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="CollateProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="CollateProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="CollateProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="CollateProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="CollateProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="CollateProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="CollateProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="CollateProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="CollateProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="CollateProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="CollateProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="CollateProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="CollateProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="CollateProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="CollateProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="CollateProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="CollateProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="CollateProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="CollateProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="CollateProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="CollateProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="CollateProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="MaterializedProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="MaterializedProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="MaterializedProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="MaterializedProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="MaterializedProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="MaterializedProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="MaterializedProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="MaterializedProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="MaterializedProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="MaterializedProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="MaterializedProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="MaterializedProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="MaterializedProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="MaterializedProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="MaterializedProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="MaterializedProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="MaterializedProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="MaterializedProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="MaterializedProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="MaterializedProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="MaterializedProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="MaterializedProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="MaterializedProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="MaterializedProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="MaterializedProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="MaterializedProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="MaterializedProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="MaterializedProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="MaterializedProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="MaterializedProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="MaterializedProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="MaterializedProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="MaterializedProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="MaterializedProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="SchemaCommentProperty"> - <input id="SchemaCommentProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="MergeBlockRatioProperty"> + <input id="MergeBlockRatioProperty-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">SchemaCommentProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">MergeBlockRatioProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="SchemaCommentProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="MergeBlockRatioProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#SchemaCommentProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SchemaCommentProperty-1392"><a href="#SchemaCommentProperty-1392"><span class="linenos">1392</span></a><span class="k">class</span> <span class="nc">SchemaCommentProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="SchemaCommentProperty-1393"><a href="#SchemaCommentProperty-1393"><span class="linenos">1393</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#MergeBlockRatioProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="MergeBlockRatioProperty-1455"><a href="#MergeBlockRatioProperty-1455"><span class="linenos">1455</span></a><span class="k">class</span> <span class="nc">MergeBlockRatioProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="MergeBlockRatioProperty-1456"><a href="#MergeBlockRatioProperty-1456"><span class="linenos">1456</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -16177,58 +17058,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="SchemaCommentProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="SchemaCommentProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="SchemaCommentProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="SchemaCommentProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="SchemaCommentProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="SchemaCommentProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="SchemaCommentProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="SchemaCommentProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="SchemaCommentProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="SchemaCommentProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="SchemaCommentProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="SchemaCommentProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="SchemaCommentProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="SchemaCommentProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="SchemaCommentProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="SchemaCommentProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="SchemaCommentProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="SchemaCommentProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="SchemaCommentProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="SchemaCommentProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="SchemaCommentProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="SchemaCommentProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="SchemaCommentProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="SchemaCommentProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="SchemaCommentProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="SchemaCommentProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="SchemaCommentProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="SchemaCommentProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="SchemaCommentProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="SchemaCommentProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="SchemaCommentProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="SchemaCommentProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="SchemaCommentProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="SchemaCommentProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="MergeBlockRatioProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="MergeBlockRatioProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="MergeBlockRatioProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="MergeBlockRatioProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="MergeBlockRatioProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="MergeBlockRatioProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="MergeBlockRatioProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="MergeBlockRatioProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="MergeBlockRatioProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="MergeBlockRatioProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="MergeBlockRatioProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="MergeBlockRatioProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="MergeBlockRatioProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="MergeBlockRatioProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="MergeBlockRatioProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="MergeBlockRatioProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="MergeBlockRatioProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="MergeBlockRatioProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="MergeBlockRatioProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="MergeBlockRatioProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="MergeBlockRatioProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="MergeBlockRatioProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="MergeBlockRatioProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="MergeBlockRatioProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="MergeBlockRatioProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="MergeBlockRatioProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="MergeBlockRatioProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="MergeBlockRatioProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="MergeBlockRatioProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="MergeBlockRatioProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="MergeBlockRatioProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="MergeBlockRatioProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="MergeBlockRatioProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="MergeBlockRatioProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="ReturnsProperty"> - <input id="ReturnsProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="NoPrimaryIndexProperty"> + <input id="NoPrimaryIndexProperty-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">ReturnsProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">NoPrimaryIndexProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="ReturnsProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="NoPrimaryIndexProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#ReturnsProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ReturnsProperty-1396"><a href="#ReturnsProperty-1396"><span class="linenos">1396</span></a><span class="k">class</span> <span class="nc">ReturnsProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="ReturnsProperty-1397"><a href="#ReturnsProperty-1397"><span class="linenos">1397</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"is_table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <a class="headerlink" href="#NoPrimaryIndexProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="NoPrimaryIndexProperty-1459"><a href="#NoPrimaryIndexProperty-1459"><span class="linenos">1459</span></a><span class="k">class</span> <span class="nc">NoPrimaryIndexProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="NoPrimaryIndexProperty-1460"><a href="#NoPrimaryIndexProperty-1460"><span class="linenos">1460</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -16238,58 +17119,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="ReturnsProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="ReturnsProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="ReturnsProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="ReturnsProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="ReturnsProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="ReturnsProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="ReturnsProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="ReturnsProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="ReturnsProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="ReturnsProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="ReturnsProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="ReturnsProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="ReturnsProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="ReturnsProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="ReturnsProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="ReturnsProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="ReturnsProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="ReturnsProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="ReturnsProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="ReturnsProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="ReturnsProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="ReturnsProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="ReturnsProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="ReturnsProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="ReturnsProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="ReturnsProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="ReturnsProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="ReturnsProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="ReturnsProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="ReturnsProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="ReturnsProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="ReturnsProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="ReturnsProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="ReturnsProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="NoPrimaryIndexProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="NoPrimaryIndexProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="NoPrimaryIndexProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="NoPrimaryIndexProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="NoPrimaryIndexProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="NoPrimaryIndexProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="NoPrimaryIndexProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="NoPrimaryIndexProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="NoPrimaryIndexProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="NoPrimaryIndexProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="NoPrimaryIndexProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="NoPrimaryIndexProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="NoPrimaryIndexProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="NoPrimaryIndexProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="NoPrimaryIndexProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="NoPrimaryIndexProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="NoPrimaryIndexProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="NoPrimaryIndexProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="NoPrimaryIndexProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="NoPrimaryIndexProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="NoPrimaryIndexProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="NoPrimaryIndexProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="NoPrimaryIndexProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="NoPrimaryIndexProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="NoPrimaryIndexProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="NoPrimaryIndexProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="NoPrimaryIndexProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="NoPrimaryIndexProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="NoPrimaryIndexProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="NoPrimaryIndexProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="NoPrimaryIndexProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="NoPrimaryIndexProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="NoPrimaryIndexProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="NoPrimaryIndexProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="LanguageProperty"> - <input id="LanguageProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="OnCommitProperty"> + <input id="OnCommitProperty-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">LanguageProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">OnCommitProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="LanguageProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="OnCommitProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#LanguageProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LanguageProperty-1400"><a href="#LanguageProperty-1400"><span class="linenos">1400</span></a><span class="k">class</span> <span class="nc">LanguageProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="LanguageProperty-1401"><a href="#LanguageProperty-1401"><span class="linenos">1401</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#OnCommitProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="OnCommitProperty-1463"><a href="#OnCommitProperty-1463"><span class="linenos">1463</span></a><span class="k">class</span> <span class="nc">OnCommitProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="OnCommitProperty-1464"><a href="#OnCommitProperty-1464"><span class="linenos">1464</span></a> <span class="n">arg_type</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -16299,58 +17180,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="LanguageProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="LanguageProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="LanguageProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="LanguageProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="LanguageProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="LanguageProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="LanguageProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="LanguageProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="LanguageProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="LanguageProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="LanguageProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="LanguageProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="LanguageProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="LanguageProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="LanguageProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="LanguageProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="LanguageProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="LanguageProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="LanguageProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="LanguageProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="LanguageProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="LanguageProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="LanguageProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="LanguageProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="LanguageProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="LanguageProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="LanguageProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="LanguageProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="LanguageProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="LanguageProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="LanguageProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="LanguageProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="LanguageProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="LanguageProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="OnCommitProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="OnCommitProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="OnCommitProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="OnCommitProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="OnCommitProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="OnCommitProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="OnCommitProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="OnCommitProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="OnCommitProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="OnCommitProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="OnCommitProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="OnCommitProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="OnCommitProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="OnCommitProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="OnCommitProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="OnCommitProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="OnCommitProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="OnCommitProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="OnCommitProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="OnCommitProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="OnCommitProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="OnCommitProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="OnCommitProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="OnCommitProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="OnCommitProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="OnCommitProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="OnCommitProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="OnCommitProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="OnCommitProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="OnCommitProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="OnCommitProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="OnCommitProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="OnCommitProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="OnCommitProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="ExecuteAsProperty"> - <input id="ExecuteAsProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="PartitionedByProperty"> + <input id="PartitionedByProperty-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">ExecuteAsProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">PartitionedByProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="ExecuteAsProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="PartitionedByProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#ExecuteAsProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ExecuteAsProperty-1404"><a href="#ExecuteAsProperty-1404"><span class="linenos">1404</span></a><span class="k">class</span> <span class="nc">ExecuteAsProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="ExecuteAsProperty-1405"><a href="#ExecuteAsProperty-1405"><span class="linenos">1405</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#PartitionedByProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="PartitionedByProperty-1467"><a href="#PartitionedByProperty-1467"><span class="linenos">1467</span></a><span class="k">class</span> <span class="nc">PartitionedByProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="PartitionedByProperty-1468"><a href="#PartitionedByProperty-1468"><span class="linenos">1468</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -16360,58 +17241,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="ExecuteAsProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="ExecuteAsProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="ExecuteAsProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="ExecuteAsProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="ExecuteAsProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="ExecuteAsProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="ExecuteAsProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="ExecuteAsProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="ExecuteAsProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="ExecuteAsProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="ExecuteAsProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="ExecuteAsProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="ExecuteAsProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="ExecuteAsProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="ExecuteAsProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="ExecuteAsProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="ExecuteAsProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="ExecuteAsProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="ExecuteAsProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="ExecuteAsProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="ExecuteAsProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="ExecuteAsProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="ExecuteAsProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="ExecuteAsProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="ExecuteAsProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="ExecuteAsProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="ExecuteAsProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="ExecuteAsProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="ExecuteAsProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="ExecuteAsProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="ExecuteAsProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="ExecuteAsProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="ExecuteAsProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="ExecuteAsProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="PartitionedByProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="PartitionedByProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="PartitionedByProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="PartitionedByProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="PartitionedByProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="PartitionedByProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="PartitionedByProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="PartitionedByProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="PartitionedByProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="PartitionedByProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="PartitionedByProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="PartitionedByProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="PartitionedByProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="PartitionedByProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="PartitionedByProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="PartitionedByProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="PartitionedByProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="PartitionedByProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="PartitionedByProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="PartitionedByProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="PartitionedByProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="PartitionedByProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="PartitionedByProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="PartitionedByProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="PartitionedByProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="PartitionedByProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="PartitionedByProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="PartitionedByProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="PartitionedByProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="PartitionedByProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="PartitionedByProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="PartitionedByProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="PartitionedByProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="PartitionedByProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="VolatilityProperty"> - <input id="VolatilityProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="ReturnsProperty"> + <input id="ReturnsProperty-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">VolatilityProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">ReturnsProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="VolatilityProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="ReturnsProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#VolatilityProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="VolatilityProperty-1408"><a href="#VolatilityProperty-1408"><span class="linenos">1408</span></a><span class="k">class</span> <span class="nc">VolatilityProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="VolatilityProperty-1409"><a href="#VolatilityProperty-1409"><span class="linenos">1409</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#ReturnsProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="ReturnsProperty-1471"><a href="#ReturnsProperty-1471"><span class="linenos">1471</span></a><span class="k">class</span> <span class="nc">ReturnsProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="ReturnsProperty-1472"><a href="#ReturnsProperty-1472"><span class="linenos">1472</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"is_table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"table"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -16421,40 +17302,40 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="VolatilityProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="VolatilityProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="VolatilityProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="VolatilityProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="VolatilityProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="VolatilityProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="VolatilityProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="VolatilityProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="VolatilityProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="VolatilityProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="VolatilityProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="VolatilityProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="VolatilityProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="VolatilityProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="VolatilityProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="VolatilityProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="VolatilityProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="VolatilityProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="VolatilityProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="VolatilityProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="VolatilityProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="VolatilityProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="VolatilityProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="VolatilityProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="VolatilityProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="VolatilityProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="VolatilityProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="VolatilityProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="VolatilityProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="VolatilityProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="VolatilityProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="VolatilityProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="VolatilityProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="VolatilityProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="ReturnsProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="ReturnsProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="ReturnsProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="ReturnsProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="ReturnsProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="ReturnsProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="ReturnsProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="ReturnsProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="ReturnsProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="ReturnsProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="ReturnsProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="ReturnsProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="ReturnsProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="ReturnsProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="ReturnsProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="ReturnsProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="ReturnsProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="ReturnsProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="ReturnsProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="ReturnsProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="ReturnsProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="ReturnsProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="ReturnsProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="ReturnsProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="ReturnsProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="ReturnsProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="ReturnsProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="ReturnsProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="ReturnsProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="ReturnsProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="ReturnsProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="ReturnsProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="ReturnsProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="ReturnsProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> @@ -16471,17 +17352,17 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#RowFormatDelimitedProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RowFormatDelimitedProperty-1412"><a href="#RowFormatDelimitedProperty-1412"><span class="linenos">1412</span></a><span class="k">class</span> <span class="nc">RowFormatDelimitedProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="RowFormatDelimitedProperty-1413"><a href="#RowFormatDelimitedProperty-1413"><span class="linenos">1413</span></a> <span class="c1"># https://cwiki.apache.org/confluence/display/hive/languagemanual+dml</span> -</span><span id="RowFormatDelimitedProperty-1414"><a href="#RowFormatDelimitedProperty-1414"><span class="linenos">1414</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="RowFormatDelimitedProperty-1415"><a href="#RowFormatDelimitedProperty-1415"><span class="linenos">1415</span></a> <span class="s2">"fields"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RowFormatDelimitedProperty-1416"><a href="#RowFormatDelimitedProperty-1416"><span class="linenos">1416</span></a> <span class="s2">"escaped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RowFormatDelimitedProperty-1417"><a href="#RowFormatDelimitedProperty-1417"><span class="linenos">1417</span></a> <span class="s2">"collection_items"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RowFormatDelimitedProperty-1418"><a href="#RowFormatDelimitedProperty-1418"><span class="linenos">1418</span></a> <span class="s2">"map_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RowFormatDelimitedProperty-1419"><a href="#RowFormatDelimitedProperty-1419"><span class="linenos">1419</span></a> <span class="s2">"lines"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RowFormatDelimitedProperty-1420"><a href="#RowFormatDelimitedProperty-1420"><span class="linenos">1420</span></a> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RowFormatDelimitedProperty-1421"><a href="#RowFormatDelimitedProperty-1421"><span class="linenos">1421</span></a> <span class="s2">"serde"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RowFormatDelimitedProperty-1422"><a href="#RowFormatDelimitedProperty-1422"><span class="linenos">1422</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RowFormatDelimitedProperty-1475"><a href="#RowFormatDelimitedProperty-1475"><span class="linenos">1475</span></a><span class="k">class</span> <span class="nc">RowFormatDelimitedProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="RowFormatDelimitedProperty-1476"><a href="#RowFormatDelimitedProperty-1476"><span class="linenos">1476</span></a> <span class="c1"># https://cwiki.apache.org/confluence/display/hive/languagemanual+dml</span> +</span><span id="RowFormatDelimitedProperty-1477"><a href="#RowFormatDelimitedProperty-1477"><span class="linenos">1477</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="RowFormatDelimitedProperty-1478"><a href="#RowFormatDelimitedProperty-1478"><span class="linenos">1478</span></a> <span class="s2">"fields"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RowFormatDelimitedProperty-1479"><a href="#RowFormatDelimitedProperty-1479"><span class="linenos">1479</span></a> <span class="s2">"escaped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RowFormatDelimitedProperty-1480"><a href="#RowFormatDelimitedProperty-1480"><span class="linenos">1480</span></a> <span class="s2">"collection_items"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RowFormatDelimitedProperty-1481"><a href="#RowFormatDelimitedProperty-1481"><span class="linenos">1481</span></a> <span class="s2">"map_keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RowFormatDelimitedProperty-1482"><a href="#RowFormatDelimitedProperty-1482"><span class="linenos">1482</span></a> <span class="s2">"lines"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RowFormatDelimitedProperty-1483"><a href="#RowFormatDelimitedProperty-1483"><span class="linenos">1483</span></a> <span class="s2">"null"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RowFormatDelimitedProperty-1484"><a href="#RowFormatDelimitedProperty-1484"><span class="linenos">1484</span></a> <span class="s2">"serde"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RowFormatDelimitedProperty-1485"><a href="#RowFormatDelimitedProperty-1485"><span class="linenos">1485</span></a> <span class="p">}</span> </span></pre></div> @@ -16541,8 +17422,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#RowFormatSerdeProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RowFormatSerdeProperty-1425"><a href="#RowFormatSerdeProperty-1425"><span class="linenos">1425</span></a><span class="k">class</span> <span class="nc">RowFormatSerdeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="RowFormatSerdeProperty-1426"><a href="#RowFormatSerdeProperty-1426"><span class="linenos">1426</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RowFormatSerdeProperty-1488"><a href="#RowFormatSerdeProperty-1488"><span class="linenos">1488</span></a><span class="k">class</span> <span class="nc">RowFormatSerdeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="RowFormatSerdeProperty-1489"><a href="#RowFormatSerdeProperty-1489"><span class="linenos">1489</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -16591,6 +17472,67 @@ Otherwise, this resets the expression.</li> </dl> </div> </section> + <section id="SchemaCommentProperty"> + <input id="SchemaCommentProperty-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">SchemaCommentProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + + <label class="view-source-button" for="SchemaCommentProperty-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#SchemaCommentProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="SchemaCommentProperty-1492"><a href="#SchemaCommentProperty-1492"><span class="linenos">1492</span></a><span class="k">class</span> <span class="nc">SchemaCommentProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="SchemaCommentProperty-1493"><a href="#SchemaCommentProperty-1493"><span class="linenos">1493</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span></pre></div> + + + + + <div class="inherited"> + <h5>Inherited Members</h5> + <dl> + <div><dt><a href="#Expression">Expression</a></dt> + <dd id="SchemaCommentProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="SchemaCommentProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="SchemaCommentProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="SchemaCommentProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="SchemaCommentProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="SchemaCommentProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="SchemaCommentProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="SchemaCommentProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="SchemaCommentProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="SchemaCommentProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="SchemaCommentProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="SchemaCommentProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="SchemaCommentProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="SchemaCommentProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="SchemaCommentProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="SchemaCommentProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="SchemaCommentProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="SchemaCommentProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="SchemaCommentProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="SchemaCommentProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="SchemaCommentProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="SchemaCommentProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="SchemaCommentProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="SchemaCommentProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="SchemaCommentProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="SchemaCommentProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="SchemaCommentProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="SchemaCommentProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="SchemaCommentProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="SchemaCommentProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="SchemaCommentProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="SchemaCommentProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="SchemaCommentProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="SchemaCommentProperty.load" class="function"><a href="#Expression.load">load</a></dd> + + </div> + </dl> + </div> + </section> <section id="SerdeProperties"> <input id="SerdeProperties-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr class"> @@ -16602,8 +17544,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#SerdeProperties"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SerdeProperties-1429"><a href="#SerdeProperties-1429"><span class="linenos">1429</span></a><span class="k">class</span> <span class="nc">SerdeProperties</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="SerdeProperties-1430"><a href="#SerdeProperties-1430"><span class="linenos">1430</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SerdeProperties-1496"><a href="#SerdeProperties-1496"><span class="linenos">1496</span></a><span class="k">class</span> <span class="nc">SerdeProperties</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="SerdeProperties-1497"><a href="#SerdeProperties-1497"><span class="linenos">1497</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -16652,19 +17594,19 @@ Otherwise, this resets the expression.</li> </dl> </div> </section> - <section id="FallbackProperty"> - <input id="FallbackProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="SetProperty"> + <input id="SetProperty-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">FallbackProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">SetProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="FallbackProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="SetProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#FallbackProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="FallbackProperty-1433"><a href="#FallbackProperty-1433"><span class="linenos">1433</span></a><span class="k">class</span> <span class="nc">FallbackProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="FallbackProperty-1434"><a href="#FallbackProperty-1434"><span class="linenos">1434</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"protection"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <a class="headerlink" href="#SetProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="SetProperty-1500"><a href="#SetProperty-1500"><span class="linenos">1500</span></a><span class="k">class</span> <span class="nc">SetProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="SetProperty-1501"><a href="#SetProperty-1501"><span class="linenos">1501</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"multi"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -16674,241 +17616,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="FallbackProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="FallbackProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="FallbackProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="FallbackProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="FallbackProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="FallbackProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="FallbackProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="FallbackProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="FallbackProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="FallbackProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="FallbackProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="FallbackProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="FallbackProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="FallbackProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="FallbackProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="FallbackProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="FallbackProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="FallbackProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="FallbackProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="FallbackProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="FallbackProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="FallbackProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="FallbackProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="FallbackProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="FallbackProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="FallbackProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="FallbackProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="FallbackProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="FallbackProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="FallbackProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="FallbackProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="FallbackProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="FallbackProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="FallbackProperty.load" class="function"><a href="#Expression.load">load</a></dd> - - </div> - </dl> - </div> - </section> - <section id="WithJournalTableProperty"> - <input id="WithJournalTableProperty-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">WithJournalTableProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - - <label class="view-source-button" for="WithJournalTableProperty-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#WithJournalTableProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="WithJournalTableProperty-1437"><a href="#WithJournalTableProperty-1437"><span class="linenos">1437</span></a><span class="k">class</span> <span class="nc">WithJournalTableProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="WithJournalTableProperty-1438"><a href="#WithJournalTableProperty-1438"><span class="linenos">1438</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span></pre></div> - - - - - <div class="inherited"> - <h5>Inherited Members</h5> - <dl> - <div><dt><a href="#Expression">Expression</a></dt> - <dd id="WithJournalTableProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="WithJournalTableProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="WithJournalTableProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="WithJournalTableProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="WithJournalTableProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="WithJournalTableProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="WithJournalTableProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="WithJournalTableProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="WithJournalTableProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="WithJournalTableProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="WithJournalTableProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="WithJournalTableProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="WithJournalTableProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="WithJournalTableProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="WithJournalTableProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="WithJournalTableProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="WithJournalTableProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="WithJournalTableProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="WithJournalTableProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="WithJournalTableProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="WithJournalTableProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="WithJournalTableProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="WithJournalTableProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="WithJournalTableProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="WithJournalTableProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="WithJournalTableProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="WithJournalTableProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="WithJournalTableProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="WithJournalTableProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="WithJournalTableProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="WithJournalTableProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="WithJournalTableProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="WithJournalTableProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="WithJournalTableProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="SetProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="SetProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="SetProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="SetProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="SetProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="SetProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="SetProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="SetProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="SetProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="SetProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="SetProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="SetProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="SetProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="SetProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="SetProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="SetProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="SetProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="SetProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="SetProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="SetProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="SetProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="SetProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="SetProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="SetProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="SetProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="SetProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="SetProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="SetProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="SetProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="SetProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="SetProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="SetProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="SetProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="SetProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="LogProperty"> - <input id="LogProperty-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">LogProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - - <label class="view-source-button" for="LogProperty-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#LogProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LogProperty-1441"><a href="#LogProperty-1441"><span class="linenos">1441</span></a><span class="k">class</span> <span class="nc">LogProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="LogProperty-1442"><a href="#LogProperty-1442"><span class="linenos">1442</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span></pre></div> - - - - - <div class="inherited"> - <h5>Inherited Members</h5> - <dl> - <div><dt><a href="#Expression">Expression</a></dt> - <dd id="LogProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="LogProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="LogProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="LogProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="LogProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="LogProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="LogProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="LogProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="LogProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="LogProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="LogProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="LogProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="LogProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="LogProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="LogProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="LogProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="LogProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="LogProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="LogProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="LogProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="LogProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="LogProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="LogProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="LogProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="LogProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="LogProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="LogProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="LogProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="LogProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="LogProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="LogProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="LogProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="LogProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="LogProperty.load" class="function"><a href="#Expression.load">load</a></dd> - - </div> - </dl> - </div> - </section> - <section id="JournalProperty"> - <input id="JournalProperty-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">JournalProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - - <label class="view-source-button" for="JournalProperty-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#JournalProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JournalProperty-1445"><a href="#JournalProperty-1445"><span class="linenos">1445</span></a><span class="k">class</span> <span class="nc">JournalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="JournalProperty-1446"><a href="#JournalProperty-1446"><span class="linenos">1446</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"dual"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"before"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span></pre></div> - - - - - <div class="inherited"> - <h5>Inherited Members</h5> - <dl> - <div><dt><a href="#Expression">Expression</a></dt> - <dd id="JournalProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="JournalProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="JournalProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="JournalProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="JournalProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="JournalProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="JournalProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="JournalProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="JournalProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="JournalProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="JournalProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="JournalProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="JournalProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="JournalProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="JournalProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="JournalProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="JournalProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="JournalProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="JournalProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="JournalProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="JournalProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="JournalProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="JournalProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="JournalProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="JournalProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="JournalProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="JournalProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="JournalProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="JournalProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="JournalProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="JournalProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="JournalProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="JournalProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="JournalProperty.load" class="function"><a href="#Expression.load">load</a></dd> - - </div> - </dl> - </div> - </section> - <section id="AfterJournalProperty"> - <input id="AfterJournalProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="SortKeyProperty"> + <input id="SortKeyProperty-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">AfterJournalProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">SortKeyProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="AfterJournalProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="SortKeyProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#AfterJournalProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AfterJournalProperty-1449"><a href="#AfterJournalProperty-1449"><span class="linenos">1449</span></a><span class="k">class</span> <span class="nc">AfterJournalProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="AfterJournalProperty-1450"><a href="#AfterJournalProperty-1450"><span class="linenos">1450</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"dual"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"local"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <a class="headerlink" href="#SortKeyProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="SortKeyProperty-1504"><a href="#SortKeyProperty-1504"><span class="linenos">1504</span></a><span class="k">class</span> <span class="nc">SortKeyProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="SortKeyProperty-1505"><a href="#SortKeyProperty-1505"><span class="linenos">1505</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"compound"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -16918,58 +17677,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="AfterJournalProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="AfterJournalProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="AfterJournalProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="AfterJournalProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="AfterJournalProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="AfterJournalProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="AfterJournalProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="AfterJournalProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="AfterJournalProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="AfterJournalProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="AfterJournalProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="AfterJournalProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="AfterJournalProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="AfterJournalProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="AfterJournalProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="AfterJournalProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="AfterJournalProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="AfterJournalProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="AfterJournalProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="AfterJournalProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="AfterJournalProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="AfterJournalProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="AfterJournalProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="AfterJournalProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="AfterJournalProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="AfterJournalProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="AfterJournalProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="AfterJournalProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="AfterJournalProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="AfterJournalProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="AfterJournalProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="AfterJournalProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="AfterJournalProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="AfterJournalProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="SortKeyProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="SortKeyProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="SortKeyProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="SortKeyProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="SortKeyProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="SortKeyProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="SortKeyProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="SortKeyProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="SortKeyProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="SortKeyProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="SortKeyProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="SortKeyProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="SortKeyProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="SortKeyProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="SortKeyProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="SortKeyProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="SortKeyProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="SortKeyProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="SortKeyProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="SortKeyProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="SortKeyProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="SortKeyProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="SortKeyProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="SortKeyProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="SortKeyProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="SortKeyProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="SortKeyProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="SortKeyProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="SortKeyProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="SortKeyProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="SortKeyProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="SortKeyProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="SortKeyProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="SortKeyProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="ChecksumProperty"> - <input id="ChecksumProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="SqlSecurityProperty"> + <input id="SqlSecurityProperty-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">ChecksumProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">SqlSecurityProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="ChecksumProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="SqlSecurityProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#ChecksumProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ChecksumProperty-1453"><a href="#ChecksumProperty-1453"><span class="linenos">1453</span></a><span class="k">class</span> <span class="nc">ChecksumProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="ChecksumProperty-1454"><a href="#ChecksumProperty-1454"><span class="linenos">1454</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <a class="headerlink" href="#SqlSecurityProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="SqlSecurityProperty-1508"><a href="#SqlSecurityProperty-1508"><span class="linenos">1508</span></a><span class="k">class</span> <span class="nc">SqlSecurityProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="SqlSecurityProperty-1509"><a href="#SqlSecurityProperty-1509"><span class="linenos">1509</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"definer"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -16979,58 +17738,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="ChecksumProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="ChecksumProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="ChecksumProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="ChecksumProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="ChecksumProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="ChecksumProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="ChecksumProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="ChecksumProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="ChecksumProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="ChecksumProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="ChecksumProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="ChecksumProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="ChecksumProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="ChecksumProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="ChecksumProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="ChecksumProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="ChecksumProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="ChecksumProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="ChecksumProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="ChecksumProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="ChecksumProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="ChecksumProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="ChecksumProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="ChecksumProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="ChecksumProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="ChecksumProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="ChecksumProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="ChecksumProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="ChecksumProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="ChecksumProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="ChecksumProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="ChecksumProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="ChecksumProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="ChecksumProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="SqlSecurityProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="SqlSecurityProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="SqlSecurityProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="SqlSecurityProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="SqlSecurityProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="SqlSecurityProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="SqlSecurityProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="SqlSecurityProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="SqlSecurityProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="SqlSecurityProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="SqlSecurityProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="SqlSecurityProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="SqlSecurityProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="SqlSecurityProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="SqlSecurityProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="SqlSecurityProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="SqlSecurityProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="SqlSecurityProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="SqlSecurityProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="SqlSecurityProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="SqlSecurityProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="SqlSecurityProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="SqlSecurityProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="SqlSecurityProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="SqlSecurityProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="SqlSecurityProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="SqlSecurityProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="SqlSecurityProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="SqlSecurityProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="SqlSecurityProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="SqlSecurityProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="SqlSecurityProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="SqlSecurityProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="SqlSecurityProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="FreespaceProperty"> - <input id="FreespaceProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="TableFormatProperty"> + <input id="TableFormatProperty-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">FreespaceProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">TableFormatProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="FreespaceProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="TableFormatProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#FreespaceProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="FreespaceProperty-1457"><a href="#FreespaceProperty-1457"><span class="linenos">1457</span></a><span class="k">class</span> <span class="nc">FreespaceProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="FreespaceProperty-1458"><a href="#FreespaceProperty-1458"><span class="linenos">1458</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <a class="headerlink" href="#TableFormatProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="TableFormatProperty-1512"><a href="#TableFormatProperty-1512"><span class="linenos">1512</span></a><span class="k">class</span> <span class="nc">TableFormatProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="TableFormatProperty-1513"><a href="#TableFormatProperty-1513"><span class="linenos">1513</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -17040,58 +17799,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="FreespaceProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="FreespaceProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="FreespaceProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="FreespaceProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="FreespaceProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="FreespaceProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="FreespaceProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="FreespaceProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="FreespaceProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="FreespaceProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="FreespaceProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="FreespaceProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="FreespaceProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="FreespaceProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="FreespaceProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="FreespaceProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="FreespaceProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="FreespaceProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="FreespaceProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="FreespaceProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="FreespaceProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="FreespaceProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="FreespaceProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="FreespaceProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="FreespaceProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="FreespaceProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="FreespaceProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="FreespaceProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="FreespaceProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="FreespaceProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="FreespaceProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="FreespaceProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="FreespaceProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="FreespaceProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="TableFormatProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="TableFormatProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="TableFormatProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="TableFormatProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="TableFormatProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="TableFormatProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="TableFormatProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="TableFormatProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="TableFormatProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="TableFormatProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="TableFormatProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="TableFormatProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="TableFormatProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="TableFormatProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="TableFormatProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="TableFormatProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="TableFormatProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="TableFormatProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="TableFormatProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="TableFormatProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="TableFormatProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="TableFormatProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="TableFormatProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="TableFormatProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="TableFormatProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="TableFormatProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="TableFormatProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="TableFormatProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="TableFormatProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="TableFormatProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="TableFormatProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="TableFormatProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="TableFormatProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="TableFormatProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="MergeBlockRatioProperty"> - <input id="MergeBlockRatioProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="TemporaryProperty"> + <input id="TemporaryProperty-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">MergeBlockRatioProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">TemporaryProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="MergeBlockRatioProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="TemporaryProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#MergeBlockRatioProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="MergeBlockRatioProperty-1461"><a href="#MergeBlockRatioProperty-1461"><span class="linenos">1461</span></a><span class="k">class</span> <span class="nc">MergeBlockRatioProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="MergeBlockRatioProperty-1462"><a href="#MergeBlockRatioProperty-1462"><span class="linenos">1462</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"no"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <a class="headerlink" href="#TemporaryProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="TemporaryProperty-1516"><a href="#TemporaryProperty-1516"><span class="linenos">1516</span></a><span class="k">class</span> <span class="nc">TemporaryProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="TemporaryProperty-1517"><a href="#TemporaryProperty-1517"><span class="linenos">1517</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"global_"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -17101,58 +17860,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="MergeBlockRatioProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="MergeBlockRatioProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="MergeBlockRatioProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="MergeBlockRatioProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="MergeBlockRatioProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="MergeBlockRatioProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="MergeBlockRatioProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="MergeBlockRatioProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="MergeBlockRatioProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="MergeBlockRatioProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="MergeBlockRatioProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="MergeBlockRatioProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="MergeBlockRatioProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="MergeBlockRatioProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="MergeBlockRatioProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="MergeBlockRatioProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="MergeBlockRatioProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="MergeBlockRatioProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="MergeBlockRatioProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="MergeBlockRatioProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="MergeBlockRatioProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="MergeBlockRatioProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="MergeBlockRatioProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="MergeBlockRatioProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="MergeBlockRatioProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="MergeBlockRatioProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="MergeBlockRatioProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="MergeBlockRatioProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="MergeBlockRatioProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="MergeBlockRatioProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="MergeBlockRatioProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="MergeBlockRatioProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="MergeBlockRatioProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="MergeBlockRatioProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="TemporaryProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="TemporaryProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="TemporaryProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="TemporaryProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="TemporaryProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="TemporaryProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="TemporaryProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="TemporaryProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="TemporaryProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="TemporaryProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="TemporaryProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="TemporaryProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="TemporaryProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="TemporaryProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="TemporaryProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="TemporaryProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="TemporaryProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="TemporaryProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="TemporaryProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="TemporaryProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="TemporaryProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="TemporaryProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="TemporaryProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="TemporaryProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="TemporaryProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="TemporaryProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="TemporaryProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="TemporaryProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="TemporaryProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="TemporaryProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="TemporaryProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="TemporaryProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="TemporaryProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="TemporaryProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="DataBlocksizeProperty"> - <input id="DataBlocksizeProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="TransientProperty"> + <input id="TransientProperty-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">DataBlocksizeProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">TransientProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="DataBlocksizeProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="TransientProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#DataBlocksizeProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataBlocksizeProperty-1465"><a href="#DataBlocksizeProperty-1465"><span class="linenos">1465</span></a><span class="k">class</span> <span class="nc">DataBlocksizeProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="DataBlocksizeProperty-1466"><a href="#DataBlocksizeProperty-1466"><span class="linenos">1466</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"size"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"units"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"min"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <a class="headerlink" href="#TransientProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="TransientProperty-1520"><a href="#TransientProperty-1520"><span class="linenos">1520</span></a><span class="k">class</span> <span class="nc">TransientProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="TransientProperty-1521"><a href="#TransientProperty-1521"><span class="linenos">1521</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -17162,58 +17921,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="DataBlocksizeProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="DataBlocksizeProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="DataBlocksizeProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="DataBlocksizeProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="DataBlocksizeProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="DataBlocksizeProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="DataBlocksizeProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="DataBlocksizeProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="DataBlocksizeProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="DataBlocksizeProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="DataBlocksizeProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="DataBlocksizeProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="DataBlocksizeProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="DataBlocksizeProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="DataBlocksizeProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="DataBlocksizeProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="DataBlocksizeProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="DataBlocksizeProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="DataBlocksizeProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="DataBlocksizeProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="DataBlocksizeProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="DataBlocksizeProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="DataBlocksizeProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="DataBlocksizeProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="DataBlocksizeProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="DataBlocksizeProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="DataBlocksizeProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="DataBlocksizeProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="DataBlocksizeProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="DataBlocksizeProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="DataBlocksizeProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="DataBlocksizeProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="DataBlocksizeProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="DataBlocksizeProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="TransientProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="TransientProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="TransientProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="TransientProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="TransientProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="TransientProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="TransientProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="TransientProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="TransientProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="TransientProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="TransientProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="TransientProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="TransientProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="TransientProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="TransientProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="TransientProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="TransientProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="TransientProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="TransientProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="TransientProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="TransientProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="TransientProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="TransientProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="TransientProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="TransientProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="TransientProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="TransientProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="TransientProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="TransientProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="TransientProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="TransientProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="TransientProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="TransientProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="TransientProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="BlockCompressionProperty"> - <input id="BlockCompressionProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="VolatilityProperty"> + <input id="VolatilityProperty-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">BlockCompressionProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">VolatilityProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="BlockCompressionProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="VolatilityProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#BlockCompressionProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BlockCompressionProperty-1469"><a href="#BlockCompressionProperty-1469"><span class="linenos">1469</span></a><span class="k">class</span> <span class="nc">BlockCompressionProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="BlockCompressionProperty-1470"><a href="#BlockCompressionProperty-1470"><span class="linenos">1470</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"autotemp"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"always"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"manual"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"never"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <a class="headerlink" href="#VolatilityProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="VolatilityProperty-1524"><a href="#VolatilityProperty-1524"><span class="linenos">1524</span></a><span class="k">class</span> <span class="nc">VolatilityProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="VolatilityProperty-1525"><a href="#VolatilityProperty-1525"><span class="linenos">1525</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -17223,64 +17982,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="BlockCompressionProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="BlockCompressionProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="BlockCompressionProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="BlockCompressionProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="BlockCompressionProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="BlockCompressionProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="BlockCompressionProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="BlockCompressionProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="BlockCompressionProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="BlockCompressionProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="BlockCompressionProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="BlockCompressionProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="BlockCompressionProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="BlockCompressionProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="BlockCompressionProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="BlockCompressionProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="BlockCompressionProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="BlockCompressionProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="BlockCompressionProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="BlockCompressionProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="BlockCompressionProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="BlockCompressionProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="BlockCompressionProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="BlockCompressionProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="BlockCompressionProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="BlockCompressionProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="BlockCompressionProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="BlockCompressionProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="BlockCompressionProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="BlockCompressionProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="BlockCompressionProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="BlockCompressionProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="BlockCompressionProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="BlockCompressionProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="VolatilityProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="VolatilityProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="VolatilityProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="VolatilityProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="VolatilityProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="VolatilityProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="VolatilityProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="VolatilityProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="VolatilityProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="VolatilityProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="VolatilityProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="VolatilityProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="VolatilityProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="VolatilityProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="VolatilityProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="VolatilityProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="VolatilityProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="VolatilityProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="VolatilityProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="VolatilityProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="VolatilityProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="VolatilityProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="VolatilityProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="VolatilityProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="VolatilityProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="VolatilityProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="VolatilityProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="VolatilityProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="VolatilityProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="VolatilityProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="VolatilityProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="VolatilityProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="VolatilityProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="VolatilityProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="IsolatedLoadingProperty"> - <input id="IsolatedLoadingProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="WithDataProperty"> + <input id="WithDataProperty-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">IsolatedLoadingProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">WithDataProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="IsolatedLoadingProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="WithDataProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#IsolatedLoadingProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IsolatedLoadingProperty-1473"><a href="#IsolatedLoadingProperty-1473"><span class="linenos">1473</span></a><span class="k">class</span> <span class="nc">IsolatedLoadingProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="IsolatedLoadingProperty-1474"><a href="#IsolatedLoadingProperty-1474"><span class="linenos">1474</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="IsolatedLoadingProperty-1475"><a href="#IsolatedLoadingProperty-1475"><span class="linenos">1475</span></a> <span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="IsolatedLoadingProperty-1476"><a href="#IsolatedLoadingProperty-1476"><span class="linenos">1476</span></a> <span class="s2">"concurrent"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="IsolatedLoadingProperty-1477"><a href="#IsolatedLoadingProperty-1477"><span class="linenos">1477</span></a> <span class="s2">"for_all"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="IsolatedLoadingProperty-1478"><a href="#IsolatedLoadingProperty-1478"><span class="linenos">1478</span></a> <span class="s2">"for_insert"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="IsolatedLoadingProperty-1479"><a href="#IsolatedLoadingProperty-1479"><span class="linenos">1479</span></a> <span class="s2">"for_none"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="IsolatedLoadingProperty-1480"><a href="#IsolatedLoadingProperty-1480"><span class="linenos">1480</span></a> <span class="p">}</span> + <a class="headerlink" href="#WithDataProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="WithDataProperty-1528"><a href="#WithDataProperty-1528"><span class="linenos">1528</span></a><span class="k">class</span> <span class="nc">WithDataProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="WithDataProperty-1529"><a href="#WithDataProperty-1529"><span class="linenos">1529</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"no"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"statistics"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -17290,64 +18043,58 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="IsolatedLoadingProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="IsolatedLoadingProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="IsolatedLoadingProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="IsolatedLoadingProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="IsolatedLoadingProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="IsolatedLoadingProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="IsolatedLoadingProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="IsolatedLoadingProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="IsolatedLoadingProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="IsolatedLoadingProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="IsolatedLoadingProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="IsolatedLoadingProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="IsolatedLoadingProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="IsolatedLoadingProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="IsolatedLoadingProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="IsolatedLoadingProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="IsolatedLoadingProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="IsolatedLoadingProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="IsolatedLoadingProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="IsolatedLoadingProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="IsolatedLoadingProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="IsolatedLoadingProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="IsolatedLoadingProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="IsolatedLoadingProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="IsolatedLoadingProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="IsolatedLoadingProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="IsolatedLoadingProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="IsolatedLoadingProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="IsolatedLoadingProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="IsolatedLoadingProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="IsolatedLoadingProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="IsolatedLoadingProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="IsolatedLoadingProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="IsolatedLoadingProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="WithDataProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="WithDataProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="WithDataProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="WithDataProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="WithDataProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="WithDataProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="WithDataProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="WithDataProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="WithDataProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="WithDataProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="WithDataProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="WithDataProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="WithDataProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="WithDataProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="WithDataProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="WithDataProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="WithDataProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="WithDataProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="WithDataProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="WithDataProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="WithDataProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="WithDataProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="WithDataProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="WithDataProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="WithDataProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="WithDataProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="WithDataProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="WithDataProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="WithDataProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="WithDataProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="WithDataProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="WithDataProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="WithDataProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="WithDataProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> </div> </section> - <section id="LockingProperty"> - <input id="LockingProperty-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> + <section id="WithJournalTableProperty"> + <input id="WithJournalTableProperty-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">LockingProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): + <span class="name">WithJournalTableProperty</span><wbr>(<span class="base"><a href="#Property">Property</a></span>): - <label class="view-source-button" for="LockingProperty-view-source"><span>View Source</span></label> + <label class="view-source-button" for="WithJournalTableProperty-view-source"><span>View Source</span></label> </div> - <a class="headerlink" href="#LockingProperty"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LockingProperty-1483"><a href="#LockingProperty-1483"><span class="linenos">1483</span></a><span class="k">class</span> <span class="nc">LockingProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> -</span><span id="LockingProperty-1484"><a href="#LockingProperty-1484"><span class="linenos">1484</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="LockingProperty-1485"><a href="#LockingProperty-1485"><span class="linenos">1485</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="LockingProperty-1486"><a href="#LockingProperty-1486"><span class="linenos">1486</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="LockingProperty-1487"><a href="#LockingProperty-1487"><span class="linenos">1487</span></a> <span class="s2">"for_or_in"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="LockingProperty-1488"><a href="#LockingProperty-1488"><span class="linenos">1488</span></a> <span class="s2">"lock_type"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="LockingProperty-1489"><a href="#LockingProperty-1489"><span class="linenos">1489</span></a> <span class="s2">"override"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="LockingProperty-1490"><a href="#LockingProperty-1490"><span class="linenos">1490</span></a> <span class="p">}</span> + <a class="headerlink" href="#WithJournalTableProperty"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="WithJournalTableProperty-1532"><a href="#WithJournalTableProperty-1532"><span class="linenos">1532</span></a><span class="k">class</span> <span class="nc">WithJournalTableProperty</span><span class="p">(</span><span class="n">Property</span><span class="p">):</span> +</span><span id="WithJournalTableProperty-1533"><a href="#WithJournalTableProperty-1533"><span class="linenos">1533</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -17357,40 +18104,40 @@ Otherwise, this resets the expression.</li> <h5>Inherited Members</h5> <dl> <div><dt><a href="#Expression">Expression</a></dt> - <dd id="LockingProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> - <dd id="LockingProperty.this" class="variable"><a href="#Expression.this">this</a></dd> - <dd id="LockingProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> - <dd id="LockingProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> - <dd id="LockingProperty.text" class="function"><a href="#Expression.text">text</a></dd> - <dd id="LockingProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> - <dd id="LockingProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> - <dd id="LockingProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="LockingProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> - <dd id="LockingProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> - <dd id="LockingProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> - <dd id="LockingProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> - <dd id="LockingProperty.append" class="function"><a href="#Expression.append">append</a></dd> - <dd id="LockingProperty.set" class="function"><a href="#Expression.set">set</a></dd> - <dd id="LockingProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> - <dd id="LockingProperty.find" class="function"><a href="#Expression.find">find</a></dd> - <dd id="LockingProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> - <dd id="LockingProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> - <dd id="LockingProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> - <dd id="LockingProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> - <dd id="LockingProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> - <dd id="LockingProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> - <dd id="LockingProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> - <dd id="LockingProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> - <dd id="LockingProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> - <dd id="LockingProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> - <dd id="LockingProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> - <dd id="LockingProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> - <dd id="LockingProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> - <dd id="LockingProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> - <dd id="LockingProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> - <dd id="LockingProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> - <dd id="LockingProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> - <dd id="LockingProperty.load" class="function"><a href="#Expression.load">load</a></dd> + <dd id="WithJournalTableProperty.__init__" class="function"><a href="#Expression.__init__">Expression</a></dd> + <dd id="WithJournalTableProperty.this" class="variable"><a href="#Expression.this">this</a></dd> + <dd id="WithJournalTableProperty.expression" class="variable"><a href="#Expression.expression">expression</a></dd> + <dd id="WithJournalTableProperty.expressions" class="variable"><a href="#Expression.expressions">expressions</a></dd> + <dd id="WithJournalTableProperty.text" class="function"><a href="#Expression.text">text</a></dd> + <dd id="WithJournalTableProperty.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> + <dd id="WithJournalTableProperty.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> + <dd id="WithJournalTableProperty.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> + <dd id="WithJournalTableProperty.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> + <dd id="WithJournalTableProperty.alias" class="variable"><a href="#Expression.alias">alias</a></dd> + <dd id="WithJournalTableProperty.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> + <dd id="WithJournalTableProperty.copy" class="function"><a href="#Expression.copy">copy</a></dd> + <dd id="WithJournalTableProperty.append" class="function"><a href="#Expression.append">append</a></dd> + <dd id="WithJournalTableProperty.set" class="function"><a href="#Expression.set">set</a></dd> + <dd id="WithJournalTableProperty.depth" class="variable"><a href="#Expression.depth">depth</a></dd> + <dd id="WithJournalTableProperty.find" class="function"><a href="#Expression.find">find</a></dd> + <dd id="WithJournalTableProperty.find_all" class="function"><a href="#Expression.find_all">find_all</a></dd> + <dd id="WithJournalTableProperty.find_ancestor" class="function"><a href="#Expression.find_ancestor">find_ancestor</a></dd> + <dd id="WithJournalTableProperty.parent_select" class="variable"><a href="#Expression.parent_select">parent_select</a></dd> + <dd id="WithJournalTableProperty.walk" class="function"><a href="#Expression.walk">walk</a></dd> + <dd id="WithJournalTableProperty.dfs" class="function"><a href="#Expression.dfs">dfs</a></dd> + <dd id="WithJournalTableProperty.bfs" class="function"><a href="#Expression.bfs">bfs</a></dd> + <dd id="WithJournalTableProperty.unnest" class="function"><a href="#Expression.unnest">unnest</a></dd> + <dd id="WithJournalTableProperty.unalias" class="function"><a href="#Expression.unalias">unalias</a></dd> + <dd id="WithJournalTableProperty.unnest_operands" class="function"><a href="#Expression.unnest_operands">unnest_operands</a></dd> + <dd id="WithJournalTableProperty.flatten" class="function"><a href="#Expression.flatten">flatten</a></dd> + <dd id="WithJournalTableProperty.sql" class="function"><a href="#Expression.sql">sql</a></dd> + <dd id="WithJournalTableProperty.transform" class="function"><a href="#Expression.transform">transform</a></dd> + <dd id="WithJournalTableProperty.replace" class="function"><a href="#Expression.replace">replace</a></dd> + <dd id="WithJournalTableProperty.pop" class="function"><a href="#Expression.pop">pop</a></dd> + <dd id="WithJournalTableProperty.assert_is" class="function"><a href="#Expression.assert_is">assert_is</a></dd> + <dd id="WithJournalTableProperty.error_messages" class="function"><a href="#Expression.error_messages">error_messages</a></dd> + <dd id="WithJournalTableProperty.dump" class="function"><a href="#Expression.dump">dump</a></dd> + <dd id="WithJournalTableProperty.load" class="function"><a href="#Expression.load">load</a></dd> </div> </dl> @@ -17407,64 +18154,65 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Properties"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Properties-1493"><a href="#Properties-1493"><span class="linenos">1493</span></a><span class="k">class</span> <span class="nc">Properties</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Properties-1494"><a href="#Properties-1494"><span class="linenos">1494</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Properties-1495"><a href="#Properties-1495"><span class="linenos">1495</span></a> -</span><span id="Properties-1496"><a href="#Properties-1496"><span class="linenos">1496</span></a> <span class="n">NAME_TO_PROPERTY</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Properties-1497"><a href="#Properties-1497"><span class="linenos">1497</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="n">AlgorithmProperty</span><span class="p">,</span> -</span><span id="Properties-1498"><a href="#Properties-1498"><span class="linenos">1498</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">AutoIncrementProperty</span><span class="p">,</span> -</span><span id="Properties-1499"><a href="#Properties-1499"><span class="linenos">1499</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">CharacterSetProperty</span><span class="p">,</span> -</span><span id="Properties-1500"><a href="#Properties-1500"><span class="linenos">1500</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">CollateProperty</span><span class="p">,</span> -</span><span id="Properties-1501"><a href="#Properties-1501"><span class="linenos">1501</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="n">SchemaCommentProperty</span><span class="p">,</span> -</span><span id="Properties-1502"><a href="#Properties-1502"><span class="linenos">1502</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="n">DefinerProperty</span><span class="p">,</span> -</span><span id="Properties-1503"><a href="#Properties-1503"><span class="linenos">1503</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="n">DistKeyProperty</span><span class="p">,</span> -</span><span id="Properties-1504"><a href="#Properties-1504"><span class="linenos">1504</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="n">DistStyleProperty</span><span class="p">,</span> -</span><span id="Properties-1505"><a href="#Properties-1505"><span class="linenos">1505</span></a> <span class="s2">"ENGINE"</span><span class="p">:</span> <span class="n">EngineProperty</span><span class="p">,</span> -</span><span id="Properties-1506"><a href="#Properties-1506"><span class="linenos">1506</span></a> <span class="s2">"EXECUTE AS"</span><span class="p">:</span> <span class="n">ExecuteAsProperty</span><span class="p">,</span> -</span><span id="Properties-1507"><a href="#Properties-1507"><span class="linenos">1507</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">FileFormatProperty</span><span class="p">,</span> -</span><span id="Properties-1508"><a href="#Properties-1508"><span class="linenos">1508</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="n">LanguageProperty</span><span class="p">,</span> -</span><span id="Properties-1509"><a href="#Properties-1509"><span class="linenos">1509</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="n">LocationProperty</span><span class="p">,</span> -</span><span id="Properties-1510"><a href="#Properties-1510"><span class="linenos">1510</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">PartitionedByProperty</span><span class="p">,</span> -</span><span id="Properties-1511"><a href="#Properties-1511"><span class="linenos">1511</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="n">ReturnsProperty</span><span class="p">,</span> -</span><span id="Properties-1512"><a href="#Properties-1512"><span class="linenos">1512</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="n">SortKeyProperty</span><span class="p">,</span> -</span><span id="Properties-1513"><a href="#Properties-1513"><span class="linenos">1513</span></a> <span class="s2">"TABLE_FORMAT"</span><span class="p">:</span> <span class="n">TableFormatProperty</span><span class="p">,</span> -</span><span id="Properties-1514"><a href="#Properties-1514"><span class="linenos">1514</span></a> <span class="p">}</span> -</span><span id="Properties-1515"><a href="#Properties-1515"><span class="linenos">1515</span></a> -</span><span id="Properties-1516"><a href="#Properties-1516"><span class="linenos">1516</span></a> <span class="n">PROPERTY_TO_NAME</span> <span class="o">=</span> <span class="p">{</span><span class="n">v</span><span class="p">:</span> <span class="n">k</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="Properties-1517"><a href="#Properties-1517"><span class="linenos">1517</span></a> -</span><span id="Properties-1518"><a href="#Properties-1518"><span class="linenos">1518</span></a> <span class="c1"># CREATE property locations</span> -</span><span id="Properties-1519"><a href="#Properties-1519"><span class="linenos">1519</span></a> <span class="c1"># Form: schema specified</span> -</span><span id="Properties-1520"><a href="#Properties-1520"><span class="linenos">1520</span></a> <span class="c1"># create [POST_CREATE]</span> -</span><span id="Properties-1521"><a href="#Properties-1521"><span class="linenos">1521</span></a> <span class="c1"># table a [POST_NAME]</span> -</span><span id="Properties-1522"><a href="#Properties-1522"><span class="linenos">1522</span></a> <span class="c1"># (b int) [POST_SCHEMA]</span> -</span><span id="Properties-1523"><a href="#Properties-1523"><span class="linenos">1523</span></a> <span class="c1"># with ([POST_WITH])</span> -</span><span id="Properties-1524"><a href="#Properties-1524"><span class="linenos">1524</span></a> <span class="c1"># index (b) [POST_INDEX]</span> -</span><span id="Properties-1525"><a href="#Properties-1525"><span class="linenos">1525</span></a> <span class="c1">#</span> -</span><span id="Properties-1526"><a href="#Properties-1526"><span class="linenos">1526</span></a> <span class="c1"># Form: alias selection</span> -</span><span id="Properties-1527"><a href="#Properties-1527"><span class="linenos">1527</span></a> <span class="c1"># create [POST_CREATE]</span> -</span><span id="Properties-1528"><a href="#Properties-1528"><span class="linenos">1528</span></a> <span class="c1"># table a [POST_NAME]</span> -</span><span id="Properties-1529"><a href="#Properties-1529"><span class="linenos">1529</span></a> <span class="c1"># as [POST_ALIAS] (select * from b)</span> -</span><span id="Properties-1530"><a href="#Properties-1530"><span class="linenos">1530</span></a> <span class="c1"># index (c) [POST_INDEX]</span> -</span><span id="Properties-1531"><a href="#Properties-1531"><span class="linenos">1531</span></a> <span class="k">class</span> <span class="nc">Location</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> -</span><span id="Properties-1532"><a href="#Properties-1532"><span class="linenos">1532</span></a> <span class="n">POST_CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties-1533"><a href="#Properties-1533"><span class="linenos">1533</span></a> <span class="n">POST_NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties-1534"><a href="#Properties-1534"><span class="linenos">1534</span></a> <span class="n">POST_SCHEMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties-1535"><a href="#Properties-1535"><span class="linenos">1535</span></a> <span class="n">POST_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties-1536"><a href="#Properties-1536"><span class="linenos">1536</span></a> <span class="n">POST_ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties-1537"><a href="#Properties-1537"><span class="linenos">1537</span></a> <span class="n">POST_INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties-1538"><a href="#Properties-1538"><span class="linenos">1538</span></a> <span class="n">UNSUPPORTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties-1539"><a href="#Properties-1539"><span class="linenos">1539</span></a> -</span><span id="Properties-1540"><a href="#Properties-1540"><span class="linenos">1540</span></a> <span class="nd">@classmethod</span> -</span><span id="Properties-1541"><a href="#Properties-1541"><span class="linenos">1541</span></a> <span class="k">def</span> <span class="nf">from_dict</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">properties_dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">Properties</span><span class="p">:</span> -</span><span id="Properties-1542"><a href="#Properties-1542"><span class="linenos">1542</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Properties-1543"><a href="#Properties-1543"><span class="linenos">1543</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">properties_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Properties-1544"><a href="#Properties-1544"><span class="linenos">1544</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Properties-1545"><a href="#Properties-1545"><span class="linenos">1545</span></a> <span class="k">if</span> <span class="n">property_cls</span><span class="p">:</span> -</span><span id="Properties-1546"><a href="#Properties-1546"><span class="linenos">1546</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">property_cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> -</span><span id="Properties-1547"><a href="#Properties-1547"><span class="linenos">1547</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Properties-1548"><a href="#Properties-1548"><span class="linenos">1548</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> -</span><span id="Properties-1549"><a href="#Properties-1549"><span class="linenos">1549</span></a> -</span><span id="Properties-1550"><a href="#Properties-1550"><span class="linenos">1550</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Properties-1536"><a href="#Properties-1536"><span class="linenos">1536</span></a><span class="k">class</span> <span class="nc">Properties</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Properties-1537"><a href="#Properties-1537"><span class="linenos">1537</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Properties-1538"><a href="#Properties-1538"><span class="linenos">1538</span></a> +</span><span id="Properties-1539"><a href="#Properties-1539"><span class="linenos">1539</span></a> <span class="n">NAME_TO_PROPERTY</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Properties-1540"><a href="#Properties-1540"><span class="linenos">1540</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="n">AlgorithmProperty</span><span class="p">,</span> +</span><span id="Properties-1541"><a href="#Properties-1541"><span class="linenos">1541</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">AutoIncrementProperty</span><span class="p">,</span> +</span><span id="Properties-1542"><a href="#Properties-1542"><span class="linenos">1542</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">CharacterSetProperty</span><span class="p">,</span> +</span><span id="Properties-1543"><a href="#Properties-1543"><span class="linenos">1543</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">CollateProperty</span><span class="p">,</span> +</span><span id="Properties-1544"><a href="#Properties-1544"><span class="linenos">1544</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="n">SchemaCommentProperty</span><span class="p">,</span> +</span><span id="Properties-1545"><a href="#Properties-1545"><span class="linenos">1545</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="n">DefinerProperty</span><span class="p">,</span> +</span><span id="Properties-1546"><a href="#Properties-1546"><span class="linenos">1546</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="n">DistKeyProperty</span><span class="p">,</span> +</span><span id="Properties-1547"><a href="#Properties-1547"><span class="linenos">1547</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="n">DistStyleProperty</span><span class="p">,</span> +</span><span id="Properties-1548"><a href="#Properties-1548"><span class="linenos">1548</span></a> <span class="s2">"ENGINE"</span><span class="p">:</span> <span class="n">EngineProperty</span><span class="p">,</span> +</span><span id="Properties-1549"><a href="#Properties-1549"><span class="linenos">1549</span></a> <span class="s2">"EXECUTE AS"</span><span class="p">:</span> <span class="n">ExecuteAsProperty</span><span class="p">,</span> +</span><span id="Properties-1550"><a href="#Properties-1550"><span class="linenos">1550</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">FileFormatProperty</span><span class="p">,</span> +</span><span id="Properties-1551"><a href="#Properties-1551"><span class="linenos">1551</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="n">LanguageProperty</span><span class="p">,</span> +</span><span id="Properties-1552"><a href="#Properties-1552"><span class="linenos">1552</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="n">LocationProperty</span><span class="p">,</span> +</span><span id="Properties-1553"><a href="#Properties-1553"><span class="linenos">1553</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">PartitionedByProperty</span><span class="p">,</span> +</span><span id="Properties-1554"><a href="#Properties-1554"><span class="linenos">1554</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="n">ReturnsProperty</span><span class="p">,</span> +</span><span id="Properties-1555"><a href="#Properties-1555"><span class="linenos">1555</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="n">SortKeyProperty</span><span class="p">,</span> +</span><span id="Properties-1556"><a href="#Properties-1556"><span class="linenos">1556</span></a> <span class="s2">"TABLE_FORMAT"</span><span class="p">:</span> <span class="n">TableFormatProperty</span><span class="p">,</span> +</span><span id="Properties-1557"><a href="#Properties-1557"><span class="linenos">1557</span></a> <span class="p">}</span> +</span><span id="Properties-1558"><a href="#Properties-1558"><span class="linenos">1558</span></a> +</span><span id="Properties-1559"><a href="#Properties-1559"><span class="linenos">1559</span></a> <span class="n">PROPERTY_TO_NAME</span> <span class="o">=</span> <span class="p">{</span><span class="n">v</span><span class="p">:</span> <span class="n">k</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="Properties-1560"><a href="#Properties-1560"><span class="linenos">1560</span></a> +</span><span id="Properties-1561"><a href="#Properties-1561"><span class="linenos">1561</span></a> <span class="c1"># CREATE property locations</span> +</span><span id="Properties-1562"><a href="#Properties-1562"><span class="linenos">1562</span></a> <span class="c1"># Form: schema specified</span> +</span><span id="Properties-1563"><a href="#Properties-1563"><span class="linenos">1563</span></a> <span class="c1"># create [POST_CREATE]</span> +</span><span id="Properties-1564"><a href="#Properties-1564"><span class="linenos">1564</span></a> <span class="c1"># table a [POST_NAME]</span> +</span><span id="Properties-1565"><a href="#Properties-1565"><span class="linenos">1565</span></a> <span class="c1"># (b int) [POST_SCHEMA]</span> +</span><span id="Properties-1566"><a href="#Properties-1566"><span class="linenos">1566</span></a> <span class="c1"># with ([POST_WITH])</span> +</span><span id="Properties-1567"><a href="#Properties-1567"><span class="linenos">1567</span></a> <span class="c1"># index (b) [POST_INDEX]</span> +</span><span id="Properties-1568"><a href="#Properties-1568"><span class="linenos">1568</span></a> <span class="c1">#</span> +</span><span id="Properties-1569"><a href="#Properties-1569"><span class="linenos">1569</span></a> <span class="c1"># Form: alias selection</span> +</span><span id="Properties-1570"><a href="#Properties-1570"><span class="linenos">1570</span></a> <span class="c1"># create [POST_CREATE]</span> +</span><span id="Properties-1571"><a href="#Properties-1571"><span class="linenos">1571</span></a> <span class="c1"># table a [POST_NAME]</span> +</span><span id="Properties-1572"><a href="#Properties-1572"><span class="linenos">1572</span></a> <span class="c1"># as [POST_ALIAS] (select * from b) [POST_EXPRESSION]</span> +</span><span id="Properties-1573"><a href="#Properties-1573"><span class="linenos">1573</span></a> <span class="c1"># index (c) [POST_INDEX]</span> +</span><span id="Properties-1574"><a href="#Properties-1574"><span class="linenos">1574</span></a> <span class="k">class</span> <span class="nc">Location</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> +</span><span id="Properties-1575"><a href="#Properties-1575"><span class="linenos">1575</span></a> <span class="n">POST_CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties-1576"><a href="#Properties-1576"><span class="linenos">1576</span></a> <span class="n">POST_NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties-1577"><a href="#Properties-1577"><span class="linenos">1577</span></a> <span class="n">POST_SCHEMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties-1578"><a href="#Properties-1578"><span class="linenos">1578</span></a> <span class="n">POST_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties-1579"><a href="#Properties-1579"><span class="linenos">1579</span></a> <span class="n">POST_ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties-1580"><a href="#Properties-1580"><span class="linenos">1580</span></a> <span class="n">POST_EXPRESSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties-1581"><a href="#Properties-1581"><span class="linenos">1581</span></a> <span class="n">POST_INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties-1582"><a href="#Properties-1582"><span class="linenos">1582</span></a> <span class="n">UNSUPPORTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties-1583"><a href="#Properties-1583"><span class="linenos">1583</span></a> +</span><span id="Properties-1584"><a href="#Properties-1584"><span class="linenos">1584</span></a> <span class="nd">@classmethod</span> +</span><span id="Properties-1585"><a href="#Properties-1585"><span class="linenos">1585</span></a> <span class="k">def</span> <span class="nf">from_dict</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">properties_dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">Properties</span><span class="p">:</span> +</span><span id="Properties-1586"><a href="#Properties-1586"><span class="linenos">1586</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Properties-1587"><a href="#Properties-1587"><span class="linenos">1587</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">properties_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Properties-1588"><a href="#Properties-1588"><span class="linenos">1588</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Properties-1589"><a href="#Properties-1589"><span class="linenos">1589</span></a> <span class="k">if</span> <span class="n">property_cls</span><span class="p">:</span> +</span><span id="Properties-1590"><a href="#Properties-1590"><span class="linenos">1590</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">property_cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> +</span><span id="Properties-1591"><a href="#Properties-1591"><span class="linenos">1591</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Properties-1592"><a href="#Properties-1592"><span class="linenos">1592</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> +</span><span id="Properties-1593"><a href="#Properties-1593"><span class="linenos">1593</span></a> +</span><span id="Properties-1594"><a href="#Properties-1594"><span class="linenos">1594</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> </span></pre></div> @@ -17482,17 +18230,17 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Properties.from_dict"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Properties.from_dict-1540"><a href="#Properties.from_dict-1540"><span class="linenos">1540</span></a> <span class="nd">@classmethod</span> -</span><span id="Properties.from_dict-1541"><a href="#Properties.from_dict-1541"><span class="linenos">1541</span></a> <span class="k">def</span> <span class="nf">from_dict</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">properties_dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">Properties</span><span class="p">:</span> -</span><span id="Properties.from_dict-1542"><a href="#Properties.from_dict-1542"><span class="linenos">1542</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Properties.from_dict-1543"><a href="#Properties.from_dict-1543"><span class="linenos">1543</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">properties_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Properties.from_dict-1544"><a href="#Properties.from_dict-1544"><span class="linenos">1544</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Properties.from_dict-1545"><a href="#Properties.from_dict-1545"><span class="linenos">1545</span></a> <span class="k">if</span> <span class="n">property_cls</span><span class="p">:</span> -</span><span id="Properties.from_dict-1546"><a href="#Properties.from_dict-1546"><span class="linenos">1546</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">property_cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> -</span><span id="Properties.from_dict-1547"><a href="#Properties.from_dict-1547"><span class="linenos">1547</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Properties.from_dict-1548"><a href="#Properties.from_dict-1548"><span class="linenos">1548</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> -</span><span id="Properties.from_dict-1549"><a href="#Properties.from_dict-1549"><span class="linenos">1549</span></a> -</span><span id="Properties.from_dict-1550"><a href="#Properties.from_dict-1550"><span class="linenos">1550</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Properties.from_dict-1584"><a href="#Properties.from_dict-1584"><span class="linenos">1584</span></a> <span class="nd">@classmethod</span> +</span><span id="Properties.from_dict-1585"><a href="#Properties.from_dict-1585"><span class="linenos">1585</span></a> <span class="k">def</span> <span class="nf">from_dict</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">properties_dict</span><span class="p">)</span> <span class="o">-></span> <span class="n">Properties</span><span class="p">:</span> +</span><span id="Properties.from_dict-1586"><a href="#Properties.from_dict-1586"><span class="linenos">1586</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Properties.from_dict-1587"><a href="#Properties.from_dict-1587"><span class="linenos">1587</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">properties_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Properties.from_dict-1588"><a href="#Properties.from_dict-1588"><span class="linenos">1588</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">NAME_TO_PROPERTY</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Properties.from_dict-1589"><a href="#Properties.from_dict-1589"><span class="linenos">1589</span></a> <span class="k">if</span> <span class="n">property_cls</span><span class="p">:</span> +</span><span id="Properties.from_dict-1590"><a href="#Properties.from_dict-1590"><span class="linenos">1590</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">property_cls</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> +</span><span id="Properties.from_dict-1591"><a href="#Properties.from_dict-1591"><span class="linenos">1591</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Properties.from_dict-1592"><a href="#Properties.from_dict-1592"><span class="linenos">1592</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Property</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">key</span><span class="p">),</span> <span class="n">value</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)))</span> +</span><span id="Properties.from_dict-1593"><a href="#Properties.from_dict-1593"><span class="linenos">1593</span></a> +</span><span id="Properties.from_dict-1594"><a href="#Properties.from_dict-1594"><span class="linenos">1594</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> </span></pre></div> @@ -17553,14 +18301,15 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Properties.Location"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Properties.Location-1531"><a href="#Properties.Location-1531"><span class="linenos">1531</span></a> <span class="k">class</span> <span class="nc">Location</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> -</span><span id="Properties.Location-1532"><a href="#Properties.Location-1532"><span class="linenos">1532</span></a> <span class="n">POST_CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties.Location-1533"><a href="#Properties.Location-1533"><span class="linenos">1533</span></a> <span class="n">POST_NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties.Location-1534"><a href="#Properties.Location-1534"><span class="linenos">1534</span></a> <span class="n">POST_SCHEMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties.Location-1535"><a href="#Properties.Location-1535"><span class="linenos">1535</span></a> <span class="n">POST_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties.Location-1536"><a href="#Properties.Location-1536"><span class="linenos">1536</span></a> <span class="n">POST_ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties.Location-1537"><a href="#Properties.Location-1537"><span class="linenos">1537</span></a> <span class="n">POST_INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="Properties.Location-1538"><a href="#Properties.Location-1538"><span class="linenos">1538</span></a> <span class="n">UNSUPPORTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Properties.Location-1574"><a href="#Properties.Location-1574"><span class="linenos">1574</span></a> <span class="k">class</span> <span class="nc">Location</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> +</span><span id="Properties.Location-1575"><a href="#Properties.Location-1575"><span class="linenos">1575</span></a> <span class="n">POST_CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties.Location-1576"><a href="#Properties.Location-1576"><span class="linenos">1576</span></a> <span class="n">POST_NAME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties.Location-1577"><a href="#Properties.Location-1577"><span class="linenos">1577</span></a> <span class="n">POST_SCHEMA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties.Location-1578"><a href="#Properties.Location-1578"><span class="linenos">1578</span></a> <span class="n">POST_WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties.Location-1579"><a href="#Properties.Location-1579"><span class="linenos">1579</span></a> <span class="n">POST_ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties.Location-1580"><a href="#Properties.Location-1580"><span class="linenos">1580</span></a> <span class="n">POST_EXPRESSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties.Location-1581"><a href="#Properties.Location-1581"><span class="linenos">1581</span></a> <span class="n">POST_INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="Properties.Location-1582"><a href="#Properties.Location-1582"><span class="linenos">1582</span></a> <span class="n">UNSUPPORTED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span></pre></div> @@ -17570,7 +18319,8 @@ Otherwise, this resets the expression.</li> <div id="Properties.Location.POST_CREATE" class="classattr"> <div class="attr variable"> - <span class="name">POST_CREATE</span><span class="default_value"> = <Location.POST_CREATE: 'POST_CREATE'></span> + <span class="name">POST_CREATE</span> = +<span class="default_value"><Location.POST_CREATE: 'POST_CREATE'></span> </div> @@ -17581,7 +18331,8 @@ Otherwise, this resets the expression.</li> </div> <div id="Properties.Location.POST_NAME" class="classattr"> <div class="attr variable"> - <span class="name">POST_NAME</span><span class="default_value"> = <Location.POST_NAME: 'POST_NAME'></span> + <span class="name">POST_NAME</span> = +<span class="default_value"><Location.POST_NAME: 'POST_NAME'></span> </div> @@ -17592,7 +18343,8 @@ Otherwise, this resets the expression.</li> </div> <div id="Properties.Location.POST_SCHEMA" class="classattr"> <div class="attr variable"> - <span class="name">POST_SCHEMA</span><span class="default_value"> = <Location.POST_SCHEMA: 'POST_SCHEMA'></span> + <span class="name">POST_SCHEMA</span> = +<span class="default_value"><Location.POST_SCHEMA: 'POST_SCHEMA'></span> </div> @@ -17603,7 +18355,8 @@ Otherwise, this resets the expression.</li> </div> <div id="Properties.Location.POST_WITH" class="classattr"> <div class="attr variable"> - <span class="name">POST_WITH</span><span class="default_value"> = <Location.POST_WITH: 'POST_WITH'></span> + <span class="name">POST_WITH</span> = +<span class="default_value"><Location.POST_WITH: 'POST_WITH'></span> </div> @@ -17614,7 +18367,8 @@ Otherwise, this resets the expression.</li> </div> <div id="Properties.Location.POST_ALIAS" class="classattr"> <div class="attr variable"> - <span class="name">POST_ALIAS</span><span class="default_value"> = <Location.POST_ALIAS: 'POST_ALIAS'></span> + <span class="name">POST_ALIAS</span> = +<span class="default_value"><Location.POST_ALIAS: 'POST_ALIAS'></span> </div> @@ -17623,9 +18377,22 @@ Otherwise, this resets the expression.</li> </div> + <div id="Properties.Location.POST_EXPRESSION" class="classattr"> + <div class="attr variable"> + <span class="name">POST_EXPRESSION</span> = +<span class="default_value"><Location.POST_EXPRESSION: 'POST_EXPRESSION'></span> + + + </div> + <a class="headerlink" href="#Properties.Location.POST_EXPRESSION"></a> + + + + </div> <div id="Properties.Location.POST_INDEX" class="classattr"> <div class="attr variable"> - <span class="name">POST_INDEX</span><span class="default_value"> = <Location.POST_INDEX: 'POST_INDEX'></span> + <span class="name">POST_INDEX</span> = +<span class="default_value"><Location.POST_INDEX: 'POST_INDEX'></span> </div> @@ -17636,7 +18403,8 @@ Otherwise, this resets the expression.</li> </div> <div id="Properties.Location.UNSUPPORTED" class="classattr"> <div class="attr variable"> - <span class="name">UNSUPPORTED</span><span class="default_value"> = <Location.UNSUPPORTED: 'UNSUPPORTED'></span> + <span class="name">UNSUPPORTED</span> = +<span class="default_value"><Location.UNSUPPORTED: 'UNSUPPORTED'></span> </div> @@ -17667,8 +18435,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Qualify"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Qualify-1553"><a href="#Qualify-1553"><span class="linenos">1553</span></a><span class="k">class</span> <span class="nc">Qualify</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Qualify-1554"><a href="#Qualify-1554"><span class="linenos">1554</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Qualify-1597"><a href="#Qualify-1597"><span class="linenos">1597</span></a><span class="k">class</span> <span class="nc">Qualify</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Qualify-1598"><a href="#Qualify-1598"><span class="linenos">1598</span></a> <span class="k">pass</span> </span></pre></div> @@ -17728,8 +18496,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Return"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Return-1558"><a href="#Return-1558"><span class="linenos">1558</span></a><span class="k">class</span> <span class="nc">Return</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Return-1559"><a href="#Return-1559"><span class="linenos">1559</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Return-1602"><a href="#Return-1602"><span class="linenos">1602</span></a><span class="k">class</span> <span class="nc">Return</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Return-1603"><a href="#Return-1603"><span class="linenos">1603</span></a> <span class="k">pass</span> </span></pre></div> @@ -17789,8 +18557,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Reference"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Reference-1562"><a href="#Reference-1562"><span class="linenos">1562</span></a><span class="k">class</span> <span class="nc">Reference</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Reference-1563"><a href="#Reference-1563"><span class="linenos">1563</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Reference-1606"><a href="#Reference-1606"><span class="linenos">1606</span></a><span class="k">class</span> <span class="nc">Reference</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Reference-1607"><a href="#Reference-1607"><span class="linenos">1607</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -17850,8 +18618,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Tuple"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tuple-1566"><a href="#Tuple-1566"><span class="linenos">1566</span></a><span class="k">class</span> <span class="nc">Tuple</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Tuple-1567"><a href="#Tuple-1567"><span class="linenos">1567</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tuple-1610"><a href="#Tuple-1610"><span class="linenos">1610</span></a><span class="k">class</span> <span class="nc">Tuple</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Tuple-1611"><a href="#Tuple-1611"><span class="linenos">1611</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -17911,103 +18679,103 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Subqueryable"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Subqueryable-1570"><a href="#Subqueryable-1570"><span class="linenos">1570</span></a><span class="k">class</span> <span class="nc">Subqueryable</span><span class="p">(</span><span class="n">Unionable</span><span class="p">):</span> -</span><span id="Subqueryable-1571"><a href="#Subqueryable-1571"><span class="linenos">1571</span></a> <span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Subquery</span><span class="p">:</span> -</span><span id="Subqueryable-1572"><a href="#Subqueryable-1572"><span class="linenos">1572</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Subqueryable-1573"><a href="#Subqueryable-1573"><span class="linenos">1573</span></a><span class="sd"> Convert this expression to an aliased expression that can be used as a Subquery.</span> -</span><span id="Subqueryable-1574"><a href="#Subqueryable-1574"><span class="linenos">1574</span></a> -</span><span id="Subqueryable-1575"><a href="#Subqueryable-1575"><span class="linenos">1575</span></a><span class="sd"> Example:</span> -</span><span id="Subqueryable-1576"><a href="#Subqueryable-1576"><span class="linenos">1576</span></a><span class="sd"> >>> subquery = Select().select("x").from_("tbl").subquery()</span> -</span><span id="Subqueryable-1577"><a href="#Subqueryable-1577"><span class="linenos">1577</span></a><span class="sd"> >>> Select().select("x").from_(subquery).sql()</span> -</span><span id="Subqueryable-1578"><a href="#Subqueryable-1578"><span class="linenos">1578</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl)'</span> -</span><span id="Subqueryable-1579"><a href="#Subqueryable-1579"><span class="linenos">1579</span></a> -</span><span id="Subqueryable-1580"><a href="#Subqueryable-1580"><span class="linenos">1580</span></a><span class="sd"> Args:</span> -</span><span id="Subqueryable-1581"><a href="#Subqueryable-1581"><span class="linenos">1581</span></a><span class="sd"> alias (str | Identifier): an optional alias for the subquery</span> -</span><span id="Subqueryable-1582"><a href="#Subqueryable-1582"><span class="linenos">1582</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Subqueryable-1583"><a href="#Subqueryable-1583"><span class="linenos">1583</span></a> -</span><span id="Subqueryable-1584"><a href="#Subqueryable-1584"><span class="linenos">1584</span></a><span class="sd"> Returns:</span> -</span><span id="Subqueryable-1585"><a href="#Subqueryable-1585"><span class="linenos">1585</span></a><span class="sd"> Alias: the subquery</span> -</span><span id="Subqueryable-1586"><a href="#Subqueryable-1586"><span class="linenos">1586</span></a><span class="sd"> """</span> -</span><span id="Subqueryable-1587"><a href="#Subqueryable-1587"><span class="linenos">1587</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Subqueryable-1588"><a href="#Subqueryable-1588"><span class="linenos">1588</span></a> <span class="k">return</span> <span class="n">Subquery</span><span class="p">(</span> -</span><span id="Subqueryable-1589"><a href="#Subqueryable-1589"><span class="linenos">1589</span></a> <span class="n">this</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> -</span><span id="Subqueryable-1590"><a href="#Subqueryable-1590"><span class="linenos">1590</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)),</span> -</span><span id="Subqueryable-1591"><a href="#Subqueryable-1591"><span class="linenos">1591</span></a> <span class="p">)</span> -</span><span id="Subqueryable-1592"><a href="#Subqueryable-1592"><span class="linenos">1592</span></a> -</span><span id="Subqueryable-1593"><a href="#Subqueryable-1593"><span class="linenos">1593</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Subqueryable-1594"><a href="#Subqueryable-1594"><span class="linenos">1594</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span> -</span><span id="Subqueryable-1595"><a href="#Subqueryable-1595"><span class="linenos">1595</span></a> -</span><span id="Subqueryable-1596"><a href="#Subqueryable-1596"><span class="linenos">1596</span></a> <span class="nd">@property</span> -</span><span id="Subqueryable-1597"><a href="#Subqueryable-1597"><span class="linenos">1597</span></a> <span class="k">def</span> <span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Subqueryable-1598"><a href="#Subqueryable-1598"><span class="linenos">1598</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</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">"with"</span><span class="p">)</span> -</span><span id="Subqueryable-1599"><a href="#Subqueryable-1599"><span class="linenos">1599</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">with_</span><span class="p">:</span> -</span><span id="Subqueryable-1600"><a href="#Subqueryable-1600"><span class="linenos">1600</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="Subqueryable-1601"><a href="#Subqueryable-1601"><span class="linenos">1601</span></a> <span class="k">return</span> <span class="n">with_</span><span class="o">.</span><span class="n">expressions</span> -</span><span id="Subqueryable-1602"><a href="#Subqueryable-1602"><span class="linenos">1602</span></a> -</span><span id="Subqueryable-1603"><a href="#Subqueryable-1603"><span class="linenos">1603</span></a> <span class="nd">@property</span> -</span><span id="Subqueryable-1604"><a href="#Subqueryable-1604"><span class="linenos">1604</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Subqueryable-1605"><a href="#Subqueryable-1605"><span class="linenos">1605</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Subqueryable objects must implement `selects`"</span><span class="p">)</span> -</span><span id="Subqueryable-1606"><a href="#Subqueryable-1606"><span class="linenos">1606</span></a> -</span><span id="Subqueryable-1607"><a href="#Subqueryable-1607"><span class="linenos">1607</span></a> <span class="nd">@property</span> -</span><span id="Subqueryable-1608"><a href="#Subqueryable-1608"><span class="linenos">1608</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Subqueryable-1609"><a href="#Subqueryable-1609"><span class="linenos">1609</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Subqueryable objects must implement `named_selects`"</span><span class="p">)</span> -</span><span id="Subqueryable-1610"><a href="#Subqueryable-1610"><span class="linenos">1610</span></a> -</span><span id="Subqueryable-1611"><a href="#Subqueryable-1611"><span class="linenos">1611</span></a> <span class="k">def</span> <span class="nf">with_</span><span class="p">(</span> -</span><span id="Subqueryable-1612"><a href="#Subqueryable-1612"><span class="linenos">1612</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Subqueryable-1613"><a href="#Subqueryable-1613"><span class="linenos">1613</span></a> <span class="n">alias</span><span class="p">,</span> -</span><span id="Subqueryable-1614"><a href="#Subqueryable-1614"><span class="linenos">1614</span></a> <span class="n">as_</span><span class="p">,</span> -</span><span id="Subqueryable-1615"><a href="#Subqueryable-1615"><span class="linenos">1615</span></a> <span class="n">recursive</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Subqueryable-1616"><a href="#Subqueryable-1616"><span class="linenos">1616</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Subqueryable-1617"><a href="#Subqueryable-1617"><span class="linenos">1617</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Subqueryable-1618"><a href="#Subqueryable-1618"><span class="linenos">1618</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Subqueryable-1619"><a href="#Subqueryable-1619"><span class="linenos">1619</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Subqueryable-1620"><a href="#Subqueryable-1620"><span class="linenos">1620</span></a> <span class="p">):</span> -</span><span id="Subqueryable-1621"><a href="#Subqueryable-1621"><span class="linenos">1621</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Subqueryable-1622"><a href="#Subqueryable-1622"><span class="linenos">1622</span></a><span class="sd"> Append to or set the common table expressions.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Subqueryable-1614"><a href="#Subqueryable-1614"><span class="linenos">1614</span></a><span class="k">class</span> <span class="nc">Subqueryable</span><span class="p">(</span><span class="n">Unionable</span><span class="p">):</span> +</span><span id="Subqueryable-1615"><a href="#Subqueryable-1615"><span class="linenos">1615</span></a> <span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Subquery</span><span class="p">:</span> +</span><span id="Subqueryable-1616"><a href="#Subqueryable-1616"><span class="linenos">1616</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Subqueryable-1617"><a href="#Subqueryable-1617"><span class="linenos">1617</span></a><span class="sd"> Convert this expression to an aliased expression that can be used as a Subquery.</span> +</span><span id="Subqueryable-1618"><a href="#Subqueryable-1618"><span class="linenos">1618</span></a> +</span><span id="Subqueryable-1619"><a href="#Subqueryable-1619"><span class="linenos">1619</span></a><span class="sd"> Example:</span> +</span><span id="Subqueryable-1620"><a href="#Subqueryable-1620"><span class="linenos">1620</span></a><span class="sd"> >>> subquery = Select().select("x").from_("tbl").subquery()</span> +</span><span id="Subqueryable-1621"><a href="#Subqueryable-1621"><span class="linenos">1621</span></a><span class="sd"> >>> Select().select("x").from_(subquery).sql()</span> +</span><span id="Subqueryable-1622"><a href="#Subqueryable-1622"><span class="linenos">1622</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl)'</span> </span><span id="Subqueryable-1623"><a href="#Subqueryable-1623"><span class="linenos">1623</span></a> -</span><span id="Subqueryable-1624"><a href="#Subqueryable-1624"><span class="linenos">1624</span></a><span class="sd"> Example:</span> -</span><span id="Subqueryable-1625"><a href="#Subqueryable-1625"><span class="linenos">1625</span></a><span class="sd"> >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()</span> -</span><span id="Subqueryable-1626"><a href="#Subqueryable-1626"><span class="linenos">1626</span></a><span class="sd"> 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'</span> +</span><span id="Subqueryable-1624"><a href="#Subqueryable-1624"><span class="linenos">1624</span></a><span class="sd"> Args:</span> +</span><span id="Subqueryable-1625"><a href="#Subqueryable-1625"><span class="linenos">1625</span></a><span class="sd"> alias (str | Identifier): an optional alias for the subquery</span> +</span><span id="Subqueryable-1626"><a href="#Subqueryable-1626"><span class="linenos">1626</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> </span><span id="Subqueryable-1627"><a href="#Subqueryable-1627"><span class="linenos">1627</span></a> -</span><span id="Subqueryable-1628"><a href="#Subqueryable-1628"><span class="linenos">1628</span></a><span class="sd"> Args:</span> -</span><span id="Subqueryable-1629"><a href="#Subqueryable-1629"><span class="linenos">1629</span></a><span class="sd"> alias (str | Expression): the SQL code string to parse as the table name.</span> -</span><span id="Subqueryable-1630"><a href="#Subqueryable-1630"><span class="linenos">1630</span></a><span class="sd"> If an `Expression` instance is passed, this is used as-is.</span> -</span><span id="Subqueryable-1631"><a href="#Subqueryable-1631"><span class="linenos">1631</span></a><span class="sd"> as_ (str | Expression): the SQL code string to parse as the table expression.</span> -</span><span id="Subqueryable-1632"><a href="#Subqueryable-1632"><span class="linenos">1632</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Subqueryable-1633"><a href="#Subqueryable-1633"><span class="linenos">1633</span></a><span class="sd"> recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.</span> -</span><span id="Subqueryable-1634"><a href="#Subqueryable-1634"><span class="linenos">1634</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Subqueryable-1635"><a href="#Subqueryable-1635"><span class="linenos">1635</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Subqueryable-1636"><a href="#Subqueryable-1636"><span class="linenos">1636</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Subqueryable-1637"><a href="#Subqueryable-1637"><span class="linenos">1637</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Subqueryable-1638"><a href="#Subqueryable-1638"><span class="linenos">1638</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Subqueryable-1628"><a href="#Subqueryable-1628"><span class="linenos">1628</span></a><span class="sd"> Returns:</span> +</span><span id="Subqueryable-1629"><a href="#Subqueryable-1629"><span class="linenos">1629</span></a><span class="sd"> Alias: the subquery</span> +</span><span id="Subqueryable-1630"><a href="#Subqueryable-1630"><span class="linenos">1630</span></a><span class="sd"> """</span> +</span><span id="Subqueryable-1631"><a href="#Subqueryable-1631"><span class="linenos">1631</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Subqueryable-1632"><a href="#Subqueryable-1632"><span class="linenos">1632</span></a> <span class="k">return</span> <span class="n">Subquery</span><span class="p">(</span> +</span><span id="Subqueryable-1633"><a href="#Subqueryable-1633"><span class="linenos">1633</span></a> <span class="n">this</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> +</span><span id="Subqueryable-1634"><a href="#Subqueryable-1634"><span class="linenos">1634</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)),</span> +</span><span id="Subqueryable-1635"><a href="#Subqueryable-1635"><span class="linenos">1635</span></a> <span class="p">)</span> +</span><span id="Subqueryable-1636"><a href="#Subqueryable-1636"><span class="linenos">1636</span></a> +</span><span id="Subqueryable-1637"><a href="#Subqueryable-1637"><span class="linenos">1637</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Subqueryable-1638"><a href="#Subqueryable-1638"><span class="linenos">1638</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span> </span><span id="Subqueryable-1639"><a href="#Subqueryable-1639"><span class="linenos">1639</span></a> -</span><span id="Subqueryable-1640"><a href="#Subqueryable-1640"><span class="linenos">1640</span></a><span class="sd"> Returns:</span> -</span><span id="Subqueryable-1641"><a href="#Subqueryable-1641"><span class="linenos">1641</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Subqueryable-1642"><a href="#Subqueryable-1642"><span class="linenos">1642</span></a><span class="sd"> """</span> -</span><span id="Subqueryable-1643"><a href="#Subqueryable-1643"><span class="linenos">1643</span></a> <span class="n">alias_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="Subqueryable-1644"><a href="#Subqueryable-1644"><span class="linenos">1644</span></a> <span class="n">alias</span><span class="p">,</span> -</span><span id="Subqueryable-1645"><a href="#Subqueryable-1645"><span class="linenos">1645</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Subqueryable-1646"><a href="#Subqueryable-1646"><span class="linenos">1646</span></a> <span class="n">into</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">,</span> -</span><span id="Subqueryable-1647"><a href="#Subqueryable-1647"><span class="linenos">1647</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Subqueryable-1648"><a href="#Subqueryable-1648"><span class="linenos">1648</span></a> <span class="p">)</span> -</span><span id="Subqueryable-1649"><a href="#Subqueryable-1649"><span class="linenos">1649</span></a> <span class="n">as_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="Subqueryable-1650"><a href="#Subqueryable-1650"><span class="linenos">1650</span></a> <span class="n">as_</span><span class="p">,</span> -</span><span id="Subqueryable-1651"><a href="#Subqueryable-1651"><span class="linenos">1651</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Subqueryable-1652"><a href="#Subqueryable-1652"><span class="linenos">1652</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Subqueryable-1653"><a href="#Subqueryable-1653"><span class="linenos">1653</span></a> <span class="p">)</span> -</span><span id="Subqueryable-1654"><a href="#Subqueryable-1654"><span class="linenos">1654</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">CTE</span><span class="p">(</span> -</span><span id="Subqueryable-1655"><a href="#Subqueryable-1655"><span class="linenos">1655</span></a> <span class="n">this</span><span class="o">=</span><span class="n">as_expression</span><span class="p">,</span> -</span><span id="Subqueryable-1656"><a href="#Subqueryable-1656"><span class="linenos">1656</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias_expression</span><span class="p">,</span> -</span><span id="Subqueryable-1657"><a href="#Subqueryable-1657"><span class="linenos">1657</span></a> <span class="p">)</span> -</span><span id="Subqueryable-1658"><a href="#Subqueryable-1658"><span class="linenos">1658</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Subqueryable-1659"><a href="#Subqueryable-1659"><span class="linenos">1659</span></a> <span class="n">cte</span><span class="p">,</span> -</span><span id="Subqueryable-1660"><a href="#Subqueryable-1660"><span class="linenos">1660</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Subqueryable-1661"><a href="#Subqueryable-1661"><span class="linenos">1661</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"with"</span><span class="p">,</span> -</span><span id="Subqueryable-1662"><a href="#Subqueryable-1662"><span class="linenos">1662</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Subqueryable-1663"><a href="#Subqueryable-1663"><span class="linenos">1663</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Subqueryable-1664"><a href="#Subqueryable-1664"><span class="linenos">1664</span></a> <span class="n">into</span><span class="o">=</span><span class="n">With</span><span class="p">,</span> -</span><span id="Subqueryable-1665"><a href="#Subqueryable-1665"><span class="linenos">1665</span></a> <span class="n">properties</span><span class="o">=</span><span class="p">{</span><span class="s2">"recursive"</span><span class="p">:</span> <span class="n">recursive</span> <span class="ow">or</span> <span class="kc">False</span><span class="p">},</span> -</span><span id="Subqueryable-1666"><a href="#Subqueryable-1666"><span class="linenos">1666</span></a> <span class="p">)</span> +</span><span id="Subqueryable-1640"><a href="#Subqueryable-1640"><span class="linenos">1640</span></a> <span class="nd">@property</span> +</span><span id="Subqueryable-1641"><a href="#Subqueryable-1641"><span class="linenos">1641</span></a> <span class="k">def</span> <span class="nf">ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Subqueryable-1642"><a href="#Subqueryable-1642"><span class="linenos">1642</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</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">"with"</span><span class="p">)</span> +</span><span id="Subqueryable-1643"><a href="#Subqueryable-1643"><span class="linenos">1643</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">with_</span><span class="p">:</span> +</span><span id="Subqueryable-1644"><a href="#Subqueryable-1644"><span class="linenos">1644</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="Subqueryable-1645"><a href="#Subqueryable-1645"><span class="linenos">1645</span></a> <span class="k">return</span> <span class="n">with_</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="Subqueryable-1646"><a href="#Subqueryable-1646"><span class="linenos">1646</span></a> +</span><span id="Subqueryable-1647"><a href="#Subqueryable-1647"><span class="linenos">1647</span></a> <span class="nd">@property</span> +</span><span id="Subqueryable-1648"><a href="#Subqueryable-1648"><span class="linenos">1648</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Subqueryable-1649"><a href="#Subqueryable-1649"><span class="linenos">1649</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Subqueryable objects must implement `selects`"</span><span class="p">)</span> +</span><span id="Subqueryable-1650"><a href="#Subqueryable-1650"><span class="linenos">1650</span></a> +</span><span id="Subqueryable-1651"><a href="#Subqueryable-1651"><span class="linenos">1651</span></a> <span class="nd">@property</span> +</span><span id="Subqueryable-1652"><a href="#Subqueryable-1652"><span class="linenos">1652</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Subqueryable-1653"><a href="#Subqueryable-1653"><span class="linenos">1653</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Subqueryable objects must implement `named_selects`"</span><span class="p">)</span> +</span><span id="Subqueryable-1654"><a href="#Subqueryable-1654"><span class="linenos">1654</span></a> +</span><span id="Subqueryable-1655"><a href="#Subqueryable-1655"><span class="linenos">1655</span></a> <span class="k">def</span> <span class="nf">with_</span><span class="p">(</span> +</span><span id="Subqueryable-1656"><a href="#Subqueryable-1656"><span class="linenos">1656</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Subqueryable-1657"><a href="#Subqueryable-1657"><span class="linenos">1657</span></a> <span class="n">alias</span><span class="p">,</span> +</span><span id="Subqueryable-1658"><a href="#Subqueryable-1658"><span class="linenos">1658</span></a> <span class="n">as_</span><span class="p">,</span> +</span><span id="Subqueryable-1659"><a href="#Subqueryable-1659"><span class="linenos">1659</span></a> <span class="n">recursive</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Subqueryable-1660"><a href="#Subqueryable-1660"><span class="linenos">1660</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Subqueryable-1661"><a href="#Subqueryable-1661"><span class="linenos">1661</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Subqueryable-1662"><a href="#Subqueryable-1662"><span class="linenos">1662</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Subqueryable-1663"><a href="#Subqueryable-1663"><span class="linenos">1663</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Subqueryable-1664"><a href="#Subqueryable-1664"><span class="linenos">1664</span></a> <span class="p">):</span> +</span><span id="Subqueryable-1665"><a href="#Subqueryable-1665"><span class="linenos">1665</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Subqueryable-1666"><a href="#Subqueryable-1666"><span class="linenos">1666</span></a><span class="sd"> Append to or set the common table expressions.</span> +</span><span id="Subqueryable-1667"><a href="#Subqueryable-1667"><span class="linenos">1667</span></a> +</span><span id="Subqueryable-1668"><a href="#Subqueryable-1668"><span class="linenos">1668</span></a><span class="sd"> Example:</span> +</span><span id="Subqueryable-1669"><a href="#Subqueryable-1669"><span class="linenos">1669</span></a><span class="sd"> >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()</span> +</span><span id="Subqueryable-1670"><a href="#Subqueryable-1670"><span class="linenos">1670</span></a><span class="sd"> 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'</span> +</span><span id="Subqueryable-1671"><a href="#Subqueryable-1671"><span class="linenos">1671</span></a> +</span><span id="Subqueryable-1672"><a href="#Subqueryable-1672"><span class="linenos">1672</span></a><span class="sd"> Args:</span> +</span><span id="Subqueryable-1673"><a href="#Subqueryable-1673"><span class="linenos">1673</span></a><span class="sd"> alias (str | Expression): the SQL code string to parse as the table name.</span> +</span><span id="Subqueryable-1674"><a href="#Subqueryable-1674"><span class="linenos">1674</span></a><span class="sd"> If an `Expression` instance is passed, this is used as-is.</span> +</span><span id="Subqueryable-1675"><a href="#Subqueryable-1675"><span class="linenos">1675</span></a><span class="sd"> as_ (str | Expression): the SQL code string to parse as the table expression.</span> +</span><span id="Subqueryable-1676"><a href="#Subqueryable-1676"><span class="linenos">1676</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Subqueryable-1677"><a href="#Subqueryable-1677"><span class="linenos">1677</span></a><span class="sd"> recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.</span> +</span><span id="Subqueryable-1678"><a href="#Subqueryable-1678"><span class="linenos">1678</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Subqueryable-1679"><a href="#Subqueryable-1679"><span class="linenos">1679</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Subqueryable-1680"><a href="#Subqueryable-1680"><span class="linenos">1680</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Subqueryable-1681"><a href="#Subqueryable-1681"><span class="linenos">1681</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Subqueryable-1682"><a href="#Subqueryable-1682"><span class="linenos">1682</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Subqueryable-1683"><a href="#Subqueryable-1683"><span class="linenos">1683</span></a> +</span><span id="Subqueryable-1684"><a href="#Subqueryable-1684"><span class="linenos">1684</span></a><span class="sd"> Returns:</span> +</span><span id="Subqueryable-1685"><a href="#Subqueryable-1685"><span class="linenos">1685</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Subqueryable-1686"><a href="#Subqueryable-1686"><span class="linenos">1686</span></a><span class="sd"> """</span> +</span><span id="Subqueryable-1687"><a href="#Subqueryable-1687"><span class="linenos">1687</span></a> <span class="n">alias_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="Subqueryable-1688"><a href="#Subqueryable-1688"><span class="linenos">1688</span></a> <span class="n">alias</span><span class="p">,</span> +</span><span id="Subqueryable-1689"><a href="#Subqueryable-1689"><span class="linenos">1689</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Subqueryable-1690"><a href="#Subqueryable-1690"><span class="linenos">1690</span></a> <span class="n">into</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">,</span> +</span><span id="Subqueryable-1691"><a href="#Subqueryable-1691"><span class="linenos">1691</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Subqueryable-1692"><a href="#Subqueryable-1692"><span class="linenos">1692</span></a> <span class="p">)</span> +</span><span id="Subqueryable-1693"><a href="#Subqueryable-1693"><span class="linenos">1693</span></a> <span class="n">as_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="Subqueryable-1694"><a href="#Subqueryable-1694"><span class="linenos">1694</span></a> <span class="n">as_</span><span class="p">,</span> +</span><span id="Subqueryable-1695"><a href="#Subqueryable-1695"><span class="linenos">1695</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Subqueryable-1696"><a href="#Subqueryable-1696"><span class="linenos">1696</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Subqueryable-1697"><a href="#Subqueryable-1697"><span class="linenos">1697</span></a> <span class="p">)</span> +</span><span id="Subqueryable-1698"><a href="#Subqueryable-1698"><span class="linenos">1698</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">CTE</span><span class="p">(</span> +</span><span id="Subqueryable-1699"><a href="#Subqueryable-1699"><span class="linenos">1699</span></a> <span class="n">this</span><span class="o">=</span><span class="n">as_expression</span><span class="p">,</span> +</span><span id="Subqueryable-1700"><a href="#Subqueryable-1700"><span class="linenos">1700</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias_expression</span><span class="p">,</span> +</span><span id="Subqueryable-1701"><a href="#Subqueryable-1701"><span class="linenos">1701</span></a> <span class="p">)</span> +</span><span id="Subqueryable-1702"><a href="#Subqueryable-1702"><span class="linenos">1702</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Subqueryable-1703"><a href="#Subqueryable-1703"><span class="linenos">1703</span></a> <span class="n">cte</span><span class="p">,</span> +</span><span id="Subqueryable-1704"><a href="#Subqueryable-1704"><span class="linenos">1704</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Subqueryable-1705"><a href="#Subqueryable-1705"><span class="linenos">1705</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"with"</span><span class="p">,</span> +</span><span id="Subqueryable-1706"><a href="#Subqueryable-1706"><span class="linenos">1706</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Subqueryable-1707"><a href="#Subqueryable-1707"><span class="linenos">1707</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Subqueryable-1708"><a href="#Subqueryable-1708"><span class="linenos">1708</span></a> <span class="n">into</span><span class="o">=</span><span class="n">With</span><span class="p">,</span> +</span><span id="Subqueryable-1709"><a href="#Subqueryable-1709"><span class="linenos">1709</span></a> <span class="n">properties</span><span class="o">=</span><span class="p">{</span><span class="s2">"recursive"</span><span class="p">:</span> <span class="n">recursive</span> <span class="ow">or</span> <span class="kc">False</span><span class="p">},</span> +</span><span id="Subqueryable-1710"><a href="#Subqueryable-1710"><span class="linenos">1710</span></a> <span class="p">)</span> </span></pre></div> @@ -18024,27 +18792,27 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Subqueryable.subquery"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Subqueryable.subquery-1571"><a href="#Subqueryable.subquery-1571"><span class="linenos">1571</span></a> <span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Subquery</span><span class="p">:</span> -</span><span id="Subqueryable.subquery-1572"><a href="#Subqueryable.subquery-1572"><span class="linenos">1572</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Subqueryable.subquery-1573"><a href="#Subqueryable.subquery-1573"><span class="linenos">1573</span></a><span class="sd"> Convert this expression to an aliased expression that can be used as a Subquery.</span> -</span><span id="Subqueryable.subquery-1574"><a href="#Subqueryable.subquery-1574"><span class="linenos">1574</span></a> -</span><span id="Subqueryable.subquery-1575"><a href="#Subqueryable.subquery-1575"><span class="linenos">1575</span></a><span class="sd"> Example:</span> -</span><span id="Subqueryable.subquery-1576"><a href="#Subqueryable.subquery-1576"><span class="linenos">1576</span></a><span class="sd"> >>> subquery = Select().select("x").from_("tbl").subquery()</span> -</span><span id="Subqueryable.subquery-1577"><a href="#Subqueryable.subquery-1577"><span class="linenos">1577</span></a><span class="sd"> >>> Select().select("x").from_(subquery).sql()</span> -</span><span id="Subqueryable.subquery-1578"><a href="#Subqueryable.subquery-1578"><span class="linenos">1578</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl)'</span> -</span><span id="Subqueryable.subquery-1579"><a href="#Subqueryable.subquery-1579"><span class="linenos">1579</span></a> -</span><span id="Subqueryable.subquery-1580"><a href="#Subqueryable.subquery-1580"><span class="linenos">1580</span></a><span class="sd"> Args:</span> -</span><span id="Subqueryable.subquery-1581"><a href="#Subqueryable.subquery-1581"><span class="linenos">1581</span></a><span class="sd"> alias (str | Identifier): an optional alias for the subquery</span> -</span><span id="Subqueryable.subquery-1582"><a href="#Subqueryable.subquery-1582"><span class="linenos">1582</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Subqueryable.subquery-1583"><a href="#Subqueryable.subquery-1583"><span class="linenos">1583</span></a> -</span><span id="Subqueryable.subquery-1584"><a href="#Subqueryable.subquery-1584"><span class="linenos">1584</span></a><span class="sd"> Returns:</span> -</span><span id="Subqueryable.subquery-1585"><a href="#Subqueryable.subquery-1585"><span class="linenos">1585</span></a><span class="sd"> Alias: the subquery</span> -</span><span id="Subqueryable.subquery-1586"><a href="#Subqueryable.subquery-1586"><span class="linenos">1586</span></a><span class="sd"> """</span> -</span><span id="Subqueryable.subquery-1587"><a href="#Subqueryable.subquery-1587"><span class="linenos">1587</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Subqueryable.subquery-1588"><a href="#Subqueryable.subquery-1588"><span class="linenos">1588</span></a> <span class="k">return</span> <span class="n">Subquery</span><span class="p">(</span> -</span><span id="Subqueryable.subquery-1589"><a href="#Subqueryable.subquery-1589"><span class="linenos">1589</span></a> <span class="n">this</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> -</span><span id="Subqueryable.subquery-1590"><a href="#Subqueryable.subquery-1590"><span class="linenos">1590</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)),</span> -</span><span id="Subqueryable.subquery-1591"><a href="#Subqueryable.subquery-1591"><span class="linenos">1591</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Subqueryable.subquery-1615"><a href="#Subqueryable.subquery-1615"><span class="linenos">1615</span></a> <span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Subquery</span><span class="p">:</span> +</span><span id="Subqueryable.subquery-1616"><a href="#Subqueryable.subquery-1616"><span class="linenos">1616</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Subqueryable.subquery-1617"><a href="#Subqueryable.subquery-1617"><span class="linenos">1617</span></a><span class="sd"> Convert this expression to an aliased expression that can be used as a Subquery.</span> +</span><span id="Subqueryable.subquery-1618"><a href="#Subqueryable.subquery-1618"><span class="linenos">1618</span></a> +</span><span id="Subqueryable.subquery-1619"><a href="#Subqueryable.subquery-1619"><span class="linenos">1619</span></a><span class="sd"> Example:</span> +</span><span id="Subqueryable.subquery-1620"><a href="#Subqueryable.subquery-1620"><span class="linenos">1620</span></a><span class="sd"> >>> subquery = Select().select("x").from_("tbl").subquery()</span> +</span><span id="Subqueryable.subquery-1621"><a href="#Subqueryable.subquery-1621"><span class="linenos">1621</span></a><span class="sd"> >>> Select().select("x").from_(subquery).sql()</span> +</span><span id="Subqueryable.subquery-1622"><a href="#Subqueryable.subquery-1622"><span class="linenos">1622</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl)'</span> +</span><span id="Subqueryable.subquery-1623"><a href="#Subqueryable.subquery-1623"><span class="linenos">1623</span></a> +</span><span id="Subqueryable.subquery-1624"><a href="#Subqueryable.subquery-1624"><span class="linenos">1624</span></a><span class="sd"> Args:</span> +</span><span id="Subqueryable.subquery-1625"><a href="#Subqueryable.subquery-1625"><span class="linenos">1625</span></a><span class="sd"> alias (str | Identifier): an optional alias for the subquery</span> +</span><span id="Subqueryable.subquery-1626"><a href="#Subqueryable.subquery-1626"><span class="linenos">1626</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Subqueryable.subquery-1627"><a href="#Subqueryable.subquery-1627"><span class="linenos">1627</span></a> +</span><span id="Subqueryable.subquery-1628"><a href="#Subqueryable.subquery-1628"><span class="linenos">1628</span></a><span class="sd"> Returns:</span> +</span><span id="Subqueryable.subquery-1629"><a href="#Subqueryable.subquery-1629"><span class="linenos">1629</span></a><span class="sd"> Alias: the subquery</span> +</span><span id="Subqueryable.subquery-1630"><a href="#Subqueryable.subquery-1630"><span class="linenos">1630</span></a><span class="sd"> """</span> +</span><span id="Subqueryable.subquery-1631"><a href="#Subqueryable.subquery-1631"><span class="linenos">1631</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Subqueryable.subquery-1632"><a href="#Subqueryable.subquery-1632"><span class="linenos">1632</span></a> <span class="k">return</span> <span class="n">Subquery</span><span class="p">(</span> +</span><span id="Subqueryable.subquery-1633"><a href="#Subqueryable.subquery-1633"><span class="linenos">1633</span></a> <span class="n">this</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> +</span><span id="Subqueryable.subquery-1634"><a href="#Subqueryable.subquery-1634"><span class="linenos">1634</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)),</span> +</span><span id="Subqueryable.subquery-1635"><a href="#Subqueryable.subquery-1635"><span class="linenos">1635</span></a> <span class="p">)</span> </span></pre></div> @@ -18088,8 +18856,8 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Subqueryable.limit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Subqueryable.limit-1593"><a href="#Subqueryable.limit-1593"><span class="linenos">1593</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Subqueryable.limit-1594"><a href="#Subqueryable.limit-1594"><span class="linenos">1594</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Subqueryable.limit-1637"><a href="#Subqueryable.limit-1637"><span class="linenos">1637</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Subqueryable.limit-1638"><a href="#Subqueryable.limit-1638"><span class="linenos">1638</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span> </span></pre></div> @@ -18107,62 +18875,62 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Subqueryable.with_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Subqueryable.with_-1611"><a href="#Subqueryable.with_-1611"><span class="linenos">1611</span></a> <span class="k">def</span> <span class="nf">with_</span><span class="p">(</span> -</span><span id="Subqueryable.with_-1612"><a href="#Subqueryable.with_-1612"><span class="linenos">1612</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1613"><a href="#Subqueryable.with_-1613"><span class="linenos">1613</span></a> <span class="n">alias</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1614"><a href="#Subqueryable.with_-1614"><span class="linenos">1614</span></a> <span class="n">as_</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1615"><a href="#Subqueryable.with_-1615"><span class="linenos">1615</span></a> <span class="n">recursive</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1616"><a href="#Subqueryable.with_-1616"><span class="linenos">1616</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1617"><a href="#Subqueryable.with_-1617"><span class="linenos">1617</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1618"><a href="#Subqueryable.with_-1618"><span class="linenos">1618</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1619"><a href="#Subqueryable.with_-1619"><span class="linenos">1619</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1620"><a href="#Subqueryable.with_-1620"><span class="linenos">1620</span></a> <span class="p">):</span> -</span><span id="Subqueryable.with_-1621"><a href="#Subqueryable.with_-1621"><span class="linenos">1621</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Subqueryable.with_-1622"><a href="#Subqueryable.with_-1622"><span class="linenos">1622</span></a><span class="sd"> Append to or set the common table expressions.</span> -</span><span id="Subqueryable.with_-1623"><a href="#Subqueryable.with_-1623"><span class="linenos">1623</span></a> -</span><span id="Subqueryable.with_-1624"><a href="#Subqueryable.with_-1624"><span class="linenos">1624</span></a><span class="sd"> Example:</span> -</span><span id="Subqueryable.with_-1625"><a href="#Subqueryable.with_-1625"><span class="linenos">1625</span></a><span class="sd"> >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()</span> -</span><span id="Subqueryable.with_-1626"><a href="#Subqueryable.with_-1626"><span class="linenos">1626</span></a><span class="sd"> 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'</span> -</span><span id="Subqueryable.with_-1627"><a href="#Subqueryable.with_-1627"><span class="linenos">1627</span></a> -</span><span id="Subqueryable.with_-1628"><a href="#Subqueryable.with_-1628"><span class="linenos">1628</span></a><span class="sd"> Args:</span> -</span><span id="Subqueryable.with_-1629"><a href="#Subqueryable.with_-1629"><span class="linenos">1629</span></a><span class="sd"> alias (str | Expression): the SQL code string to parse as the table name.</span> -</span><span id="Subqueryable.with_-1630"><a href="#Subqueryable.with_-1630"><span class="linenos">1630</span></a><span class="sd"> If an `Expression` instance is passed, this is used as-is.</span> -</span><span id="Subqueryable.with_-1631"><a href="#Subqueryable.with_-1631"><span class="linenos">1631</span></a><span class="sd"> as_ (str | Expression): the SQL code string to parse as the table expression.</span> -</span><span id="Subqueryable.with_-1632"><a href="#Subqueryable.with_-1632"><span class="linenos">1632</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Subqueryable.with_-1633"><a href="#Subqueryable.with_-1633"><span class="linenos">1633</span></a><span class="sd"> recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.</span> -</span><span id="Subqueryable.with_-1634"><a href="#Subqueryable.with_-1634"><span class="linenos">1634</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Subqueryable.with_-1635"><a href="#Subqueryable.with_-1635"><span class="linenos">1635</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Subqueryable.with_-1636"><a href="#Subqueryable.with_-1636"><span class="linenos">1636</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Subqueryable.with_-1637"><a href="#Subqueryable.with_-1637"><span class="linenos">1637</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Subqueryable.with_-1638"><a href="#Subqueryable.with_-1638"><span class="linenos">1638</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Subqueryable.with_-1639"><a href="#Subqueryable.with_-1639"><span class="linenos">1639</span></a> -</span><span id="Subqueryable.with_-1640"><a href="#Subqueryable.with_-1640"><span class="linenos">1640</span></a><span class="sd"> Returns:</span> -</span><span id="Subqueryable.with_-1641"><a href="#Subqueryable.with_-1641"><span class="linenos">1641</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Subqueryable.with_-1642"><a href="#Subqueryable.with_-1642"><span class="linenos">1642</span></a><span class="sd"> """</span> -</span><span id="Subqueryable.with_-1643"><a href="#Subqueryable.with_-1643"><span class="linenos">1643</span></a> <span class="n">alias_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="Subqueryable.with_-1644"><a href="#Subqueryable.with_-1644"><span class="linenos">1644</span></a> <span class="n">alias</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1645"><a href="#Subqueryable.with_-1645"><span class="linenos">1645</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1646"><a href="#Subqueryable.with_-1646"><span class="linenos">1646</span></a> <span class="n">into</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1647"><a href="#Subqueryable.with_-1647"><span class="linenos">1647</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1648"><a href="#Subqueryable.with_-1648"><span class="linenos">1648</span></a> <span class="p">)</span> -</span><span id="Subqueryable.with_-1649"><a href="#Subqueryable.with_-1649"><span class="linenos">1649</span></a> <span class="n">as_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="Subqueryable.with_-1650"><a href="#Subqueryable.with_-1650"><span class="linenos">1650</span></a> <span class="n">as_</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1651"><a href="#Subqueryable.with_-1651"><span class="linenos">1651</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1652"><a href="#Subqueryable.with_-1652"><span class="linenos">1652</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1653"><a href="#Subqueryable.with_-1653"><span class="linenos">1653</span></a> <span class="p">)</span> -</span><span id="Subqueryable.with_-1654"><a href="#Subqueryable.with_-1654"><span class="linenos">1654</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">CTE</span><span class="p">(</span> -</span><span id="Subqueryable.with_-1655"><a href="#Subqueryable.with_-1655"><span class="linenos">1655</span></a> <span class="n">this</span><span class="o">=</span><span class="n">as_expression</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1656"><a href="#Subqueryable.with_-1656"><span class="linenos">1656</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias_expression</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1657"><a href="#Subqueryable.with_-1657"><span class="linenos">1657</span></a> <span class="p">)</span> -</span><span id="Subqueryable.with_-1658"><a href="#Subqueryable.with_-1658"><span class="linenos">1658</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Subqueryable.with_-1659"><a href="#Subqueryable.with_-1659"><span class="linenos">1659</span></a> <span class="n">cte</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1660"><a href="#Subqueryable.with_-1660"><span class="linenos">1660</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1661"><a href="#Subqueryable.with_-1661"><span class="linenos">1661</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"with"</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1662"><a href="#Subqueryable.with_-1662"><span class="linenos">1662</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1663"><a href="#Subqueryable.with_-1663"><span class="linenos">1663</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1664"><a href="#Subqueryable.with_-1664"><span class="linenos">1664</span></a> <span class="n">into</span><span class="o">=</span><span class="n">With</span><span class="p">,</span> -</span><span id="Subqueryable.with_-1665"><a href="#Subqueryable.with_-1665"><span class="linenos">1665</span></a> <span class="n">properties</span><span class="o">=</span><span class="p">{</span><span class="s2">"recursive"</span><span class="p">:</span> <span class="n">recursive</span> <span class="ow">or</span> <span class="kc">False</span><span class="p">},</span> -</span><span id="Subqueryable.with_-1666"><a href="#Subqueryable.with_-1666"><span class="linenos">1666</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Subqueryable.with_-1655"><a href="#Subqueryable.with_-1655"><span class="linenos">1655</span></a> <span class="k">def</span> <span class="nf">with_</span><span class="p">(</span> +</span><span id="Subqueryable.with_-1656"><a href="#Subqueryable.with_-1656"><span class="linenos">1656</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1657"><a href="#Subqueryable.with_-1657"><span class="linenos">1657</span></a> <span class="n">alias</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1658"><a href="#Subqueryable.with_-1658"><span class="linenos">1658</span></a> <span class="n">as_</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1659"><a href="#Subqueryable.with_-1659"><span class="linenos">1659</span></a> <span class="n">recursive</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1660"><a href="#Subqueryable.with_-1660"><span class="linenos">1660</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1661"><a href="#Subqueryable.with_-1661"><span class="linenos">1661</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1662"><a href="#Subqueryable.with_-1662"><span class="linenos">1662</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1663"><a href="#Subqueryable.with_-1663"><span class="linenos">1663</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1664"><a href="#Subqueryable.with_-1664"><span class="linenos">1664</span></a> <span class="p">):</span> +</span><span id="Subqueryable.with_-1665"><a href="#Subqueryable.with_-1665"><span class="linenos">1665</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Subqueryable.with_-1666"><a href="#Subqueryable.with_-1666"><span class="linenos">1666</span></a><span class="sd"> Append to or set the common table expressions.</span> +</span><span id="Subqueryable.with_-1667"><a href="#Subqueryable.with_-1667"><span class="linenos">1667</span></a> +</span><span id="Subqueryable.with_-1668"><a href="#Subqueryable.with_-1668"><span class="linenos">1668</span></a><span class="sd"> Example:</span> +</span><span id="Subqueryable.with_-1669"><a href="#Subqueryable.with_-1669"><span class="linenos">1669</span></a><span class="sd"> >>> Select().with_("tbl2", as_="SELECT * FROM tbl").select("x").from_("tbl2").sql()</span> +</span><span id="Subqueryable.with_-1670"><a href="#Subqueryable.with_-1670"><span class="linenos">1670</span></a><span class="sd"> 'WITH tbl2 AS (SELECT * FROM tbl) SELECT x FROM tbl2'</span> +</span><span id="Subqueryable.with_-1671"><a href="#Subqueryable.with_-1671"><span class="linenos">1671</span></a> +</span><span id="Subqueryable.with_-1672"><a href="#Subqueryable.with_-1672"><span class="linenos">1672</span></a><span class="sd"> Args:</span> +</span><span id="Subqueryable.with_-1673"><a href="#Subqueryable.with_-1673"><span class="linenos">1673</span></a><span class="sd"> alias (str | Expression): the SQL code string to parse as the table name.</span> +</span><span id="Subqueryable.with_-1674"><a href="#Subqueryable.with_-1674"><span class="linenos">1674</span></a><span class="sd"> If an `Expression` instance is passed, this is used as-is.</span> +</span><span id="Subqueryable.with_-1675"><a href="#Subqueryable.with_-1675"><span class="linenos">1675</span></a><span class="sd"> as_ (str | Expression): the SQL code string to parse as the table expression.</span> +</span><span id="Subqueryable.with_-1676"><a href="#Subqueryable.with_-1676"><span class="linenos">1676</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Subqueryable.with_-1677"><a href="#Subqueryable.with_-1677"><span class="linenos">1677</span></a><span class="sd"> recursive (bool): set the RECURSIVE part of the expression. Defaults to `False`.</span> +</span><span id="Subqueryable.with_-1678"><a href="#Subqueryable.with_-1678"><span class="linenos">1678</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Subqueryable.with_-1679"><a href="#Subqueryable.with_-1679"><span class="linenos">1679</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Subqueryable.with_-1680"><a href="#Subqueryable.with_-1680"><span class="linenos">1680</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Subqueryable.with_-1681"><a href="#Subqueryable.with_-1681"><span class="linenos">1681</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Subqueryable.with_-1682"><a href="#Subqueryable.with_-1682"><span class="linenos">1682</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Subqueryable.with_-1683"><a href="#Subqueryable.with_-1683"><span class="linenos">1683</span></a> +</span><span id="Subqueryable.with_-1684"><a href="#Subqueryable.with_-1684"><span class="linenos">1684</span></a><span class="sd"> Returns:</span> +</span><span id="Subqueryable.with_-1685"><a href="#Subqueryable.with_-1685"><span class="linenos">1685</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Subqueryable.with_-1686"><a href="#Subqueryable.with_-1686"><span class="linenos">1686</span></a><span class="sd"> """</span> +</span><span id="Subqueryable.with_-1687"><a href="#Subqueryable.with_-1687"><span class="linenos">1687</span></a> <span class="n">alias_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="Subqueryable.with_-1688"><a href="#Subqueryable.with_-1688"><span class="linenos">1688</span></a> <span class="n">alias</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1689"><a href="#Subqueryable.with_-1689"><span class="linenos">1689</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1690"><a href="#Subqueryable.with_-1690"><span class="linenos">1690</span></a> <span class="n">into</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1691"><a href="#Subqueryable.with_-1691"><span class="linenos">1691</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1692"><a href="#Subqueryable.with_-1692"><span class="linenos">1692</span></a> <span class="p">)</span> +</span><span id="Subqueryable.with_-1693"><a href="#Subqueryable.with_-1693"><span class="linenos">1693</span></a> <span class="n">as_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="Subqueryable.with_-1694"><a href="#Subqueryable.with_-1694"><span class="linenos">1694</span></a> <span class="n">as_</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1695"><a href="#Subqueryable.with_-1695"><span class="linenos">1695</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1696"><a href="#Subqueryable.with_-1696"><span class="linenos">1696</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1697"><a href="#Subqueryable.with_-1697"><span class="linenos">1697</span></a> <span class="p">)</span> +</span><span id="Subqueryable.with_-1698"><a href="#Subqueryable.with_-1698"><span class="linenos">1698</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="n">CTE</span><span class="p">(</span> +</span><span id="Subqueryable.with_-1699"><a href="#Subqueryable.with_-1699"><span class="linenos">1699</span></a> <span class="n">this</span><span class="o">=</span><span class="n">as_expression</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1700"><a href="#Subqueryable.with_-1700"><span class="linenos">1700</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias_expression</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1701"><a href="#Subqueryable.with_-1701"><span class="linenos">1701</span></a> <span class="p">)</span> +</span><span id="Subqueryable.with_-1702"><a href="#Subqueryable.with_-1702"><span class="linenos">1702</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Subqueryable.with_-1703"><a href="#Subqueryable.with_-1703"><span class="linenos">1703</span></a> <span class="n">cte</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1704"><a href="#Subqueryable.with_-1704"><span class="linenos">1704</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1705"><a href="#Subqueryable.with_-1705"><span class="linenos">1705</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"with"</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1706"><a href="#Subqueryable.with_-1706"><span class="linenos">1706</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1707"><a href="#Subqueryable.with_-1707"><span class="linenos">1707</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1708"><a href="#Subqueryable.with_-1708"><span class="linenos">1708</span></a> <span class="n">into</span><span class="o">=</span><span class="n">With</span><span class="p">,</span> +</span><span id="Subqueryable.with_-1709"><a href="#Subqueryable.with_-1709"><span class="linenos">1709</span></a> <span class="n">properties</span><span class="o">=</span><span class="p">{</span><span class="s2">"recursive"</span><span class="p">:</span> <span class="n">recursive</span> <span class="ow">or</span> <span class="kc">False</span><span class="p">},</span> +</span><span id="Subqueryable.with_-1710"><a href="#Subqueryable.with_-1710"><span class="linenos">1710</span></a> <span class="p">)</span> </span></pre></div> @@ -18262,26 +19030,26 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Table"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Table-1689"><a href="#Table-1689"><span class="linenos">1689</span></a><span class="k">class</span> <span class="nc">Table</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Table-1690"><a href="#Table-1690"><span class="linenos">1690</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Table-1691"><a href="#Table-1691"><span class="linenos">1691</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Table-1692"><a href="#Table-1692"><span class="linenos">1692</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Table-1693"><a href="#Table-1693"><span class="linenos">1693</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Table-1694"><a href="#Table-1694"><span class="linenos">1694</span></a> <span class="s2">"catalog"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Table-1695"><a href="#Table-1695"><span class="linenos">1695</span></a> <span class="s2">"laterals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Table-1696"><a href="#Table-1696"><span class="linenos">1696</span></a> <span class="s2">"joins"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Table-1697"><a href="#Table-1697"><span class="linenos">1697</span></a> <span class="s2">"pivots"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Table-1698"><a href="#Table-1698"><span class="linenos">1698</span></a> <span class="s2">"hints"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Table-1699"><a href="#Table-1699"><span class="linenos">1699</span></a> <span class="s2">"system_time"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Table-1700"><a href="#Table-1700"><span class="linenos">1700</span></a> <span class="p">}</span> -</span><span id="Table-1701"><a href="#Table-1701"><span class="linenos">1701</span></a> -</span><span id="Table-1702"><a href="#Table-1702"><span class="linenos">1702</span></a> <span class="nd">@property</span> -</span><span id="Table-1703"><a href="#Table-1703"><span class="linenos">1703</span></a> <span class="k">def</span> <span class="nf">db</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Table-1704"><a href="#Table-1704"><span class="linenos">1704</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">)</span> -</span><span id="Table-1705"><a href="#Table-1705"><span class="linenos">1705</span></a> -</span><span id="Table-1706"><a href="#Table-1706"><span class="linenos">1706</span></a> <span class="nd">@property</span> -</span><span id="Table-1707"><a href="#Table-1707"><span class="linenos">1707</span></a> <span class="k">def</span> <span class="nf">catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Table-1708"><a href="#Table-1708"><span class="linenos">1708</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Table-1733"><a href="#Table-1733"><span class="linenos">1733</span></a><span class="k">class</span> <span class="nc">Table</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Table-1734"><a href="#Table-1734"><span class="linenos">1734</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Table-1735"><a href="#Table-1735"><span class="linenos">1735</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Table-1736"><a href="#Table-1736"><span class="linenos">1736</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Table-1737"><a href="#Table-1737"><span class="linenos">1737</span></a> <span class="s2">"db"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Table-1738"><a href="#Table-1738"><span class="linenos">1738</span></a> <span class="s2">"catalog"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Table-1739"><a href="#Table-1739"><span class="linenos">1739</span></a> <span class="s2">"laterals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Table-1740"><a href="#Table-1740"><span class="linenos">1740</span></a> <span class="s2">"joins"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Table-1741"><a href="#Table-1741"><span class="linenos">1741</span></a> <span class="s2">"pivots"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Table-1742"><a href="#Table-1742"><span class="linenos">1742</span></a> <span class="s2">"hints"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Table-1743"><a href="#Table-1743"><span class="linenos">1743</span></a> <span class="s2">"system_time"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Table-1744"><a href="#Table-1744"><span class="linenos">1744</span></a> <span class="p">}</span> +</span><span id="Table-1745"><a href="#Table-1745"><span class="linenos">1745</span></a> +</span><span id="Table-1746"><a href="#Table-1746"><span class="linenos">1746</span></a> <span class="nd">@property</span> +</span><span id="Table-1747"><a href="#Table-1747"><span class="linenos">1747</span></a> <span class="k">def</span> <span class="nf">db</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Table-1748"><a href="#Table-1748"><span class="linenos">1748</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">)</span> +</span><span id="Table-1749"><a href="#Table-1749"><span class="linenos">1749</span></a> +</span><span id="Table-1750"><a href="#Table-1750"><span class="linenos">1750</span></a> <span class="nd">@property</span> +</span><span id="Table-1751"><a href="#Table-1751"><span class="linenos">1751</span></a> <span class="k">def</span> <span class="nf">catalog</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Table-1752"><a href="#Table-1752"><span class="linenos">1752</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">)</span> </span></pre></div> @@ -18341,12 +19109,12 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#SystemTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SystemTime-1712"><a href="#SystemTime-1712"><span class="linenos">1712</span></a><span class="k">class</span> <span class="nc">SystemTime</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="SystemTime-1713"><a href="#SystemTime-1713"><span class="linenos">1713</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="SystemTime-1714"><a href="#SystemTime-1714"><span class="linenos">1714</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="SystemTime-1715"><a href="#SystemTime-1715"><span class="linenos">1715</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="SystemTime-1716"><a href="#SystemTime-1716"><span class="linenos">1716</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="SystemTime-1717"><a href="#SystemTime-1717"><span class="linenos">1717</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SystemTime-1756"><a href="#SystemTime-1756"><span class="linenos">1756</span></a><span class="k">class</span> <span class="nc">SystemTime</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="SystemTime-1757"><a href="#SystemTime-1757"><span class="linenos">1757</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="SystemTime-1758"><a href="#SystemTime-1758"><span class="linenos">1758</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="SystemTime-1759"><a href="#SystemTime-1759"><span class="linenos">1759</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="SystemTime-1760"><a href="#SystemTime-1760"><span class="linenos">1760</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="SystemTime-1761"><a href="#SystemTime-1761"><span class="linenos">1761</span></a> <span class="p">}</span> </span></pre></div> @@ -18406,90 +19174,94 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Union"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Union-1720"><a href="#Union-1720"><span class="linenos">1720</span></a><span class="k">class</span> <span class="nc">Union</span><span class="p">(</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="Union-1721"><a href="#Union-1721"><span class="linenos">1721</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Union-1722"><a href="#Union-1722"><span class="linenos">1722</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Union-1723"><a href="#Union-1723"><span class="linenos">1723</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Union-1724"><a href="#Union-1724"><span class="linenos">1724</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Union-1725"><a href="#Union-1725"><span class="linenos">1725</span></a> <span class="s2">"distinct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Union-1726"><a href="#Union-1726"><span class="linenos">1726</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> -</span><span id="Union-1727"><a href="#Union-1727"><span class="linenos">1727</span></a> <span class="p">}</span> -</span><span id="Union-1728"><a href="#Union-1728"><span class="linenos">1728</span></a> -</span><span id="Union-1729"><a href="#Union-1729"><span class="linenos">1729</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Union-1730"><a href="#Union-1730"><span class="linenos">1730</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Union-1731"><a href="#Union-1731"><span class="linenos">1731</span></a><span class="sd"> Set the LIMIT expression.</span> -</span><span id="Union-1732"><a href="#Union-1732"><span class="linenos">1732</span></a> -</span><span id="Union-1733"><a href="#Union-1733"><span class="linenos">1733</span></a><span class="sd"> Example:</span> -</span><span id="Union-1734"><a href="#Union-1734"><span class="linenos">1734</span></a><span class="sd"> >>> select("1").union(select("1")).limit(1).sql()</span> -</span><span id="Union-1735"><a href="#Union-1735"><span class="linenos">1735</span></a><span class="sd"> 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'</span> -</span><span id="Union-1736"><a href="#Union-1736"><span class="linenos">1736</span></a> -</span><span id="Union-1737"><a href="#Union-1737"><span class="linenos">1737</span></a><span class="sd"> Args:</span> -</span><span id="Union-1738"><a href="#Union-1738"><span class="linenos">1738</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> -</span><span id="Union-1739"><a href="#Union-1739"><span class="linenos">1739</span></a><span class="sd"> This can also be an integer.</span> -</span><span id="Union-1740"><a href="#Union-1740"><span class="linenos">1740</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> -</span><span id="Union-1741"><a href="#Union-1741"><span class="linenos">1741</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> -</span><span id="Union-1742"><a href="#Union-1742"><span class="linenos">1742</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Union-1743"><a href="#Union-1743"><span class="linenos">1743</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Union-1744"><a href="#Union-1744"><span class="linenos">1744</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Union-1745"><a href="#Union-1745"><span class="linenos">1745</span></a> -</span><span id="Union-1746"><a href="#Union-1746"><span class="linenos">1746</span></a><span class="sd"> Returns:</span> -</span><span id="Union-1747"><a href="#Union-1747"><span class="linenos">1747</span></a><span class="sd"> Select: The limited subqueryable.</span> -</span><span id="Union-1748"><a href="#Union-1748"><span class="linenos">1748</span></a><span class="sd"> """</span> -</span><span id="Union-1749"><a href="#Union-1749"><span class="linenos">1749</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="Union-1750"><a href="#Union-1750"><span class="linenos">1750</span></a> <span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> -</span><span id="Union-1751"><a href="#Union-1751"><span class="linenos">1751</span></a> <span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_l_0"</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> -</span><span id="Union-1752"><a href="#Union-1752"><span class="linenos">1752</span></a> <span class="o">.</span><span class="n">limit</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="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Union-1753"><a href="#Union-1753"><span class="linenos">1753</span></a> <span class="p">)</span> -</span><span id="Union-1754"><a href="#Union-1754"><span class="linenos">1754</span></a> -</span><span id="Union-1755"><a href="#Union-1755"><span class="linenos">1755</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> -</span><span id="Union-1756"><a href="#Union-1756"><span class="linenos">1756</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Union-1757"><a href="#Union-1757"><span class="linenos">1757</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="Union-1758"><a href="#Union-1758"><span class="linenos">1758</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Union-1759"><a href="#Union-1759"><span class="linenos">1759</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Union-1760"><a href="#Union-1760"><span class="linenos">1760</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Union-1761"><a href="#Union-1761"><span class="linenos">1761</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Union-1762"><a href="#Union-1762"><span class="linenos">1762</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> -</span><span id="Union-1763"><a href="#Union-1763"><span class="linenos">1763</span></a><span class="w"> </span><span class="sd">"""Append to or set the SELECT of the union recursively.</span> -</span><span id="Union-1764"><a href="#Union-1764"><span class="linenos">1764</span></a> -</span><span id="Union-1765"><a href="#Union-1765"><span class="linenos">1765</span></a><span class="sd"> Example:</span> -</span><span id="Union-1766"><a href="#Union-1766"><span class="linenos">1766</span></a><span class="sd"> >>> from sqlglot import parse_one</span> -</span><span id="Union-1767"><a href="#Union-1767"><span class="linenos">1767</span></a><span class="sd"> >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()</span> -</span><span id="Union-1768"><a href="#Union-1768"><span class="linenos">1768</span></a><span class="sd"> 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'</span> -</span><span id="Union-1769"><a href="#Union-1769"><span class="linenos">1769</span></a> -</span><span id="Union-1770"><a href="#Union-1770"><span class="linenos">1770</span></a><span class="sd"> Args:</span> -</span><span id="Union-1771"><a href="#Union-1771"><span class="linenos">1771</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="Union-1772"><a href="#Union-1772"><span class="linenos">1772</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Union-1773"><a href="#Union-1773"><span class="linenos">1773</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> -</span><span id="Union-1774"><a href="#Union-1774"><span class="linenos">1774</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Union-1775"><a href="#Union-1775"><span class="linenos">1775</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="Union-1776"><a href="#Union-1776"><span class="linenos">1776</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> -</span><span id="Union-1777"><a href="#Union-1777"><span class="linenos">1777</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="Union-1778"><a href="#Union-1778"><span class="linenos">1778</span></a> -</span><span id="Union-1779"><a href="#Union-1779"><span class="linenos">1779</span></a><span class="sd"> Returns:</span> -</span><span id="Union-1780"><a href="#Union-1780"><span class="linenos">1780</span></a><span class="sd"> Union: the modified expression.</span> -</span><span id="Union-1781"><a href="#Union-1781"><span class="linenos">1781</span></a><span class="sd"> """</span> -</span><span id="Union-1782"><a href="#Union-1782"><span class="linenos">1782</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> -</span><span id="Union-1783"><a href="#Union-1783"><span class="linenos">1783</span></a> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Union-1784"><a href="#Union-1784"><span class="linenos">1784</span></a> <span class="n">this</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span> -</span><span id="Union-1785"><a href="#Union-1785"><span class="linenos">1785</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="Union-1786"><a href="#Union-1786"><span class="linenos">1786</span></a> <span class="p">)</span> -</span><span id="Union-1787"><a href="#Union-1787"><span class="linenos">1787</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Union-1788"><a href="#Union-1788"><span class="linenos">1788</span></a> -</span><span id="Union-1789"><a href="#Union-1789"><span class="linenos">1789</span></a> <span class="nd">@property</span> -</span><span id="Union-1790"><a href="#Union-1790"><span class="linenos">1790</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Union-1791"><a href="#Union-1791"><span class="linenos">1791</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">named_selects</span> -</span><span id="Union-1792"><a href="#Union-1792"><span class="linenos">1792</span></a> -</span><span id="Union-1793"><a href="#Union-1793"><span class="linenos">1793</span></a> <span class="nd">@property</span> -</span><span id="Union-1794"><a href="#Union-1794"><span class="linenos">1794</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Union-1795"><a href="#Union-1795"><span class="linenos">1795</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">selects</span> -</span><span id="Union-1796"><a href="#Union-1796"><span class="linenos">1796</span></a> -</span><span id="Union-1797"><a href="#Union-1797"><span class="linenos">1797</span></a> <span class="nd">@property</span> -</span><span id="Union-1798"><a href="#Union-1798"><span class="linenos">1798</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Union-1799"><a href="#Union-1799"><span class="linenos">1799</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> -</span><span id="Union-1800"><a href="#Union-1800"><span class="linenos">1800</span></a> -</span><span id="Union-1801"><a href="#Union-1801"><span class="linenos">1801</span></a> <span class="nd">@property</span> -</span><span id="Union-1802"><a href="#Union-1802"><span class="linenos">1802</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Union-1803"><a href="#Union-1803"><span class="linenos">1803</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Union-1764"><a href="#Union-1764"><span class="linenos">1764</span></a><span class="k">class</span> <span class="nc">Union</span><span class="p">(</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="Union-1765"><a href="#Union-1765"><span class="linenos">1765</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Union-1766"><a href="#Union-1766"><span class="linenos">1766</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Union-1767"><a href="#Union-1767"><span class="linenos">1767</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Union-1768"><a href="#Union-1768"><span class="linenos">1768</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Union-1769"><a href="#Union-1769"><span class="linenos">1769</span></a> <span class="s2">"distinct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Union-1770"><a href="#Union-1770"><span class="linenos">1770</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> +</span><span id="Union-1771"><a href="#Union-1771"><span class="linenos">1771</span></a> <span class="p">}</span> +</span><span id="Union-1772"><a href="#Union-1772"><span class="linenos">1772</span></a> +</span><span id="Union-1773"><a href="#Union-1773"><span class="linenos">1773</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Union-1774"><a href="#Union-1774"><span class="linenos">1774</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Union-1775"><a href="#Union-1775"><span class="linenos">1775</span></a><span class="sd"> Set the LIMIT expression.</span> +</span><span id="Union-1776"><a href="#Union-1776"><span class="linenos">1776</span></a> +</span><span id="Union-1777"><a href="#Union-1777"><span class="linenos">1777</span></a><span class="sd"> Example:</span> +</span><span id="Union-1778"><a href="#Union-1778"><span class="linenos">1778</span></a><span class="sd"> >>> select("1").union(select("1")).limit(1).sql()</span> +</span><span id="Union-1779"><a href="#Union-1779"><span class="linenos">1779</span></a><span class="sd"> 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'</span> +</span><span id="Union-1780"><a href="#Union-1780"><span class="linenos">1780</span></a> +</span><span id="Union-1781"><a href="#Union-1781"><span class="linenos">1781</span></a><span class="sd"> Args:</span> +</span><span id="Union-1782"><a href="#Union-1782"><span class="linenos">1782</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> +</span><span id="Union-1783"><a href="#Union-1783"><span class="linenos">1783</span></a><span class="sd"> This can also be an integer.</span> +</span><span id="Union-1784"><a href="#Union-1784"><span class="linenos">1784</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> +</span><span id="Union-1785"><a href="#Union-1785"><span class="linenos">1785</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> +</span><span id="Union-1786"><a href="#Union-1786"><span class="linenos">1786</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Union-1787"><a href="#Union-1787"><span class="linenos">1787</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Union-1788"><a href="#Union-1788"><span class="linenos">1788</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Union-1789"><a href="#Union-1789"><span class="linenos">1789</span></a> +</span><span id="Union-1790"><a href="#Union-1790"><span class="linenos">1790</span></a><span class="sd"> Returns:</span> +</span><span id="Union-1791"><a href="#Union-1791"><span class="linenos">1791</span></a><span class="sd"> Select: The limited subqueryable.</span> +</span><span id="Union-1792"><a href="#Union-1792"><span class="linenos">1792</span></a><span class="sd"> """</span> +</span><span id="Union-1793"><a href="#Union-1793"><span class="linenos">1793</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="Union-1794"><a href="#Union-1794"><span class="linenos">1794</span></a> <span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> +</span><span id="Union-1795"><a href="#Union-1795"><span class="linenos">1795</span></a> <span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_l_0"</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> +</span><span id="Union-1796"><a href="#Union-1796"><span class="linenos">1796</span></a> <span class="o">.</span><span class="n">limit</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="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Union-1797"><a href="#Union-1797"><span class="linenos">1797</span></a> <span class="p">)</span> +</span><span id="Union-1798"><a href="#Union-1798"><span class="linenos">1798</span></a> +</span><span id="Union-1799"><a href="#Union-1799"><span class="linenos">1799</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> +</span><span id="Union-1800"><a href="#Union-1800"><span class="linenos">1800</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Union-1801"><a href="#Union-1801"><span class="linenos">1801</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="Union-1802"><a href="#Union-1802"><span class="linenos">1802</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Union-1803"><a href="#Union-1803"><span class="linenos">1803</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Union-1804"><a href="#Union-1804"><span class="linenos">1804</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Union-1805"><a href="#Union-1805"><span class="linenos">1805</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Union-1806"><a href="#Union-1806"><span class="linenos">1806</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> +</span><span id="Union-1807"><a href="#Union-1807"><span class="linenos">1807</span></a><span class="w"> </span><span class="sd">"""Append to or set the SELECT of the union recursively.</span> +</span><span id="Union-1808"><a href="#Union-1808"><span class="linenos">1808</span></a> +</span><span id="Union-1809"><a href="#Union-1809"><span class="linenos">1809</span></a><span class="sd"> Example:</span> +</span><span id="Union-1810"><a href="#Union-1810"><span class="linenos">1810</span></a><span class="sd"> >>> from sqlglot import parse_one</span> +</span><span id="Union-1811"><a href="#Union-1811"><span class="linenos">1811</span></a><span class="sd"> >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()</span> +</span><span id="Union-1812"><a href="#Union-1812"><span class="linenos">1812</span></a><span class="sd"> 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'</span> +</span><span id="Union-1813"><a href="#Union-1813"><span class="linenos">1813</span></a> +</span><span id="Union-1814"><a href="#Union-1814"><span class="linenos">1814</span></a><span class="sd"> Args:</span> +</span><span id="Union-1815"><a href="#Union-1815"><span class="linenos">1815</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="Union-1816"><a href="#Union-1816"><span class="linenos">1816</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Union-1817"><a href="#Union-1817"><span class="linenos">1817</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> +</span><span id="Union-1818"><a href="#Union-1818"><span class="linenos">1818</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Union-1819"><a href="#Union-1819"><span class="linenos">1819</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="Union-1820"><a href="#Union-1820"><span class="linenos">1820</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="Union-1821"><a href="#Union-1821"><span class="linenos">1821</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="Union-1822"><a href="#Union-1822"><span class="linenos">1822</span></a> +</span><span id="Union-1823"><a href="#Union-1823"><span class="linenos">1823</span></a><span class="sd"> Returns:</span> +</span><span id="Union-1824"><a href="#Union-1824"><span class="linenos">1824</span></a><span class="sd"> Union: the modified expression.</span> +</span><span id="Union-1825"><a href="#Union-1825"><span class="linenos">1825</span></a><span class="sd"> """</span> +</span><span id="Union-1826"><a href="#Union-1826"><span class="linenos">1826</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> +</span><span id="Union-1827"><a href="#Union-1827"><span class="linenos">1827</span></a> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Union-1828"><a href="#Union-1828"><span class="linenos">1828</span></a> <span class="n">this</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span> +</span><span id="Union-1829"><a href="#Union-1829"><span class="linenos">1829</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="Union-1830"><a href="#Union-1830"><span class="linenos">1830</span></a> <span class="p">)</span> +</span><span id="Union-1831"><a href="#Union-1831"><span class="linenos">1831</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Union-1832"><a href="#Union-1832"><span class="linenos">1832</span></a> +</span><span id="Union-1833"><a href="#Union-1833"><span class="linenos">1833</span></a> <span class="nd">@property</span> +</span><span id="Union-1834"><a href="#Union-1834"><span class="linenos">1834</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Union-1835"><a href="#Union-1835"><span class="linenos">1835</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">named_selects</span> +</span><span id="Union-1836"><a href="#Union-1836"><span class="linenos">1836</span></a> +</span><span id="Union-1837"><a href="#Union-1837"><span class="linenos">1837</span></a> <span class="nd">@property</span> +</span><span id="Union-1838"><a href="#Union-1838"><span class="linenos">1838</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Union-1839"><a href="#Union-1839"><span class="linenos">1839</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_star</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> +</span><span id="Union-1840"><a href="#Union-1840"><span class="linenos">1840</span></a> +</span><span id="Union-1841"><a href="#Union-1841"><span class="linenos">1841</span></a> <span class="nd">@property</span> +</span><span id="Union-1842"><a href="#Union-1842"><span class="linenos">1842</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Union-1843"><a href="#Union-1843"><span class="linenos">1843</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">selects</span> +</span><span id="Union-1844"><a href="#Union-1844"><span class="linenos">1844</span></a> +</span><span id="Union-1845"><a href="#Union-1845"><span class="linenos">1845</span></a> <span class="nd">@property</span> +</span><span id="Union-1846"><a href="#Union-1846"><span class="linenos">1846</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Union-1847"><a href="#Union-1847"><span class="linenos">1847</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> +</span><span id="Union-1848"><a href="#Union-1848"><span class="linenos">1848</span></a> +</span><span id="Union-1849"><a href="#Union-1849"><span class="linenos">1849</span></a> <span class="nd">@property</span> +</span><span id="Union-1850"><a href="#Union-1850"><span class="linenos">1850</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Union-1851"><a href="#Union-1851"><span class="linenos">1851</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> </span></pre></div> @@ -18506,31 +19278,31 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Union.limit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Union.limit-1729"><a href="#Union.limit-1729"><span class="linenos">1729</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Union.limit-1730"><a href="#Union.limit-1730"><span class="linenos">1730</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Union.limit-1731"><a href="#Union.limit-1731"><span class="linenos">1731</span></a><span class="sd"> Set the LIMIT expression.</span> -</span><span id="Union.limit-1732"><a href="#Union.limit-1732"><span class="linenos">1732</span></a> -</span><span id="Union.limit-1733"><a href="#Union.limit-1733"><span class="linenos">1733</span></a><span class="sd"> Example:</span> -</span><span id="Union.limit-1734"><a href="#Union.limit-1734"><span class="linenos">1734</span></a><span class="sd"> >>> select("1").union(select("1")).limit(1).sql()</span> -</span><span id="Union.limit-1735"><a href="#Union.limit-1735"><span class="linenos">1735</span></a><span class="sd"> 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'</span> -</span><span id="Union.limit-1736"><a href="#Union.limit-1736"><span class="linenos">1736</span></a> -</span><span id="Union.limit-1737"><a href="#Union.limit-1737"><span class="linenos">1737</span></a><span class="sd"> Args:</span> -</span><span id="Union.limit-1738"><a href="#Union.limit-1738"><span class="linenos">1738</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> -</span><span id="Union.limit-1739"><a href="#Union.limit-1739"><span class="linenos">1739</span></a><span class="sd"> This can also be an integer.</span> -</span><span id="Union.limit-1740"><a href="#Union.limit-1740"><span class="linenos">1740</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> -</span><span id="Union.limit-1741"><a href="#Union.limit-1741"><span class="linenos">1741</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> -</span><span id="Union.limit-1742"><a href="#Union.limit-1742"><span class="linenos">1742</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Union.limit-1743"><a href="#Union.limit-1743"><span class="linenos">1743</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Union.limit-1744"><a href="#Union.limit-1744"><span class="linenos">1744</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Union.limit-1745"><a href="#Union.limit-1745"><span class="linenos">1745</span></a> -</span><span id="Union.limit-1746"><a href="#Union.limit-1746"><span class="linenos">1746</span></a><span class="sd"> Returns:</span> -</span><span id="Union.limit-1747"><a href="#Union.limit-1747"><span class="linenos">1747</span></a><span class="sd"> Select: The limited subqueryable.</span> -</span><span id="Union.limit-1748"><a href="#Union.limit-1748"><span class="linenos">1748</span></a><span class="sd"> """</span> -</span><span id="Union.limit-1749"><a href="#Union.limit-1749"><span class="linenos">1749</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="Union.limit-1750"><a href="#Union.limit-1750"><span class="linenos">1750</span></a> <span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> -</span><span id="Union.limit-1751"><a href="#Union.limit-1751"><span class="linenos">1751</span></a> <span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_l_0"</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> -</span><span id="Union.limit-1752"><a href="#Union.limit-1752"><span class="linenos">1752</span></a> <span class="o">.</span><span class="n">limit</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="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Union.limit-1753"><a href="#Union.limit-1753"><span class="linenos">1753</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Union.limit-1773"><a href="#Union.limit-1773"><span class="linenos">1773</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Union.limit-1774"><a href="#Union.limit-1774"><span class="linenos">1774</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Union.limit-1775"><a href="#Union.limit-1775"><span class="linenos">1775</span></a><span class="sd"> Set the LIMIT expression.</span> +</span><span id="Union.limit-1776"><a href="#Union.limit-1776"><span class="linenos">1776</span></a> +</span><span id="Union.limit-1777"><a href="#Union.limit-1777"><span class="linenos">1777</span></a><span class="sd"> Example:</span> +</span><span id="Union.limit-1778"><a href="#Union.limit-1778"><span class="linenos">1778</span></a><span class="sd"> >>> select("1").union(select("1")).limit(1).sql()</span> +</span><span id="Union.limit-1779"><a href="#Union.limit-1779"><span class="linenos">1779</span></a><span class="sd"> 'SELECT * FROM (SELECT 1 UNION SELECT 1) AS _l_0 LIMIT 1'</span> +</span><span id="Union.limit-1780"><a href="#Union.limit-1780"><span class="linenos">1780</span></a> +</span><span id="Union.limit-1781"><a href="#Union.limit-1781"><span class="linenos">1781</span></a><span class="sd"> Args:</span> +</span><span id="Union.limit-1782"><a href="#Union.limit-1782"><span class="linenos">1782</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> +</span><span id="Union.limit-1783"><a href="#Union.limit-1783"><span class="linenos">1783</span></a><span class="sd"> This can also be an integer.</span> +</span><span id="Union.limit-1784"><a href="#Union.limit-1784"><span class="linenos">1784</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> +</span><span id="Union.limit-1785"><a href="#Union.limit-1785"><span class="linenos">1785</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> +</span><span id="Union.limit-1786"><a href="#Union.limit-1786"><span class="linenos">1786</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Union.limit-1787"><a href="#Union.limit-1787"><span class="linenos">1787</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Union.limit-1788"><a href="#Union.limit-1788"><span class="linenos">1788</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Union.limit-1789"><a href="#Union.limit-1789"><span class="linenos">1789</span></a> +</span><span id="Union.limit-1790"><a href="#Union.limit-1790"><span class="linenos">1790</span></a><span class="sd"> Returns:</span> +</span><span id="Union.limit-1791"><a href="#Union.limit-1791"><span class="linenos">1791</span></a><span class="sd"> Select: The limited subqueryable.</span> +</span><span id="Union.limit-1792"><a href="#Union.limit-1792"><span class="linenos">1792</span></a><span class="sd"> """</span> +</span><span id="Union.limit-1793"><a href="#Union.limit-1793"><span class="linenos">1793</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="Union.limit-1794"><a href="#Union.limit-1794"><span class="linenos">1794</span></a> <span class="n">select</span><span class="p">(</span><span class="s2">"*"</span><span class="p">)</span> +</span><span id="Union.limit-1795"><a href="#Union.limit-1795"><span class="linenos">1795</span></a> <span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="o">=</span><span class="s2">"_l_0"</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">))</span> +</span><span id="Union.limit-1796"><a href="#Union.limit-1796"><span class="linenos">1796</span></a> <span class="o">.</span><span class="n">limit</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="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Union.limit-1797"><a href="#Union.limit-1797"><span class="linenos">1797</span></a> <span class="p">)</span> </span></pre></div> @@ -18578,39 +19350,39 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Union.select"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Union.select-1755"><a href="#Union.select-1755"><span class="linenos">1755</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> -</span><span id="Union.select-1756"><a href="#Union.select-1756"><span class="linenos">1756</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Union.select-1757"><a href="#Union.select-1757"><span class="linenos">1757</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="Union.select-1758"><a href="#Union.select-1758"><span class="linenos">1758</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Union.select-1759"><a href="#Union.select-1759"><span class="linenos">1759</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Union.select-1760"><a href="#Union.select-1760"><span class="linenos">1760</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Union.select-1761"><a href="#Union.select-1761"><span class="linenos">1761</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Union.select-1762"><a href="#Union.select-1762"><span class="linenos">1762</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> -</span><span id="Union.select-1763"><a href="#Union.select-1763"><span class="linenos">1763</span></a><span class="w"> </span><span class="sd">"""Append to or set the SELECT of the union recursively.</span> -</span><span id="Union.select-1764"><a href="#Union.select-1764"><span class="linenos">1764</span></a> -</span><span id="Union.select-1765"><a href="#Union.select-1765"><span class="linenos">1765</span></a><span class="sd"> Example:</span> -</span><span id="Union.select-1766"><a href="#Union.select-1766"><span class="linenos">1766</span></a><span class="sd"> >>> from sqlglot import parse_one</span> -</span><span id="Union.select-1767"><a href="#Union.select-1767"><span class="linenos">1767</span></a><span class="sd"> >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()</span> -</span><span id="Union.select-1768"><a href="#Union.select-1768"><span class="linenos">1768</span></a><span class="sd"> 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'</span> -</span><span id="Union.select-1769"><a href="#Union.select-1769"><span class="linenos">1769</span></a> -</span><span id="Union.select-1770"><a href="#Union.select-1770"><span class="linenos">1770</span></a><span class="sd"> Args:</span> -</span><span id="Union.select-1771"><a href="#Union.select-1771"><span class="linenos">1771</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="Union.select-1772"><a href="#Union.select-1772"><span class="linenos">1772</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Union.select-1773"><a href="#Union.select-1773"><span class="linenos">1773</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> -</span><span id="Union.select-1774"><a href="#Union.select-1774"><span class="linenos">1774</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Union.select-1775"><a href="#Union.select-1775"><span class="linenos">1775</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="Union.select-1776"><a href="#Union.select-1776"><span class="linenos">1776</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> -</span><span id="Union.select-1777"><a href="#Union.select-1777"><span class="linenos">1777</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="Union.select-1778"><a href="#Union.select-1778"><span class="linenos">1778</span></a> -</span><span id="Union.select-1779"><a href="#Union.select-1779"><span class="linenos">1779</span></a><span class="sd"> Returns:</span> -</span><span id="Union.select-1780"><a href="#Union.select-1780"><span class="linenos">1780</span></a><span class="sd"> Union: the modified expression.</span> -</span><span id="Union.select-1781"><a href="#Union.select-1781"><span class="linenos">1781</span></a><span class="sd"> """</span> -</span><span id="Union.select-1782"><a href="#Union.select-1782"><span class="linenos">1782</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> -</span><span id="Union.select-1783"><a href="#Union.select-1783"><span class="linenos">1783</span></a> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Union.select-1784"><a href="#Union.select-1784"><span class="linenos">1784</span></a> <span class="n">this</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span> -</span><span id="Union.select-1785"><a href="#Union.select-1785"><span class="linenos">1785</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> -</span><span id="Union.select-1786"><a href="#Union.select-1786"><span class="linenos">1786</span></a> <span class="p">)</span> -</span><span id="Union.select-1787"><a href="#Union.select-1787"><span class="linenos">1787</span></a> <span class="k">return</span> <span class="n">this</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Union.select-1799"><a href="#Union.select-1799"><span class="linenos">1799</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> +</span><span id="Union.select-1800"><a href="#Union.select-1800"><span class="linenos">1800</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Union.select-1801"><a href="#Union.select-1801"><span class="linenos">1801</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="Union.select-1802"><a href="#Union.select-1802"><span class="linenos">1802</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Union.select-1803"><a href="#Union.select-1803"><span class="linenos">1803</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Union.select-1804"><a href="#Union.select-1804"><span class="linenos">1804</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Union.select-1805"><a href="#Union.select-1805"><span class="linenos">1805</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Union.select-1806"><a href="#Union.select-1806"><span class="linenos">1806</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Union</span><span class="p">:</span> +</span><span id="Union.select-1807"><a href="#Union.select-1807"><span class="linenos">1807</span></a><span class="w"> </span><span class="sd">"""Append to or set the SELECT of the union recursively.</span> +</span><span id="Union.select-1808"><a href="#Union.select-1808"><span class="linenos">1808</span></a> +</span><span id="Union.select-1809"><a href="#Union.select-1809"><span class="linenos">1809</span></a><span class="sd"> Example:</span> +</span><span id="Union.select-1810"><a href="#Union.select-1810"><span class="linenos">1810</span></a><span class="sd"> >>> from sqlglot import parse_one</span> +</span><span id="Union.select-1811"><a href="#Union.select-1811"><span class="linenos">1811</span></a><span class="sd"> >>> parse_one("select a from x union select a from y union select a from z").select("b").sql()</span> +</span><span id="Union.select-1812"><a href="#Union.select-1812"><span class="linenos">1812</span></a><span class="sd"> 'SELECT a, b FROM x UNION SELECT a, b FROM y UNION SELECT a, b FROM z'</span> +</span><span id="Union.select-1813"><a href="#Union.select-1813"><span class="linenos">1813</span></a> +</span><span id="Union.select-1814"><a href="#Union.select-1814"><span class="linenos">1814</span></a><span class="sd"> Args:</span> +</span><span id="Union.select-1815"><a href="#Union.select-1815"><span class="linenos">1815</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="Union.select-1816"><a href="#Union.select-1816"><span class="linenos">1816</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Union.select-1817"><a href="#Union.select-1817"><span class="linenos">1817</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> +</span><span id="Union.select-1818"><a href="#Union.select-1818"><span class="linenos">1818</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Union.select-1819"><a href="#Union.select-1819"><span class="linenos">1819</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="Union.select-1820"><a href="#Union.select-1820"><span class="linenos">1820</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="Union.select-1821"><a href="#Union.select-1821"><span class="linenos">1821</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="Union.select-1822"><a href="#Union.select-1822"><span class="linenos">1822</span></a> +</span><span id="Union.select-1823"><a href="#Union.select-1823"><span class="linenos">1823</span></a><span class="sd"> Returns:</span> +</span><span id="Union.select-1824"><a href="#Union.select-1824"><span class="linenos">1824</span></a><span class="sd"> Union: the modified expression.</span> +</span><span id="Union.select-1825"><a href="#Union.select-1825"><span class="linenos">1825</span></a><span class="sd"> """</span> +</span><span id="Union.select-1826"><a href="#Union.select-1826"><span class="linenos">1826</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> <span class="k">if</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span> +</span><span id="Union.select-1827"><a href="#Union.select-1827"><span class="linenos">1827</span></a> <span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Union.select-1828"><a href="#Union.select-1828"><span class="linenos">1828</span></a> <span class="n">this</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">unnest</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span> +</span><span id="Union.select-1829"><a href="#Union.select-1829"><span class="linenos">1829</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span> +</span><span id="Union.select-1830"><a href="#Union.select-1830"><span class="linenos">1830</span></a> <span class="p">)</span> +</span><span id="Union.select-1831"><a href="#Union.select-1831"><span class="linenos">1831</span></a> <span class="k">return</span> <span class="n">this</span> </span></pre></div> @@ -18648,6 +19420,19 @@ Otherwise, this resets the expressions.</li> </div> + <div id="Union.is_star" class="classattr"> + <div class="attr variable"> + <span class="name">is_star</span><span class="annotation">: bool</span> + + + </div> + <a class="headerlink" href="#Union.is_star"></a> + + <div class="docstring"><p>Checks whether an expression is a star.</p> +</div> + + + </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -18660,7 +19445,6 @@ Otherwise, this resets the expressions.</li> <dd id="Union.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> <dd id="Union.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> <dd id="Union.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="Union.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> <dd id="Union.alias" class="variable"><a href="#Expression.alias">alias</a></dd> <dd id="Union.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> <dd id="Union.copy" class="function"><a href="#Expression.copy">copy</a></dd> @@ -18713,8 +19497,8 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Except"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Except-1806"><a href="#Except-1806"><span class="linenos">1806</span></a><span class="k">class</span> <span class="nc">Except</span><span class="p">(</span><span class="n">Union</span><span class="p">):</span> -</span><span id="Except-1807"><a href="#Except-1807"><span class="linenos">1807</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Except-1854"><a href="#Except-1854"><span class="linenos">1854</span></a><span class="k">class</span> <span class="nc">Except</span><span class="p">(</span><span class="n">Union</span><span class="p">):</span> +</span><span id="Except-1855"><a href="#Except-1855"><span class="linenos">1855</span></a> <span class="k">pass</span> </span></pre></div> @@ -18732,7 +19516,6 @@ Otherwise, this resets the expressions.</li> <dd id="Except.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> <dd id="Except.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> <dd id="Except.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="Except.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> <dd id="Except.alias" class="variable"><a href="#Expression.alias">alias</a></dd> <dd id="Except.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> <dd id="Except.copy" class="function"><a href="#Expression.copy">copy</a></dd> @@ -18763,6 +19546,7 @@ Otherwise, this resets the expressions.</li> <div><dt><a href="#Union">Union</a></dt> <dd id="Except.limit" class="function"><a href="#Union.limit">limit</a></dd> <dd id="Except.select" class="function"><a href="#Union.select">select</a></dd> + <dd id="Except.is_star" class="variable"><a href="#Union.is_star">is_star</a></dd> </div> <div><dt><a href="#Subqueryable">Subqueryable</a></dt> @@ -18790,8 +19574,8 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Intersect"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Intersect-1810"><a href="#Intersect-1810"><span class="linenos">1810</span></a><span class="k">class</span> <span class="nc">Intersect</span><span class="p">(</span><span class="n">Union</span><span class="p">):</span> -</span><span id="Intersect-1811"><a href="#Intersect-1811"><span class="linenos">1811</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Intersect-1858"><a href="#Intersect-1858"><span class="linenos">1858</span></a><span class="k">class</span> <span class="nc">Intersect</span><span class="p">(</span><span class="n">Union</span><span class="p">):</span> +</span><span id="Intersect-1859"><a href="#Intersect-1859"><span class="linenos">1859</span></a> <span class="k">pass</span> </span></pre></div> @@ -18809,7 +19593,6 @@ Otherwise, this resets the expressions.</li> <dd id="Intersect.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> <dd id="Intersect.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> <dd id="Intersect.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="Intersect.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> <dd id="Intersect.alias" class="variable"><a href="#Expression.alias">alias</a></dd> <dd id="Intersect.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> <dd id="Intersect.copy" class="function"><a href="#Expression.copy">copy</a></dd> @@ -18840,6 +19623,7 @@ Otherwise, this resets the expressions.</li> <div><dt><a href="#Union">Union</a></dt> <dd id="Intersect.limit" class="function"><a href="#Union.limit">limit</a></dd> <dd id="Intersect.select" class="function"><a href="#Union.select">select</a></dd> + <dd id="Intersect.is_star" class="variable"><a href="#Union.is_star">is_star</a></dd> </div> <div><dt><a href="#Subqueryable">Subqueryable</a></dt> @@ -18867,13 +19651,13 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Unnest"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unnest-1814"><a href="#Unnest-1814"><span class="linenos">1814</span></a><span class="k">class</span> <span class="nc">Unnest</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> -</span><span id="Unnest-1815"><a href="#Unnest-1815"><span class="linenos">1815</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Unnest-1816"><a href="#Unnest-1816"><span class="linenos">1816</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Unnest-1817"><a href="#Unnest-1817"><span class="linenos">1817</span></a> <span class="s2">"ordinality"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Unnest-1818"><a href="#Unnest-1818"><span class="linenos">1818</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Unnest-1819"><a href="#Unnest-1819"><span class="linenos">1819</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Unnest-1820"><a href="#Unnest-1820"><span class="linenos">1820</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unnest-1862"><a href="#Unnest-1862"><span class="linenos">1862</span></a><span class="k">class</span> <span class="nc">Unnest</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> +</span><span id="Unnest-1863"><a href="#Unnest-1863"><span class="linenos">1863</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Unnest-1864"><a href="#Unnest-1864"><span class="linenos">1864</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Unnest-1865"><a href="#Unnest-1865"><span class="linenos">1865</span></a> <span class="s2">"ordinality"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Unnest-1866"><a href="#Unnest-1866"><span class="linenos">1866</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Unnest-1867"><a href="#Unnest-1867"><span class="linenos">1867</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Unnest-1868"><a href="#Unnest-1868"><span class="linenos">1868</span></a> <span class="p">}</span> </span></pre></div> @@ -18939,14 +19723,14 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Update"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Update-1823"><a href="#Update-1823"><span class="linenos">1823</span></a><span class="k">class</span> <span class="nc">Update</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Update-1824"><a href="#Update-1824"><span class="linenos">1824</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Update-1825"><a href="#Update-1825"><span class="linenos">1825</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Update-1826"><a href="#Update-1826"><span class="linenos">1826</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Update-1827"><a href="#Update-1827"><span class="linenos">1827</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Update-1828"><a href="#Update-1828"><span class="linenos">1828</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Update-1829"><a href="#Update-1829"><span class="linenos">1829</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Update-1830"><a href="#Update-1830"><span class="linenos">1830</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Update-1871"><a href="#Update-1871"><span class="linenos">1871</span></a><span class="k">class</span> <span class="nc">Update</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Update-1872"><a href="#Update-1872"><span class="linenos">1872</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Update-1873"><a href="#Update-1873"><span class="linenos">1873</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Update-1874"><a href="#Update-1874"><span class="linenos">1874</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Update-1875"><a href="#Update-1875"><span class="linenos">1875</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Update-1876"><a href="#Update-1876"><span class="linenos">1876</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Update-1877"><a href="#Update-1877"><span class="linenos">1877</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Update-1878"><a href="#Update-1878"><span class="linenos">1878</span></a> <span class="p">}</span> </span></pre></div> @@ -19006,12 +19790,12 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Values"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Values-1833"><a href="#Values-1833"><span class="linenos">1833</span></a><span class="k">class</span> <span class="nc">Values</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> -</span><span id="Values-1834"><a href="#Values-1834"><span class="linenos">1834</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Values-1835"><a href="#Values-1835"><span class="linenos">1835</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Values-1836"><a href="#Values-1836"><span class="linenos">1836</span></a> <span class="s2">"ordinality"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Values-1837"><a href="#Values-1837"><span class="linenos">1837</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Values-1838"><a href="#Values-1838"><span class="linenos">1838</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Values-1881"><a href="#Values-1881"><span class="linenos">1881</span></a><span class="k">class</span> <span class="nc">Values</span><span class="p">(</span><span class="n">UDTF</span><span class="p">):</span> +</span><span id="Values-1882"><a href="#Values-1882"><span class="linenos">1882</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Values-1883"><a href="#Values-1883"><span class="linenos">1883</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Values-1884"><a href="#Values-1884"><span class="linenos">1884</span></a> <span class="s2">"ordinality"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Values-1885"><a href="#Values-1885"><span class="linenos">1885</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Values-1886"><a href="#Values-1886"><span class="linenos">1886</span></a> <span class="p">}</span> </span></pre></div> @@ -19077,8 +19861,8 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Var"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Var-1841"><a href="#Var-1841"><span class="linenos">1841</span></a><span class="k">class</span> <span class="nc">Var</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Var-1842"><a href="#Var-1842"><span class="linenos">1842</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Var-1889"><a href="#Var-1889"><span class="linenos">1889</span></a><span class="k">class</span> <span class="nc">Var</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Var-1890"><a href="#Var-1890"><span class="linenos">1890</span></a> <span class="k">pass</span> </span></pre></div> @@ -19138,8 +19922,8 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Schema"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Schema-1845"><a href="#Schema-1845"><span class="linenos">1845</span></a><span class="k">class</span> <span class="nc">Schema</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Schema-1846"><a href="#Schema-1846"><span class="linenos">1846</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Schema-1893"><a href="#Schema-1893"><span class="linenos">1893</span></a><span class="k">class</span> <span class="nc">Schema</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Schema-1894"><a href="#Schema-1894"><span class="linenos">1894</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -19199,8 +19983,8 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Lock"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Lock-1851"><a href="#Lock-1851"><span class="linenos">1851</span></a><span class="k">class</span> <span class="nc">Lock</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Lock-1852"><a href="#Lock-1852"><span class="linenos">1852</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"update"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Lock-1899"><a href="#Lock-1899"><span class="linenos">1899</span></a><span class="k">class</span> <span class="nc">Lock</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Lock-1900"><a href="#Lock-1900"><span class="linenos">1900</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"update"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -19260,574 +20044,578 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Select"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select-1855"><a href="#Select-1855"><span class="linenos">1855</span></a><span class="k">class</span> <span class="nc">Select</span><span class="p">(</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="Select-1856"><a href="#Select-1856"><span class="linenos">1856</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Select-1857"><a href="#Select-1857"><span class="linenos">1857</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Select-1858"><a href="#Select-1858"><span class="linenos">1858</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Select-1859"><a href="#Select-1859"><span class="linenos">1859</span></a> <span class="s2">"hint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Select-1860"><a href="#Select-1860"><span class="linenos">1860</span></a> <span class="s2">"distinct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Select-1861"><a href="#Select-1861"><span class="linenos">1861</span></a> <span class="s2">"into"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Select-1862"><a href="#Select-1862"><span class="linenos">1862</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Select-1863"><a href="#Select-1863"><span class="linenos">1863</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> -</span><span id="Select-1864"><a href="#Select-1864"><span class="linenos">1864</span></a> <span class="p">}</span> -</span><span id="Select-1865"><a href="#Select-1865"><span class="linenos">1865</span></a> -</span><span id="Select-1866"><a href="#Select-1866"><span class="linenos">1866</span></a> <span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-1867"><a href="#Select-1867"><span class="linenos">1867</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-1868"><a href="#Select-1868"><span class="linenos">1868</span></a><span class="sd"> Set the FROM expression.</span> -</span><span id="Select-1869"><a href="#Select-1869"><span class="linenos">1869</span></a> -</span><span id="Select-1870"><a href="#Select-1870"><span class="linenos">1870</span></a><span class="sd"> Example:</span> -</span><span id="Select-1871"><a href="#Select-1871"><span class="linenos">1871</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sql()</span> -</span><span id="Select-1872"><a href="#Select-1872"><span class="linenos">1872</span></a><span class="sd"> 'SELECT x FROM tbl'</span> -</span><span id="Select-1873"><a href="#Select-1873"><span class="linenos">1873</span></a> -</span><span id="Select-1874"><a href="#Select-1874"><span class="linenos">1874</span></a><span class="sd"> Args:</span> -</span><span id="Select-1875"><a href="#Select-1875"><span class="linenos">1875</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select-1876"><a href="#Select-1876"><span class="linenos">1876</span></a><span class="sd"> If a `From` instance is passed, this is used as-is.</span> -</span><span id="Select-1877"><a href="#Select-1877"><span class="linenos">1877</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `From`.</span> -</span><span id="Select-1878"><a href="#Select-1878"><span class="linenos">1878</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select-1879"><a href="#Select-1879"><span class="linenos">1879</span></a><span class="sd"> Otherwise, this flattens all the `From` expression into a single expression.</span> -</span><span id="Select-1880"><a href="#Select-1880"><span class="linenos">1880</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select-1881"><a href="#Select-1881"><span class="linenos">1881</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-1882"><a href="#Select-1882"><span class="linenos">1882</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select-1883"><a href="#Select-1883"><span class="linenos">1883</span></a> -</span><span id="Select-1884"><a href="#Select-1884"><span class="linenos">1884</span></a><span class="sd"> Returns:</span> -</span><span id="Select-1885"><a href="#Select-1885"><span class="linenos">1885</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-1886"><a href="#Select-1886"><span class="linenos">1886</span></a><span class="sd"> """</span> -</span><span id="Select-1887"><a href="#Select-1887"><span class="linenos">1887</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select-1888"><a href="#Select-1888"><span class="linenos">1888</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-1889"><a href="#Select-1889"><span class="linenos">1889</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-1890"><a href="#Select-1890"><span class="linenos">1890</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"from"</span><span class="p">,</span> -</span><span id="Select-1891"><a href="#Select-1891"><span class="linenos">1891</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-1892"><a href="#Select-1892"><span class="linenos">1892</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-1893"><a href="#Select-1893"><span class="linenos">1893</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> -</span><span id="Select-1894"><a href="#Select-1894"><span class="linenos">1894</span></a> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> -</span><span id="Select-1895"><a href="#Select-1895"><span class="linenos">1895</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-1896"><a href="#Select-1896"><span class="linenos">1896</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-1897"><a href="#Select-1897"><span class="linenos">1897</span></a> <span class="p">)</span> -</span><span id="Select-1898"><a href="#Select-1898"><span class="linenos">1898</span></a> -</span><span id="Select-1899"><a href="#Select-1899"><span class="linenos">1899</span></a> <span class="k">def</span> <span class="nf">group_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-1900"><a href="#Select-1900"><span class="linenos">1900</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-1901"><a href="#Select-1901"><span class="linenos">1901</span></a><span class="sd"> Set the GROUP BY expression.</span> -</span><span id="Select-1902"><a href="#Select-1902"><span class="linenos">1902</span></a> -</span><span id="Select-1903"><a href="#Select-1903"><span class="linenos">1903</span></a><span class="sd"> Example:</span> -</span><span id="Select-1904"><a href="#Select-1904"><span class="linenos">1904</span></a><span class="sd"> >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()</span> -</span><span id="Select-1905"><a href="#Select-1905"><span class="linenos">1905</span></a><span class="sd"> 'SELECT x, COUNT(1) FROM tbl GROUP BY x'</span> -</span><span id="Select-1906"><a href="#Select-1906"><span class="linenos">1906</span></a> -</span><span id="Select-1907"><a href="#Select-1907"><span class="linenos">1907</span></a><span class="sd"> Args:</span> -</span><span id="Select-1908"><a href="#Select-1908"><span class="linenos">1908</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select-1909"><a href="#Select-1909"><span class="linenos">1909</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="Select-1910"><a href="#Select-1910"><span class="linenos">1910</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Group`.</span> -</span><span id="Select-1911"><a href="#Select-1911"><span class="linenos">1911</span></a><span class="sd"> If nothing is passed in then a group by is not applied to the expression</span> -</span><span id="Select-1912"><a href="#Select-1912"><span class="linenos">1912</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select-1913"><a href="#Select-1913"><span class="linenos">1913</span></a><span class="sd"> Otherwise, this flattens all the `Group` expression into a single expression.</span> -</span><span id="Select-1914"><a href="#Select-1914"><span class="linenos">1914</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select-1915"><a href="#Select-1915"><span class="linenos">1915</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-1916"><a href="#Select-1916"><span class="linenos">1916</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select-1903"><a href="#Select-1903"><span class="linenos">1903</span></a><span class="k">class</span> <span class="nc">Select</span><span class="p">(</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="Select-1904"><a href="#Select-1904"><span class="linenos">1904</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Select-1905"><a href="#Select-1905"><span class="linenos">1905</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Select-1906"><a href="#Select-1906"><span class="linenos">1906</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Select-1907"><a href="#Select-1907"><span class="linenos">1907</span></a> <span class="s2">"hint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Select-1908"><a href="#Select-1908"><span class="linenos">1908</span></a> <span class="s2">"distinct"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Select-1909"><a href="#Select-1909"><span class="linenos">1909</span></a> <span class="s2">"into"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Select-1910"><a href="#Select-1910"><span class="linenos">1910</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Select-1911"><a href="#Select-1911"><span class="linenos">1911</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> +</span><span id="Select-1912"><a href="#Select-1912"><span class="linenos">1912</span></a> <span class="p">}</span> +</span><span id="Select-1913"><a href="#Select-1913"><span class="linenos">1913</span></a> +</span><span id="Select-1914"><a href="#Select-1914"><span class="linenos">1914</span></a> <span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-1915"><a href="#Select-1915"><span class="linenos">1915</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-1916"><a href="#Select-1916"><span class="linenos">1916</span></a><span class="sd"> Set the FROM expression.</span> </span><span id="Select-1917"><a href="#Select-1917"><span class="linenos">1917</span></a> -</span><span id="Select-1918"><a href="#Select-1918"><span class="linenos">1918</span></a><span class="sd"> Returns:</span> -</span><span id="Select-1919"><a href="#Select-1919"><span class="linenos">1919</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-1920"><a href="#Select-1920"><span class="linenos">1920</span></a><span class="sd"> """</span> -</span><span id="Select-1921"><a href="#Select-1921"><span class="linenos">1921</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Select-1922"><a href="#Select-1922"><span class="linenos">1922</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="Select-1923"><a href="#Select-1923"><span class="linenos">1923</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select-1924"><a href="#Select-1924"><span class="linenos">1924</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-1925"><a href="#Select-1925"><span class="linenos">1925</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-1926"><a href="#Select-1926"><span class="linenos">1926</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"group"</span><span class="p">,</span> -</span><span id="Select-1927"><a href="#Select-1927"><span class="linenos">1927</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-1928"><a href="#Select-1928"><span class="linenos">1928</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-1929"><a href="#Select-1929"><span class="linenos">1929</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"GROUP BY"</span><span class="p">,</span> -</span><span id="Select-1930"><a href="#Select-1930"><span class="linenos">1930</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Group</span><span class="p">,</span> -</span><span id="Select-1931"><a href="#Select-1931"><span class="linenos">1931</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-1932"><a href="#Select-1932"><span class="linenos">1932</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-1933"><a href="#Select-1933"><span class="linenos">1933</span></a> <span class="p">)</span> -</span><span id="Select-1934"><a href="#Select-1934"><span class="linenos">1934</span></a> -</span><span id="Select-1935"><a href="#Select-1935"><span class="linenos">1935</span></a> <span class="k">def</span> <span class="nf">order_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-1936"><a href="#Select-1936"><span class="linenos">1936</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-1937"><a href="#Select-1937"><span class="linenos">1937</span></a><span class="sd"> Set the ORDER BY expression.</span> -</span><span id="Select-1938"><a href="#Select-1938"><span class="linenos">1938</span></a> -</span><span id="Select-1939"><a href="#Select-1939"><span class="linenos">1939</span></a><span class="sd"> Example:</span> -</span><span id="Select-1940"><a href="#Select-1940"><span class="linenos">1940</span></a><span class="sd"> >>> Select().from_("tbl").select("x").order_by("x DESC").sql()</span> -</span><span id="Select-1941"><a href="#Select-1941"><span class="linenos">1941</span></a><span class="sd"> 'SELECT x FROM tbl ORDER BY x DESC'</span> -</span><span id="Select-1942"><a href="#Select-1942"><span class="linenos">1942</span></a> -</span><span id="Select-1943"><a href="#Select-1943"><span class="linenos">1943</span></a><span class="sd"> Args:</span> -</span><span id="Select-1944"><a href="#Select-1944"><span class="linenos">1944</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select-1945"><a href="#Select-1945"><span class="linenos">1945</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="Select-1946"><a href="#Select-1946"><span class="linenos">1946</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Order`.</span> -</span><span id="Select-1947"><a href="#Select-1947"><span class="linenos">1947</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select-1948"><a href="#Select-1948"><span class="linenos">1948</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> -</span><span id="Select-1949"><a href="#Select-1949"><span class="linenos">1949</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select-1950"><a href="#Select-1950"><span class="linenos">1950</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-1951"><a href="#Select-1951"><span class="linenos">1951</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select-1952"><a href="#Select-1952"><span class="linenos">1952</span></a> -</span><span id="Select-1953"><a href="#Select-1953"><span class="linenos">1953</span></a><span class="sd"> Returns:</span> -</span><span id="Select-1954"><a href="#Select-1954"><span class="linenos">1954</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-1955"><a href="#Select-1955"><span class="linenos">1955</span></a><span class="sd"> """</span> -</span><span id="Select-1956"><a href="#Select-1956"><span class="linenos">1956</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select-1957"><a href="#Select-1957"><span class="linenos">1957</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-1958"><a href="#Select-1958"><span class="linenos">1958</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-1959"><a href="#Select-1959"><span class="linenos">1959</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"order"</span><span class="p">,</span> -</span><span id="Select-1960"><a href="#Select-1960"><span class="linenos">1960</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-1961"><a href="#Select-1961"><span class="linenos">1961</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-1962"><a href="#Select-1962"><span class="linenos">1962</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ORDER BY"</span><span class="p">,</span> -</span><span id="Select-1963"><a href="#Select-1963"><span class="linenos">1963</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Order</span><span class="p">,</span> -</span><span id="Select-1964"><a href="#Select-1964"><span class="linenos">1964</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-1965"><a href="#Select-1965"><span class="linenos">1965</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-1966"><a href="#Select-1966"><span class="linenos">1966</span></a> <span class="p">)</span> -</span><span id="Select-1967"><a href="#Select-1967"><span class="linenos">1967</span></a> -</span><span id="Select-1968"><a href="#Select-1968"><span class="linenos">1968</span></a> <span class="k">def</span> <span class="nf">sort_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-1969"><a href="#Select-1969"><span class="linenos">1969</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-1970"><a href="#Select-1970"><span class="linenos">1970</span></a><span class="sd"> Set the SORT BY expression.</span> -</span><span id="Select-1971"><a href="#Select-1971"><span class="linenos">1971</span></a> -</span><span id="Select-1972"><a href="#Select-1972"><span class="linenos">1972</span></a><span class="sd"> Example:</span> -</span><span id="Select-1973"><a href="#Select-1973"><span class="linenos">1973</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()</span> -</span><span id="Select-1974"><a href="#Select-1974"><span class="linenos">1974</span></a><span class="sd"> 'SELECT x FROM tbl SORT BY x DESC'</span> -</span><span id="Select-1975"><a href="#Select-1975"><span class="linenos">1975</span></a> -</span><span id="Select-1976"><a href="#Select-1976"><span class="linenos">1976</span></a><span class="sd"> Args:</span> -</span><span id="Select-1977"><a href="#Select-1977"><span class="linenos">1977</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select-1978"><a href="#Select-1978"><span class="linenos">1978</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="Select-1979"><a href="#Select-1979"><span class="linenos">1979</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `SORT`.</span> -</span><span id="Select-1980"><a href="#Select-1980"><span class="linenos">1980</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select-1981"><a href="#Select-1981"><span class="linenos">1981</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> -</span><span id="Select-1982"><a href="#Select-1982"><span class="linenos">1982</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select-1983"><a href="#Select-1983"><span class="linenos">1983</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-1984"><a href="#Select-1984"><span class="linenos">1984</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select-1985"><a href="#Select-1985"><span class="linenos">1985</span></a> -</span><span id="Select-1986"><a href="#Select-1986"><span class="linenos">1986</span></a><span class="sd"> Returns:</span> -</span><span id="Select-1987"><a href="#Select-1987"><span class="linenos">1987</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-1988"><a href="#Select-1988"><span class="linenos">1988</span></a><span class="sd"> """</span> -</span><span id="Select-1989"><a href="#Select-1989"><span class="linenos">1989</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select-1990"><a href="#Select-1990"><span class="linenos">1990</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-1991"><a href="#Select-1991"><span class="linenos">1991</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-1992"><a href="#Select-1992"><span class="linenos">1992</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"sort"</span><span class="p">,</span> -</span><span id="Select-1993"><a href="#Select-1993"><span class="linenos">1993</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-1994"><a href="#Select-1994"><span class="linenos">1994</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-1995"><a href="#Select-1995"><span class="linenos">1995</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"SORT BY"</span><span class="p">,</span> -</span><span id="Select-1996"><a href="#Select-1996"><span class="linenos">1996</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Sort</span><span class="p">,</span> -</span><span id="Select-1997"><a href="#Select-1997"><span class="linenos">1997</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-1998"><a href="#Select-1998"><span class="linenos">1998</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-1999"><a href="#Select-1999"><span class="linenos">1999</span></a> <span class="p">)</span> +</span><span id="Select-1918"><a href="#Select-1918"><span class="linenos">1918</span></a><span class="sd"> Example:</span> +</span><span id="Select-1919"><a href="#Select-1919"><span class="linenos">1919</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sql()</span> +</span><span id="Select-1920"><a href="#Select-1920"><span class="linenos">1920</span></a><span class="sd"> 'SELECT x FROM tbl'</span> +</span><span id="Select-1921"><a href="#Select-1921"><span class="linenos">1921</span></a> +</span><span id="Select-1922"><a href="#Select-1922"><span class="linenos">1922</span></a><span class="sd"> Args:</span> +</span><span id="Select-1923"><a href="#Select-1923"><span class="linenos">1923</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select-1924"><a href="#Select-1924"><span class="linenos">1924</span></a><span class="sd"> If a `From` instance is passed, this is used as-is.</span> +</span><span id="Select-1925"><a href="#Select-1925"><span class="linenos">1925</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `From`.</span> +</span><span id="Select-1926"><a href="#Select-1926"><span class="linenos">1926</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select-1927"><a href="#Select-1927"><span class="linenos">1927</span></a><span class="sd"> Otherwise, this flattens all the `From` expression into a single expression.</span> +</span><span id="Select-1928"><a href="#Select-1928"><span class="linenos">1928</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select-1929"><a href="#Select-1929"><span class="linenos">1929</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-1930"><a href="#Select-1930"><span class="linenos">1930</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-1931"><a href="#Select-1931"><span class="linenos">1931</span></a> +</span><span id="Select-1932"><a href="#Select-1932"><span class="linenos">1932</span></a><span class="sd"> Returns:</span> +</span><span id="Select-1933"><a href="#Select-1933"><span class="linenos">1933</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-1934"><a href="#Select-1934"><span class="linenos">1934</span></a><span class="sd"> """</span> +</span><span id="Select-1935"><a href="#Select-1935"><span class="linenos">1935</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select-1936"><a href="#Select-1936"><span class="linenos">1936</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-1937"><a href="#Select-1937"><span class="linenos">1937</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-1938"><a href="#Select-1938"><span class="linenos">1938</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"from"</span><span class="p">,</span> +</span><span id="Select-1939"><a href="#Select-1939"><span class="linenos">1939</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-1940"><a href="#Select-1940"><span class="linenos">1940</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-1941"><a href="#Select-1941"><span class="linenos">1941</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> +</span><span id="Select-1942"><a href="#Select-1942"><span class="linenos">1942</span></a> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> +</span><span id="Select-1943"><a href="#Select-1943"><span class="linenos">1943</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-1944"><a href="#Select-1944"><span class="linenos">1944</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-1945"><a href="#Select-1945"><span class="linenos">1945</span></a> <span class="p">)</span> +</span><span id="Select-1946"><a href="#Select-1946"><span class="linenos">1946</span></a> +</span><span id="Select-1947"><a href="#Select-1947"><span class="linenos">1947</span></a> <span class="k">def</span> <span class="nf">group_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-1948"><a href="#Select-1948"><span class="linenos">1948</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-1949"><a href="#Select-1949"><span class="linenos">1949</span></a><span class="sd"> Set the GROUP BY expression.</span> +</span><span id="Select-1950"><a href="#Select-1950"><span class="linenos">1950</span></a> +</span><span id="Select-1951"><a href="#Select-1951"><span class="linenos">1951</span></a><span class="sd"> Example:</span> +</span><span id="Select-1952"><a href="#Select-1952"><span class="linenos">1952</span></a><span class="sd"> >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()</span> +</span><span id="Select-1953"><a href="#Select-1953"><span class="linenos">1953</span></a><span class="sd"> 'SELECT x, COUNT(1) FROM tbl GROUP BY x'</span> +</span><span id="Select-1954"><a href="#Select-1954"><span class="linenos">1954</span></a> +</span><span id="Select-1955"><a href="#Select-1955"><span class="linenos">1955</span></a><span class="sd"> Args:</span> +</span><span id="Select-1956"><a href="#Select-1956"><span class="linenos">1956</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select-1957"><a href="#Select-1957"><span class="linenos">1957</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="Select-1958"><a href="#Select-1958"><span class="linenos">1958</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Group`.</span> +</span><span id="Select-1959"><a href="#Select-1959"><span class="linenos">1959</span></a><span class="sd"> If nothing is passed in then a group by is not applied to the expression</span> +</span><span id="Select-1960"><a href="#Select-1960"><span class="linenos">1960</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select-1961"><a href="#Select-1961"><span class="linenos">1961</span></a><span class="sd"> Otherwise, this flattens all the `Group` expression into a single expression.</span> +</span><span id="Select-1962"><a href="#Select-1962"><span class="linenos">1962</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select-1963"><a href="#Select-1963"><span class="linenos">1963</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-1964"><a href="#Select-1964"><span class="linenos">1964</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-1965"><a href="#Select-1965"><span class="linenos">1965</span></a> +</span><span id="Select-1966"><a href="#Select-1966"><span class="linenos">1966</span></a><span class="sd"> Returns:</span> +</span><span id="Select-1967"><a href="#Select-1967"><span class="linenos">1967</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-1968"><a href="#Select-1968"><span class="linenos">1968</span></a><span class="sd"> """</span> +</span><span id="Select-1969"><a href="#Select-1969"><span class="linenos">1969</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Select-1970"><a href="#Select-1970"><span class="linenos">1970</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="Select-1971"><a href="#Select-1971"><span class="linenos">1971</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select-1972"><a href="#Select-1972"><span class="linenos">1972</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-1973"><a href="#Select-1973"><span class="linenos">1973</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-1974"><a href="#Select-1974"><span class="linenos">1974</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"group"</span><span class="p">,</span> +</span><span id="Select-1975"><a href="#Select-1975"><span class="linenos">1975</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-1976"><a href="#Select-1976"><span class="linenos">1976</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-1977"><a href="#Select-1977"><span class="linenos">1977</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"GROUP BY"</span><span class="p">,</span> +</span><span id="Select-1978"><a href="#Select-1978"><span class="linenos">1978</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Group</span><span class="p">,</span> +</span><span id="Select-1979"><a href="#Select-1979"><span class="linenos">1979</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-1980"><a href="#Select-1980"><span class="linenos">1980</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-1981"><a href="#Select-1981"><span class="linenos">1981</span></a> <span class="p">)</span> +</span><span id="Select-1982"><a href="#Select-1982"><span class="linenos">1982</span></a> +</span><span id="Select-1983"><a href="#Select-1983"><span class="linenos">1983</span></a> <span class="k">def</span> <span class="nf">order_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-1984"><a href="#Select-1984"><span class="linenos">1984</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-1985"><a href="#Select-1985"><span class="linenos">1985</span></a><span class="sd"> Set the ORDER BY expression.</span> +</span><span id="Select-1986"><a href="#Select-1986"><span class="linenos">1986</span></a> +</span><span id="Select-1987"><a href="#Select-1987"><span class="linenos">1987</span></a><span class="sd"> Example:</span> +</span><span id="Select-1988"><a href="#Select-1988"><span class="linenos">1988</span></a><span class="sd"> >>> Select().from_("tbl").select("x").order_by("x DESC").sql()</span> +</span><span id="Select-1989"><a href="#Select-1989"><span class="linenos">1989</span></a><span class="sd"> 'SELECT x FROM tbl ORDER BY x DESC'</span> +</span><span id="Select-1990"><a href="#Select-1990"><span class="linenos">1990</span></a> +</span><span id="Select-1991"><a href="#Select-1991"><span class="linenos">1991</span></a><span class="sd"> Args:</span> +</span><span id="Select-1992"><a href="#Select-1992"><span class="linenos">1992</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select-1993"><a href="#Select-1993"><span class="linenos">1993</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="Select-1994"><a href="#Select-1994"><span class="linenos">1994</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Order`.</span> +</span><span id="Select-1995"><a href="#Select-1995"><span class="linenos">1995</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select-1996"><a href="#Select-1996"><span class="linenos">1996</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> +</span><span id="Select-1997"><a href="#Select-1997"><span class="linenos">1997</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select-1998"><a href="#Select-1998"><span class="linenos">1998</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-1999"><a href="#Select-1999"><span class="linenos">1999</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> </span><span id="Select-2000"><a href="#Select-2000"><span class="linenos">2000</span></a> -</span><span id="Select-2001"><a href="#Select-2001"><span class="linenos">2001</span></a> <span class="k">def</span> <span class="nf">cluster_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2002"><a href="#Select-2002"><span class="linenos">2002</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2003"><a href="#Select-2003"><span class="linenos">2003</span></a><span class="sd"> Set the CLUSTER BY expression.</span> -</span><span id="Select-2004"><a href="#Select-2004"><span class="linenos">2004</span></a> -</span><span id="Select-2005"><a href="#Select-2005"><span class="linenos">2005</span></a><span class="sd"> Example:</span> -</span><span id="Select-2006"><a href="#Select-2006"><span class="linenos">2006</span></a><span class="sd"> >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()</span> -</span><span id="Select-2007"><a href="#Select-2007"><span class="linenos">2007</span></a><span class="sd"> 'SELECT x FROM tbl CLUSTER BY x DESC'</span> -</span><span id="Select-2008"><a href="#Select-2008"><span class="linenos">2008</span></a> -</span><span id="Select-2009"><a href="#Select-2009"><span class="linenos">2009</span></a><span class="sd"> Args:</span> -</span><span id="Select-2010"><a href="#Select-2010"><span class="linenos">2010</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select-2011"><a href="#Select-2011"><span class="linenos">2011</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="Select-2012"><a href="#Select-2012"><span class="linenos">2012</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Cluster`.</span> -</span><span id="Select-2013"><a href="#Select-2013"><span class="linenos">2013</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select-2014"><a href="#Select-2014"><span class="linenos">2014</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> -</span><span id="Select-2015"><a href="#Select-2015"><span class="linenos">2015</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select-2016"><a href="#Select-2016"><span class="linenos">2016</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-2017"><a href="#Select-2017"><span class="linenos">2017</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select-2018"><a href="#Select-2018"><span class="linenos">2018</span></a> -</span><span id="Select-2019"><a href="#Select-2019"><span class="linenos">2019</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2020"><a href="#Select-2020"><span class="linenos">2020</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-2021"><a href="#Select-2021"><span class="linenos">2021</span></a><span class="sd"> """</span> -</span><span id="Select-2022"><a href="#Select-2022"><span class="linenos">2022</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select-2023"><a href="#Select-2023"><span class="linenos">2023</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-2024"><a href="#Select-2024"><span class="linenos">2024</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2025"><a href="#Select-2025"><span class="linenos">2025</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"cluster"</span><span class="p">,</span> -</span><span id="Select-2026"><a href="#Select-2026"><span class="linenos">2026</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-2027"><a href="#Select-2027"><span class="linenos">2027</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2028"><a href="#Select-2028"><span class="linenos">2028</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> -</span><span id="Select-2029"><a href="#Select-2029"><span class="linenos">2029</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Cluster</span><span class="p">,</span> -</span><span id="Select-2030"><a href="#Select-2030"><span class="linenos">2030</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-2031"><a href="#Select-2031"><span class="linenos">2031</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2032"><a href="#Select-2032"><span class="linenos">2032</span></a> <span class="p">)</span> +</span><span id="Select-2001"><a href="#Select-2001"><span class="linenos">2001</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2002"><a href="#Select-2002"><span class="linenos">2002</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2003"><a href="#Select-2003"><span class="linenos">2003</span></a><span class="sd"> """</span> +</span><span id="Select-2004"><a href="#Select-2004"><span class="linenos">2004</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select-2005"><a href="#Select-2005"><span class="linenos">2005</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-2006"><a href="#Select-2006"><span class="linenos">2006</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2007"><a href="#Select-2007"><span class="linenos">2007</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"order"</span><span class="p">,</span> +</span><span id="Select-2008"><a href="#Select-2008"><span class="linenos">2008</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2009"><a href="#Select-2009"><span class="linenos">2009</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2010"><a href="#Select-2010"><span class="linenos">2010</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ORDER BY"</span><span class="p">,</span> +</span><span id="Select-2011"><a href="#Select-2011"><span class="linenos">2011</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Order</span><span class="p">,</span> +</span><span id="Select-2012"><a href="#Select-2012"><span class="linenos">2012</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2013"><a href="#Select-2013"><span class="linenos">2013</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2014"><a href="#Select-2014"><span class="linenos">2014</span></a> <span class="p">)</span> +</span><span id="Select-2015"><a href="#Select-2015"><span class="linenos">2015</span></a> +</span><span id="Select-2016"><a href="#Select-2016"><span class="linenos">2016</span></a> <span class="k">def</span> <span class="nf">sort_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2017"><a href="#Select-2017"><span class="linenos">2017</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2018"><a href="#Select-2018"><span class="linenos">2018</span></a><span class="sd"> Set the SORT BY expression.</span> +</span><span id="Select-2019"><a href="#Select-2019"><span class="linenos">2019</span></a> +</span><span id="Select-2020"><a href="#Select-2020"><span class="linenos">2020</span></a><span class="sd"> Example:</span> +</span><span id="Select-2021"><a href="#Select-2021"><span class="linenos">2021</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()</span> +</span><span id="Select-2022"><a href="#Select-2022"><span class="linenos">2022</span></a><span class="sd"> 'SELECT x FROM tbl SORT BY x DESC'</span> +</span><span id="Select-2023"><a href="#Select-2023"><span class="linenos">2023</span></a> +</span><span id="Select-2024"><a href="#Select-2024"><span class="linenos">2024</span></a><span class="sd"> Args:</span> +</span><span id="Select-2025"><a href="#Select-2025"><span class="linenos">2025</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select-2026"><a href="#Select-2026"><span class="linenos">2026</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="Select-2027"><a href="#Select-2027"><span class="linenos">2027</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `SORT`.</span> +</span><span id="Select-2028"><a href="#Select-2028"><span class="linenos">2028</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select-2029"><a href="#Select-2029"><span class="linenos">2029</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> +</span><span id="Select-2030"><a href="#Select-2030"><span class="linenos">2030</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select-2031"><a href="#Select-2031"><span class="linenos">2031</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2032"><a href="#Select-2032"><span class="linenos">2032</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> </span><span id="Select-2033"><a href="#Select-2033"><span class="linenos">2033</span></a> -</span><span id="Select-2034"><a href="#Select-2034"><span class="linenos">2034</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2035"><a href="#Select-2035"><span class="linenos">2035</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2036"><a href="#Select-2036"><span class="linenos">2036</span></a><span class="sd"> Set the LIMIT expression.</span> -</span><span id="Select-2037"><a href="#Select-2037"><span class="linenos">2037</span></a> -</span><span id="Select-2038"><a href="#Select-2038"><span class="linenos">2038</span></a><span class="sd"> Example:</span> -</span><span id="Select-2039"><a href="#Select-2039"><span class="linenos">2039</span></a><span class="sd"> >>> Select().from_("tbl").select("x").limit(10).sql()</span> -</span><span id="Select-2040"><a href="#Select-2040"><span class="linenos">2040</span></a><span class="sd"> 'SELECT x FROM tbl LIMIT 10'</span> -</span><span id="Select-2041"><a href="#Select-2041"><span class="linenos">2041</span></a> -</span><span id="Select-2042"><a href="#Select-2042"><span class="linenos">2042</span></a><span class="sd"> Args:</span> -</span><span id="Select-2043"><a href="#Select-2043"><span class="linenos">2043</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> -</span><span id="Select-2044"><a href="#Select-2044"><span class="linenos">2044</span></a><span class="sd"> This can also be an integer.</span> -</span><span id="Select-2045"><a href="#Select-2045"><span class="linenos">2045</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> -</span><span id="Select-2046"><a href="#Select-2046"><span class="linenos">2046</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> -</span><span id="Select-2047"><a href="#Select-2047"><span class="linenos">2047</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select-2048"><a href="#Select-2048"><span class="linenos">2048</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-2049"><a href="#Select-2049"><span class="linenos">2049</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select-2050"><a href="#Select-2050"><span class="linenos">2050</span></a> -</span><span id="Select-2051"><a href="#Select-2051"><span class="linenos">2051</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2052"><a href="#Select-2052"><span class="linenos">2052</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-2053"><a href="#Select-2053"><span class="linenos">2053</span></a><span class="sd"> """</span> -</span><span id="Select-2054"><a href="#Select-2054"><span class="linenos">2054</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> -</span><span id="Select-2055"><a href="#Select-2055"><span class="linenos">2055</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Select-2056"><a href="#Select-2056"><span class="linenos">2056</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2057"><a href="#Select-2057"><span class="linenos">2057</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"limit"</span><span class="p">,</span> -</span><span id="Select-2058"><a href="#Select-2058"><span class="linenos">2058</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Limit</span><span class="p">,</span> -</span><span id="Select-2059"><a href="#Select-2059"><span class="linenos">2059</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LIMIT"</span><span class="p">,</span> -</span><span id="Select-2060"><a href="#Select-2060"><span class="linenos">2060</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-2061"><a href="#Select-2061"><span class="linenos">2061</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2062"><a href="#Select-2062"><span class="linenos">2062</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2063"><a href="#Select-2063"><span class="linenos">2063</span></a> <span class="p">)</span> -</span><span id="Select-2064"><a href="#Select-2064"><span class="linenos">2064</span></a> -</span><span id="Select-2065"><a href="#Select-2065"><span class="linenos">2065</span></a> <span class="k">def</span> <span class="nf">offset</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2066"><a href="#Select-2066"><span class="linenos">2066</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2067"><a href="#Select-2067"><span class="linenos">2067</span></a><span class="sd"> Set the OFFSET expression.</span> -</span><span id="Select-2068"><a href="#Select-2068"><span class="linenos">2068</span></a> -</span><span id="Select-2069"><a href="#Select-2069"><span class="linenos">2069</span></a><span class="sd"> Example:</span> -</span><span id="Select-2070"><a href="#Select-2070"><span class="linenos">2070</span></a><span class="sd"> >>> Select().from_("tbl").select("x").offset(10).sql()</span> -</span><span id="Select-2071"><a href="#Select-2071"><span class="linenos">2071</span></a><span class="sd"> 'SELECT x FROM tbl OFFSET 10'</span> -</span><span id="Select-2072"><a href="#Select-2072"><span class="linenos">2072</span></a> -</span><span id="Select-2073"><a href="#Select-2073"><span class="linenos">2073</span></a><span class="sd"> Args:</span> -</span><span id="Select-2074"><a href="#Select-2074"><span class="linenos">2074</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> -</span><span id="Select-2075"><a href="#Select-2075"><span class="linenos">2075</span></a><span class="sd"> This can also be an integer.</span> -</span><span id="Select-2076"><a href="#Select-2076"><span class="linenos">2076</span></a><span class="sd"> If a `Offset` instance is passed, this is used as-is.</span> -</span><span id="Select-2077"><a href="#Select-2077"><span class="linenos">2077</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Offset`.</span> -</span><span id="Select-2078"><a href="#Select-2078"><span class="linenos">2078</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select-2079"><a href="#Select-2079"><span class="linenos">2079</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-2080"><a href="#Select-2080"><span class="linenos">2080</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-2034"><a href="#Select-2034"><span class="linenos">2034</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2035"><a href="#Select-2035"><span class="linenos">2035</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2036"><a href="#Select-2036"><span class="linenos">2036</span></a><span class="sd"> """</span> +</span><span id="Select-2037"><a href="#Select-2037"><span class="linenos">2037</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select-2038"><a href="#Select-2038"><span class="linenos">2038</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-2039"><a href="#Select-2039"><span class="linenos">2039</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2040"><a href="#Select-2040"><span class="linenos">2040</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"sort"</span><span class="p">,</span> +</span><span id="Select-2041"><a href="#Select-2041"><span class="linenos">2041</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2042"><a href="#Select-2042"><span class="linenos">2042</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2043"><a href="#Select-2043"><span class="linenos">2043</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"SORT BY"</span><span class="p">,</span> +</span><span id="Select-2044"><a href="#Select-2044"><span class="linenos">2044</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Sort</span><span class="p">,</span> +</span><span id="Select-2045"><a href="#Select-2045"><span class="linenos">2045</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2046"><a href="#Select-2046"><span class="linenos">2046</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2047"><a href="#Select-2047"><span class="linenos">2047</span></a> <span class="p">)</span> +</span><span id="Select-2048"><a href="#Select-2048"><span class="linenos">2048</span></a> +</span><span id="Select-2049"><a href="#Select-2049"><span class="linenos">2049</span></a> <span class="k">def</span> <span class="nf">cluster_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2050"><a href="#Select-2050"><span class="linenos">2050</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2051"><a href="#Select-2051"><span class="linenos">2051</span></a><span class="sd"> Set the CLUSTER BY expression.</span> +</span><span id="Select-2052"><a href="#Select-2052"><span class="linenos">2052</span></a> +</span><span id="Select-2053"><a href="#Select-2053"><span class="linenos">2053</span></a><span class="sd"> Example:</span> +</span><span id="Select-2054"><a href="#Select-2054"><span class="linenos">2054</span></a><span class="sd"> >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()</span> +</span><span id="Select-2055"><a href="#Select-2055"><span class="linenos">2055</span></a><span class="sd"> 'SELECT x FROM tbl CLUSTER BY x DESC'</span> +</span><span id="Select-2056"><a href="#Select-2056"><span class="linenos">2056</span></a> +</span><span id="Select-2057"><a href="#Select-2057"><span class="linenos">2057</span></a><span class="sd"> Args:</span> +</span><span id="Select-2058"><a href="#Select-2058"><span class="linenos">2058</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select-2059"><a href="#Select-2059"><span class="linenos">2059</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="Select-2060"><a href="#Select-2060"><span class="linenos">2060</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Cluster`.</span> +</span><span id="Select-2061"><a href="#Select-2061"><span class="linenos">2061</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select-2062"><a href="#Select-2062"><span class="linenos">2062</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> +</span><span id="Select-2063"><a href="#Select-2063"><span class="linenos">2063</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select-2064"><a href="#Select-2064"><span class="linenos">2064</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2065"><a href="#Select-2065"><span class="linenos">2065</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-2066"><a href="#Select-2066"><span class="linenos">2066</span></a> +</span><span id="Select-2067"><a href="#Select-2067"><span class="linenos">2067</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2068"><a href="#Select-2068"><span class="linenos">2068</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2069"><a href="#Select-2069"><span class="linenos">2069</span></a><span class="sd"> """</span> +</span><span id="Select-2070"><a href="#Select-2070"><span class="linenos">2070</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select-2071"><a href="#Select-2071"><span class="linenos">2071</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-2072"><a href="#Select-2072"><span class="linenos">2072</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2073"><a href="#Select-2073"><span class="linenos">2073</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"cluster"</span><span class="p">,</span> +</span><span id="Select-2074"><a href="#Select-2074"><span class="linenos">2074</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2075"><a href="#Select-2075"><span class="linenos">2075</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2076"><a href="#Select-2076"><span class="linenos">2076</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> +</span><span id="Select-2077"><a href="#Select-2077"><span class="linenos">2077</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Cluster</span><span class="p">,</span> +</span><span id="Select-2078"><a href="#Select-2078"><span class="linenos">2078</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2079"><a href="#Select-2079"><span class="linenos">2079</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2080"><a href="#Select-2080"><span class="linenos">2080</span></a> <span class="p">)</span> </span><span id="Select-2081"><a href="#Select-2081"><span class="linenos">2081</span></a> -</span><span id="Select-2082"><a href="#Select-2082"><span class="linenos">2082</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2083"><a href="#Select-2083"><span class="linenos">2083</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-2084"><a href="#Select-2084"><span class="linenos">2084</span></a><span class="sd"> """</span> -</span><span id="Select-2085"><a href="#Select-2085"><span class="linenos">2085</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> -</span><span id="Select-2086"><a href="#Select-2086"><span class="linenos">2086</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Select-2087"><a href="#Select-2087"><span class="linenos">2087</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2088"><a href="#Select-2088"><span class="linenos">2088</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"offset"</span><span class="p">,</span> -</span><span id="Select-2089"><a href="#Select-2089"><span class="linenos">2089</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Offset</span><span class="p">,</span> -</span><span id="Select-2090"><a href="#Select-2090"><span class="linenos">2090</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"OFFSET"</span><span class="p">,</span> -</span><span id="Select-2091"><a href="#Select-2091"><span class="linenos">2091</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-2092"><a href="#Select-2092"><span class="linenos">2092</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2093"><a href="#Select-2093"><span class="linenos">2093</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2094"><a href="#Select-2094"><span class="linenos">2094</span></a> <span class="p">)</span> -</span><span id="Select-2095"><a href="#Select-2095"><span class="linenos">2095</span></a> -</span><span id="Select-2096"><a href="#Select-2096"><span class="linenos">2096</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> -</span><span id="Select-2097"><a href="#Select-2097"><span class="linenos">2097</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2098"><a href="#Select-2098"><span class="linenos">2098</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="Select-2099"><a href="#Select-2099"><span class="linenos">2099</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Select-2100"><a href="#Select-2100"><span class="linenos">2100</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Select-2101"><a href="#Select-2101"><span class="linenos">2101</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Select-2102"><a href="#Select-2102"><span class="linenos">2102</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2103"><a href="#Select-2103"><span class="linenos">2103</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2104"><a href="#Select-2104"><span class="linenos">2104</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2105"><a href="#Select-2105"><span class="linenos">2105</span></a><span class="sd"> Append to or set the SELECT expressions.</span> -</span><span id="Select-2106"><a href="#Select-2106"><span class="linenos">2106</span></a> -</span><span id="Select-2107"><a href="#Select-2107"><span class="linenos">2107</span></a><span class="sd"> Example:</span> -</span><span id="Select-2108"><a href="#Select-2108"><span class="linenos">2108</span></a><span class="sd"> >>> Select().select("x", "y").sql()</span> -</span><span id="Select-2109"><a href="#Select-2109"><span class="linenos">2109</span></a><span class="sd"> 'SELECT x, y'</span> -</span><span id="Select-2110"><a href="#Select-2110"><span class="linenos">2110</span></a> -</span><span id="Select-2111"><a href="#Select-2111"><span class="linenos">2111</span></a><span class="sd"> Args:</span> -</span><span id="Select-2112"><a href="#Select-2112"><span class="linenos">2112</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="Select-2113"><a href="#Select-2113"><span class="linenos">2113</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select-2114"><a href="#Select-2114"><span class="linenos">2114</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> -</span><span id="Select-2115"><a href="#Select-2115"><span class="linenos">2115</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Select-2116"><a href="#Select-2116"><span class="linenos">2116</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="Select-2117"><a href="#Select-2117"><span class="linenos">2117</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> -</span><span id="Select-2118"><a href="#Select-2118"><span class="linenos">2118</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="Select-2119"><a href="#Select-2119"><span class="linenos">2119</span></a> -</span><span id="Select-2120"><a href="#Select-2120"><span class="linenos">2120</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2121"><a href="#Select-2121"><span class="linenos">2121</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-2122"><a href="#Select-2122"><span class="linenos">2122</span></a><span class="sd"> """</span> -</span><span id="Select-2123"><a href="#Select-2123"><span class="linenos">2123</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select-2124"><a href="#Select-2124"><span class="linenos">2124</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-2125"><a href="#Select-2125"><span class="linenos">2125</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2126"><a href="#Select-2126"><span class="linenos">2126</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">,</span> -</span><span id="Select-2127"><a href="#Select-2127"><span class="linenos">2127</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-2128"><a href="#Select-2128"><span class="linenos">2128</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-2129"><a href="#Select-2129"><span class="linenos">2129</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2130"><a href="#Select-2130"><span class="linenos">2130</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2131"><a href="#Select-2131"><span class="linenos">2131</span></a> <span class="p">)</span> -</span><span id="Select-2132"><a href="#Select-2132"><span class="linenos">2132</span></a> -</span><span id="Select-2133"><a href="#Select-2133"><span class="linenos">2133</span></a> <span class="k">def</span> <span class="nf">lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2134"><a href="#Select-2134"><span class="linenos">2134</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2135"><a href="#Select-2135"><span class="linenos">2135</span></a><span class="sd"> Append to or set the LATERAL expressions.</span> -</span><span id="Select-2136"><a href="#Select-2136"><span class="linenos">2136</span></a> -</span><span id="Select-2137"><a href="#Select-2137"><span class="linenos">2137</span></a><span class="sd"> Example:</span> -</span><span id="Select-2138"><a href="#Select-2138"><span class="linenos">2138</span></a><span class="sd"> >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()</span> -</span><span id="Select-2139"><a href="#Select-2139"><span class="linenos">2139</span></a><span class="sd"> 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'</span> -</span><span id="Select-2140"><a href="#Select-2140"><span class="linenos">2140</span></a> -</span><span id="Select-2141"><a href="#Select-2141"><span class="linenos">2141</span></a><span class="sd"> Args:</span> -</span><span id="Select-2142"><a href="#Select-2142"><span class="linenos">2142</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select-2143"><a href="#Select-2143"><span class="linenos">2143</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select-2144"><a href="#Select-2144"><span class="linenos">2144</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select-2145"><a href="#Select-2145"><span class="linenos">2145</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Select-2146"><a href="#Select-2146"><span class="linenos">2146</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Select-2147"><a href="#Select-2147"><span class="linenos">2147</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-2148"><a href="#Select-2148"><span class="linenos">2148</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select-2149"><a href="#Select-2149"><span class="linenos">2149</span></a> -</span><span id="Select-2150"><a href="#Select-2150"><span class="linenos">2150</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2151"><a href="#Select-2151"><span class="linenos">2151</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-2152"><a href="#Select-2152"><span class="linenos">2152</span></a><span class="sd"> """</span> -</span><span id="Select-2153"><a href="#Select-2153"><span class="linenos">2153</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select-2154"><a href="#Select-2154"><span class="linenos">2154</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-2155"><a href="#Select-2155"><span class="linenos">2155</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2156"><a href="#Select-2156"><span class="linenos">2156</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> -</span><span id="Select-2157"><a href="#Select-2157"><span class="linenos">2157</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-2158"><a href="#Select-2158"><span class="linenos">2158</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Lateral</span><span class="p">,</span> -</span><span id="Select-2159"><a href="#Select-2159"><span class="linenos">2159</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LATERAL VIEW"</span><span class="p">,</span> -</span><span id="Select-2160"><a href="#Select-2160"><span class="linenos">2160</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-2161"><a href="#Select-2161"><span class="linenos">2161</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2162"><a href="#Select-2162"><span class="linenos">2162</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2163"><a href="#Select-2163"><span class="linenos">2163</span></a> <span class="p">)</span> -</span><span id="Select-2164"><a href="#Select-2164"><span class="linenos">2164</span></a> -</span><span id="Select-2165"><a href="#Select-2165"><span class="linenos">2165</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> -</span><span id="Select-2166"><a href="#Select-2166"><span class="linenos">2166</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2167"><a href="#Select-2167"><span class="linenos">2167</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Select-2168"><a href="#Select-2168"><span class="linenos">2168</span></a> <span class="n">on</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select-2169"><a href="#Select-2169"><span class="linenos">2169</span></a> <span class="n">using</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select-2170"><a href="#Select-2170"><span class="linenos">2170</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Select-2171"><a href="#Select-2171"><span class="linenos">2171</span></a> <span class="n">join_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select-2172"><a href="#Select-2172"><span class="linenos">2172</span></a> <span class="n">join_alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select-2173"><a href="#Select-2173"><span class="linenos">2173</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select-2174"><a href="#Select-2174"><span class="linenos">2174</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Select-2175"><a href="#Select-2175"><span class="linenos">2175</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2176"><a href="#Select-2176"><span class="linenos">2176</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2177"><a href="#Select-2177"><span class="linenos">2177</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2178"><a href="#Select-2178"><span class="linenos">2178</span></a><span class="sd"> Append to or set the JOIN expressions.</span> -</span><span id="Select-2179"><a href="#Select-2179"><span class="linenos">2179</span></a> -</span><span id="Select-2180"><a href="#Select-2180"><span class="linenos">2180</span></a><span class="sd"> Example:</span> -</span><span id="Select-2181"><a href="#Select-2181"><span class="linenos">2181</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()</span> -</span><span id="Select-2182"><a href="#Select-2182"><span class="linenos">2182</span></a><span class="sd"> 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'</span> -</span><span id="Select-2183"><a href="#Select-2183"><span class="linenos">2183</span></a> -</span><span id="Select-2184"><a href="#Select-2184"><span class="linenos">2184</span></a><span class="sd"> >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()</span> -</span><span id="Select-2185"><a href="#Select-2185"><span class="linenos">2185</span></a><span class="sd"> 'SELECT 1 FROM a JOIN b USING (x, y, z)'</span> -</span><span id="Select-2186"><a href="#Select-2186"><span class="linenos">2186</span></a> -</span><span id="Select-2187"><a href="#Select-2187"><span class="linenos">2187</span></a><span class="sd"> Use `join_type` to change the type of join:</span> +</span><span id="Select-2082"><a href="#Select-2082"><span class="linenos">2082</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2083"><a href="#Select-2083"><span class="linenos">2083</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2084"><a href="#Select-2084"><span class="linenos">2084</span></a><span class="sd"> Set the LIMIT expression.</span> +</span><span id="Select-2085"><a href="#Select-2085"><span class="linenos">2085</span></a> +</span><span id="Select-2086"><a href="#Select-2086"><span class="linenos">2086</span></a><span class="sd"> Example:</span> +</span><span id="Select-2087"><a href="#Select-2087"><span class="linenos">2087</span></a><span class="sd"> >>> Select().from_("tbl").select("x").limit(10).sql()</span> +</span><span id="Select-2088"><a href="#Select-2088"><span class="linenos">2088</span></a><span class="sd"> 'SELECT x FROM tbl LIMIT 10'</span> +</span><span id="Select-2089"><a href="#Select-2089"><span class="linenos">2089</span></a> +</span><span id="Select-2090"><a href="#Select-2090"><span class="linenos">2090</span></a><span class="sd"> Args:</span> +</span><span id="Select-2091"><a href="#Select-2091"><span class="linenos">2091</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> +</span><span id="Select-2092"><a href="#Select-2092"><span class="linenos">2092</span></a><span class="sd"> This can also be an integer.</span> +</span><span id="Select-2093"><a href="#Select-2093"><span class="linenos">2093</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> +</span><span id="Select-2094"><a href="#Select-2094"><span class="linenos">2094</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> +</span><span id="Select-2095"><a href="#Select-2095"><span class="linenos">2095</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select-2096"><a href="#Select-2096"><span class="linenos">2096</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2097"><a href="#Select-2097"><span class="linenos">2097</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-2098"><a href="#Select-2098"><span class="linenos">2098</span></a> +</span><span id="Select-2099"><a href="#Select-2099"><span class="linenos">2099</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2100"><a href="#Select-2100"><span class="linenos">2100</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2101"><a href="#Select-2101"><span class="linenos">2101</span></a><span class="sd"> """</span> +</span><span id="Select-2102"><a href="#Select-2102"><span class="linenos">2102</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> +</span><span id="Select-2103"><a href="#Select-2103"><span class="linenos">2103</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Select-2104"><a href="#Select-2104"><span class="linenos">2104</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2105"><a href="#Select-2105"><span class="linenos">2105</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"limit"</span><span class="p">,</span> +</span><span id="Select-2106"><a href="#Select-2106"><span class="linenos">2106</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Limit</span><span class="p">,</span> +</span><span id="Select-2107"><a href="#Select-2107"><span class="linenos">2107</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LIMIT"</span><span class="p">,</span> +</span><span id="Select-2108"><a href="#Select-2108"><span class="linenos">2108</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2109"><a href="#Select-2109"><span class="linenos">2109</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2110"><a href="#Select-2110"><span class="linenos">2110</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2111"><a href="#Select-2111"><span class="linenos">2111</span></a> <span class="p">)</span> +</span><span id="Select-2112"><a href="#Select-2112"><span class="linenos">2112</span></a> +</span><span id="Select-2113"><a href="#Select-2113"><span class="linenos">2113</span></a> <span class="k">def</span> <span class="nf">offset</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2114"><a href="#Select-2114"><span class="linenos">2114</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2115"><a href="#Select-2115"><span class="linenos">2115</span></a><span class="sd"> Set the OFFSET expression.</span> +</span><span id="Select-2116"><a href="#Select-2116"><span class="linenos">2116</span></a> +</span><span id="Select-2117"><a href="#Select-2117"><span class="linenos">2117</span></a><span class="sd"> Example:</span> +</span><span id="Select-2118"><a href="#Select-2118"><span class="linenos">2118</span></a><span class="sd"> >>> Select().from_("tbl").select("x").offset(10).sql()</span> +</span><span id="Select-2119"><a href="#Select-2119"><span class="linenos">2119</span></a><span class="sd"> 'SELECT x FROM tbl OFFSET 10'</span> +</span><span id="Select-2120"><a href="#Select-2120"><span class="linenos">2120</span></a> +</span><span id="Select-2121"><a href="#Select-2121"><span class="linenos">2121</span></a><span class="sd"> Args:</span> +</span><span id="Select-2122"><a href="#Select-2122"><span class="linenos">2122</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> +</span><span id="Select-2123"><a href="#Select-2123"><span class="linenos">2123</span></a><span class="sd"> This can also be an integer.</span> +</span><span id="Select-2124"><a href="#Select-2124"><span class="linenos">2124</span></a><span class="sd"> If a `Offset` instance is passed, this is used as-is.</span> +</span><span id="Select-2125"><a href="#Select-2125"><span class="linenos">2125</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Offset`.</span> +</span><span id="Select-2126"><a href="#Select-2126"><span class="linenos">2126</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select-2127"><a href="#Select-2127"><span class="linenos">2127</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2128"><a href="#Select-2128"><span class="linenos">2128</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-2129"><a href="#Select-2129"><span class="linenos">2129</span></a> +</span><span id="Select-2130"><a href="#Select-2130"><span class="linenos">2130</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2131"><a href="#Select-2131"><span class="linenos">2131</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2132"><a href="#Select-2132"><span class="linenos">2132</span></a><span class="sd"> """</span> +</span><span id="Select-2133"><a href="#Select-2133"><span class="linenos">2133</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> +</span><span id="Select-2134"><a href="#Select-2134"><span class="linenos">2134</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Select-2135"><a href="#Select-2135"><span class="linenos">2135</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2136"><a href="#Select-2136"><span class="linenos">2136</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"offset"</span><span class="p">,</span> +</span><span id="Select-2137"><a href="#Select-2137"><span class="linenos">2137</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Offset</span><span class="p">,</span> +</span><span id="Select-2138"><a href="#Select-2138"><span class="linenos">2138</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"OFFSET"</span><span class="p">,</span> +</span><span id="Select-2139"><a href="#Select-2139"><span class="linenos">2139</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2140"><a href="#Select-2140"><span class="linenos">2140</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2141"><a href="#Select-2141"><span class="linenos">2141</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2142"><a href="#Select-2142"><span class="linenos">2142</span></a> <span class="p">)</span> +</span><span id="Select-2143"><a href="#Select-2143"><span class="linenos">2143</span></a> +</span><span id="Select-2144"><a href="#Select-2144"><span class="linenos">2144</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> +</span><span id="Select-2145"><a href="#Select-2145"><span class="linenos">2145</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2146"><a href="#Select-2146"><span class="linenos">2146</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="Select-2147"><a href="#Select-2147"><span class="linenos">2147</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Select-2148"><a href="#Select-2148"><span class="linenos">2148</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Select-2149"><a href="#Select-2149"><span class="linenos">2149</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Select-2150"><a href="#Select-2150"><span class="linenos">2150</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2151"><a href="#Select-2151"><span class="linenos">2151</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2152"><a href="#Select-2152"><span class="linenos">2152</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2153"><a href="#Select-2153"><span class="linenos">2153</span></a><span class="sd"> Append to or set the SELECT expressions.</span> +</span><span id="Select-2154"><a href="#Select-2154"><span class="linenos">2154</span></a> +</span><span id="Select-2155"><a href="#Select-2155"><span class="linenos">2155</span></a><span class="sd"> Example:</span> +</span><span id="Select-2156"><a href="#Select-2156"><span class="linenos">2156</span></a><span class="sd"> >>> Select().select("x", "y").sql()</span> +</span><span id="Select-2157"><a href="#Select-2157"><span class="linenos">2157</span></a><span class="sd"> 'SELECT x, y'</span> +</span><span id="Select-2158"><a href="#Select-2158"><span class="linenos">2158</span></a> +</span><span id="Select-2159"><a href="#Select-2159"><span class="linenos">2159</span></a><span class="sd"> Args:</span> +</span><span id="Select-2160"><a href="#Select-2160"><span class="linenos">2160</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="Select-2161"><a href="#Select-2161"><span class="linenos">2161</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select-2162"><a href="#Select-2162"><span class="linenos">2162</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> +</span><span id="Select-2163"><a href="#Select-2163"><span class="linenos">2163</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Select-2164"><a href="#Select-2164"><span class="linenos">2164</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="Select-2165"><a href="#Select-2165"><span class="linenos">2165</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2166"><a href="#Select-2166"><span class="linenos">2166</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="Select-2167"><a href="#Select-2167"><span class="linenos">2167</span></a> +</span><span id="Select-2168"><a href="#Select-2168"><span class="linenos">2168</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2169"><a href="#Select-2169"><span class="linenos">2169</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2170"><a href="#Select-2170"><span class="linenos">2170</span></a><span class="sd"> """</span> +</span><span id="Select-2171"><a href="#Select-2171"><span class="linenos">2171</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select-2172"><a href="#Select-2172"><span class="linenos">2172</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-2173"><a href="#Select-2173"><span class="linenos">2173</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2174"><a href="#Select-2174"><span class="linenos">2174</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">,</span> +</span><span id="Select-2175"><a href="#Select-2175"><span class="linenos">2175</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2176"><a href="#Select-2176"><span class="linenos">2176</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2177"><a href="#Select-2177"><span class="linenos">2177</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2178"><a href="#Select-2178"><span class="linenos">2178</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2179"><a href="#Select-2179"><span class="linenos">2179</span></a> <span class="p">)</span> +</span><span id="Select-2180"><a href="#Select-2180"><span class="linenos">2180</span></a> +</span><span id="Select-2181"><a href="#Select-2181"><span class="linenos">2181</span></a> <span class="k">def</span> <span class="nf">lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2182"><a href="#Select-2182"><span class="linenos">2182</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2183"><a href="#Select-2183"><span class="linenos">2183</span></a><span class="sd"> Append to or set the LATERAL expressions.</span> +</span><span id="Select-2184"><a href="#Select-2184"><span class="linenos">2184</span></a> +</span><span id="Select-2185"><a href="#Select-2185"><span class="linenos">2185</span></a><span class="sd"> Example:</span> +</span><span id="Select-2186"><a href="#Select-2186"><span class="linenos">2186</span></a><span class="sd"> >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()</span> +</span><span id="Select-2187"><a href="#Select-2187"><span class="linenos">2187</span></a><span class="sd"> 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'</span> </span><span id="Select-2188"><a href="#Select-2188"><span class="linenos">2188</span></a> -</span><span id="Select-2189"><a href="#Select-2189"><span class="linenos">2189</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()</span> -</span><span id="Select-2190"><a href="#Select-2190"><span class="linenos">2190</span></a><span class="sd"> 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'</span> -</span><span id="Select-2191"><a href="#Select-2191"><span class="linenos">2191</span></a> -</span><span id="Select-2192"><a href="#Select-2192"><span class="linenos">2192</span></a><span class="sd"> Args:</span> -</span><span id="Select-2193"><a href="#Select-2193"><span class="linenos">2193</span></a><span class="sd"> expression (str | Expression): the SQL code string to parse.</span> -</span><span id="Select-2194"><a href="#Select-2194"><span class="linenos">2194</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select-2195"><a href="#Select-2195"><span class="linenos">2195</span></a><span class="sd"> on (str | Expression): optionally specify the join "on" criteria as a SQL string.</span> -</span><span id="Select-2196"><a href="#Select-2196"><span class="linenos">2196</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select-2197"><a href="#Select-2197"><span class="linenos">2197</span></a><span class="sd"> using (str | Expression): optionally specify the join "using" criteria as a SQL string.</span> -</span><span id="Select-2198"><a href="#Select-2198"><span class="linenos">2198</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select-2199"><a href="#Select-2199"><span class="linenos">2199</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select-2200"><a href="#Select-2200"><span class="linenos">2200</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Select-2201"><a href="#Select-2201"><span class="linenos">2201</span></a><span class="sd"> join_type (str): If set, alter the parsed join type</span> -</span><span id="Select-2202"><a href="#Select-2202"><span class="linenos">2202</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Select-2203"><a href="#Select-2203"><span class="linenos">2203</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-2204"><a href="#Select-2204"><span class="linenos">2204</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select-2205"><a href="#Select-2205"><span class="linenos">2205</span></a> -</span><span id="Select-2206"><a href="#Select-2206"><span class="linenos">2206</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2207"><a href="#Select-2207"><span class="linenos">2207</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-2208"><a href="#Select-2208"><span class="linenos">2208</span></a><span class="sd"> """</span> -</span><span id="Select-2209"><a href="#Select-2209"><span class="linenos">2209</span></a> <span class="n">parse_args</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">}</span> -</span><span id="Select-2210"><a href="#Select-2210"><span class="linenos">2210</span></a> -</span><span id="Select-2211"><a href="#Select-2211"><span class="linenos">2211</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Select-2212"><a href="#Select-2212"><span class="linenos">2212</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Join</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"JOIN"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> -</span><span id="Select-2213"><a href="#Select-2213"><span class="linenos">2213</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="Select-2214"><a href="#Select-2214"><span class="linenos">2214</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="p">(</span><span class="n">Join</span><span class="p">,</span> <span class="n">Expression</span><span class="p">),</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> -</span><span id="Select-2215"><a href="#Select-2215"><span class="linenos">2215</span></a> -</span><span id="Select-2216"><a href="#Select-2216"><span class="linenos">2216</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">expression</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Join</span><span class="p">)</span> <span class="k">else</span> <span class="n">Join</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Select-2217"><a href="#Select-2217"><span class="linenos">2217</span></a> -</span><span id="Select-2218"><a href="#Select-2218"><span class="linenos">2218</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Select</span><span class="p">):</span> -</span><span id="Select-2219"><a href="#Select-2219"><span class="linenos">2219</span></a> <span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">subquery</span><span class="p">())</span> -</span><span id="Select-2220"><a href="#Select-2220"><span class="linenos">2220</span></a> -</span><span id="Select-2221"><a href="#Select-2221"><span class="linenos">2221</span></a> <span class="k">if</span> <span class="n">join_type</span><span class="p">:</span> -</span><span id="Select-2222"><a href="#Select-2222"><span class="linenos">2222</span></a> <span class="n">natural</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> -</span><span id="Select-2223"><a href="#Select-2223"><span class="linenos">2223</span></a> <span class="n">side</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> -</span><span id="Select-2224"><a href="#Select-2224"><span class="linenos">2224</span></a> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> -</span><span id="Select-2225"><a href="#Select-2225"><span class="linenos">2225</span></a> -</span><span id="Select-2226"><a href="#Select-2226"><span class="linenos">2226</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">join_type</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="s2">"JOIN_TYPE"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Select-2189"><a href="#Select-2189"><span class="linenos">2189</span></a><span class="sd"> Args:</span> +</span><span id="Select-2190"><a href="#Select-2190"><span class="linenos">2190</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select-2191"><a href="#Select-2191"><span class="linenos">2191</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select-2192"><a href="#Select-2192"><span class="linenos">2192</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select-2193"><a href="#Select-2193"><span class="linenos">2193</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Select-2194"><a href="#Select-2194"><span class="linenos">2194</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Select-2195"><a href="#Select-2195"><span class="linenos">2195</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2196"><a href="#Select-2196"><span class="linenos">2196</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-2197"><a href="#Select-2197"><span class="linenos">2197</span></a> +</span><span id="Select-2198"><a href="#Select-2198"><span class="linenos">2198</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2199"><a href="#Select-2199"><span class="linenos">2199</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2200"><a href="#Select-2200"><span class="linenos">2200</span></a><span class="sd"> """</span> +</span><span id="Select-2201"><a href="#Select-2201"><span class="linenos">2201</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select-2202"><a href="#Select-2202"><span class="linenos">2202</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-2203"><a href="#Select-2203"><span class="linenos">2203</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2204"><a href="#Select-2204"><span class="linenos">2204</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> +</span><span id="Select-2205"><a href="#Select-2205"><span class="linenos">2205</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2206"><a href="#Select-2206"><span class="linenos">2206</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Lateral</span><span class="p">,</span> +</span><span id="Select-2207"><a href="#Select-2207"><span class="linenos">2207</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LATERAL VIEW"</span><span class="p">,</span> +</span><span id="Select-2208"><a href="#Select-2208"><span class="linenos">2208</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2209"><a href="#Select-2209"><span class="linenos">2209</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2210"><a href="#Select-2210"><span class="linenos">2210</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2211"><a href="#Select-2211"><span class="linenos">2211</span></a> <span class="p">)</span> +</span><span id="Select-2212"><a href="#Select-2212"><span class="linenos">2212</span></a> +</span><span id="Select-2213"><a href="#Select-2213"><span class="linenos">2213</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> +</span><span id="Select-2214"><a href="#Select-2214"><span class="linenos">2214</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2215"><a href="#Select-2215"><span class="linenos">2215</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Select-2216"><a href="#Select-2216"><span class="linenos">2216</span></a> <span class="n">on</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select-2217"><a href="#Select-2217"><span class="linenos">2217</span></a> <span class="n">using</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select-2218"><a href="#Select-2218"><span class="linenos">2218</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Select-2219"><a href="#Select-2219"><span class="linenos">2219</span></a> <span class="n">join_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select-2220"><a href="#Select-2220"><span class="linenos">2220</span></a> <span class="n">join_alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select-2221"><a href="#Select-2221"><span class="linenos">2221</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select-2222"><a href="#Select-2222"><span class="linenos">2222</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Select-2223"><a href="#Select-2223"><span class="linenos">2223</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2224"><a href="#Select-2224"><span class="linenos">2224</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2225"><a href="#Select-2225"><span class="linenos">2225</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2226"><a href="#Select-2226"><span class="linenos">2226</span></a><span class="sd"> Append to or set the JOIN expressions.</span> </span><span id="Select-2227"><a href="#Select-2227"><span class="linenos">2227</span></a> -</span><span id="Select-2228"><a href="#Select-2228"><span class="linenos">2228</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> -</span><span id="Select-2229"><a href="#Select-2229"><span class="linenos">2229</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"natural"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="Select-2230"><a href="#Select-2230"><span class="linenos">2230</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> -</span><span id="Select-2231"><a href="#Select-2231"><span class="linenos">2231</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"side"</span><span class="p">,</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Select-2232"><a href="#Select-2232"><span class="linenos">2232</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Select-2233"><a href="#Select-2233"><span class="linenos">2233</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Select-2228"><a href="#Select-2228"><span class="linenos">2228</span></a><span class="sd"> Example:</span> +</span><span id="Select-2229"><a href="#Select-2229"><span class="linenos">2229</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()</span> +</span><span id="Select-2230"><a href="#Select-2230"><span class="linenos">2230</span></a><span class="sd"> 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'</span> +</span><span id="Select-2231"><a href="#Select-2231"><span class="linenos">2231</span></a> +</span><span id="Select-2232"><a href="#Select-2232"><span class="linenos">2232</span></a><span class="sd"> >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()</span> +</span><span id="Select-2233"><a href="#Select-2233"><span class="linenos">2233</span></a><span class="sd"> 'SELECT 1 FROM a JOIN b USING (x, y, z)'</span> </span><span id="Select-2234"><a href="#Select-2234"><span class="linenos">2234</span></a> -</span><span id="Select-2235"><a href="#Select-2235"><span class="linenos">2235</span></a> <span class="k">if</span> <span class="n">on</span><span class="p">:</span> -</span><span id="Select-2236"><a href="#Select-2236"><span class="linenos">2236</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">on</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Select-2237"><a href="#Select-2237"><span class="linenos">2237</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="n">on</span><span class="p">)</span> -</span><span id="Select-2238"><a href="#Select-2238"><span class="linenos">2238</span></a> -</span><span id="Select-2239"><a href="#Select-2239"><span class="linenos">2239</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> -</span><span id="Select-2240"><a href="#Select-2240"><span class="linenos">2240</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select-2241"><a href="#Select-2241"><span class="linenos">2241</span></a> <span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">using</span><span class="p">),</span> -</span><span id="Select-2242"><a href="#Select-2242"><span class="linenos">2242</span></a> <span class="n">instance</span><span class="o">=</span><span class="n">join</span><span class="p">,</span> -</span><span id="Select-2243"><a href="#Select-2243"><span class="linenos">2243</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> -</span><span id="Select-2244"><a href="#Select-2244"><span class="linenos">2244</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-2245"><a href="#Select-2245"><span class="linenos">2245</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2246"><a href="#Select-2246"><span class="linenos">2246</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2247"><a href="#Select-2247"><span class="linenos">2247</span></a> <span class="p">)</span> -</span><span id="Select-2248"><a href="#Select-2248"><span class="linenos">2248</span></a> -</span><span id="Select-2249"><a href="#Select-2249"><span class="linenos">2249</span></a> <span class="k">if</span> <span class="n">join_alias</span><span class="p">:</span> -</span><span id="Select-2250"><a href="#Select-2250"><span class="linenos">2250</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">alias_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">join_alias</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Select-2251"><a href="#Select-2251"><span class="linenos">2251</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select-2252"><a href="#Select-2252"><span class="linenos">2252</span></a> <span class="n">join</span><span class="p">,</span> -</span><span id="Select-2253"><a href="#Select-2253"><span class="linenos">2253</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2254"><a href="#Select-2254"><span class="linenos">2254</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> -</span><span id="Select-2255"><a href="#Select-2255"><span class="linenos">2255</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-2256"><a href="#Select-2256"><span class="linenos">2256</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2257"><a href="#Select-2257"><span class="linenos">2257</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2258"><a href="#Select-2258"><span class="linenos">2258</span></a> <span class="p">)</span> -</span><span id="Select-2259"><a href="#Select-2259"><span class="linenos">2259</span></a> -</span><span id="Select-2260"><a href="#Select-2260"><span class="linenos">2260</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2261"><a href="#Select-2261"><span class="linenos">2261</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2262"><a href="#Select-2262"><span class="linenos">2262</span></a><span class="sd"> Append to or set the WHERE expressions.</span> +</span><span id="Select-2235"><a href="#Select-2235"><span class="linenos">2235</span></a><span class="sd"> Use `join_type` to change the type of join:</span> +</span><span id="Select-2236"><a href="#Select-2236"><span class="linenos">2236</span></a> +</span><span id="Select-2237"><a href="#Select-2237"><span class="linenos">2237</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()</span> +</span><span id="Select-2238"><a href="#Select-2238"><span class="linenos">2238</span></a><span class="sd"> 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'</span> +</span><span id="Select-2239"><a href="#Select-2239"><span class="linenos">2239</span></a> +</span><span id="Select-2240"><a href="#Select-2240"><span class="linenos">2240</span></a><span class="sd"> Args:</span> +</span><span id="Select-2241"><a href="#Select-2241"><span class="linenos">2241</span></a><span class="sd"> expression (str | Expression): the SQL code string to parse.</span> +</span><span id="Select-2242"><a href="#Select-2242"><span class="linenos">2242</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select-2243"><a href="#Select-2243"><span class="linenos">2243</span></a><span class="sd"> on (str | Expression): optionally specify the join "on" criteria as a SQL string.</span> +</span><span id="Select-2244"><a href="#Select-2244"><span class="linenos">2244</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select-2245"><a href="#Select-2245"><span class="linenos">2245</span></a><span class="sd"> using (str | Expression): optionally specify the join "using" criteria as a SQL string.</span> +</span><span id="Select-2246"><a href="#Select-2246"><span class="linenos">2246</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select-2247"><a href="#Select-2247"><span class="linenos">2247</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select-2248"><a href="#Select-2248"><span class="linenos">2248</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Select-2249"><a href="#Select-2249"><span class="linenos">2249</span></a><span class="sd"> join_type (str): If set, alter the parsed join type</span> +</span><span id="Select-2250"><a href="#Select-2250"><span class="linenos">2250</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Select-2251"><a href="#Select-2251"><span class="linenos">2251</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2252"><a href="#Select-2252"><span class="linenos">2252</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-2253"><a href="#Select-2253"><span class="linenos">2253</span></a> +</span><span id="Select-2254"><a href="#Select-2254"><span class="linenos">2254</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2255"><a href="#Select-2255"><span class="linenos">2255</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2256"><a href="#Select-2256"><span class="linenos">2256</span></a><span class="sd"> """</span> +</span><span id="Select-2257"><a href="#Select-2257"><span class="linenos">2257</span></a> <span class="n">parse_args</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">}</span> +</span><span id="Select-2258"><a href="#Select-2258"><span class="linenos">2258</span></a> +</span><span id="Select-2259"><a href="#Select-2259"><span class="linenos">2259</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Select-2260"><a href="#Select-2260"><span class="linenos">2260</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Join</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"JOIN"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> +</span><span id="Select-2261"><a href="#Select-2261"><span class="linenos">2261</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="Select-2262"><a href="#Select-2262"><span class="linenos">2262</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="p">(</span><span class="n">Join</span><span class="p">,</span> <span class="n">Expression</span><span class="p">),</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> </span><span id="Select-2263"><a href="#Select-2263"><span class="linenos">2263</span></a> -</span><span id="Select-2264"><a href="#Select-2264"><span class="linenos">2264</span></a><span class="sd"> Example:</span> -</span><span id="Select-2265"><a href="#Select-2265"><span class="linenos">2265</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()</span> -</span><span id="Select-2266"><a href="#Select-2266"><span class="linenos">2266</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"</span> -</span><span id="Select-2267"><a href="#Select-2267"><span class="linenos">2267</span></a> -</span><span id="Select-2268"><a href="#Select-2268"><span class="linenos">2268</span></a><span class="sd"> Args:</span> -</span><span id="Select-2269"><a href="#Select-2269"><span class="linenos">2269</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select-2270"><a href="#Select-2270"><span class="linenos">2270</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select-2271"><a href="#Select-2271"><span class="linenos">2271</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> -</span><span id="Select-2272"><a href="#Select-2272"><span class="linenos">2272</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> -</span><span id="Select-2273"><a href="#Select-2273"><span class="linenos">2273</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="Select-2274"><a href="#Select-2274"><span class="linenos">2274</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Select-2275"><a href="#Select-2275"><span class="linenos">2275</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-2276"><a href="#Select-2276"><span class="linenos">2276</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select-2277"><a href="#Select-2277"><span class="linenos">2277</span></a> -</span><span id="Select-2278"><a href="#Select-2278"><span class="linenos">2278</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2279"><a href="#Select-2279"><span class="linenos">2279</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-2280"><a href="#Select-2280"><span class="linenos">2280</span></a><span class="sd"> """</span> -</span><span id="Select-2281"><a href="#Select-2281"><span class="linenos">2281</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="Select-2282"><a href="#Select-2282"><span class="linenos">2282</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-2283"><a href="#Select-2283"><span class="linenos">2283</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2284"><a href="#Select-2284"><span class="linenos">2284</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"where"</span><span class="p">,</span> -</span><span id="Select-2285"><a href="#Select-2285"><span class="linenos">2285</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-2286"><a href="#Select-2286"><span class="linenos">2286</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> -</span><span id="Select-2287"><a href="#Select-2287"><span class="linenos">2287</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-2288"><a href="#Select-2288"><span class="linenos">2288</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2289"><a href="#Select-2289"><span class="linenos">2289</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2290"><a href="#Select-2290"><span class="linenos">2290</span></a> <span class="p">)</span> -</span><span id="Select-2291"><a href="#Select-2291"><span class="linenos">2291</span></a> -</span><span id="Select-2292"><a href="#Select-2292"><span class="linenos">2292</span></a> <span class="k">def</span> <span class="nf">having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2293"><a href="#Select-2293"><span class="linenos">2293</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2294"><a href="#Select-2294"><span class="linenos">2294</span></a><span class="sd"> Append to or set the HAVING expressions.</span> -</span><span id="Select-2295"><a href="#Select-2295"><span class="linenos">2295</span></a> -</span><span id="Select-2296"><a href="#Select-2296"><span class="linenos">2296</span></a><span class="sd"> Example:</span> -</span><span id="Select-2297"><a href="#Select-2297"><span class="linenos">2297</span></a><span class="sd"> >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()</span> -</span><span id="Select-2298"><a href="#Select-2298"><span class="linenos">2298</span></a><span class="sd"> 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'</span> -</span><span id="Select-2299"><a href="#Select-2299"><span class="linenos">2299</span></a> -</span><span id="Select-2300"><a href="#Select-2300"><span class="linenos">2300</span></a><span class="sd"> Args:</span> -</span><span id="Select-2301"><a href="#Select-2301"><span class="linenos">2301</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select-2302"><a href="#Select-2302"><span class="linenos">2302</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select-2303"><a href="#Select-2303"><span class="linenos">2303</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> -</span><span id="Select-2304"><a href="#Select-2304"><span class="linenos">2304</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> -</span><span id="Select-2305"><a href="#Select-2305"><span class="linenos">2305</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="Select-2306"><a href="#Select-2306"><span class="linenos">2306</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Select-2307"><a href="#Select-2307"><span class="linenos">2307</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-2308"><a href="#Select-2308"><span class="linenos">2308</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select-2309"><a href="#Select-2309"><span class="linenos">2309</span></a> -</span><span id="Select-2310"><a href="#Select-2310"><span class="linenos">2310</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2311"><a href="#Select-2311"><span class="linenos">2311</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-2312"><a href="#Select-2312"><span class="linenos">2312</span></a><span class="sd"> """</span> -</span><span id="Select-2313"><a href="#Select-2313"><span class="linenos">2313</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="Select-2314"><a href="#Select-2314"><span class="linenos">2314</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-2315"><a href="#Select-2315"><span class="linenos">2315</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2316"><a href="#Select-2316"><span class="linenos">2316</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"having"</span><span class="p">,</span> -</span><span id="Select-2317"><a href="#Select-2317"><span class="linenos">2317</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-2318"><a href="#Select-2318"><span class="linenos">2318</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Having</span><span class="p">,</span> -</span><span id="Select-2319"><a href="#Select-2319"><span class="linenos">2319</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-2320"><a href="#Select-2320"><span class="linenos">2320</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2321"><a href="#Select-2321"><span class="linenos">2321</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2322"><a href="#Select-2322"><span class="linenos">2322</span></a> <span class="p">)</span> -</span><span id="Select-2323"><a href="#Select-2323"><span class="linenos">2323</span></a> -</span><span id="Select-2324"><a href="#Select-2324"><span class="linenos">2324</span></a> <span class="k">def</span> <span class="nf">window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2325"><a href="#Select-2325"><span class="linenos">2325</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select-2326"><a href="#Select-2326"><span class="linenos">2326</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select-2327"><a href="#Select-2327"><span class="linenos">2327</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select-2328"><a href="#Select-2328"><span class="linenos">2328</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"windows"</span><span class="p">,</span> -</span><span id="Select-2329"><a href="#Select-2329"><span class="linenos">2329</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select-2330"><a href="#Select-2330"><span class="linenos">2330</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Window</span><span class="p">,</span> -</span><span id="Select-2331"><a href="#Select-2331"><span class="linenos">2331</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-2332"><a href="#Select-2332"><span class="linenos">2332</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select-2333"><a href="#Select-2333"><span class="linenos">2333</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2334"><a href="#Select-2334"><span class="linenos">2334</span></a> <span class="p">)</span> -</span><span id="Select-2335"><a href="#Select-2335"><span class="linenos">2335</span></a> -</span><span id="Select-2336"><a href="#Select-2336"><span class="linenos">2336</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2337"><a href="#Select-2337"><span class="linenos">2337</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2338"><a href="#Select-2338"><span class="linenos">2338</span></a><span class="sd"> Set the OFFSET expression.</span> +</span><span id="Select-2264"><a href="#Select-2264"><span class="linenos">2264</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">expression</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Join</span><span class="p">)</span> <span class="k">else</span> <span class="n">Join</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Select-2265"><a href="#Select-2265"><span class="linenos">2265</span></a> +</span><span id="Select-2266"><a href="#Select-2266"><span class="linenos">2266</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Select</span><span class="p">):</span> +</span><span id="Select-2267"><a href="#Select-2267"><span class="linenos">2267</span></a> <span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">subquery</span><span class="p">())</span> +</span><span id="Select-2268"><a href="#Select-2268"><span class="linenos">2268</span></a> +</span><span id="Select-2269"><a href="#Select-2269"><span class="linenos">2269</span></a> <span class="k">if</span> <span class="n">join_type</span><span class="p">:</span> +</span><span id="Select-2270"><a href="#Select-2270"><span class="linenos">2270</span></a> <span class="n">natural</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> +</span><span id="Select-2271"><a href="#Select-2271"><span class="linenos">2271</span></a> <span class="n">side</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> +</span><span id="Select-2272"><a href="#Select-2272"><span class="linenos">2272</span></a> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> +</span><span id="Select-2273"><a href="#Select-2273"><span class="linenos">2273</span></a> +</span><span id="Select-2274"><a href="#Select-2274"><span class="linenos">2274</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">join_type</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="s2">"JOIN_TYPE"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Select-2275"><a href="#Select-2275"><span class="linenos">2275</span></a> +</span><span id="Select-2276"><a href="#Select-2276"><span class="linenos">2276</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> +</span><span id="Select-2277"><a href="#Select-2277"><span class="linenos">2277</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"natural"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="Select-2278"><a href="#Select-2278"><span class="linenos">2278</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> +</span><span id="Select-2279"><a href="#Select-2279"><span class="linenos">2279</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"side"</span><span class="p">,</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Select-2280"><a href="#Select-2280"><span class="linenos">2280</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Select-2281"><a href="#Select-2281"><span class="linenos">2281</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Select-2282"><a href="#Select-2282"><span class="linenos">2282</span></a> +</span><span id="Select-2283"><a href="#Select-2283"><span class="linenos">2283</span></a> <span class="k">if</span> <span class="n">on</span><span class="p">:</span> +</span><span id="Select-2284"><a href="#Select-2284"><span class="linenos">2284</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">on</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Select-2285"><a href="#Select-2285"><span class="linenos">2285</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="n">on</span><span class="p">)</span> +</span><span id="Select-2286"><a href="#Select-2286"><span class="linenos">2286</span></a> +</span><span id="Select-2287"><a href="#Select-2287"><span class="linenos">2287</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> +</span><span id="Select-2288"><a href="#Select-2288"><span class="linenos">2288</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select-2289"><a href="#Select-2289"><span class="linenos">2289</span></a> <span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">using</span><span class="p">),</span> +</span><span id="Select-2290"><a href="#Select-2290"><span class="linenos">2290</span></a> <span class="n">instance</span><span class="o">=</span><span class="n">join</span><span class="p">,</span> +</span><span id="Select-2291"><a href="#Select-2291"><span class="linenos">2291</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> +</span><span id="Select-2292"><a href="#Select-2292"><span class="linenos">2292</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2293"><a href="#Select-2293"><span class="linenos">2293</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2294"><a href="#Select-2294"><span class="linenos">2294</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2295"><a href="#Select-2295"><span class="linenos">2295</span></a> <span class="p">)</span> +</span><span id="Select-2296"><a href="#Select-2296"><span class="linenos">2296</span></a> +</span><span id="Select-2297"><a href="#Select-2297"><span class="linenos">2297</span></a> <span class="k">if</span> <span class="n">join_alias</span><span class="p">:</span> +</span><span id="Select-2298"><a href="#Select-2298"><span class="linenos">2298</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">alias_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">join_alias</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Select-2299"><a href="#Select-2299"><span class="linenos">2299</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select-2300"><a href="#Select-2300"><span class="linenos">2300</span></a> <span class="n">join</span><span class="p">,</span> +</span><span id="Select-2301"><a href="#Select-2301"><span class="linenos">2301</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2302"><a href="#Select-2302"><span class="linenos">2302</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> +</span><span id="Select-2303"><a href="#Select-2303"><span class="linenos">2303</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2304"><a href="#Select-2304"><span class="linenos">2304</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2305"><a href="#Select-2305"><span class="linenos">2305</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2306"><a href="#Select-2306"><span class="linenos">2306</span></a> <span class="p">)</span> +</span><span id="Select-2307"><a href="#Select-2307"><span class="linenos">2307</span></a> +</span><span id="Select-2308"><a href="#Select-2308"><span class="linenos">2308</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2309"><a href="#Select-2309"><span class="linenos">2309</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2310"><a href="#Select-2310"><span class="linenos">2310</span></a><span class="sd"> Append to or set the WHERE expressions.</span> +</span><span id="Select-2311"><a href="#Select-2311"><span class="linenos">2311</span></a> +</span><span id="Select-2312"><a href="#Select-2312"><span class="linenos">2312</span></a><span class="sd"> Example:</span> +</span><span id="Select-2313"><a href="#Select-2313"><span class="linenos">2313</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()</span> +</span><span id="Select-2314"><a href="#Select-2314"><span class="linenos">2314</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"</span> +</span><span id="Select-2315"><a href="#Select-2315"><span class="linenos">2315</span></a> +</span><span id="Select-2316"><a href="#Select-2316"><span class="linenos">2316</span></a><span class="sd"> Args:</span> +</span><span id="Select-2317"><a href="#Select-2317"><span class="linenos">2317</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select-2318"><a href="#Select-2318"><span class="linenos">2318</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select-2319"><a href="#Select-2319"><span class="linenos">2319</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> +</span><span id="Select-2320"><a href="#Select-2320"><span class="linenos">2320</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> +</span><span id="Select-2321"><a href="#Select-2321"><span class="linenos">2321</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="Select-2322"><a href="#Select-2322"><span class="linenos">2322</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Select-2323"><a href="#Select-2323"><span class="linenos">2323</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2324"><a href="#Select-2324"><span class="linenos">2324</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-2325"><a href="#Select-2325"><span class="linenos">2325</span></a> +</span><span id="Select-2326"><a href="#Select-2326"><span class="linenos">2326</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2327"><a href="#Select-2327"><span class="linenos">2327</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2328"><a href="#Select-2328"><span class="linenos">2328</span></a><span class="sd"> """</span> +</span><span id="Select-2329"><a href="#Select-2329"><span class="linenos">2329</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="Select-2330"><a href="#Select-2330"><span class="linenos">2330</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-2331"><a href="#Select-2331"><span class="linenos">2331</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2332"><a href="#Select-2332"><span class="linenos">2332</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"where"</span><span class="p">,</span> +</span><span id="Select-2333"><a href="#Select-2333"><span class="linenos">2333</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2334"><a href="#Select-2334"><span class="linenos">2334</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> +</span><span id="Select-2335"><a href="#Select-2335"><span class="linenos">2335</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2336"><a href="#Select-2336"><span class="linenos">2336</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2337"><a href="#Select-2337"><span class="linenos">2337</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2338"><a href="#Select-2338"><span class="linenos">2338</span></a> <span class="p">)</span> </span><span id="Select-2339"><a href="#Select-2339"><span class="linenos">2339</span></a> -</span><span id="Select-2340"><a href="#Select-2340"><span class="linenos">2340</span></a><span class="sd"> Example:</span> -</span><span id="Select-2341"><a href="#Select-2341"><span class="linenos">2341</span></a><span class="sd"> >>> Select().from_("tbl").select("x").distinct().sql()</span> -</span><span id="Select-2342"><a href="#Select-2342"><span class="linenos">2342</span></a><span class="sd"> 'SELECT DISTINCT x FROM tbl'</span> +</span><span id="Select-2340"><a href="#Select-2340"><span class="linenos">2340</span></a> <span class="k">def</span> <span class="nf">having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2341"><a href="#Select-2341"><span class="linenos">2341</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2342"><a href="#Select-2342"><span class="linenos">2342</span></a><span class="sd"> Append to or set the HAVING expressions.</span> </span><span id="Select-2343"><a href="#Select-2343"><span class="linenos">2343</span></a> -</span><span id="Select-2344"><a href="#Select-2344"><span class="linenos">2344</span></a><span class="sd"> Args:</span> -</span><span id="Select-2345"><a href="#Select-2345"><span class="linenos">2345</span></a><span class="sd"> distinct (bool): whether the Select should be distinct</span> -</span><span id="Select-2346"><a href="#Select-2346"><span class="linenos">2346</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2344"><a href="#Select-2344"><span class="linenos">2344</span></a><span class="sd"> Example:</span> +</span><span id="Select-2345"><a href="#Select-2345"><span class="linenos">2345</span></a><span class="sd"> >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()</span> +</span><span id="Select-2346"><a href="#Select-2346"><span class="linenos">2346</span></a><span class="sd"> 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'</span> </span><span id="Select-2347"><a href="#Select-2347"><span class="linenos">2347</span></a> -</span><span id="Select-2348"><a href="#Select-2348"><span class="linenos">2348</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2349"><a href="#Select-2349"><span class="linenos">2349</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select-2350"><a href="#Select-2350"><span class="linenos">2350</span></a><span class="sd"> """</span> -</span><span id="Select-2351"><a href="#Select-2351"><span class="linenos">2351</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Select-2352"><a href="#Select-2352"><span class="linenos">2352</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">,</span> <span class="n">Distinct</span><span class="p">()</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Select-2353"><a href="#Select-2353"><span class="linenos">2353</span></a> <span class="k">return</span> <span class="n">instance</span> -</span><span id="Select-2354"><a href="#Select-2354"><span class="linenos">2354</span></a> -</span><span id="Select-2355"><a href="#Select-2355"><span class="linenos">2355</span></a> <span class="k">def</span> <span class="nf">ctas</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Create</span><span class="p">:</span> -</span><span id="Select-2356"><a href="#Select-2356"><span class="linenos">2356</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2357"><a href="#Select-2357"><span class="linenos">2357</span></a><span class="sd"> Convert this expression to a CREATE TABLE AS statement.</span> -</span><span id="Select-2358"><a href="#Select-2358"><span class="linenos">2358</span></a> -</span><span id="Select-2359"><a href="#Select-2359"><span class="linenos">2359</span></a><span class="sd"> Example:</span> -</span><span id="Select-2360"><a href="#Select-2360"><span class="linenos">2360</span></a><span class="sd"> >>> Select().select("*").from_("tbl").ctas("x").sql()</span> -</span><span id="Select-2361"><a href="#Select-2361"><span class="linenos">2361</span></a><span class="sd"> 'CREATE TABLE x AS SELECT * FROM tbl'</span> -</span><span id="Select-2362"><a href="#Select-2362"><span class="linenos">2362</span></a> -</span><span id="Select-2363"><a href="#Select-2363"><span class="linenos">2363</span></a><span class="sd"> Args:</span> -</span><span id="Select-2364"><a href="#Select-2364"><span class="linenos">2364</span></a><span class="sd"> table (str | Expression): the SQL code string to parse as the table name.</span> -</span><span id="Select-2365"><a href="#Select-2365"><span class="linenos">2365</span></a><span class="sd"> If another `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select-2366"><a href="#Select-2366"><span class="linenos">2366</span></a><span class="sd"> properties (dict): an optional mapping of table properties</span> -</span><span id="Select-2367"><a href="#Select-2367"><span class="linenos">2367</span></a><span class="sd"> dialect (str): the dialect used to parse the input table.</span> -</span><span id="Select-2368"><a href="#Select-2368"><span class="linenos">2368</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select-2369"><a href="#Select-2369"><span class="linenos">2369</span></a><span class="sd"> opts (kwargs): other options to use to parse the input table.</span> -</span><span id="Select-2370"><a href="#Select-2370"><span class="linenos">2370</span></a> -</span><span id="Select-2371"><a href="#Select-2371"><span class="linenos">2371</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2372"><a href="#Select-2372"><span class="linenos">2372</span></a><span class="sd"> Create: the CREATE TABLE AS expression</span> -</span><span id="Select-2373"><a href="#Select-2373"><span class="linenos">2373</span></a><span class="sd"> """</span> -</span><span id="Select-2374"><a href="#Select-2374"><span class="linenos">2374</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Select-2375"><a href="#Select-2375"><span class="linenos">2375</span></a> <span class="n">table_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="Select-2376"><a href="#Select-2376"><span class="linenos">2376</span></a> <span class="n">table</span><span class="p">,</span> -</span><span id="Select-2377"><a href="#Select-2377"><span class="linenos">2377</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> -</span><span id="Select-2378"><a href="#Select-2378"><span class="linenos">2378</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select-2379"><a href="#Select-2379"><span class="linenos">2379</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select-2380"><a href="#Select-2380"><span class="linenos">2380</span></a> <span class="p">)</span> -</span><span id="Select-2381"><a href="#Select-2381"><span class="linenos">2381</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Select-2382"><a href="#Select-2382"><span class="linenos">2382</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> -</span><span id="Select-2383"><a href="#Select-2383"><span class="linenos">2383</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> -</span><span id="Select-2384"><a href="#Select-2384"><span class="linenos">2384</span></a> -</span><span id="Select-2385"><a href="#Select-2385"><span class="linenos">2385</span></a> <span class="k">return</span> <span class="n">Create</span><span class="p">(</span> -</span><span id="Select-2386"><a href="#Select-2386"><span class="linenos">2386</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table_expression</span><span class="p">,</span> -</span><span id="Select-2387"><a href="#Select-2387"><span class="linenos">2387</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"table"</span><span class="p">,</span> -</span><span id="Select-2388"><a href="#Select-2388"><span class="linenos">2388</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> -</span><span id="Select-2389"><a href="#Select-2389"><span class="linenos">2389</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties_expression</span><span class="p">,</span> -</span><span id="Select-2390"><a href="#Select-2390"><span class="linenos">2390</span></a> <span class="p">)</span> +</span><span id="Select-2348"><a href="#Select-2348"><span class="linenos">2348</span></a><span class="sd"> Args:</span> +</span><span id="Select-2349"><a href="#Select-2349"><span class="linenos">2349</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select-2350"><a href="#Select-2350"><span class="linenos">2350</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select-2351"><a href="#Select-2351"><span class="linenos">2351</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> +</span><span id="Select-2352"><a href="#Select-2352"><span class="linenos">2352</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> +</span><span id="Select-2353"><a href="#Select-2353"><span class="linenos">2353</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="Select-2354"><a href="#Select-2354"><span class="linenos">2354</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Select-2355"><a href="#Select-2355"><span class="linenos">2355</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2356"><a href="#Select-2356"><span class="linenos">2356</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select-2357"><a href="#Select-2357"><span class="linenos">2357</span></a> +</span><span id="Select-2358"><a href="#Select-2358"><span class="linenos">2358</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2359"><a href="#Select-2359"><span class="linenos">2359</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2360"><a href="#Select-2360"><span class="linenos">2360</span></a><span class="sd"> """</span> +</span><span id="Select-2361"><a href="#Select-2361"><span class="linenos">2361</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="Select-2362"><a href="#Select-2362"><span class="linenos">2362</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-2363"><a href="#Select-2363"><span class="linenos">2363</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2364"><a href="#Select-2364"><span class="linenos">2364</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"having"</span><span class="p">,</span> +</span><span id="Select-2365"><a href="#Select-2365"><span class="linenos">2365</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2366"><a href="#Select-2366"><span class="linenos">2366</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Having</span><span class="p">,</span> +</span><span id="Select-2367"><a href="#Select-2367"><span class="linenos">2367</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2368"><a href="#Select-2368"><span class="linenos">2368</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2369"><a href="#Select-2369"><span class="linenos">2369</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2370"><a href="#Select-2370"><span class="linenos">2370</span></a> <span class="p">)</span> +</span><span id="Select-2371"><a href="#Select-2371"><span class="linenos">2371</span></a> +</span><span id="Select-2372"><a href="#Select-2372"><span class="linenos">2372</span></a> <span class="k">def</span> <span class="nf">window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2373"><a href="#Select-2373"><span class="linenos">2373</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select-2374"><a href="#Select-2374"><span class="linenos">2374</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select-2375"><a href="#Select-2375"><span class="linenos">2375</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select-2376"><a href="#Select-2376"><span class="linenos">2376</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"windows"</span><span class="p">,</span> +</span><span id="Select-2377"><a href="#Select-2377"><span class="linenos">2377</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select-2378"><a href="#Select-2378"><span class="linenos">2378</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Window</span><span class="p">,</span> +</span><span id="Select-2379"><a href="#Select-2379"><span class="linenos">2379</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2380"><a href="#Select-2380"><span class="linenos">2380</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select-2381"><a href="#Select-2381"><span class="linenos">2381</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2382"><a href="#Select-2382"><span class="linenos">2382</span></a> <span class="p">)</span> +</span><span id="Select-2383"><a href="#Select-2383"><span class="linenos">2383</span></a> +</span><span id="Select-2384"><a href="#Select-2384"><span class="linenos">2384</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2385"><a href="#Select-2385"><span class="linenos">2385</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2386"><a href="#Select-2386"><span class="linenos">2386</span></a><span class="sd"> Set the OFFSET expression.</span> +</span><span id="Select-2387"><a href="#Select-2387"><span class="linenos">2387</span></a> +</span><span id="Select-2388"><a href="#Select-2388"><span class="linenos">2388</span></a><span class="sd"> Example:</span> +</span><span id="Select-2389"><a href="#Select-2389"><span class="linenos">2389</span></a><span class="sd"> >>> Select().from_("tbl").select("x").distinct().sql()</span> +</span><span id="Select-2390"><a href="#Select-2390"><span class="linenos">2390</span></a><span class="sd"> 'SELECT DISTINCT x FROM tbl'</span> </span><span id="Select-2391"><a href="#Select-2391"><span class="linenos">2391</span></a> -</span><span id="Select-2392"><a href="#Select-2392"><span class="linenos">2392</span></a> <span class="k">def</span> <span class="nf">lock</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">update</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select-2393"><a href="#Select-2393"><span class="linenos">2393</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select-2394"><a href="#Select-2394"><span class="linenos">2394</span></a><span class="sd"> Set the locking read mode for this expression.</span> +</span><span id="Select-2392"><a href="#Select-2392"><span class="linenos">2392</span></a><span class="sd"> Args:</span> +</span><span id="Select-2393"><a href="#Select-2393"><span class="linenos">2393</span></a><span class="sd"> distinct (bool): whether the Select should be distinct</span> +</span><span id="Select-2394"><a href="#Select-2394"><span class="linenos">2394</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> </span><span id="Select-2395"><a href="#Select-2395"><span class="linenos">2395</span></a> -</span><span id="Select-2396"><a href="#Select-2396"><span class="linenos">2396</span></a><span class="sd"> Examples:</span> -</span><span id="Select-2397"><a href="#Select-2397"><span class="linenos">2397</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")</span> -</span><span id="Select-2398"><a href="#Select-2398"><span class="linenos">2398</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"</span> -</span><span id="Select-2399"><a href="#Select-2399"><span class="linenos">2399</span></a> -</span><span id="Select-2400"><a href="#Select-2400"><span class="linenos">2400</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")</span> -</span><span id="Select-2401"><a href="#Select-2401"><span class="linenos">2401</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"</span> +</span><span id="Select-2396"><a href="#Select-2396"><span class="linenos">2396</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2397"><a href="#Select-2397"><span class="linenos">2397</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select-2398"><a href="#Select-2398"><span class="linenos">2398</span></a><span class="sd"> """</span> +</span><span id="Select-2399"><a href="#Select-2399"><span class="linenos">2399</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Select-2400"><a href="#Select-2400"><span class="linenos">2400</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">,</span> <span class="n">Distinct</span><span class="p">()</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Select-2401"><a href="#Select-2401"><span class="linenos">2401</span></a> <span class="k">return</span> <span class="n">instance</span> </span><span id="Select-2402"><a href="#Select-2402"><span class="linenos">2402</span></a> -</span><span id="Select-2403"><a href="#Select-2403"><span class="linenos">2403</span></a><span class="sd"> Args:</span> -</span><span id="Select-2404"><a href="#Select-2404"><span class="linenos">2404</span></a><span class="sd"> update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.</span> -</span><span id="Select-2405"><a href="#Select-2405"><span class="linenos">2405</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2403"><a href="#Select-2403"><span class="linenos">2403</span></a> <span class="k">def</span> <span class="nf">ctas</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Create</span><span class="p">:</span> +</span><span id="Select-2404"><a href="#Select-2404"><span class="linenos">2404</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2405"><a href="#Select-2405"><span class="linenos">2405</span></a><span class="sd"> Convert this expression to a CREATE TABLE AS statement.</span> </span><span id="Select-2406"><a href="#Select-2406"><span class="linenos">2406</span></a> -</span><span id="Select-2407"><a href="#Select-2407"><span class="linenos">2407</span></a><span class="sd"> Returns:</span> -</span><span id="Select-2408"><a href="#Select-2408"><span class="linenos">2408</span></a><span class="sd"> The modified expression.</span> -</span><span id="Select-2409"><a href="#Select-2409"><span class="linenos">2409</span></a><span class="sd"> """</span> +</span><span id="Select-2407"><a href="#Select-2407"><span class="linenos">2407</span></a><span class="sd"> Example:</span> +</span><span id="Select-2408"><a href="#Select-2408"><span class="linenos">2408</span></a><span class="sd"> >>> Select().select("*").from_("tbl").ctas("x").sql()</span> +</span><span id="Select-2409"><a href="#Select-2409"><span class="linenos">2409</span></a><span class="sd"> 'CREATE TABLE x AS SELECT * FROM tbl'</span> </span><span id="Select-2410"><a href="#Select-2410"><span class="linenos">2410</span></a> -</span><span id="Select-2411"><a href="#Select-2411"><span class="linenos">2411</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Select-2412"><a href="#Select-2412"><span class="linenos">2412</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"lock"</span><span class="p">,</span> <span class="n">Lock</span><span class="p">(</span><span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">))</span> -</span><span id="Select-2413"><a href="#Select-2413"><span class="linenos">2413</span></a> -</span><span id="Select-2414"><a href="#Select-2414"><span class="linenos">2414</span></a> <span class="k">return</span> <span class="n">inst</span> -</span><span id="Select-2415"><a href="#Select-2415"><span class="linenos">2415</span></a> -</span><span id="Select-2416"><a href="#Select-2416"><span class="linenos">2416</span></a> <span class="nd">@property</span> -</span><span id="Select-2417"><a href="#Select-2417"><span class="linenos">2417</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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="Select-2418"><a href="#Select-2418"><span class="linenos">2418</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">output_name</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> -</span><span id="Select-2419"><a href="#Select-2419"><span class="linenos">2419</span></a> -</span><span id="Select-2420"><a href="#Select-2420"><span class="linenos">2420</span></a> <span class="nd">@property</span> -</span><span id="Select-2421"><a href="#Select-2421"><span class="linenos">2421</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Select-2422"><a href="#Select-2422"><span class="linenos">2422</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> +</span><span id="Select-2411"><a href="#Select-2411"><span class="linenos">2411</span></a><span class="sd"> Args:</span> +</span><span id="Select-2412"><a href="#Select-2412"><span class="linenos">2412</span></a><span class="sd"> table (str | Expression): the SQL code string to parse as the table name.</span> +</span><span id="Select-2413"><a href="#Select-2413"><span class="linenos">2413</span></a><span class="sd"> If another `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select-2414"><a href="#Select-2414"><span class="linenos">2414</span></a><span class="sd"> properties (dict): an optional mapping of table properties</span> +</span><span id="Select-2415"><a href="#Select-2415"><span class="linenos">2415</span></a><span class="sd"> dialect (str): the dialect used to parse the input table.</span> +</span><span id="Select-2416"><a href="#Select-2416"><span class="linenos">2416</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2417"><a href="#Select-2417"><span class="linenos">2417</span></a><span class="sd"> opts (kwargs): other options to use to parse the input table.</span> +</span><span id="Select-2418"><a href="#Select-2418"><span class="linenos">2418</span></a> +</span><span id="Select-2419"><a href="#Select-2419"><span class="linenos">2419</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2420"><a href="#Select-2420"><span class="linenos">2420</span></a><span class="sd"> Create: the CREATE TABLE AS expression</span> +</span><span id="Select-2421"><a href="#Select-2421"><span class="linenos">2421</span></a><span class="sd"> """</span> +</span><span id="Select-2422"><a href="#Select-2422"><span class="linenos">2422</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Select-2423"><a href="#Select-2423"><span class="linenos">2423</span></a> <span class="n">table_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="Select-2424"><a href="#Select-2424"><span class="linenos">2424</span></a> <span class="n">table</span><span class="p">,</span> +</span><span id="Select-2425"><a href="#Select-2425"><span class="linenos">2425</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> +</span><span id="Select-2426"><a href="#Select-2426"><span class="linenos">2426</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select-2427"><a href="#Select-2427"><span class="linenos">2427</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select-2428"><a href="#Select-2428"><span class="linenos">2428</span></a> <span class="p">)</span> +</span><span id="Select-2429"><a href="#Select-2429"><span class="linenos">2429</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Select-2430"><a href="#Select-2430"><span class="linenos">2430</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> +</span><span id="Select-2431"><a href="#Select-2431"><span class="linenos">2431</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> +</span><span id="Select-2432"><a href="#Select-2432"><span class="linenos">2432</span></a> +</span><span id="Select-2433"><a href="#Select-2433"><span class="linenos">2433</span></a> <span class="k">return</span> <span class="n">Create</span><span class="p">(</span> +</span><span id="Select-2434"><a href="#Select-2434"><span class="linenos">2434</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table_expression</span><span class="p">,</span> +</span><span id="Select-2435"><a href="#Select-2435"><span class="linenos">2435</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"table"</span><span class="p">,</span> +</span><span id="Select-2436"><a href="#Select-2436"><span class="linenos">2436</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> +</span><span id="Select-2437"><a href="#Select-2437"><span class="linenos">2437</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties_expression</span><span class="p">,</span> +</span><span id="Select-2438"><a href="#Select-2438"><span class="linenos">2438</span></a> <span class="p">)</span> +</span><span id="Select-2439"><a href="#Select-2439"><span class="linenos">2439</span></a> +</span><span id="Select-2440"><a href="#Select-2440"><span class="linenos">2440</span></a> <span class="k">def</span> <span class="nf">lock</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">update</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select-2441"><a href="#Select-2441"><span class="linenos">2441</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select-2442"><a href="#Select-2442"><span class="linenos">2442</span></a><span class="sd"> Set the locking read mode for this expression.</span> +</span><span id="Select-2443"><a href="#Select-2443"><span class="linenos">2443</span></a> +</span><span id="Select-2444"><a href="#Select-2444"><span class="linenos">2444</span></a><span class="sd"> Examples:</span> +</span><span id="Select-2445"><a href="#Select-2445"><span class="linenos">2445</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")</span> +</span><span id="Select-2446"><a href="#Select-2446"><span class="linenos">2446</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"</span> +</span><span id="Select-2447"><a href="#Select-2447"><span class="linenos">2447</span></a> +</span><span id="Select-2448"><a href="#Select-2448"><span class="linenos">2448</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")</span> +</span><span id="Select-2449"><a href="#Select-2449"><span class="linenos">2449</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"</span> +</span><span id="Select-2450"><a href="#Select-2450"><span class="linenos">2450</span></a> +</span><span id="Select-2451"><a href="#Select-2451"><span class="linenos">2451</span></a><span class="sd"> Args:</span> +</span><span id="Select-2452"><a href="#Select-2452"><span class="linenos">2452</span></a><span class="sd"> update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.</span> +</span><span id="Select-2453"><a href="#Select-2453"><span class="linenos">2453</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="Select-2454"><a href="#Select-2454"><span class="linenos">2454</span></a> +</span><span id="Select-2455"><a href="#Select-2455"><span class="linenos">2455</span></a><span class="sd"> Returns:</span> +</span><span id="Select-2456"><a href="#Select-2456"><span class="linenos">2456</span></a><span class="sd"> The modified expression.</span> +</span><span id="Select-2457"><a href="#Select-2457"><span class="linenos">2457</span></a><span class="sd"> """</span> +</span><span id="Select-2458"><a href="#Select-2458"><span class="linenos">2458</span></a> +</span><span id="Select-2459"><a href="#Select-2459"><span class="linenos">2459</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Select-2460"><a href="#Select-2460"><span class="linenos">2460</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"lock"</span><span class="p">,</span> <span class="n">Lock</span><span class="p">(</span><span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">))</span> +</span><span id="Select-2461"><a href="#Select-2461"><span class="linenos">2461</span></a> +</span><span id="Select-2462"><a href="#Select-2462"><span class="linenos">2462</span></a> <span class="k">return</span> <span class="n">inst</span> +</span><span id="Select-2463"><a href="#Select-2463"><span class="linenos">2463</span></a> +</span><span id="Select-2464"><a href="#Select-2464"><span class="linenos">2464</span></a> <span class="nd">@property</span> +</span><span id="Select-2465"><a href="#Select-2465"><span class="linenos">2465</span></a> <span class="k">def</span> <span class="nf">named_selects</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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="Select-2466"><a href="#Select-2466"><span class="linenos">2466</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">e</span><span class="o">.</span><span class="n">output_name</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">]</span> +</span><span id="Select-2467"><a href="#Select-2467"><span class="linenos">2467</span></a> +</span><span id="Select-2468"><a href="#Select-2468"><span class="linenos">2468</span></a> <span class="nd">@property</span> +</span><span id="Select-2469"><a href="#Select-2469"><span class="linenos">2469</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Select-2470"><a href="#Select-2470"><span class="linenos">2470</span></a> <span class="k">return</span> <span class="nb">any</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">is_star</span> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Select-2471"><a href="#Select-2471"><span class="linenos">2471</span></a> +</span><span id="Select-2472"><a href="#Select-2472"><span class="linenos">2472</span></a> <span class="nd">@property</span> +</span><span id="Select-2473"><a href="#Select-2473"><span class="linenos">2473</span></a> <span class="k">def</span> <span class="nf">selects</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Select-2474"><a href="#Select-2474"><span class="linenos">2474</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> </span></pre></div> @@ -19844,38 +20632,38 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Select.from_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.from_-1866"><a href="#Select.from_-1866"><span class="linenos">1866</span></a> <span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.from_-1867"><a href="#Select.from_-1867"><span class="linenos">1867</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.from_-1868"><a href="#Select.from_-1868"><span class="linenos">1868</span></a><span class="sd"> Set the FROM expression.</span> -</span><span id="Select.from_-1869"><a href="#Select.from_-1869"><span class="linenos">1869</span></a> -</span><span id="Select.from_-1870"><a href="#Select.from_-1870"><span class="linenos">1870</span></a><span class="sd"> Example:</span> -</span><span id="Select.from_-1871"><a href="#Select.from_-1871"><span class="linenos">1871</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sql()</span> -</span><span id="Select.from_-1872"><a href="#Select.from_-1872"><span class="linenos">1872</span></a><span class="sd"> 'SELECT x FROM tbl'</span> -</span><span id="Select.from_-1873"><a href="#Select.from_-1873"><span class="linenos">1873</span></a> -</span><span id="Select.from_-1874"><a href="#Select.from_-1874"><span class="linenos">1874</span></a><span class="sd"> Args:</span> -</span><span id="Select.from_-1875"><a href="#Select.from_-1875"><span class="linenos">1875</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select.from_-1876"><a href="#Select.from_-1876"><span class="linenos">1876</span></a><span class="sd"> If a `From` instance is passed, this is used as-is.</span> -</span><span id="Select.from_-1877"><a href="#Select.from_-1877"><span class="linenos">1877</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `From`.</span> -</span><span id="Select.from_-1878"><a href="#Select.from_-1878"><span class="linenos">1878</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select.from_-1879"><a href="#Select.from_-1879"><span class="linenos">1879</span></a><span class="sd"> Otherwise, this flattens all the `From` expression into a single expression.</span> -</span><span id="Select.from_-1880"><a href="#Select.from_-1880"><span class="linenos">1880</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select.from_-1881"><a href="#Select.from_-1881"><span class="linenos">1881</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.from_-1882"><a href="#Select.from_-1882"><span class="linenos">1882</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.from_-1883"><a href="#Select.from_-1883"><span class="linenos">1883</span></a> -</span><span id="Select.from_-1884"><a href="#Select.from_-1884"><span class="linenos">1884</span></a><span class="sd"> Returns:</span> -</span><span id="Select.from_-1885"><a href="#Select.from_-1885"><span class="linenos">1885</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.from_-1886"><a href="#Select.from_-1886"><span class="linenos">1886</span></a><span class="sd"> """</span> -</span><span id="Select.from_-1887"><a href="#Select.from_-1887"><span class="linenos">1887</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select.from_-1888"><a href="#Select.from_-1888"><span class="linenos">1888</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.from_-1889"><a href="#Select.from_-1889"><span class="linenos">1889</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.from_-1890"><a href="#Select.from_-1890"><span class="linenos">1890</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"from"</span><span class="p">,</span> -</span><span id="Select.from_-1891"><a href="#Select.from_-1891"><span class="linenos">1891</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.from_-1892"><a href="#Select.from_-1892"><span class="linenos">1892</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.from_-1893"><a href="#Select.from_-1893"><span class="linenos">1893</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> -</span><span id="Select.from_-1894"><a href="#Select.from_-1894"><span class="linenos">1894</span></a> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> -</span><span id="Select.from_-1895"><a href="#Select.from_-1895"><span class="linenos">1895</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.from_-1896"><a href="#Select.from_-1896"><span class="linenos">1896</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.from_-1897"><a href="#Select.from_-1897"><span class="linenos">1897</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.from_-1914"><a href="#Select.from_-1914"><span class="linenos">1914</span></a> <span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.from_-1915"><a href="#Select.from_-1915"><span class="linenos">1915</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.from_-1916"><a href="#Select.from_-1916"><span class="linenos">1916</span></a><span class="sd"> Set the FROM expression.</span> +</span><span id="Select.from_-1917"><a href="#Select.from_-1917"><span class="linenos">1917</span></a> +</span><span id="Select.from_-1918"><a href="#Select.from_-1918"><span class="linenos">1918</span></a><span class="sd"> Example:</span> +</span><span id="Select.from_-1919"><a href="#Select.from_-1919"><span class="linenos">1919</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sql()</span> +</span><span id="Select.from_-1920"><a href="#Select.from_-1920"><span class="linenos">1920</span></a><span class="sd"> 'SELECT x FROM tbl'</span> +</span><span id="Select.from_-1921"><a href="#Select.from_-1921"><span class="linenos">1921</span></a> +</span><span id="Select.from_-1922"><a href="#Select.from_-1922"><span class="linenos">1922</span></a><span class="sd"> Args:</span> +</span><span id="Select.from_-1923"><a href="#Select.from_-1923"><span class="linenos">1923</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select.from_-1924"><a href="#Select.from_-1924"><span class="linenos">1924</span></a><span class="sd"> If a `From` instance is passed, this is used as-is.</span> +</span><span id="Select.from_-1925"><a href="#Select.from_-1925"><span class="linenos">1925</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `From`.</span> +</span><span id="Select.from_-1926"><a href="#Select.from_-1926"><span class="linenos">1926</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select.from_-1927"><a href="#Select.from_-1927"><span class="linenos">1927</span></a><span class="sd"> Otherwise, this flattens all the `From` expression into a single expression.</span> +</span><span id="Select.from_-1928"><a href="#Select.from_-1928"><span class="linenos">1928</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select.from_-1929"><a href="#Select.from_-1929"><span class="linenos">1929</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.from_-1930"><a href="#Select.from_-1930"><span class="linenos">1930</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.from_-1931"><a href="#Select.from_-1931"><span class="linenos">1931</span></a> +</span><span id="Select.from_-1932"><a href="#Select.from_-1932"><span class="linenos">1932</span></a><span class="sd"> Returns:</span> +</span><span id="Select.from_-1933"><a href="#Select.from_-1933"><span class="linenos">1933</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.from_-1934"><a href="#Select.from_-1934"><span class="linenos">1934</span></a><span class="sd"> """</span> +</span><span id="Select.from_-1935"><a href="#Select.from_-1935"><span class="linenos">1935</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select.from_-1936"><a href="#Select.from_-1936"><span class="linenos">1936</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.from_-1937"><a href="#Select.from_-1937"><span class="linenos">1937</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.from_-1938"><a href="#Select.from_-1938"><span class="linenos">1938</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"from"</span><span class="p">,</span> +</span><span id="Select.from_-1939"><a href="#Select.from_-1939"><span class="linenos">1939</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.from_-1940"><a href="#Select.from_-1940"><span class="linenos">1940</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.from_-1941"><a href="#Select.from_-1941"><span class="linenos">1941</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> +</span><span id="Select.from_-1942"><a href="#Select.from_-1942"><span class="linenos">1942</span></a> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> +</span><span id="Select.from_-1943"><a href="#Select.from_-1943"><span class="linenos">1943</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.from_-1944"><a href="#Select.from_-1944"><span class="linenos">1944</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.from_-1945"><a href="#Select.from_-1945"><span class="linenos">1945</span></a> <span class="p">)</span> </span></pre></div> @@ -19924,41 +20712,41 @@ Otherwise, this flattens all the <code><a href="#From">From</a></code> expressio </div> <a class="headerlink" href="#Select.group_by"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.group_by-1899"><a href="#Select.group_by-1899"><span class="linenos">1899</span></a> <span class="k">def</span> <span class="nf">group_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.group_by-1900"><a href="#Select.group_by-1900"><span class="linenos">1900</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.group_by-1901"><a href="#Select.group_by-1901"><span class="linenos">1901</span></a><span class="sd"> Set the GROUP BY expression.</span> -</span><span id="Select.group_by-1902"><a href="#Select.group_by-1902"><span class="linenos">1902</span></a> -</span><span id="Select.group_by-1903"><a href="#Select.group_by-1903"><span class="linenos">1903</span></a><span class="sd"> Example:</span> -</span><span id="Select.group_by-1904"><a href="#Select.group_by-1904"><span class="linenos">1904</span></a><span class="sd"> >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()</span> -</span><span id="Select.group_by-1905"><a href="#Select.group_by-1905"><span class="linenos">1905</span></a><span class="sd"> 'SELECT x, COUNT(1) FROM tbl GROUP BY x'</span> -</span><span id="Select.group_by-1906"><a href="#Select.group_by-1906"><span class="linenos">1906</span></a> -</span><span id="Select.group_by-1907"><a href="#Select.group_by-1907"><span class="linenos">1907</span></a><span class="sd"> Args:</span> -</span><span id="Select.group_by-1908"><a href="#Select.group_by-1908"><span class="linenos">1908</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select.group_by-1909"><a href="#Select.group_by-1909"><span class="linenos">1909</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="Select.group_by-1910"><a href="#Select.group_by-1910"><span class="linenos">1910</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Group`.</span> -</span><span id="Select.group_by-1911"><a href="#Select.group_by-1911"><span class="linenos">1911</span></a><span class="sd"> If nothing is passed in then a group by is not applied to the expression</span> -</span><span id="Select.group_by-1912"><a href="#Select.group_by-1912"><span class="linenos">1912</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select.group_by-1913"><a href="#Select.group_by-1913"><span class="linenos">1913</span></a><span class="sd"> Otherwise, this flattens all the `Group` expression into a single expression.</span> -</span><span id="Select.group_by-1914"><a href="#Select.group_by-1914"><span class="linenos">1914</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select.group_by-1915"><a href="#Select.group_by-1915"><span class="linenos">1915</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.group_by-1916"><a href="#Select.group_by-1916"><span class="linenos">1916</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.group_by-1917"><a href="#Select.group_by-1917"><span class="linenos">1917</span></a> -</span><span id="Select.group_by-1918"><a href="#Select.group_by-1918"><span class="linenos">1918</span></a><span class="sd"> Returns:</span> -</span><span id="Select.group_by-1919"><a href="#Select.group_by-1919"><span class="linenos">1919</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.group_by-1920"><a href="#Select.group_by-1920"><span class="linenos">1920</span></a><span class="sd"> """</span> -</span><span id="Select.group_by-1921"><a href="#Select.group_by-1921"><span class="linenos">1921</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Select.group_by-1922"><a href="#Select.group_by-1922"><span class="linenos">1922</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="Select.group_by-1923"><a href="#Select.group_by-1923"><span class="linenos">1923</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select.group_by-1924"><a href="#Select.group_by-1924"><span class="linenos">1924</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.group_by-1925"><a href="#Select.group_by-1925"><span class="linenos">1925</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.group_by-1926"><a href="#Select.group_by-1926"><span class="linenos">1926</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"group"</span><span class="p">,</span> -</span><span id="Select.group_by-1927"><a href="#Select.group_by-1927"><span class="linenos">1927</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.group_by-1928"><a href="#Select.group_by-1928"><span class="linenos">1928</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.group_by-1929"><a href="#Select.group_by-1929"><span class="linenos">1929</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"GROUP BY"</span><span class="p">,</span> -</span><span id="Select.group_by-1930"><a href="#Select.group_by-1930"><span class="linenos">1930</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Group</span><span class="p">,</span> -</span><span id="Select.group_by-1931"><a href="#Select.group_by-1931"><span class="linenos">1931</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.group_by-1932"><a href="#Select.group_by-1932"><span class="linenos">1932</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.group_by-1933"><a href="#Select.group_by-1933"><span class="linenos">1933</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.group_by-1947"><a href="#Select.group_by-1947"><span class="linenos">1947</span></a> <span class="k">def</span> <span class="nf">group_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.group_by-1948"><a href="#Select.group_by-1948"><span class="linenos">1948</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.group_by-1949"><a href="#Select.group_by-1949"><span class="linenos">1949</span></a><span class="sd"> Set the GROUP BY expression.</span> +</span><span id="Select.group_by-1950"><a href="#Select.group_by-1950"><span class="linenos">1950</span></a> +</span><span id="Select.group_by-1951"><a href="#Select.group_by-1951"><span class="linenos">1951</span></a><span class="sd"> Example:</span> +</span><span id="Select.group_by-1952"><a href="#Select.group_by-1952"><span class="linenos">1952</span></a><span class="sd"> >>> Select().from_("tbl").select("x", "COUNT(1)").group_by("x").sql()</span> +</span><span id="Select.group_by-1953"><a href="#Select.group_by-1953"><span class="linenos">1953</span></a><span class="sd"> 'SELECT x, COUNT(1) FROM tbl GROUP BY x'</span> +</span><span id="Select.group_by-1954"><a href="#Select.group_by-1954"><span class="linenos">1954</span></a> +</span><span id="Select.group_by-1955"><a href="#Select.group_by-1955"><span class="linenos">1955</span></a><span class="sd"> Args:</span> +</span><span id="Select.group_by-1956"><a href="#Select.group_by-1956"><span class="linenos">1956</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select.group_by-1957"><a href="#Select.group_by-1957"><span class="linenos">1957</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="Select.group_by-1958"><a href="#Select.group_by-1958"><span class="linenos">1958</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Group`.</span> +</span><span id="Select.group_by-1959"><a href="#Select.group_by-1959"><span class="linenos">1959</span></a><span class="sd"> If nothing is passed in then a group by is not applied to the expression</span> +</span><span id="Select.group_by-1960"><a href="#Select.group_by-1960"><span class="linenos">1960</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select.group_by-1961"><a href="#Select.group_by-1961"><span class="linenos">1961</span></a><span class="sd"> Otherwise, this flattens all the `Group` expression into a single expression.</span> +</span><span id="Select.group_by-1962"><a href="#Select.group_by-1962"><span class="linenos">1962</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select.group_by-1963"><a href="#Select.group_by-1963"><span class="linenos">1963</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.group_by-1964"><a href="#Select.group_by-1964"><span class="linenos">1964</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.group_by-1965"><a href="#Select.group_by-1965"><span class="linenos">1965</span></a> +</span><span id="Select.group_by-1966"><a href="#Select.group_by-1966"><span class="linenos">1966</span></a><span class="sd"> Returns:</span> +</span><span id="Select.group_by-1967"><a href="#Select.group_by-1967"><span class="linenos">1967</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.group_by-1968"><a href="#Select.group_by-1968"><span class="linenos">1968</span></a><span class="sd"> """</span> +</span><span id="Select.group_by-1969"><a href="#Select.group_by-1969"><span class="linenos">1969</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Select.group_by-1970"><a href="#Select.group_by-1970"><span class="linenos">1970</span></a> <span class="k">return</span> <span class="bp">self</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">copy</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="Select.group_by-1971"><a href="#Select.group_by-1971"><span class="linenos">1971</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select.group_by-1972"><a href="#Select.group_by-1972"><span class="linenos">1972</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.group_by-1973"><a href="#Select.group_by-1973"><span class="linenos">1973</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.group_by-1974"><a href="#Select.group_by-1974"><span class="linenos">1974</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"group"</span><span class="p">,</span> +</span><span id="Select.group_by-1975"><a href="#Select.group_by-1975"><span class="linenos">1975</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.group_by-1976"><a href="#Select.group_by-1976"><span class="linenos">1976</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.group_by-1977"><a href="#Select.group_by-1977"><span class="linenos">1977</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"GROUP BY"</span><span class="p">,</span> +</span><span id="Select.group_by-1978"><a href="#Select.group_by-1978"><span class="linenos">1978</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Group</span><span class="p">,</span> +</span><span id="Select.group_by-1979"><a href="#Select.group_by-1979"><span class="linenos">1979</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.group_by-1980"><a href="#Select.group_by-1980"><span class="linenos">1980</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.group_by-1981"><a href="#Select.group_by-1981"><span class="linenos">1981</span></a> <span class="p">)</span> </span></pre></div> @@ -20008,38 +20796,38 @@ Otherwise, this flattens all the <code><a href="#Group">Group</a></code> express </div> <a class="headerlink" href="#Select.order_by"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.order_by-1935"><a href="#Select.order_by-1935"><span class="linenos">1935</span></a> <span class="k">def</span> <span class="nf">order_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.order_by-1936"><a href="#Select.order_by-1936"><span class="linenos">1936</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.order_by-1937"><a href="#Select.order_by-1937"><span class="linenos">1937</span></a><span class="sd"> Set the ORDER BY expression.</span> -</span><span id="Select.order_by-1938"><a href="#Select.order_by-1938"><span class="linenos">1938</span></a> -</span><span id="Select.order_by-1939"><a href="#Select.order_by-1939"><span class="linenos">1939</span></a><span class="sd"> Example:</span> -</span><span id="Select.order_by-1940"><a href="#Select.order_by-1940"><span class="linenos">1940</span></a><span class="sd"> >>> Select().from_("tbl").select("x").order_by("x DESC").sql()</span> -</span><span id="Select.order_by-1941"><a href="#Select.order_by-1941"><span class="linenos">1941</span></a><span class="sd"> 'SELECT x FROM tbl ORDER BY x DESC'</span> -</span><span id="Select.order_by-1942"><a href="#Select.order_by-1942"><span class="linenos">1942</span></a> -</span><span id="Select.order_by-1943"><a href="#Select.order_by-1943"><span class="linenos">1943</span></a><span class="sd"> Args:</span> -</span><span id="Select.order_by-1944"><a href="#Select.order_by-1944"><span class="linenos">1944</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select.order_by-1945"><a href="#Select.order_by-1945"><span class="linenos">1945</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="Select.order_by-1946"><a href="#Select.order_by-1946"><span class="linenos">1946</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Order`.</span> -</span><span id="Select.order_by-1947"><a href="#Select.order_by-1947"><span class="linenos">1947</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select.order_by-1948"><a href="#Select.order_by-1948"><span class="linenos">1948</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> -</span><span id="Select.order_by-1949"><a href="#Select.order_by-1949"><span class="linenos">1949</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select.order_by-1950"><a href="#Select.order_by-1950"><span class="linenos">1950</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.order_by-1951"><a href="#Select.order_by-1951"><span class="linenos">1951</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.order_by-1952"><a href="#Select.order_by-1952"><span class="linenos">1952</span></a> -</span><span id="Select.order_by-1953"><a href="#Select.order_by-1953"><span class="linenos">1953</span></a><span class="sd"> Returns:</span> -</span><span id="Select.order_by-1954"><a href="#Select.order_by-1954"><span class="linenos">1954</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.order_by-1955"><a href="#Select.order_by-1955"><span class="linenos">1955</span></a><span class="sd"> """</span> -</span><span id="Select.order_by-1956"><a href="#Select.order_by-1956"><span class="linenos">1956</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select.order_by-1957"><a href="#Select.order_by-1957"><span class="linenos">1957</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.order_by-1958"><a href="#Select.order_by-1958"><span class="linenos">1958</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.order_by-1959"><a href="#Select.order_by-1959"><span class="linenos">1959</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"order"</span><span class="p">,</span> -</span><span id="Select.order_by-1960"><a href="#Select.order_by-1960"><span class="linenos">1960</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.order_by-1961"><a href="#Select.order_by-1961"><span class="linenos">1961</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.order_by-1962"><a href="#Select.order_by-1962"><span class="linenos">1962</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ORDER BY"</span><span class="p">,</span> -</span><span id="Select.order_by-1963"><a href="#Select.order_by-1963"><span class="linenos">1963</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Order</span><span class="p">,</span> -</span><span id="Select.order_by-1964"><a href="#Select.order_by-1964"><span class="linenos">1964</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.order_by-1965"><a href="#Select.order_by-1965"><span class="linenos">1965</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.order_by-1966"><a href="#Select.order_by-1966"><span class="linenos">1966</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.order_by-1983"><a href="#Select.order_by-1983"><span class="linenos">1983</span></a> <span class="k">def</span> <span class="nf">order_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.order_by-1984"><a href="#Select.order_by-1984"><span class="linenos">1984</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.order_by-1985"><a href="#Select.order_by-1985"><span class="linenos">1985</span></a><span class="sd"> Set the ORDER BY expression.</span> +</span><span id="Select.order_by-1986"><a href="#Select.order_by-1986"><span class="linenos">1986</span></a> +</span><span id="Select.order_by-1987"><a href="#Select.order_by-1987"><span class="linenos">1987</span></a><span class="sd"> Example:</span> +</span><span id="Select.order_by-1988"><a href="#Select.order_by-1988"><span class="linenos">1988</span></a><span class="sd"> >>> Select().from_("tbl").select("x").order_by("x DESC").sql()</span> +</span><span id="Select.order_by-1989"><a href="#Select.order_by-1989"><span class="linenos">1989</span></a><span class="sd"> 'SELECT x FROM tbl ORDER BY x DESC'</span> +</span><span id="Select.order_by-1990"><a href="#Select.order_by-1990"><span class="linenos">1990</span></a> +</span><span id="Select.order_by-1991"><a href="#Select.order_by-1991"><span class="linenos">1991</span></a><span class="sd"> Args:</span> +</span><span id="Select.order_by-1992"><a href="#Select.order_by-1992"><span class="linenos">1992</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select.order_by-1993"><a href="#Select.order_by-1993"><span class="linenos">1993</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="Select.order_by-1994"><a href="#Select.order_by-1994"><span class="linenos">1994</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Order`.</span> +</span><span id="Select.order_by-1995"><a href="#Select.order_by-1995"><span class="linenos">1995</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select.order_by-1996"><a href="#Select.order_by-1996"><span class="linenos">1996</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> +</span><span id="Select.order_by-1997"><a href="#Select.order_by-1997"><span class="linenos">1997</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select.order_by-1998"><a href="#Select.order_by-1998"><span class="linenos">1998</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.order_by-1999"><a href="#Select.order_by-1999"><span class="linenos">1999</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.order_by-2000"><a href="#Select.order_by-2000"><span class="linenos">2000</span></a> +</span><span id="Select.order_by-2001"><a href="#Select.order_by-2001"><span class="linenos">2001</span></a><span class="sd"> Returns:</span> +</span><span id="Select.order_by-2002"><a href="#Select.order_by-2002"><span class="linenos">2002</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.order_by-2003"><a href="#Select.order_by-2003"><span class="linenos">2003</span></a><span class="sd"> """</span> +</span><span id="Select.order_by-2004"><a href="#Select.order_by-2004"><span class="linenos">2004</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select.order_by-2005"><a href="#Select.order_by-2005"><span class="linenos">2005</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.order_by-2006"><a href="#Select.order_by-2006"><span class="linenos">2006</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.order_by-2007"><a href="#Select.order_by-2007"><span class="linenos">2007</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"order"</span><span class="p">,</span> +</span><span id="Select.order_by-2008"><a href="#Select.order_by-2008"><span class="linenos">2008</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.order_by-2009"><a href="#Select.order_by-2009"><span class="linenos">2009</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.order_by-2010"><a href="#Select.order_by-2010"><span class="linenos">2010</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ORDER BY"</span><span class="p">,</span> +</span><span id="Select.order_by-2011"><a href="#Select.order_by-2011"><span class="linenos">2011</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Order</span><span class="p">,</span> +</span><span id="Select.order_by-2012"><a href="#Select.order_by-2012"><span class="linenos">2012</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.order_by-2013"><a href="#Select.order_by-2013"><span class="linenos">2013</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.order_by-2014"><a href="#Select.order_by-2014"><span class="linenos">2014</span></a> <span class="p">)</span> </span></pre></div> @@ -20088,38 +20876,38 @@ Otherwise, this flattens all the <code><a href="#Order">Order</a></code> express </div> <a class="headerlink" href="#Select.sort_by"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.sort_by-1968"><a href="#Select.sort_by-1968"><span class="linenos">1968</span></a> <span class="k">def</span> <span class="nf">sort_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.sort_by-1969"><a href="#Select.sort_by-1969"><span class="linenos">1969</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.sort_by-1970"><a href="#Select.sort_by-1970"><span class="linenos">1970</span></a><span class="sd"> Set the SORT BY expression.</span> -</span><span id="Select.sort_by-1971"><a href="#Select.sort_by-1971"><span class="linenos">1971</span></a> -</span><span id="Select.sort_by-1972"><a href="#Select.sort_by-1972"><span class="linenos">1972</span></a><span class="sd"> Example:</span> -</span><span id="Select.sort_by-1973"><a href="#Select.sort_by-1973"><span class="linenos">1973</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()</span> -</span><span id="Select.sort_by-1974"><a href="#Select.sort_by-1974"><span class="linenos">1974</span></a><span class="sd"> 'SELECT x FROM tbl SORT BY x DESC'</span> -</span><span id="Select.sort_by-1975"><a href="#Select.sort_by-1975"><span class="linenos">1975</span></a> -</span><span id="Select.sort_by-1976"><a href="#Select.sort_by-1976"><span class="linenos">1976</span></a><span class="sd"> Args:</span> -</span><span id="Select.sort_by-1977"><a href="#Select.sort_by-1977"><span class="linenos">1977</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select.sort_by-1978"><a href="#Select.sort_by-1978"><span class="linenos">1978</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="Select.sort_by-1979"><a href="#Select.sort_by-1979"><span class="linenos">1979</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `SORT`.</span> -</span><span id="Select.sort_by-1980"><a href="#Select.sort_by-1980"><span class="linenos">1980</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select.sort_by-1981"><a href="#Select.sort_by-1981"><span class="linenos">1981</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> -</span><span id="Select.sort_by-1982"><a href="#Select.sort_by-1982"><span class="linenos">1982</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select.sort_by-1983"><a href="#Select.sort_by-1983"><span class="linenos">1983</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.sort_by-1984"><a href="#Select.sort_by-1984"><span class="linenos">1984</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.sort_by-1985"><a href="#Select.sort_by-1985"><span class="linenos">1985</span></a> -</span><span id="Select.sort_by-1986"><a href="#Select.sort_by-1986"><span class="linenos">1986</span></a><span class="sd"> Returns:</span> -</span><span id="Select.sort_by-1987"><a href="#Select.sort_by-1987"><span class="linenos">1987</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.sort_by-1988"><a href="#Select.sort_by-1988"><span class="linenos">1988</span></a><span class="sd"> """</span> -</span><span id="Select.sort_by-1989"><a href="#Select.sort_by-1989"><span class="linenos">1989</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select.sort_by-1990"><a href="#Select.sort_by-1990"><span class="linenos">1990</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.sort_by-1991"><a href="#Select.sort_by-1991"><span class="linenos">1991</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.sort_by-1992"><a href="#Select.sort_by-1992"><span class="linenos">1992</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"sort"</span><span class="p">,</span> -</span><span id="Select.sort_by-1993"><a href="#Select.sort_by-1993"><span class="linenos">1993</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.sort_by-1994"><a href="#Select.sort_by-1994"><span class="linenos">1994</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.sort_by-1995"><a href="#Select.sort_by-1995"><span class="linenos">1995</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"SORT BY"</span><span class="p">,</span> -</span><span id="Select.sort_by-1996"><a href="#Select.sort_by-1996"><span class="linenos">1996</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Sort</span><span class="p">,</span> -</span><span id="Select.sort_by-1997"><a href="#Select.sort_by-1997"><span class="linenos">1997</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.sort_by-1998"><a href="#Select.sort_by-1998"><span class="linenos">1998</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.sort_by-1999"><a href="#Select.sort_by-1999"><span class="linenos">1999</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.sort_by-2016"><a href="#Select.sort_by-2016"><span class="linenos">2016</span></a> <span class="k">def</span> <span class="nf">sort_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.sort_by-2017"><a href="#Select.sort_by-2017"><span class="linenos">2017</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.sort_by-2018"><a href="#Select.sort_by-2018"><span class="linenos">2018</span></a><span class="sd"> Set the SORT BY expression.</span> +</span><span id="Select.sort_by-2019"><a href="#Select.sort_by-2019"><span class="linenos">2019</span></a> +</span><span id="Select.sort_by-2020"><a href="#Select.sort_by-2020"><span class="linenos">2020</span></a><span class="sd"> Example:</span> +</span><span id="Select.sort_by-2021"><a href="#Select.sort_by-2021"><span class="linenos">2021</span></a><span class="sd"> >>> Select().from_("tbl").select("x").sort_by("x DESC").sql()</span> +</span><span id="Select.sort_by-2022"><a href="#Select.sort_by-2022"><span class="linenos">2022</span></a><span class="sd"> 'SELECT x FROM tbl SORT BY x DESC'</span> +</span><span id="Select.sort_by-2023"><a href="#Select.sort_by-2023"><span class="linenos">2023</span></a> +</span><span id="Select.sort_by-2024"><a href="#Select.sort_by-2024"><span class="linenos">2024</span></a><span class="sd"> Args:</span> +</span><span id="Select.sort_by-2025"><a href="#Select.sort_by-2025"><span class="linenos">2025</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select.sort_by-2026"><a href="#Select.sort_by-2026"><span class="linenos">2026</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="Select.sort_by-2027"><a href="#Select.sort_by-2027"><span class="linenos">2027</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `SORT`.</span> +</span><span id="Select.sort_by-2028"><a href="#Select.sort_by-2028"><span class="linenos">2028</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select.sort_by-2029"><a href="#Select.sort_by-2029"><span class="linenos">2029</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> +</span><span id="Select.sort_by-2030"><a href="#Select.sort_by-2030"><span class="linenos">2030</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select.sort_by-2031"><a href="#Select.sort_by-2031"><span class="linenos">2031</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.sort_by-2032"><a href="#Select.sort_by-2032"><span class="linenos">2032</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.sort_by-2033"><a href="#Select.sort_by-2033"><span class="linenos">2033</span></a> +</span><span id="Select.sort_by-2034"><a href="#Select.sort_by-2034"><span class="linenos">2034</span></a><span class="sd"> Returns:</span> +</span><span id="Select.sort_by-2035"><a href="#Select.sort_by-2035"><span class="linenos">2035</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.sort_by-2036"><a href="#Select.sort_by-2036"><span class="linenos">2036</span></a><span class="sd"> """</span> +</span><span id="Select.sort_by-2037"><a href="#Select.sort_by-2037"><span class="linenos">2037</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select.sort_by-2038"><a href="#Select.sort_by-2038"><span class="linenos">2038</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.sort_by-2039"><a href="#Select.sort_by-2039"><span class="linenos">2039</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.sort_by-2040"><a href="#Select.sort_by-2040"><span class="linenos">2040</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"sort"</span><span class="p">,</span> +</span><span id="Select.sort_by-2041"><a href="#Select.sort_by-2041"><span class="linenos">2041</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.sort_by-2042"><a href="#Select.sort_by-2042"><span class="linenos">2042</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.sort_by-2043"><a href="#Select.sort_by-2043"><span class="linenos">2043</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"SORT BY"</span><span class="p">,</span> +</span><span id="Select.sort_by-2044"><a href="#Select.sort_by-2044"><span class="linenos">2044</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Sort</span><span class="p">,</span> +</span><span id="Select.sort_by-2045"><a href="#Select.sort_by-2045"><span class="linenos">2045</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.sort_by-2046"><a href="#Select.sort_by-2046"><span class="linenos">2046</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.sort_by-2047"><a href="#Select.sort_by-2047"><span class="linenos">2047</span></a> <span class="p">)</span> </span></pre></div> @@ -20168,38 +20956,38 @@ Otherwise, this flattens all the <code><a href="#Order">Order</a></code> express </div> <a class="headerlink" href="#Select.cluster_by"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.cluster_by-2001"><a href="#Select.cluster_by-2001"><span class="linenos">2001</span></a> <span class="k">def</span> <span class="nf">cluster_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.cluster_by-2002"><a href="#Select.cluster_by-2002"><span class="linenos">2002</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.cluster_by-2003"><a href="#Select.cluster_by-2003"><span class="linenos">2003</span></a><span class="sd"> Set the CLUSTER BY expression.</span> -</span><span id="Select.cluster_by-2004"><a href="#Select.cluster_by-2004"><span class="linenos">2004</span></a> -</span><span id="Select.cluster_by-2005"><a href="#Select.cluster_by-2005"><span class="linenos">2005</span></a><span class="sd"> Example:</span> -</span><span id="Select.cluster_by-2006"><a href="#Select.cluster_by-2006"><span class="linenos">2006</span></a><span class="sd"> >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()</span> -</span><span id="Select.cluster_by-2007"><a href="#Select.cluster_by-2007"><span class="linenos">2007</span></a><span class="sd"> 'SELECT x FROM tbl CLUSTER BY x DESC'</span> -</span><span id="Select.cluster_by-2008"><a href="#Select.cluster_by-2008"><span class="linenos">2008</span></a> -</span><span id="Select.cluster_by-2009"><a href="#Select.cluster_by-2009"><span class="linenos">2009</span></a><span class="sd"> Args:</span> -</span><span id="Select.cluster_by-2010"><a href="#Select.cluster_by-2010"><span class="linenos">2010</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select.cluster_by-2011"><a href="#Select.cluster_by-2011"><span class="linenos">2011</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> -</span><span id="Select.cluster_by-2012"><a href="#Select.cluster_by-2012"><span class="linenos">2012</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Cluster`.</span> -</span><span id="Select.cluster_by-2013"><a href="#Select.cluster_by-2013"><span class="linenos">2013</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select.cluster_by-2014"><a href="#Select.cluster_by-2014"><span class="linenos">2014</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> -</span><span id="Select.cluster_by-2015"><a href="#Select.cluster_by-2015"><span class="linenos">2015</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select.cluster_by-2016"><a href="#Select.cluster_by-2016"><span class="linenos">2016</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.cluster_by-2017"><a href="#Select.cluster_by-2017"><span class="linenos">2017</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.cluster_by-2018"><a href="#Select.cluster_by-2018"><span class="linenos">2018</span></a> -</span><span id="Select.cluster_by-2019"><a href="#Select.cluster_by-2019"><span class="linenos">2019</span></a><span class="sd"> Returns:</span> -</span><span id="Select.cluster_by-2020"><a href="#Select.cluster_by-2020"><span class="linenos">2020</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.cluster_by-2021"><a href="#Select.cluster_by-2021"><span class="linenos">2021</span></a><span class="sd"> """</span> -</span><span id="Select.cluster_by-2022"><a href="#Select.cluster_by-2022"><span class="linenos">2022</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> -</span><span id="Select.cluster_by-2023"><a href="#Select.cluster_by-2023"><span class="linenos">2023</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.cluster_by-2024"><a href="#Select.cluster_by-2024"><span class="linenos">2024</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.cluster_by-2025"><a href="#Select.cluster_by-2025"><span class="linenos">2025</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"cluster"</span><span class="p">,</span> -</span><span id="Select.cluster_by-2026"><a href="#Select.cluster_by-2026"><span class="linenos">2026</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.cluster_by-2027"><a href="#Select.cluster_by-2027"><span class="linenos">2027</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.cluster_by-2028"><a href="#Select.cluster_by-2028"><span class="linenos">2028</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> -</span><span id="Select.cluster_by-2029"><a href="#Select.cluster_by-2029"><span class="linenos">2029</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Cluster</span><span class="p">,</span> -</span><span id="Select.cluster_by-2030"><a href="#Select.cluster_by-2030"><span class="linenos">2030</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.cluster_by-2031"><a href="#Select.cluster_by-2031"><span class="linenos">2031</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.cluster_by-2032"><a href="#Select.cluster_by-2032"><span class="linenos">2032</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.cluster_by-2049"><a href="#Select.cluster_by-2049"><span class="linenos">2049</span></a> <span class="k">def</span> <span class="nf">cluster_by</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.cluster_by-2050"><a href="#Select.cluster_by-2050"><span class="linenos">2050</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.cluster_by-2051"><a href="#Select.cluster_by-2051"><span class="linenos">2051</span></a><span class="sd"> Set the CLUSTER BY expression.</span> +</span><span id="Select.cluster_by-2052"><a href="#Select.cluster_by-2052"><span class="linenos">2052</span></a> +</span><span id="Select.cluster_by-2053"><a href="#Select.cluster_by-2053"><span class="linenos">2053</span></a><span class="sd"> Example:</span> +</span><span id="Select.cluster_by-2054"><a href="#Select.cluster_by-2054"><span class="linenos">2054</span></a><span class="sd"> >>> Select().from_("tbl").select("x").cluster_by("x DESC").sql()</span> +</span><span id="Select.cluster_by-2055"><a href="#Select.cluster_by-2055"><span class="linenos">2055</span></a><span class="sd"> 'SELECT x FROM tbl CLUSTER BY x DESC'</span> +</span><span id="Select.cluster_by-2056"><a href="#Select.cluster_by-2056"><span class="linenos">2056</span></a> +</span><span id="Select.cluster_by-2057"><a href="#Select.cluster_by-2057"><span class="linenos">2057</span></a><span class="sd"> Args:</span> +</span><span id="Select.cluster_by-2058"><a href="#Select.cluster_by-2058"><span class="linenos">2058</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select.cluster_by-2059"><a href="#Select.cluster_by-2059"><span class="linenos">2059</span></a><span class="sd"> If a `Group` instance is passed, this is used as-is.</span> +</span><span id="Select.cluster_by-2060"><a href="#Select.cluster_by-2060"><span class="linenos">2060</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Cluster`.</span> +</span><span id="Select.cluster_by-2061"><a href="#Select.cluster_by-2061"><span class="linenos">2061</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select.cluster_by-2062"><a href="#Select.cluster_by-2062"><span class="linenos">2062</span></a><span class="sd"> Otherwise, this flattens all the `Order` expression into a single expression.</span> +</span><span id="Select.cluster_by-2063"><a href="#Select.cluster_by-2063"><span class="linenos">2063</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select.cluster_by-2064"><a href="#Select.cluster_by-2064"><span class="linenos">2064</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.cluster_by-2065"><a href="#Select.cluster_by-2065"><span class="linenos">2065</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.cluster_by-2066"><a href="#Select.cluster_by-2066"><span class="linenos">2066</span></a> +</span><span id="Select.cluster_by-2067"><a href="#Select.cluster_by-2067"><span class="linenos">2067</span></a><span class="sd"> Returns:</span> +</span><span id="Select.cluster_by-2068"><a href="#Select.cluster_by-2068"><span class="linenos">2068</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.cluster_by-2069"><a href="#Select.cluster_by-2069"><span class="linenos">2069</span></a><span class="sd"> """</span> +</span><span id="Select.cluster_by-2070"><a href="#Select.cluster_by-2070"><span class="linenos">2070</span></a> <span class="k">return</span> <span class="n">_apply_child_list_builder</span><span class="p">(</span> +</span><span id="Select.cluster_by-2071"><a href="#Select.cluster_by-2071"><span class="linenos">2071</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.cluster_by-2072"><a href="#Select.cluster_by-2072"><span class="linenos">2072</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.cluster_by-2073"><a href="#Select.cluster_by-2073"><span class="linenos">2073</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"cluster"</span><span class="p">,</span> +</span><span id="Select.cluster_by-2074"><a href="#Select.cluster_by-2074"><span class="linenos">2074</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.cluster_by-2075"><a href="#Select.cluster_by-2075"><span class="linenos">2075</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.cluster_by-2076"><a href="#Select.cluster_by-2076"><span class="linenos">2076</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> +</span><span id="Select.cluster_by-2077"><a href="#Select.cluster_by-2077"><span class="linenos">2077</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Cluster</span><span class="p">,</span> +</span><span id="Select.cluster_by-2078"><a href="#Select.cluster_by-2078"><span class="linenos">2078</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.cluster_by-2079"><a href="#Select.cluster_by-2079"><span class="linenos">2079</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.cluster_by-2080"><a href="#Select.cluster_by-2080"><span class="linenos">2080</span></a> <span class="p">)</span> </span></pre></div> @@ -20248,36 +21036,36 @@ Otherwise, this flattens all the <code><a href="#Order">Order</a></code> express </div> <a class="headerlink" href="#Select.limit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.limit-2034"><a href="#Select.limit-2034"><span class="linenos">2034</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.limit-2035"><a href="#Select.limit-2035"><span class="linenos">2035</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.limit-2036"><a href="#Select.limit-2036"><span class="linenos">2036</span></a><span class="sd"> Set the LIMIT expression.</span> -</span><span id="Select.limit-2037"><a href="#Select.limit-2037"><span class="linenos">2037</span></a> -</span><span id="Select.limit-2038"><a href="#Select.limit-2038"><span class="linenos">2038</span></a><span class="sd"> Example:</span> -</span><span id="Select.limit-2039"><a href="#Select.limit-2039"><span class="linenos">2039</span></a><span class="sd"> >>> Select().from_("tbl").select("x").limit(10).sql()</span> -</span><span id="Select.limit-2040"><a href="#Select.limit-2040"><span class="linenos">2040</span></a><span class="sd"> 'SELECT x FROM tbl LIMIT 10'</span> -</span><span id="Select.limit-2041"><a href="#Select.limit-2041"><span class="linenos">2041</span></a> -</span><span id="Select.limit-2042"><a href="#Select.limit-2042"><span class="linenos">2042</span></a><span class="sd"> Args:</span> -</span><span id="Select.limit-2043"><a href="#Select.limit-2043"><span class="linenos">2043</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> -</span><span id="Select.limit-2044"><a href="#Select.limit-2044"><span class="linenos">2044</span></a><span class="sd"> This can also be an integer.</span> -</span><span id="Select.limit-2045"><a href="#Select.limit-2045"><span class="linenos">2045</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> -</span><span id="Select.limit-2046"><a href="#Select.limit-2046"><span class="linenos">2046</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> -</span><span id="Select.limit-2047"><a href="#Select.limit-2047"><span class="linenos">2047</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select.limit-2048"><a href="#Select.limit-2048"><span class="linenos">2048</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.limit-2049"><a href="#Select.limit-2049"><span class="linenos">2049</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.limit-2050"><a href="#Select.limit-2050"><span class="linenos">2050</span></a> -</span><span id="Select.limit-2051"><a href="#Select.limit-2051"><span class="linenos">2051</span></a><span class="sd"> Returns:</span> -</span><span id="Select.limit-2052"><a href="#Select.limit-2052"><span class="linenos">2052</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.limit-2053"><a href="#Select.limit-2053"><span class="linenos">2053</span></a><span class="sd"> """</span> -</span><span id="Select.limit-2054"><a href="#Select.limit-2054"><span class="linenos">2054</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> -</span><span id="Select.limit-2055"><a href="#Select.limit-2055"><span class="linenos">2055</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Select.limit-2056"><a href="#Select.limit-2056"><span class="linenos">2056</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.limit-2057"><a href="#Select.limit-2057"><span class="linenos">2057</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"limit"</span><span class="p">,</span> -</span><span id="Select.limit-2058"><a href="#Select.limit-2058"><span class="linenos">2058</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Limit</span><span class="p">,</span> -</span><span id="Select.limit-2059"><a href="#Select.limit-2059"><span class="linenos">2059</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LIMIT"</span><span class="p">,</span> -</span><span id="Select.limit-2060"><a href="#Select.limit-2060"><span class="linenos">2060</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.limit-2061"><a href="#Select.limit-2061"><span class="linenos">2061</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.limit-2062"><a href="#Select.limit-2062"><span class="linenos">2062</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.limit-2063"><a href="#Select.limit-2063"><span class="linenos">2063</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.limit-2082"><a href="#Select.limit-2082"><span class="linenos">2082</span></a> <span class="k">def</span> <span class="nf">limit</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.limit-2083"><a href="#Select.limit-2083"><span class="linenos">2083</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.limit-2084"><a href="#Select.limit-2084"><span class="linenos">2084</span></a><span class="sd"> Set the LIMIT expression.</span> +</span><span id="Select.limit-2085"><a href="#Select.limit-2085"><span class="linenos">2085</span></a> +</span><span id="Select.limit-2086"><a href="#Select.limit-2086"><span class="linenos">2086</span></a><span class="sd"> Example:</span> +</span><span id="Select.limit-2087"><a href="#Select.limit-2087"><span class="linenos">2087</span></a><span class="sd"> >>> Select().from_("tbl").select("x").limit(10).sql()</span> +</span><span id="Select.limit-2088"><a href="#Select.limit-2088"><span class="linenos">2088</span></a><span class="sd"> 'SELECT x FROM tbl LIMIT 10'</span> +</span><span id="Select.limit-2089"><a href="#Select.limit-2089"><span class="linenos">2089</span></a> +</span><span id="Select.limit-2090"><a href="#Select.limit-2090"><span class="linenos">2090</span></a><span class="sd"> Args:</span> +</span><span id="Select.limit-2091"><a href="#Select.limit-2091"><span class="linenos">2091</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> +</span><span id="Select.limit-2092"><a href="#Select.limit-2092"><span class="linenos">2092</span></a><span class="sd"> This can also be an integer.</span> +</span><span id="Select.limit-2093"><a href="#Select.limit-2093"><span class="linenos">2093</span></a><span class="sd"> If a `Limit` instance is passed, this is used as-is.</span> +</span><span id="Select.limit-2094"><a href="#Select.limit-2094"><span class="linenos">2094</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Limit`.</span> +</span><span id="Select.limit-2095"><a href="#Select.limit-2095"><span class="linenos">2095</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select.limit-2096"><a href="#Select.limit-2096"><span class="linenos">2096</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.limit-2097"><a href="#Select.limit-2097"><span class="linenos">2097</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.limit-2098"><a href="#Select.limit-2098"><span class="linenos">2098</span></a> +</span><span id="Select.limit-2099"><a href="#Select.limit-2099"><span class="linenos">2099</span></a><span class="sd"> Returns:</span> +</span><span id="Select.limit-2100"><a href="#Select.limit-2100"><span class="linenos">2100</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.limit-2101"><a href="#Select.limit-2101"><span class="linenos">2101</span></a><span class="sd"> """</span> +</span><span id="Select.limit-2102"><a href="#Select.limit-2102"><span class="linenos">2102</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> +</span><span id="Select.limit-2103"><a href="#Select.limit-2103"><span class="linenos">2103</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Select.limit-2104"><a href="#Select.limit-2104"><span class="linenos">2104</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.limit-2105"><a href="#Select.limit-2105"><span class="linenos">2105</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"limit"</span><span class="p">,</span> +</span><span id="Select.limit-2106"><a href="#Select.limit-2106"><span class="linenos">2106</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Limit</span><span class="p">,</span> +</span><span id="Select.limit-2107"><a href="#Select.limit-2107"><span class="linenos">2107</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LIMIT"</span><span class="p">,</span> +</span><span id="Select.limit-2108"><a href="#Select.limit-2108"><span class="linenos">2108</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.limit-2109"><a href="#Select.limit-2109"><span class="linenos">2109</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.limit-2110"><a href="#Select.limit-2110"><span class="linenos">2110</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.limit-2111"><a href="#Select.limit-2111"><span class="linenos">2111</span></a> <span class="p">)</span> </span></pre></div> @@ -20325,36 +21113,36 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Select.offset"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.offset-2065"><a href="#Select.offset-2065"><span class="linenos">2065</span></a> <span class="k">def</span> <span class="nf">offset</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.offset-2066"><a href="#Select.offset-2066"><span class="linenos">2066</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.offset-2067"><a href="#Select.offset-2067"><span class="linenos">2067</span></a><span class="sd"> Set the OFFSET expression.</span> -</span><span id="Select.offset-2068"><a href="#Select.offset-2068"><span class="linenos">2068</span></a> -</span><span id="Select.offset-2069"><a href="#Select.offset-2069"><span class="linenos">2069</span></a><span class="sd"> Example:</span> -</span><span id="Select.offset-2070"><a href="#Select.offset-2070"><span class="linenos">2070</span></a><span class="sd"> >>> Select().from_("tbl").select("x").offset(10).sql()</span> -</span><span id="Select.offset-2071"><a href="#Select.offset-2071"><span class="linenos">2071</span></a><span class="sd"> 'SELECT x FROM tbl OFFSET 10'</span> -</span><span id="Select.offset-2072"><a href="#Select.offset-2072"><span class="linenos">2072</span></a> -</span><span id="Select.offset-2073"><a href="#Select.offset-2073"><span class="linenos">2073</span></a><span class="sd"> Args:</span> -</span><span id="Select.offset-2074"><a href="#Select.offset-2074"><span class="linenos">2074</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> -</span><span id="Select.offset-2075"><a href="#Select.offset-2075"><span class="linenos">2075</span></a><span class="sd"> This can also be an integer.</span> -</span><span id="Select.offset-2076"><a href="#Select.offset-2076"><span class="linenos">2076</span></a><span class="sd"> If a `Offset` instance is passed, this is used as-is.</span> -</span><span id="Select.offset-2077"><a href="#Select.offset-2077"><span class="linenos">2077</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Offset`.</span> -</span><span id="Select.offset-2078"><a href="#Select.offset-2078"><span class="linenos">2078</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="Select.offset-2079"><a href="#Select.offset-2079"><span class="linenos">2079</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.offset-2080"><a href="#Select.offset-2080"><span class="linenos">2080</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.offset-2081"><a href="#Select.offset-2081"><span class="linenos">2081</span></a> -</span><span id="Select.offset-2082"><a href="#Select.offset-2082"><span class="linenos">2082</span></a><span class="sd"> Returns:</span> -</span><span id="Select.offset-2083"><a href="#Select.offset-2083"><span class="linenos">2083</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.offset-2084"><a href="#Select.offset-2084"><span class="linenos">2084</span></a><span class="sd"> """</span> -</span><span id="Select.offset-2085"><a href="#Select.offset-2085"><span class="linenos">2085</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> -</span><span id="Select.offset-2086"><a href="#Select.offset-2086"><span class="linenos">2086</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Select.offset-2087"><a href="#Select.offset-2087"><span class="linenos">2087</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.offset-2088"><a href="#Select.offset-2088"><span class="linenos">2088</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"offset"</span><span class="p">,</span> -</span><span id="Select.offset-2089"><a href="#Select.offset-2089"><span class="linenos">2089</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Offset</span><span class="p">,</span> -</span><span id="Select.offset-2090"><a href="#Select.offset-2090"><span class="linenos">2090</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"OFFSET"</span><span class="p">,</span> -</span><span id="Select.offset-2091"><a href="#Select.offset-2091"><span class="linenos">2091</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.offset-2092"><a href="#Select.offset-2092"><span class="linenos">2092</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.offset-2093"><a href="#Select.offset-2093"><span class="linenos">2093</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.offset-2094"><a href="#Select.offset-2094"><span class="linenos">2094</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.offset-2113"><a href="#Select.offset-2113"><span class="linenos">2113</span></a> <span class="k">def</span> <span class="nf">offset</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">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.offset-2114"><a href="#Select.offset-2114"><span class="linenos">2114</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.offset-2115"><a href="#Select.offset-2115"><span class="linenos">2115</span></a><span class="sd"> Set the OFFSET expression.</span> +</span><span id="Select.offset-2116"><a href="#Select.offset-2116"><span class="linenos">2116</span></a> +</span><span id="Select.offset-2117"><a href="#Select.offset-2117"><span class="linenos">2117</span></a><span class="sd"> Example:</span> +</span><span id="Select.offset-2118"><a href="#Select.offset-2118"><span class="linenos">2118</span></a><span class="sd"> >>> Select().from_("tbl").select("x").offset(10).sql()</span> +</span><span id="Select.offset-2119"><a href="#Select.offset-2119"><span class="linenos">2119</span></a><span class="sd"> 'SELECT x FROM tbl OFFSET 10'</span> +</span><span id="Select.offset-2120"><a href="#Select.offset-2120"><span class="linenos">2120</span></a> +</span><span id="Select.offset-2121"><a href="#Select.offset-2121"><span class="linenos">2121</span></a><span class="sd"> Args:</span> +</span><span id="Select.offset-2122"><a href="#Select.offset-2122"><span class="linenos">2122</span></a><span class="sd"> expression (str | int | Expression): the SQL code string to parse.</span> +</span><span id="Select.offset-2123"><a href="#Select.offset-2123"><span class="linenos">2123</span></a><span class="sd"> This can also be an integer.</span> +</span><span id="Select.offset-2124"><a href="#Select.offset-2124"><span class="linenos">2124</span></a><span class="sd"> If a `Offset` instance is passed, this is used as-is.</span> +</span><span id="Select.offset-2125"><a href="#Select.offset-2125"><span class="linenos">2125</span></a><span class="sd"> If another `Expression` instance is passed, it will be wrapped in a `Offset`.</span> +</span><span id="Select.offset-2126"><a href="#Select.offset-2126"><span class="linenos">2126</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="Select.offset-2127"><a href="#Select.offset-2127"><span class="linenos">2127</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.offset-2128"><a href="#Select.offset-2128"><span class="linenos">2128</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.offset-2129"><a href="#Select.offset-2129"><span class="linenos">2129</span></a> +</span><span id="Select.offset-2130"><a href="#Select.offset-2130"><span class="linenos">2130</span></a><span class="sd"> Returns:</span> +</span><span id="Select.offset-2131"><a href="#Select.offset-2131"><span class="linenos">2131</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.offset-2132"><a href="#Select.offset-2132"><span class="linenos">2132</span></a><span class="sd"> """</span> +</span><span id="Select.offset-2133"><a href="#Select.offset-2133"><span class="linenos">2133</span></a> <span class="k">return</span> <span class="n">_apply_builder</span><span class="p">(</span> +</span><span id="Select.offset-2134"><a href="#Select.offset-2134"><span class="linenos">2134</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Select.offset-2135"><a href="#Select.offset-2135"><span class="linenos">2135</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.offset-2136"><a href="#Select.offset-2136"><span class="linenos">2136</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"offset"</span><span class="p">,</span> +</span><span id="Select.offset-2137"><a href="#Select.offset-2137"><span class="linenos">2137</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Offset</span><span class="p">,</span> +</span><span id="Select.offset-2138"><a href="#Select.offset-2138"><span class="linenos">2138</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"OFFSET"</span><span class="p">,</span> +</span><span id="Select.offset-2139"><a href="#Select.offset-2139"><span class="linenos">2139</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.offset-2140"><a href="#Select.offset-2140"><span class="linenos">2140</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.offset-2141"><a href="#Select.offset-2141"><span class="linenos">2141</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.offset-2142"><a href="#Select.offset-2142"><span class="linenos">2142</span></a> <span class="p">)</span> </span></pre></div> @@ -20402,42 +21190,42 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Select.select"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.select-2096"><a href="#Select.select-2096"><span class="linenos">2096</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> -</span><span id="Select.select-2097"><a href="#Select.select-2097"><span class="linenos">2097</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Select.select-2098"><a href="#Select.select-2098"><span class="linenos">2098</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="Select.select-2099"><a href="#Select.select-2099"><span class="linenos">2099</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Select.select-2100"><a href="#Select.select-2100"><span class="linenos">2100</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Select.select-2101"><a href="#Select.select-2101"><span class="linenos">2101</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Select.select-2102"><a href="#Select.select-2102"><span class="linenos">2102</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.select-2103"><a href="#Select.select-2103"><span class="linenos">2103</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.select-2104"><a href="#Select.select-2104"><span class="linenos">2104</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.select-2105"><a href="#Select.select-2105"><span class="linenos">2105</span></a><span class="sd"> Append to or set the SELECT expressions.</span> -</span><span id="Select.select-2106"><a href="#Select.select-2106"><span class="linenos">2106</span></a> -</span><span id="Select.select-2107"><a href="#Select.select-2107"><span class="linenos">2107</span></a><span class="sd"> Example:</span> -</span><span id="Select.select-2108"><a href="#Select.select-2108"><span class="linenos">2108</span></a><span class="sd"> >>> Select().select("x", "y").sql()</span> -</span><span id="Select.select-2109"><a href="#Select.select-2109"><span class="linenos">2109</span></a><span class="sd"> 'SELECT x, y'</span> -</span><span id="Select.select-2110"><a href="#Select.select-2110"><span class="linenos">2110</span></a> -</span><span id="Select.select-2111"><a href="#Select.select-2111"><span class="linenos">2111</span></a><span class="sd"> Args:</span> -</span><span id="Select.select-2112"><a href="#Select.select-2112"><span class="linenos">2112</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> -</span><span id="Select.select-2113"><a href="#Select.select-2113"><span class="linenos">2113</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select.select-2114"><a href="#Select.select-2114"><span class="linenos">2114</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> -</span><span id="Select.select-2115"><a href="#Select.select-2115"><span class="linenos">2115</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Select.select-2116"><a href="#Select.select-2116"><span class="linenos">2116</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> -</span><span id="Select.select-2117"><a href="#Select.select-2117"><span class="linenos">2117</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> -</span><span id="Select.select-2118"><a href="#Select.select-2118"><span class="linenos">2118</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> -</span><span id="Select.select-2119"><a href="#Select.select-2119"><span class="linenos">2119</span></a> -</span><span id="Select.select-2120"><a href="#Select.select-2120"><span class="linenos">2120</span></a><span class="sd"> Returns:</span> -</span><span id="Select.select-2121"><a href="#Select.select-2121"><span class="linenos">2121</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.select-2122"><a href="#Select.select-2122"><span class="linenos">2122</span></a><span class="sd"> """</span> -</span><span id="Select.select-2123"><a href="#Select.select-2123"><span class="linenos">2123</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select.select-2124"><a href="#Select.select-2124"><span class="linenos">2124</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.select-2125"><a href="#Select.select-2125"><span class="linenos">2125</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.select-2126"><a href="#Select.select-2126"><span class="linenos">2126</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">,</span> -</span><span id="Select.select-2127"><a href="#Select.select-2127"><span class="linenos">2127</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.select-2128"><a href="#Select.select-2128"><span class="linenos">2128</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.select-2129"><a href="#Select.select-2129"><span class="linenos">2129</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.select-2130"><a href="#Select.select-2130"><span class="linenos">2130</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.select-2131"><a href="#Select.select-2131"><span class="linenos">2131</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.select-2144"><a href="#Select.select-2144"><span class="linenos">2144</span></a> <span class="k">def</span> <span class="nf">select</span><span class="p">(</span> +</span><span id="Select.select-2145"><a href="#Select.select-2145"><span class="linenos">2145</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Select.select-2146"><a href="#Select.select-2146"><span class="linenos">2146</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="Select.select-2147"><a href="#Select.select-2147"><span class="linenos">2147</span></a> <span class="n">append</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Select.select-2148"><a href="#Select.select-2148"><span class="linenos">2148</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Select.select-2149"><a href="#Select.select-2149"><span class="linenos">2149</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Select.select-2150"><a href="#Select.select-2150"><span class="linenos">2150</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.select-2151"><a href="#Select.select-2151"><span class="linenos">2151</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.select-2152"><a href="#Select.select-2152"><span class="linenos">2152</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.select-2153"><a href="#Select.select-2153"><span class="linenos">2153</span></a><span class="sd"> Append to or set the SELECT expressions.</span> +</span><span id="Select.select-2154"><a href="#Select.select-2154"><span class="linenos">2154</span></a> +</span><span id="Select.select-2155"><a href="#Select.select-2155"><span class="linenos">2155</span></a><span class="sd"> Example:</span> +</span><span id="Select.select-2156"><a href="#Select.select-2156"><span class="linenos">2156</span></a><span class="sd"> >>> Select().select("x", "y").sql()</span> +</span><span id="Select.select-2157"><a href="#Select.select-2157"><span class="linenos">2157</span></a><span class="sd"> 'SELECT x, y'</span> +</span><span id="Select.select-2158"><a href="#Select.select-2158"><span class="linenos">2158</span></a> +</span><span id="Select.select-2159"><a href="#Select.select-2159"><span class="linenos">2159</span></a><span class="sd"> Args:</span> +</span><span id="Select.select-2160"><a href="#Select.select-2160"><span class="linenos">2160</span></a><span class="sd"> *expressions: the SQL code strings to parse.</span> +</span><span id="Select.select-2161"><a href="#Select.select-2161"><span class="linenos">2161</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select.select-2162"><a href="#Select.select-2162"><span class="linenos">2162</span></a><span class="sd"> append: if `True`, add to any existing expressions.</span> +</span><span id="Select.select-2163"><a href="#Select.select-2163"><span class="linenos">2163</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Select.select-2164"><a href="#Select.select-2164"><span class="linenos">2164</span></a><span class="sd"> dialect: the dialect used to parse the input expressions.</span> +</span><span id="Select.select-2165"><a href="#Select.select-2165"><span class="linenos">2165</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="Select.select-2166"><a href="#Select.select-2166"><span class="linenos">2166</span></a><span class="sd"> opts: other options to use to parse the input expressions.</span> +</span><span id="Select.select-2167"><a href="#Select.select-2167"><span class="linenos">2167</span></a> +</span><span id="Select.select-2168"><a href="#Select.select-2168"><span class="linenos">2168</span></a><span class="sd"> Returns:</span> +</span><span id="Select.select-2169"><a href="#Select.select-2169"><span class="linenos">2169</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.select-2170"><a href="#Select.select-2170"><span class="linenos">2170</span></a><span class="sd"> """</span> +</span><span id="Select.select-2171"><a href="#Select.select-2171"><span class="linenos">2171</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select.select-2172"><a href="#Select.select-2172"><span class="linenos">2172</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.select-2173"><a href="#Select.select-2173"><span class="linenos">2173</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.select-2174"><a href="#Select.select-2174"><span class="linenos">2174</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">,</span> +</span><span id="Select.select-2175"><a href="#Select.select-2175"><span class="linenos">2175</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.select-2176"><a href="#Select.select-2176"><span class="linenos">2176</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.select-2177"><a href="#Select.select-2177"><span class="linenos">2177</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.select-2178"><a href="#Select.select-2178"><span class="linenos">2178</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.select-2179"><a href="#Select.select-2179"><span class="linenos">2179</span></a> <span class="p">)</span> </span></pre></div> @@ -20485,37 +21273,37 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Select.lateral"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.lateral-2133"><a href="#Select.lateral-2133"><span class="linenos">2133</span></a> <span class="k">def</span> <span class="nf">lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.lateral-2134"><a href="#Select.lateral-2134"><span class="linenos">2134</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.lateral-2135"><a href="#Select.lateral-2135"><span class="linenos">2135</span></a><span class="sd"> Append to or set the LATERAL expressions.</span> -</span><span id="Select.lateral-2136"><a href="#Select.lateral-2136"><span class="linenos">2136</span></a> -</span><span id="Select.lateral-2137"><a href="#Select.lateral-2137"><span class="linenos">2137</span></a><span class="sd"> Example:</span> -</span><span id="Select.lateral-2138"><a href="#Select.lateral-2138"><span class="linenos">2138</span></a><span class="sd"> >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()</span> -</span><span id="Select.lateral-2139"><a href="#Select.lateral-2139"><span class="linenos">2139</span></a><span class="sd"> 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'</span> -</span><span id="Select.lateral-2140"><a href="#Select.lateral-2140"><span class="linenos">2140</span></a> -</span><span id="Select.lateral-2141"><a href="#Select.lateral-2141"><span class="linenos">2141</span></a><span class="sd"> Args:</span> -</span><span id="Select.lateral-2142"><a href="#Select.lateral-2142"><span class="linenos">2142</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select.lateral-2143"><a href="#Select.lateral-2143"><span class="linenos">2143</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select.lateral-2144"><a href="#Select.lateral-2144"><span class="linenos">2144</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select.lateral-2145"><a href="#Select.lateral-2145"><span class="linenos">2145</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Select.lateral-2146"><a href="#Select.lateral-2146"><span class="linenos">2146</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Select.lateral-2147"><a href="#Select.lateral-2147"><span class="linenos">2147</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.lateral-2148"><a href="#Select.lateral-2148"><span class="linenos">2148</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.lateral-2149"><a href="#Select.lateral-2149"><span class="linenos">2149</span></a> -</span><span id="Select.lateral-2150"><a href="#Select.lateral-2150"><span class="linenos">2150</span></a><span class="sd"> Returns:</span> -</span><span id="Select.lateral-2151"><a href="#Select.lateral-2151"><span class="linenos">2151</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.lateral-2152"><a href="#Select.lateral-2152"><span class="linenos">2152</span></a><span class="sd"> """</span> -</span><span id="Select.lateral-2153"><a href="#Select.lateral-2153"><span class="linenos">2153</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select.lateral-2154"><a href="#Select.lateral-2154"><span class="linenos">2154</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.lateral-2155"><a href="#Select.lateral-2155"><span class="linenos">2155</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.lateral-2156"><a href="#Select.lateral-2156"><span class="linenos">2156</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> -</span><span id="Select.lateral-2157"><a href="#Select.lateral-2157"><span class="linenos">2157</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.lateral-2158"><a href="#Select.lateral-2158"><span class="linenos">2158</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Lateral</span><span class="p">,</span> -</span><span id="Select.lateral-2159"><a href="#Select.lateral-2159"><span class="linenos">2159</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LATERAL VIEW"</span><span class="p">,</span> -</span><span id="Select.lateral-2160"><a href="#Select.lateral-2160"><span class="linenos">2160</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.lateral-2161"><a href="#Select.lateral-2161"><span class="linenos">2161</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.lateral-2162"><a href="#Select.lateral-2162"><span class="linenos">2162</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.lateral-2163"><a href="#Select.lateral-2163"><span class="linenos">2163</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.lateral-2181"><a href="#Select.lateral-2181"><span class="linenos">2181</span></a> <span class="k">def</span> <span class="nf">lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.lateral-2182"><a href="#Select.lateral-2182"><span class="linenos">2182</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.lateral-2183"><a href="#Select.lateral-2183"><span class="linenos">2183</span></a><span class="sd"> Append to or set the LATERAL expressions.</span> +</span><span id="Select.lateral-2184"><a href="#Select.lateral-2184"><span class="linenos">2184</span></a> +</span><span id="Select.lateral-2185"><a href="#Select.lateral-2185"><span class="linenos">2185</span></a><span class="sd"> Example:</span> +</span><span id="Select.lateral-2186"><a href="#Select.lateral-2186"><span class="linenos">2186</span></a><span class="sd"> >>> Select().select("x").lateral("OUTER explode(y) tbl2 AS z").from_("tbl").sql()</span> +</span><span id="Select.lateral-2187"><a href="#Select.lateral-2187"><span class="linenos">2187</span></a><span class="sd"> 'SELECT x FROM tbl LATERAL VIEW OUTER EXPLODE(y) tbl2 AS z'</span> +</span><span id="Select.lateral-2188"><a href="#Select.lateral-2188"><span class="linenos">2188</span></a> +</span><span id="Select.lateral-2189"><a href="#Select.lateral-2189"><span class="linenos">2189</span></a><span class="sd"> Args:</span> +</span><span id="Select.lateral-2190"><a href="#Select.lateral-2190"><span class="linenos">2190</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select.lateral-2191"><a href="#Select.lateral-2191"><span class="linenos">2191</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select.lateral-2192"><a href="#Select.lateral-2192"><span class="linenos">2192</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select.lateral-2193"><a href="#Select.lateral-2193"><span class="linenos">2193</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Select.lateral-2194"><a href="#Select.lateral-2194"><span class="linenos">2194</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Select.lateral-2195"><a href="#Select.lateral-2195"><span class="linenos">2195</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.lateral-2196"><a href="#Select.lateral-2196"><span class="linenos">2196</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.lateral-2197"><a href="#Select.lateral-2197"><span class="linenos">2197</span></a> +</span><span id="Select.lateral-2198"><a href="#Select.lateral-2198"><span class="linenos">2198</span></a><span class="sd"> Returns:</span> +</span><span id="Select.lateral-2199"><a href="#Select.lateral-2199"><span class="linenos">2199</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.lateral-2200"><a href="#Select.lateral-2200"><span class="linenos">2200</span></a><span class="sd"> """</span> +</span><span id="Select.lateral-2201"><a href="#Select.lateral-2201"><span class="linenos">2201</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select.lateral-2202"><a href="#Select.lateral-2202"><span class="linenos">2202</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.lateral-2203"><a href="#Select.lateral-2203"><span class="linenos">2203</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.lateral-2204"><a href="#Select.lateral-2204"><span class="linenos">2204</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> +</span><span id="Select.lateral-2205"><a href="#Select.lateral-2205"><span class="linenos">2205</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.lateral-2206"><a href="#Select.lateral-2206"><span class="linenos">2206</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Lateral</span><span class="p">,</span> +</span><span id="Select.lateral-2207"><a href="#Select.lateral-2207"><span class="linenos">2207</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">"LATERAL VIEW"</span><span class="p">,</span> +</span><span id="Select.lateral-2208"><a href="#Select.lateral-2208"><span class="linenos">2208</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.lateral-2209"><a href="#Select.lateral-2209"><span class="linenos">2209</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.lateral-2210"><a href="#Select.lateral-2210"><span class="linenos">2210</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.lateral-2211"><a href="#Select.lateral-2211"><span class="linenos">2211</span></a> <span class="p">)</span> </span></pre></div> @@ -20563,100 +21351,100 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Select.join"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.join-2165"><a href="#Select.join-2165"><span class="linenos">2165</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> -</span><span id="Select.join-2166"><a href="#Select.join-2166"><span class="linenos">2166</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Select.join-2167"><a href="#Select.join-2167"><span class="linenos">2167</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Select.join-2168"><a href="#Select.join-2168"><span class="linenos">2168</span></a> <span class="n">on</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select.join-2169"><a href="#Select.join-2169"><span class="linenos">2169</span></a> <span class="n">using</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select.join-2170"><a href="#Select.join-2170"><span class="linenos">2170</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Select.join-2171"><a href="#Select.join-2171"><span class="linenos">2171</span></a> <span class="n">join_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select.join-2172"><a href="#Select.join-2172"><span class="linenos">2172</span></a> <span class="n">join_alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select.join-2173"><a href="#Select.join-2173"><span class="linenos">2173</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Select.join-2174"><a href="#Select.join-2174"><span class="linenos">2174</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Select.join-2175"><a href="#Select.join-2175"><span class="linenos">2175</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.join-2176"><a href="#Select.join-2176"><span class="linenos">2176</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.join-2177"><a href="#Select.join-2177"><span class="linenos">2177</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.join-2178"><a href="#Select.join-2178"><span class="linenos">2178</span></a><span class="sd"> Append to or set the JOIN expressions.</span> -</span><span id="Select.join-2179"><a href="#Select.join-2179"><span class="linenos">2179</span></a> -</span><span id="Select.join-2180"><a href="#Select.join-2180"><span class="linenos">2180</span></a><span class="sd"> Example:</span> -</span><span id="Select.join-2181"><a href="#Select.join-2181"><span class="linenos">2181</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()</span> -</span><span id="Select.join-2182"><a href="#Select.join-2182"><span class="linenos">2182</span></a><span class="sd"> 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'</span> -</span><span id="Select.join-2183"><a href="#Select.join-2183"><span class="linenos">2183</span></a> -</span><span id="Select.join-2184"><a href="#Select.join-2184"><span class="linenos">2184</span></a><span class="sd"> >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()</span> -</span><span id="Select.join-2185"><a href="#Select.join-2185"><span class="linenos">2185</span></a><span class="sd"> 'SELECT 1 FROM a JOIN b USING (x, y, z)'</span> -</span><span id="Select.join-2186"><a href="#Select.join-2186"><span class="linenos">2186</span></a> -</span><span id="Select.join-2187"><a href="#Select.join-2187"><span class="linenos">2187</span></a><span class="sd"> Use `join_type` to change the type of join:</span> -</span><span id="Select.join-2188"><a href="#Select.join-2188"><span class="linenos">2188</span></a> -</span><span id="Select.join-2189"><a href="#Select.join-2189"><span class="linenos">2189</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()</span> -</span><span id="Select.join-2190"><a href="#Select.join-2190"><span class="linenos">2190</span></a><span class="sd"> 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'</span> -</span><span id="Select.join-2191"><a href="#Select.join-2191"><span class="linenos">2191</span></a> -</span><span id="Select.join-2192"><a href="#Select.join-2192"><span class="linenos">2192</span></a><span class="sd"> Args:</span> -</span><span id="Select.join-2193"><a href="#Select.join-2193"><span class="linenos">2193</span></a><span class="sd"> expression (str | Expression): the SQL code string to parse.</span> -</span><span id="Select.join-2194"><a href="#Select.join-2194"><span class="linenos">2194</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select.join-2195"><a href="#Select.join-2195"><span class="linenos">2195</span></a><span class="sd"> on (str | Expression): optionally specify the join "on" criteria as a SQL string.</span> -</span><span id="Select.join-2196"><a href="#Select.join-2196"><span class="linenos">2196</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select.join-2197"><a href="#Select.join-2197"><span class="linenos">2197</span></a><span class="sd"> using (str | Expression): optionally specify the join "using" criteria as a SQL string.</span> -</span><span id="Select.join-2198"><a href="#Select.join-2198"><span class="linenos">2198</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select.join-2199"><a href="#Select.join-2199"><span class="linenos">2199</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> -</span><span id="Select.join-2200"><a href="#Select.join-2200"><span class="linenos">2200</span></a><span class="sd"> Otherwise, this resets the expressions.</span> -</span><span id="Select.join-2201"><a href="#Select.join-2201"><span class="linenos">2201</span></a><span class="sd"> join_type (str): If set, alter the parsed join type</span> -</span><span id="Select.join-2202"><a href="#Select.join-2202"><span class="linenos">2202</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Select.join-2203"><a href="#Select.join-2203"><span class="linenos">2203</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.join-2204"><a href="#Select.join-2204"><span class="linenos">2204</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.join-2205"><a href="#Select.join-2205"><span class="linenos">2205</span></a> -</span><span id="Select.join-2206"><a href="#Select.join-2206"><span class="linenos">2206</span></a><span class="sd"> Returns:</span> -</span><span id="Select.join-2207"><a href="#Select.join-2207"><span class="linenos">2207</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.join-2208"><a href="#Select.join-2208"><span class="linenos">2208</span></a><span class="sd"> """</span> -</span><span id="Select.join-2209"><a href="#Select.join-2209"><span class="linenos">2209</span></a> <span class="n">parse_args</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">}</span> -</span><span id="Select.join-2210"><a href="#Select.join-2210"><span class="linenos">2210</span></a> -</span><span id="Select.join-2211"><a href="#Select.join-2211"><span class="linenos">2211</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Select.join-2212"><a href="#Select.join-2212"><span class="linenos">2212</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Join</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"JOIN"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> -</span><span id="Select.join-2213"><a href="#Select.join-2213"><span class="linenos">2213</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> -</span><span id="Select.join-2214"><a href="#Select.join-2214"><span class="linenos">2214</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="p">(</span><span class="n">Join</span><span class="p">,</span> <span class="n">Expression</span><span class="p">),</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> -</span><span id="Select.join-2215"><a href="#Select.join-2215"><span class="linenos">2215</span></a> -</span><span id="Select.join-2216"><a href="#Select.join-2216"><span class="linenos">2216</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">expression</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Join</span><span class="p">)</span> <span class="k">else</span> <span class="n">Join</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Select.join-2217"><a href="#Select.join-2217"><span class="linenos">2217</span></a> -</span><span id="Select.join-2218"><a href="#Select.join-2218"><span class="linenos">2218</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Select</span><span class="p">):</span> -</span><span id="Select.join-2219"><a href="#Select.join-2219"><span class="linenos">2219</span></a> <span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">subquery</span><span class="p">())</span> -</span><span id="Select.join-2220"><a href="#Select.join-2220"><span class="linenos">2220</span></a> -</span><span id="Select.join-2221"><a href="#Select.join-2221"><span class="linenos">2221</span></a> <span class="k">if</span> <span class="n">join_type</span><span class="p">:</span> -</span><span id="Select.join-2222"><a href="#Select.join-2222"><span class="linenos">2222</span></a> <span class="n">natural</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> -</span><span id="Select.join-2223"><a href="#Select.join-2223"><span class="linenos">2223</span></a> <span class="n">side</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> -</span><span id="Select.join-2224"><a href="#Select.join-2224"><span class="linenos">2224</span></a> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> -</span><span id="Select.join-2225"><a href="#Select.join-2225"><span class="linenos">2225</span></a> -</span><span id="Select.join-2226"><a href="#Select.join-2226"><span class="linenos">2226</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">join_type</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="s2">"JOIN_TYPE"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> <span class="c1"># type: ignore</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.join-2213"><a href="#Select.join-2213"><span class="linenos">2213</span></a> <span class="k">def</span> <span class="nf">join</span><span class="p">(</span> +</span><span id="Select.join-2214"><a href="#Select.join-2214"><span class="linenos">2214</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Select.join-2215"><a href="#Select.join-2215"><span class="linenos">2215</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Select.join-2216"><a href="#Select.join-2216"><span class="linenos">2216</span></a> <span class="n">on</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select.join-2217"><a href="#Select.join-2217"><span class="linenos">2217</span></a> <span class="n">using</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select.join-2218"><a href="#Select.join-2218"><span class="linenos">2218</span></a> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Select.join-2219"><a href="#Select.join-2219"><span class="linenos">2219</span></a> <span class="n">join_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select.join-2220"><a href="#Select.join-2220"><span class="linenos">2220</span></a> <span class="n">join_alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select.join-2221"><a href="#Select.join-2221"><span class="linenos">2221</span></a> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Select.join-2222"><a href="#Select.join-2222"><span class="linenos">2222</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Select.join-2223"><a href="#Select.join-2223"><span class="linenos">2223</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.join-2224"><a href="#Select.join-2224"><span class="linenos">2224</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.join-2225"><a href="#Select.join-2225"><span class="linenos">2225</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.join-2226"><a href="#Select.join-2226"><span class="linenos">2226</span></a><span class="sd"> Append to or set the JOIN expressions.</span> </span><span id="Select.join-2227"><a href="#Select.join-2227"><span class="linenos">2227</span></a> -</span><span id="Select.join-2228"><a href="#Select.join-2228"><span class="linenos">2228</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> -</span><span id="Select.join-2229"><a href="#Select.join-2229"><span class="linenos">2229</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"natural"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="Select.join-2230"><a href="#Select.join-2230"><span class="linenos">2230</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> -</span><span id="Select.join-2231"><a href="#Select.join-2231"><span class="linenos">2231</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"side"</span><span class="p">,</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Select.join-2232"><a href="#Select.join-2232"><span class="linenos">2232</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Select.join-2233"><a href="#Select.join-2233"><span class="linenos">2233</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Select.join-2228"><a href="#Select.join-2228"><span class="linenos">2228</span></a><span class="sd"> Example:</span> +</span><span id="Select.join-2229"><a href="#Select.join-2229"><span class="linenos">2229</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y").sql()</span> +</span><span id="Select.join-2230"><a href="#Select.join-2230"><span class="linenos">2230</span></a><span class="sd"> 'SELECT * FROM tbl JOIN tbl2 ON tbl1.y = tbl2.y'</span> +</span><span id="Select.join-2231"><a href="#Select.join-2231"><span class="linenos">2231</span></a> +</span><span id="Select.join-2232"><a href="#Select.join-2232"><span class="linenos">2232</span></a><span class="sd"> >>> Select().select("1").from_("a").join("b", using=["x", "y", "z"]).sql()</span> +</span><span id="Select.join-2233"><a href="#Select.join-2233"><span class="linenos">2233</span></a><span class="sd"> 'SELECT 1 FROM a JOIN b USING (x, y, z)'</span> </span><span id="Select.join-2234"><a href="#Select.join-2234"><span class="linenos">2234</span></a> -</span><span id="Select.join-2235"><a href="#Select.join-2235"><span class="linenos">2235</span></a> <span class="k">if</span> <span class="n">on</span><span class="p">:</span> -</span><span id="Select.join-2236"><a href="#Select.join-2236"><span class="linenos">2236</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">on</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="Select.join-2237"><a href="#Select.join-2237"><span class="linenos">2237</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="n">on</span><span class="p">)</span> -</span><span id="Select.join-2238"><a href="#Select.join-2238"><span class="linenos">2238</span></a> -</span><span id="Select.join-2239"><a href="#Select.join-2239"><span class="linenos">2239</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> -</span><span id="Select.join-2240"><a href="#Select.join-2240"><span class="linenos">2240</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select.join-2241"><a href="#Select.join-2241"><span class="linenos">2241</span></a> <span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">using</span><span class="p">),</span> -</span><span id="Select.join-2242"><a href="#Select.join-2242"><span class="linenos">2242</span></a> <span class="n">instance</span><span class="o">=</span><span class="n">join</span><span class="p">,</span> -</span><span id="Select.join-2243"><a href="#Select.join-2243"><span class="linenos">2243</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> -</span><span id="Select.join-2244"><a href="#Select.join-2244"><span class="linenos">2244</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.join-2245"><a href="#Select.join-2245"><span class="linenos">2245</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.join-2246"><a href="#Select.join-2246"><span class="linenos">2246</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.join-2247"><a href="#Select.join-2247"><span class="linenos">2247</span></a> <span class="p">)</span> -</span><span id="Select.join-2248"><a href="#Select.join-2248"><span class="linenos">2248</span></a> -</span><span id="Select.join-2249"><a href="#Select.join-2249"><span class="linenos">2249</span></a> <span class="k">if</span> <span class="n">join_alias</span><span class="p">:</span> -</span><span id="Select.join-2250"><a href="#Select.join-2250"><span class="linenos">2250</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">alias_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">join_alias</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Select.join-2251"><a href="#Select.join-2251"><span class="linenos">2251</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select.join-2252"><a href="#Select.join-2252"><span class="linenos">2252</span></a> <span class="n">join</span><span class="p">,</span> -</span><span id="Select.join-2253"><a href="#Select.join-2253"><span class="linenos">2253</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.join-2254"><a href="#Select.join-2254"><span class="linenos">2254</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> -</span><span id="Select.join-2255"><a href="#Select.join-2255"><span class="linenos">2255</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.join-2256"><a href="#Select.join-2256"><span class="linenos">2256</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.join-2257"><a href="#Select.join-2257"><span class="linenos">2257</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.join-2258"><a href="#Select.join-2258"><span class="linenos">2258</span></a> <span class="p">)</span> +</span><span id="Select.join-2235"><a href="#Select.join-2235"><span class="linenos">2235</span></a><span class="sd"> Use `join_type` to change the type of join:</span> +</span><span id="Select.join-2236"><a href="#Select.join-2236"><span class="linenos">2236</span></a> +</span><span id="Select.join-2237"><a href="#Select.join-2237"><span class="linenos">2237</span></a><span class="sd"> >>> Select().select("*").from_("tbl").join("tbl2", on="tbl1.y = tbl2.y", join_type="left outer").sql()</span> +</span><span id="Select.join-2238"><a href="#Select.join-2238"><span class="linenos">2238</span></a><span class="sd"> 'SELECT * FROM tbl LEFT OUTER JOIN tbl2 ON tbl1.y = tbl2.y'</span> +</span><span id="Select.join-2239"><a href="#Select.join-2239"><span class="linenos">2239</span></a> +</span><span id="Select.join-2240"><a href="#Select.join-2240"><span class="linenos">2240</span></a><span class="sd"> Args:</span> +</span><span id="Select.join-2241"><a href="#Select.join-2241"><span class="linenos">2241</span></a><span class="sd"> expression (str | Expression): the SQL code string to parse.</span> +</span><span id="Select.join-2242"><a href="#Select.join-2242"><span class="linenos">2242</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select.join-2243"><a href="#Select.join-2243"><span class="linenos">2243</span></a><span class="sd"> on (str | Expression): optionally specify the join "on" criteria as a SQL string.</span> +</span><span id="Select.join-2244"><a href="#Select.join-2244"><span class="linenos">2244</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select.join-2245"><a href="#Select.join-2245"><span class="linenos">2245</span></a><span class="sd"> using (str | Expression): optionally specify the join "using" criteria as a SQL string.</span> +</span><span id="Select.join-2246"><a href="#Select.join-2246"><span class="linenos">2246</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select.join-2247"><a href="#Select.join-2247"><span class="linenos">2247</span></a><span class="sd"> append (bool): if `True`, add to any existing expressions.</span> +</span><span id="Select.join-2248"><a href="#Select.join-2248"><span class="linenos">2248</span></a><span class="sd"> Otherwise, this resets the expressions.</span> +</span><span id="Select.join-2249"><a href="#Select.join-2249"><span class="linenos">2249</span></a><span class="sd"> join_type (str): If set, alter the parsed join type</span> +</span><span id="Select.join-2250"><a href="#Select.join-2250"><span class="linenos">2250</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Select.join-2251"><a href="#Select.join-2251"><span class="linenos">2251</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.join-2252"><a href="#Select.join-2252"><span class="linenos">2252</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.join-2253"><a href="#Select.join-2253"><span class="linenos">2253</span></a> +</span><span id="Select.join-2254"><a href="#Select.join-2254"><span class="linenos">2254</span></a><span class="sd"> Returns:</span> +</span><span id="Select.join-2255"><a href="#Select.join-2255"><span class="linenos">2255</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.join-2256"><a href="#Select.join-2256"><span class="linenos">2256</span></a><span class="sd"> """</span> +</span><span id="Select.join-2257"><a href="#Select.join-2257"><span class="linenos">2257</span></a> <span class="n">parse_args</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"dialect"</span><span class="p">:</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">}</span> +</span><span id="Select.join-2258"><a href="#Select.join-2258"><span class="linenos">2258</span></a> +</span><span id="Select.join-2259"><a href="#Select.join-2259"><span class="linenos">2259</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Select.join-2260"><a href="#Select.join-2260"><span class="linenos">2260</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Join</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"JOIN"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> +</span><span id="Select.join-2261"><a href="#Select.join-2261"><span class="linenos">2261</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> +</span><span id="Select.join-2262"><a href="#Select.join-2262"><span class="linenos">2262</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="p">(</span><span class="n">Join</span><span class="p">,</span> <span class="n">Expression</span><span class="p">),</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> +</span><span id="Select.join-2263"><a href="#Select.join-2263"><span class="linenos">2263</span></a> +</span><span id="Select.join-2264"><a href="#Select.join-2264"><span class="linenos">2264</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">expression</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Join</span><span class="p">)</span> <span class="k">else</span> <span class="n">Join</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Select.join-2265"><a href="#Select.join-2265"><span class="linenos">2265</span></a> +</span><span id="Select.join-2266"><a href="#Select.join-2266"><span class="linenos">2266</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">Select</span><span class="p">):</span> +</span><span id="Select.join-2267"><a href="#Select.join-2267"><span class="linenos">2267</span></a> <span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">subquery</span><span class="p">())</span> +</span><span id="Select.join-2268"><a href="#Select.join-2268"><span class="linenos">2268</span></a> +</span><span id="Select.join-2269"><a href="#Select.join-2269"><span class="linenos">2269</span></a> <span class="k">if</span> <span class="n">join_type</span><span class="p">:</span> +</span><span id="Select.join-2270"><a href="#Select.join-2270"><span class="linenos">2270</span></a> <span class="n">natural</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> +</span><span id="Select.join-2271"><a href="#Select.join-2271"><span class="linenos">2271</span></a> <span class="n">side</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> +</span><span id="Select.join-2272"><a href="#Select.join-2272"><span class="linenos">2272</span></a> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> +</span><span id="Select.join-2273"><a href="#Select.join-2273"><span class="linenos">2273</span></a> +</span><span id="Select.join-2274"><a href="#Select.join-2274"><span class="linenos">2274</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">join_type</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="s2">"JOIN_TYPE"</span><span class="p">,</span> <span class="o">**</span><span class="n">parse_args</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Select.join-2275"><a href="#Select.join-2275"><span class="linenos">2275</span></a> +</span><span id="Select.join-2276"><a href="#Select.join-2276"><span class="linenos">2276</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> +</span><span id="Select.join-2277"><a href="#Select.join-2277"><span class="linenos">2277</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"natural"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="Select.join-2278"><a href="#Select.join-2278"><span class="linenos">2278</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> +</span><span id="Select.join-2279"><a href="#Select.join-2279"><span class="linenos">2279</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"side"</span><span class="p">,</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Select.join-2280"><a href="#Select.join-2280"><span class="linenos">2280</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Select.join-2281"><a href="#Select.join-2281"><span class="linenos">2281</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">,</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Select.join-2282"><a href="#Select.join-2282"><span class="linenos">2282</span></a> +</span><span id="Select.join-2283"><a href="#Select.join-2283"><span class="linenos">2283</span></a> <span class="k">if</span> <span class="n">on</span><span class="p">:</span> +</span><span id="Select.join-2284"><a href="#Select.join-2284"><span class="linenos">2284</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">and_</span><span class="p">(</span><span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">on</span><span class="p">),</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="Select.join-2285"><a href="#Select.join-2285"><span class="linenos">2285</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"on"</span><span class="p">,</span> <span class="n">on</span><span class="p">)</span> +</span><span id="Select.join-2286"><a href="#Select.join-2286"><span class="linenos">2286</span></a> +</span><span id="Select.join-2287"><a href="#Select.join-2287"><span class="linenos">2287</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> +</span><span id="Select.join-2288"><a href="#Select.join-2288"><span class="linenos">2288</span></a> <span class="n">join</span> <span class="o">=</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select.join-2289"><a href="#Select.join-2289"><span class="linenos">2289</span></a> <span class="o">*</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">using</span><span class="p">),</span> +</span><span id="Select.join-2290"><a href="#Select.join-2290"><span class="linenos">2290</span></a> <span class="n">instance</span><span class="o">=</span><span class="n">join</span><span class="p">,</span> +</span><span id="Select.join-2291"><a href="#Select.join-2291"><span class="linenos">2291</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"using"</span><span class="p">,</span> +</span><span id="Select.join-2292"><a href="#Select.join-2292"><span class="linenos">2292</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.join-2293"><a href="#Select.join-2293"><span class="linenos">2293</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.join-2294"><a href="#Select.join-2294"><span class="linenos">2294</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.join-2295"><a href="#Select.join-2295"><span class="linenos">2295</span></a> <span class="p">)</span> +</span><span id="Select.join-2296"><a href="#Select.join-2296"><span class="linenos">2296</span></a> +</span><span id="Select.join-2297"><a href="#Select.join-2297"><span class="linenos">2297</span></a> <span class="k">if</span> <span class="n">join_alias</span><span class="p">:</span> +</span><span id="Select.join-2298"><a href="#Select.join-2298"><span class="linenos">2298</span></a> <span class="n">join</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">alias_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">join_alias</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Select.join-2299"><a href="#Select.join-2299"><span class="linenos">2299</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select.join-2300"><a href="#Select.join-2300"><span class="linenos">2300</span></a> <span class="n">join</span><span class="p">,</span> +</span><span id="Select.join-2301"><a href="#Select.join-2301"><span class="linenos">2301</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.join-2302"><a href="#Select.join-2302"><span class="linenos">2302</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> +</span><span id="Select.join-2303"><a href="#Select.join-2303"><span class="linenos">2303</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.join-2304"><a href="#Select.join-2304"><span class="linenos">2304</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.join-2305"><a href="#Select.join-2305"><span class="linenos">2305</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.join-2306"><a href="#Select.join-2306"><span class="linenos">2306</span></a> <span class="p">)</span> </span></pre></div> @@ -20723,37 +21511,37 @@ Otherwise, this resets the expressions.</li> </div> <a class="headerlink" href="#Select.where"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.where-2260"><a href="#Select.where-2260"><span class="linenos">2260</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.where-2261"><a href="#Select.where-2261"><span class="linenos">2261</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.where-2262"><a href="#Select.where-2262"><span class="linenos">2262</span></a><span class="sd"> Append to or set the WHERE expressions.</span> -</span><span id="Select.where-2263"><a href="#Select.where-2263"><span class="linenos">2263</span></a> -</span><span id="Select.where-2264"><a href="#Select.where-2264"><span class="linenos">2264</span></a><span class="sd"> Example:</span> -</span><span id="Select.where-2265"><a href="#Select.where-2265"><span class="linenos">2265</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()</span> -</span><span id="Select.where-2266"><a href="#Select.where-2266"><span class="linenos">2266</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"</span> -</span><span id="Select.where-2267"><a href="#Select.where-2267"><span class="linenos">2267</span></a> -</span><span id="Select.where-2268"><a href="#Select.where-2268"><span class="linenos">2268</span></a><span class="sd"> Args:</span> -</span><span id="Select.where-2269"><a href="#Select.where-2269"><span class="linenos">2269</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select.where-2270"><a href="#Select.where-2270"><span class="linenos">2270</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select.where-2271"><a href="#Select.where-2271"><span class="linenos">2271</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> -</span><span id="Select.where-2272"><a href="#Select.where-2272"><span class="linenos">2272</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> -</span><span id="Select.where-2273"><a href="#Select.where-2273"><span class="linenos">2273</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="Select.where-2274"><a href="#Select.where-2274"><span class="linenos">2274</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Select.where-2275"><a href="#Select.where-2275"><span class="linenos">2275</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.where-2276"><a href="#Select.where-2276"><span class="linenos">2276</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.where-2277"><a href="#Select.where-2277"><span class="linenos">2277</span></a> -</span><span id="Select.where-2278"><a href="#Select.where-2278"><span class="linenos">2278</span></a><span class="sd"> Returns:</span> -</span><span id="Select.where-2279"><a href="#Select.where-2279"><span class="linenos">2279</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.where-2280"><a href="#Select.where-2280"><span class="linenos">2280</span></a><span class="sd"> """</span> -</span><span id="Select.where-2281"><a href="#Select.where-2281"><span class="linenos">2281</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="Select.where-2282"><a href="#Select.where-2282"><span class="linenos">2282</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.where-2283"><a href="#Select.where-2283"><span class="linenos">2283</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.where-2284"><a href="#Select.where-2284"><span class="linenos">2284</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"where"</span><span class="p">,</span> -</span><span id="Select.where-2285"><a href="#Select.where-2285"><span class="linenos">2285</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.where-2286"><a href="#Select.where-2286"><span class="linenos">2286</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> -</span><span id="Select.where-2287"><a href="#Select.where-2287"><span class="linenos">2287</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.where-2288"><a href="#Select.where-2288"><span class="linenos">2288</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.where-2289"><a href="#Select.where-2289"><span class="linenos">2289</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.where-2290"><a href="#Select.where-2290"><span class="linenos">2290</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.where-2308"><a href="#Select.where-2308"><span class="linenos">2308</span></a> <span class="k">def</span> <span class="nf">where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.where-2309"><a href="#Select.where-2309"><span class="linenos">2309</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.where-2310"><a href="#Select.where-2310"><span class="linenos">2310</span></a><span class="sd"> Append to or set the WHERE expressions.</span> +</span><span id="Select.where-2311"><a href="#Select.where-2311"><span class="linenos">2311</span></a> +</span><span id="Select.where-2312"><a href="#Select.where-2312"><span class="linenos">2312</span></a><span class="sd"> Example:</span> +</span><span id="Select.where-2313"><a href="#Select.where-2313"><span class="linenos">2313</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a' OR x < 'b'").sql()</span> +</span><span id="Select.where-2314"><a href="#Select.where-2314"><span class="linenos">2314</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' OR x < 'b'"</span> +</span><span id="Select.where-2315"><a href="#Select.where-2315"><span class="linenos">2315</span></a> +</span><span id="Select.where-2316"><a href="#Select.where-2316"><span class="linenos">2316</span></a><span class="sd"> Args:</span> +</span><span id="Select.where-2317"><a href="#Select.where-2317"><span class="linenos">2317</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select.where-2318"><a href="#Select.where-2318"><span class="linenos">2318</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select.where-2319"><a href="#Select.where-2319"><span class="linenos">2319</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> +</span><span id="Select.where-2320"><a href="#Select.where-2320"><span class="linenos">2320</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> +</span><span id="Select.where-2321"><a href="#Select.where-2321"><span class="linenos">2321</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="Select.where-2322"><a href="#Select.where-2322"><span class="linenos">2322</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Select.where-2323"><a href="#Select.where-2323"><span class="linenos">2323</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.where-2324"><a href="#Select.where-2324"><span class="linenos">2324</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.where-2325"><a href="#Select.where-2325"><span class="linenos">2325</span></a> +</span><span id="Select.where-2326"><a href="#Select.where-2326"><span class="linenos">2326</span></a><span class="sd"> Returns:</span> +</span><span id="Select.where-2327"><a href="#Select.where-2327"><span class="linenos">2327</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.where-2328"><a href="#Select.where-2328"><span class="linenos">2328</span></a><span class="sd"> """</span> +</span><span id="Select.where-2329"><a href="#Select.where-2329"><span class="linenos">2329</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="Select.where-2330"><a href="#Select.where-2330"><span class="linenos">2330</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.where-2331"><a href="#Select.where-2331"><span class="linenos">2331</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.where-2332"><a href="#Select.where-2332"><span class="linenos">2332</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"where"</span><span class="p">,</span> +</span><span id="Select.where-2333"><a href="#Select.where-2333"><span class="linenos">2333</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.where-2334"><a href="#Select.where-2334"><span class="linenos">2334</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> +</span><span id="Select.where-2335"><a href="#Select.where-2335"><span class="linenos">2335</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.where-2336"><a href="#Select.where-2336"><span class="linenos">2336</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.where-2337"><a href="#Select.where-2337"><span class="linenos">2337</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.where-2338"><a href="#Select.where-2338"><span class="linenos">2338</span></a> <span class="p">)</span> </span></pre></div> @@ -20802,37 +21590,37 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Select.having"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.having-2292"><a href="#Select.having-2292"><span class="linenos">2292</span></a> <span class="k">def</span> <span class="nf">having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.having-2293"><a href="#Select.having-2293"><span class="linenos">2293</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.having-2294"><a href="#Select.having-2294"><span class="linenos">2294</span></a><span class="sd"> Append to or set the HAVING expressions.</span> -</span><span id="Select.having-2295"><a href="#Select.having-2295"><span class="linenos">2295</span></a> -</span><span id="Select.having-2296"><a href="#Select.having-2296"><span class="linenos">2296</span></a><span class="sd"> Example:</span> -</span><span id="Select.having-2297"><a href="#Select.having-2297"><span class="linenos">2297</span></a><span class="sd"> >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()</span> -</span><span id="Select.having-2298"><a href="#Select.having-2298"><span class="linenos">2298</span></a><span class="sd"> 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'</span> -</span><span id="Select.having-2299"><a href="#Select.having-2299"><span class="linenos">2299</span></a> -</span><span id="Select.having-2300"><a href="#Select.having-2300"><span class="linenos">2300</span></a><span class="sd"> Args:</span> -</span><span id="Select.having-2301"><a href="#Select.having-2301"><span class="linenos">2301</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="Select.having-2302"><a href="#Select.having-2302"><span class="linenos">2302</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select.having-2303"><a href="#Select.having-2303"><span class="linenos">2303</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> -</span><span id="Select.having-2304"><a href="#Select.having-2304"><span class="linenos">2304</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> -</span><span id="Select.having-2305"><a href="#Select.having-2305"><span class="linenos">2305</span></a><span class="sd"> Otherwise, this resets the expression.</span> -</span><span id="Select.having-2306"><a href="#Select.having-2306"><span class="linenos">2306</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="Select.having-2307"><a href="#Select.having-2307"><span class="linenos">2307</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.having-2308"><a href="#Select.having-2308"><span class="linenos">2308</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="Select.having-2309"><a href="#Select.having-2309"><span class="linenos">2309</span></a> -</span><span id="Select.having-2310"><a href="#Select.having-2310"><span class="linenos">2310</span></a><span class="sd"> Returns:</span> -</span><span id="Select.having-2311"><a href="#Select.having-2311"><span class="linenos">2311</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.having-2312"><a href="#Select.having-2312"><span class="linenos">2312</span></a><span class="sd"> """</span> -</span><span id="Select.having-2313"><a href="#Select.having-2313"><span class="linenos">2313</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> -</span><span id="Select.having-2314"><a href="#Select.having-2314"><span class="linenos">2314</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.having-2315"><a href="#Select.having-2315"><span class="linenos">2315</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.having-2316"><a href="#Select.having-2316"><span class="linenos">2316</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"having"</span><span class="p">,</span> -</span><span id="Select.having-2317"><a href="#Select.having-2317"><span class="linenos">2317</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.having-2318"><a href="#Select.having-2318"><span class="linenos">2318</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Having</span><span class="p">,</span> -</span><span id="Select.having-2319"><a href="#Select.having-2319"><span class="linenos">2319</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.having-2320"><a href="#Select.having-2320"><span class="linenos">2320</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.having-2321"><a href="#Select.having-2321"><span class="linenos">2321</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.having-2322"><a href="#Select.having-2322"><span class="linenos">2322</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.having-2340"><a href="#Select.having-2340"><span class="linenos">2340</span></a> <span class="k">def</span> <span class="nf">having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.having-2341"><a href="#Select.having-2341"><span class="linenos">2341</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.having-2342"><a href="#Select.having-2342"><span class="linenos">2342</span></a><span class="sd"> Append to or set the HAVING expressions.</span> +</span><span id="Select.having-2343"><a href="#Select.having-2343"><span class="linenos">2343</span></a> +</span><span id="Select.having-2344"><a href="#Select.having-2344"><span class="linenos">2344</span></a><span class="sd"> Example:</span> +</span><span id="Select.having-2345"><a href="#Select.having-2345"><span class="linenos">2345</span></a><span class="sd"> >>> Select().select("x", "COUNT(y)").from_("tbl").group_by("x").having("COUNT(y) > 3").sql()</span> +</span><span id="Select.having-2346"><a href="#Select.having-2346"><span class="linenos">2346</span></a><span class="sd"> 'SELECT x, COUNT(y) FROM tbl GROUP BY x HAVING COUNT(y) > 3'</span> +</span><span id="Select.having-2347"><a href="#Select.having-2347"><span class="linenos">2347</span></a> +</span><span id="Select.having-2348"><a href="#Select.having-2348"><span class="linenos">2348</span></a><span class="sd"> Args:</span> +</span><span id="Select.having-2349"><a href="#Select.having-2349"><span class="linenos">2349</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="Select.having-2350"><a href="#Select.having-2350"><span class="linenos">2350</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select.having-2351"><a href="#Select.having-2351"><span class="linenos">2351</span></a><span class="sd"> Multiple expressions are combined with an AND operator.</span> +</span><span id="Select.having-2352"><a href="#Select.having-2352"><span class="linenos">2352</span></a><span class="sd"> append (bool): if `True`, AND the new expressions to any existing expression.</span> +</span><span id="Select.having-2353"><a href="#Select.having-2353"><span class="linenos">2353</span></a><span class="sd"> Otherwise, this resets the expression.</span> +</span><span id="Select.having-2354"><a href="#Select.having-2354"><span class="linenos">2354</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="Select.having-2355"><a href="#Select.having-2355"><span class="linenos">2355</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.having-2356"><a href="#Select.having-2356"><span class="linenos">2356</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="Select.having-2357"><a href="#Select.having-2357"><span class="linenos">2357</span></a> +</span><span id="Select.having-2358"><a href="#Select.having-2358"><span class="linenos">2358</span></a><span class="sd"> Returns:</span> +</span><span id="Select.having-2359"><a href="#Select.having-2359"><span class="linenos">2359</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.having-2360"><a href="#Select.having-2360"><span class="linenos">2360</span></a><span class="sd"> """</span> +</span><span id="Select.having-2361"><a href="#Select.having-2361"><span class="linenos">2361</span></a> <span class="k">return</span> <span class="n">_apply_conjunction_builder</span><span class="p">(</span> +</span><span id="Select.having-2362"><a href="#Select.having-2362"><span class="linenos">2362</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.having-2363"><a href="#Select.having-2363"><span class="linenos">2363</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.having-2364"><a href="#Select.having-2364"><span class="linenos">2364</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"having"</span><span class="p">,</span> +</span><span id="Select.having-2365"><a href="#Select.having-2365"><span class="linenos">2365</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.having-2366"><a href="#Select.having-2366"><span class="linenos">2366</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Having</span><span class="p">,</span> +</span><span id="Select.having-2367"><a href="#Select.having-2367"><span class="linenos">2367</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.having-2368"><a href="#Select.having-2368"><span class="linenos">2368</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.having-2369"><a href="#Select.having-2369"><span class="linenos">2369</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.having-2370"><a href="#Select.having-2370"><span class="linenos">2370</span></a> <span class="p">)</span> </span></pre></div> @@ -20881,17 +21669,17 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Select.window"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.window-2324"><a href="#Select.window-2324"><span class="linenos">2324</span></a> <span class="k">def</span> <span class="nf">window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.window-2325"><a href="#Select.window-2325"><span class="linenos">2325</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> -</span><span id="Select.window-2326"><a href="#Select.window-2326"><span class="linenos">2326</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Select.window-2327"><a href="#Select.window-2327"><span class="linenos">2327</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> -</span><span id="Select.window-2328"><a href="#Select.window-2328"><span class="linenos">2328</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"windows"</span><span class="p">,</span> -</span><span id="Select.window-2329"><a href="#Select.window-2329"><span class="linenos">2329</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> -</span><span id="Select.window-2330"><a href="#Select.window-2330"><span class="linenos">2330</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Window</span><span class="p">,</span> -</span><span id="Select.window-2331"><a href="#Select.window-2331"><span class="linenos">2331</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.window-2332"><a href="#Select.window-2332"><span class="linenos">2332</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> -</span><span id="Select.window-2333"><a href="#Select.window-2333"><span class="linenos">2333</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.window-2334"><a href="#Select.window-2334"><span class="linenos">2334</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.window-2372"><a href="#Select.window-2372"><span class="linenos">2372</span></a> <span class="k">def</span> <span class="nf">window</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.window-2373"><a href="#Select.window-2373"><span class="linenos">2373</span></a> <span class="k">return</span> <span class="n">_apply_list_builder</span><span class="p">(</span> +</span><span id="Select.window-2374"><a href="#Select.window-2374"><span class="linenos">2374</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Select.window-2375"><a href="#Select.window-2375"><span class="linenos">2375</span></a> <span class="n">instance</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> +</span><span id="Select.window-2376"><a href="#Select.window-2376"><span class="linenos">2376</span></a> <span class="n">arg</span><span class="o">=</span><span class="s2">"windows"</span><span class="p">,</span> +</span><span id="Select.window-2377"><a href="#Select.window-2377"><span class="linenos">2377</span></a> <span class="n">append</span><span class="o">=</span><span class="n">append</span><span class="p">,</span> +</span><span id="Select.window-2378"><a href="#Select.window-2378"><span class="linenos">2378</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Window</span><span class="p">,</span> +</span><span id="Select.window-2379"><a href="#Select.window-2379"><span class="linenos">2379</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.window-2380"><a href="#Select.window-2380"><span class="linenos">2380</span></a> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">,</span> +</span><span id="Select.window-2381"><a href="#Select.window-2381"><span class="linenos">2381</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.window-2382"><a href="#Select.window-2382"><span class="linenos">2382</span></a> <span class="p">)</span> </span></pre></div> @@ -20909,24 +21697,24 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Select.distinct"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.distinct-2336"><a href="#Select.distinct-2336"><span class="linenos">2336</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.distinct-2337"><a href="#Select.distinct-2337"><span class="linenos">2337</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.distinct-2338"><a href="#Select.distinct-2338"><span class="linenos">2338</span></a><span class="sd"> Set the OFFSET expression.</span> -</span><span id="Select.distinct-2339"><a href="#Select.distinct-2339"><span class="linenos">2339</span></a> -</span><span id="Select.distinct-2340"><a href="#Select.distinct-2340"><span class="linenos">2340</span></a><span class="sd"> Example:</span> -</span><span id="Select.distinct-2341"><a href="#Select.distinct-2341"><span class="linenos">2341</span></a><span class="sd"> >>> Select().from_("tbl").select("x").distinct().sql()</span> -</span><span id="Select.distinct-2342"><a href="#Select.distinct-2342"><span class="linenos">2342</span></a><span class="sd"> 'SELECT DISTINCT x FROM tbl'</span> -</span><span id="Select.distinct-2343"><a href="#Select.distinct-2343"><span class="linenos">2343</span></a> -</span><span id="Select.distinct-2344"><a href="#Select.distinct-2344"><span class="linenos">2344</span></a><span class="sd"> Args:</span> -</span><span id="Select.distinct-2345"><a href="#Select.distinct-2345"><span class="linenos">2345</span></a><span class="sd"> distinct (bool): whether the Select should be distinct</span> -</span><span id="Select.distinct-2346"><a href="#Select.distinct-2346"><span class="linenos">2346</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.distinct-2347"><a href="#Select.distinct-2347"><span class="linenos">2347</span></a> -</span><span id="Select.distinct-2348"><a href="#Select.distinct-2348"><span class="linenos">2348</span></a><span class="sd"> Returns:</span> -</span><span id="Select.distinct-2349"><a href="#Select.distinct-2349"><span class="linenos">2349</span></a><span class="sd"> Select: the modified expression.</span> -</span><span id="Select.distinct-2350"><a href="#Select.distinct-2350"><span class="linenos">2350</span></a><span class="sd"> """</span> -</span><span id="Select.distinct-2351"><a href="#Select.distinct-2351"><span class="linenos">2351</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Select.distinct-2352"><a href="#Select.distinct-2352"><span class="linenos">2352</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">,</span> <span class="n">Distinct</span><span class="p">()</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Select.distinct-2353"><a href="#Select.distinct-2353"><span class="linenos">2353</span></a> <span class="k">return</span> <span class="n">instance</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.distinct-2384"><a href="#Select.distinct-2384"><span class="linenos">2384</span></a> <span class="k">def</span> <span class="nf">distinct</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.distinct-2385"><a href="#Select.distinct-2385"><span class="linenos">2385</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.distinct-2386"><a href="#Select.distinct-2386"><span class="linenos">2386</span></a><span class="sd"> Set the OFFSET expression.</span> +</span><span id="Select.distinct-2387"><a href="#Select.distinct-2387"><span class="linenos">2387</span></a> +</span><span id="Select.distinct-2388"><a href="#Select.distinct-2388"><span class="linenos">2388</span></a><span class="sd"> Example:</span> +</span><span id="Select.distinct-2389"><a href="#Select.distinct-2389"><span class="linenos">2389</span></a><span class="sd"> >>> Select().from_("tbl").select("x").distinct().sql()</span> +</span><span id="Select.distinct-2390"><a href="#Select.distinct-2390"><span class="linenos">2390</span></a><span class="sd"> 'SELECT DISTINCT x FROM tbl'</span> +</span><span id="Select.distinct-2391"><a href="#Select.distinct-2391"><span class="linenos">2391</span></a> +</span><span id="Select.distinct-2392"><a href="#Select.distinct-2392"><span class="linenos">2392</span></a><span class="sd"> Args:</span> +</span><span id="Select.distinct-2393"><a href="#Select.distinct-2393"><span class="linenos">2393</span></a><span class="sd"> distinct (bool): whether the Select should be distinct</span> +</span><span id="Select.distinct-2394"><a href="#Select.distinct-2394"><span class="linenos">2394</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.distinct-2395"><a href="#Select.distinct-2395"><span class="linenos">2395</span></a> +</span><span id="Select.distinct-2396"><a href="#Select.distinct-2396"><span class="linenos">2396</span></a><span class="sd"> Returns:</span> +</span><span id="Select.distinct-2397"><a href="#Select.distinct-2397"><span class="linenos">2397</span></a><span class="sd"> Select: the modified expression.</span> +</span><span id="Select.distinct-2398"><a href="#Select.distinct-2398"><span class="linenos">2398</span></a><span class="sd"> """</span> +</span><span id="Select.distinct-2399"><a href="#Select.distinct-2399"><span class="linenos">2399</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Select.distinct-2400"><a href="#Select.distinct-2400"><span class="linenos">2400</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"distinct"</span><span class="p">,</span> <span class="n">Distinct</span><span class="p">()</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Select.distinct-2401"><a href="#Select.distinct-2401"><span class="linenos">2401</span></a> <span class="k">return</span> <span class="n">instance</span> </span></pre></div> @@ -20969,42 +21757,42 @@ Otherwise, this resets the expression.</li> </div> <a class="headerlink" href="#Select.ctas"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.ctas-2355"><a href="#Select.ctas-2355"><span class="linenos">2355</span></a> <span class="k">def</span> <span class="nf">ctas</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Create</span><span class="p">:</span> -</span><span id="Select.ctas-2356"><a href="#Select.ctas-2356"><span class="linenos">2356</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.ctas-2357"><a href="#Select.ctas-2357"><span class="linenos">2357</span></a><span class="sd"> Convert this expression to a CREATE TABLE AS statement.</span> -</span><span id="Select.ctas-2358"><a href="#Select.ctas-2358"><span class="linenos">2358</span></a> -</span><span id="Select.ctas-2359"><a href="#Select.ctas-2359"><span class="linenos">2359</span></a><span class="sd"> Example:</span> -</span><span id="Select.ctas-2360"><a href="#Select.ctas-2360"><span class="linenos">2360</span></a><span class="sd"> >>> Select().select("*").from_("tbl").ctas("x").sql()</span> -</span><span id="Select.ctas-2361"><a href="#Select.ctas-2361"><span class="linenos">2361</span></a><span class="sd"> 'CREATE TABLE x AS SELECT * FROM tbl'</span> -</span><span id="Select.ctas-2362"><a href="#Select.ctas-2362"><span class="linenos">2362</span></a> -</span><span id="Select.ctas-2363"><a href="#Select.ctas-2363"><span class="linenos">2363</span></a><span class="sd"> Args:</span> -</span><span id="Select.ctas-2364"><a href="#Select.ctas-2364"><span class="linenos">2364</span></a><span class="sd"> table (str | Expression): the SQL code string to parse as the table name.</span> -</span><span id="Select.ctas-2365"><a href="#Select.ctas-2365"><span class="linenos">2365</span></a><span class="sd"> If another `Expression` instance is passed, it will be used as-is.</span> -</span><span id="Select.ctas-2366"><a href="#Select.ctas-2366"><span class="linenos">2366</span></a><span class="sd"> properties (dict): an optional mapping of table properties</span> -</span><span id="Select.ctas-2367"><a href="#Select.ctas-2367"><span class="linenos">2367</span></a><span class="sd"> dialect (str): the dialect used to parse the input table.</span> -</span><span id="Select.ctas-2368"><a href="#Select.ctas-2368"><span class="linenos">2368</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> -</span><span id="Select.ctas-2369"><a href="#Select.ctas-2369"><span class="linenos">2369</span></a><span class="sd"> opts (kwargs): other options to use to parse the input table.</span> -</span><span id="Select.ctas-2370"><a href="#Select.ctas-2370"><span class="linenos">2370</span></a> -</span><span id="Select.ctas-2371"><a href="#Select.ctas-2371"><span class="linenos">2371</span></a><span class="sd"> Returns:</span> -</span><span id="Select.ctas-2372"><a href="#Select.ctas-2372"><span class="linenos">2372</span></a><span class="sd"> Create: the CREATE TABLE AS expression</span> -</span><span id="Select.ctas-2373"><a href="#Select.ctas-2373"><span class="linenos">2373</span></a><span class="sd"> """</span> -</span><span id="Select.ctas-2374"><a href="#Select.ctas-2374"><span class="linenos">2374</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Select.ctas-2375"><a href="#Select.ctas-2375"><span class="linenos">2375</span></a> <span class="n">table_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> -</span><span id="Select.ctas-2376"><a href="#Select.ctas-2376"><span class="linenos">2376</span></a> <span class="n">table</span><span class="p">,</span> -</span><span id="Select.ctas-2377"><a href="#Select.ctas-2377"><span class="linenos">2377</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> -</span><span id="Select.ctas-2378"><a href="#Select.ctas-2378"><span class="linenos">2378</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="Select.ctas-2379"><a href="#Select.ctas-2379"><span class="linenos">2379</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="Select.ctas-2380"><a href="#Select.ctas-2380"><span class="linenos">2380</span></a> <span class="p">)</span> -</span><span id="Select.ctas-2381"><a href="#Select.ctas-2381"><span class="linenos">2381</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Select.ctas-2382"><a href="#Select.ctas-2382"><span class="linenos">2382</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> -</span><span id="Select.ctas-2383"><a href="#Select.ctas-2383"><span class="linenos">2383</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> -</span><span id="Select.ctas-2384"><a href="#Select.ctas-2384"><span class="linenos">2384</span></a> -</span><span id="Select.ctas-2385"><a href="#Select.ctas-2385"><span class="linenos">2385</span></a> <span class="k">return</span> <span class="n">Create</span><span class="p">(</span> -</span><span id="Select.ctas-2386"><a href="#Select.ctas-2386"><span class="linenos">2386</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table_expression</span><span class="p">,</span> -</span><span id="Select.ctas-2387"><a href="#Select.ctas-2387"><span class="linenos">2387</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"table"</span><span class="p">,</span> -</span><span id="Select.ctas-2388"><a href="#Select.ctas-2388"><span class="linenos">2388</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> -</span><span id="Select.ctas-2389"><a href="#Select.ctas-2389"><span class="linenos">2389</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties_expression</span><span class="p">,</span> -</span><span id="Select.ctas-2390"><a href="#Select.ctas-2390"><span class="linenos">2390</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.ctas-2403"><a href="#Select.ctas-2403"><span class="linenos">2403</span></a> <span class="k">def</span> <span class="nf">ctas</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Create</span><span class="p">:</span> +</span><span id="Select.ctas-2404"><a href="#Select.ctas-2404"><span class="linenos">2404</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.ctas-2405"><a href="#Select.ctas-2405"><span class="linenos">2405</span></a><span class="sd"> Convert this expression to a CREATE TABLE AS statement.</span> +</span><span id="Select.ctas-2406"><a href="#Select.ctas-2406"><span class="linenos">2406</span></a> +</span><span id="Select.ctas-2407"><a href="#Select.ctas-2407"><span class="linenos">2407</span></a><span class="sd"> Example:</span> +</span><span id="Select.ctas-2408"><a href="#Select.ctas-2408"><span class="linenos">2408</span></a><span class="sd"> >>> Select().select("*").from_("tbl").ctas("x").sql()</span> +</span><span id="Select.ctas-2409"><a href="#Select.ctas-2409"><span class="linenos">2409</span></a><span class="sd"> 'CREATE TABLE x AS SELECT * FROM tbl'</span> +</span><span id="Select.ctas-2410"><a href="#Select.ctas-2410"><span class="linenos">2410</span></a> +</span><span id="Select.ctas-2411"><a href="#Select.ctas-2411"><span class="linenos">2411</span></a><span class="sd"> Args:</span> +</span><span id="Select.ctas-2412"><a href="#Select.ctas-2412"><span class="linenos">2412</span></a><span class="sd"> table (str | Expression): the SQL code string to parse as the table name.</span> +</span><span id="Select.ctas-2413"><a href="#Select.ctas-2413"><span class="linenos">2413</span></a><span class="sd"> If another `Expression` instance is passed, it will be used as-is.</span> +</span><span id="Select.ctas-2414"><a href="#Select.ctas-2414"><span class="linenos">2414</span></a><span class="sd"> properties (dict): an optional mapping of table properties</span> +</span><span id="Select.ctas-2415"><a href="#Select.ctas-2415"><span class="linenos">2415</span></a><span class="sd"> dialect (str): the dialect used to parse the input table.</span> +</span><span id="Select.ctas-2416"><a href="#Select.ctas-2416"><span class="linenos">2416</span></a><span class="sd"> copy (bool): if `False`, modify this expression instance in-place.</span> +</span><span id="Select.ctas-2417"><a href="#Select.ctas-2417"><span class="linenos">2417</span></a><span class="sd"> opts (kwargs): other options to use to parse the input table.</span> +</span><span id="Select.ctas-2418"><a href="#Select.ctas-2418"><span class="linenos">2418</span></a> +</span><span id="Select.ctas-2419"><a href="#Select.ctas-2419"><span class="linenos">2419</span></a><span class="sd"> Returns:</span> +</span><span id="Select.ctas-2420"><a href="#Select.ctas-2420"><span class="linenos">2420</span></a><span class="sd"> Create: the CREATE TABLE AS expression</span> +</span><span id="Select.ctas-2421"><a href="#Select.ctas-2421"><span class="linenos">2421</span></a><span class="sd"> """</span> +</span><span id="Select.ctas-2422"><a href="#Select.ctas-2422"><span class="linenos">2422</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Select.ctas-2423"><a href="#Select.ctas-2423"><span class="linenos">2423</span></a> <span class="n">table_expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span> +</span><span id="Select.ctas-2424"><a href="#Select.ctas-2424"><span class="linenos">2424</span></a> <span class="n">table</span><span class="p">,</span> +</span><span id="Select.ctas-2425"><a href="#Select.ctas-2425"><span class="linenos">2425</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> +</span><span id="Select.ctas-2426"><a href="#Select.ctas-2426"><span class="linenos">2426</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="Select.ctas-2427"><a href="#Select.ctas-2427"><span class="linenos">2427</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="Select.ctas-2428"><a href="#Select.ctas-2428"><span class="linenos">2428</span></a> <span class="p">)</span> +</span><span id="Select.ctas-2429"><a href="#Select.ctas-2429"><span class="linenos">2429</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Select.ctas-2430"><a href="#Select.ctas-2430"><span class="linenos">2430</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> +</span><span id="Select.ctas-2431"><a href="#Select.ctas-2431"><span class="linenos">2431</span></a> <span class="n">properties_expression</span> <span class="o">=</span> <span class="n">Properties</span><span class="o">.</span><span class="n">from_dict</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> +</span><span id="Select.ctas-2432"><a href="#Select.ctas-2432"><span class="linenos">2432</span></a> +</span><span id="Select.ctas-2433"><a href="#Select.ctas-2433"><span class="linenos">2433</span></a> <span class="k">return</span> <span class="n">Create</span><span class="p">(</span> +</span><span id="Select.ctas-2434"><a href="#Select.ctas-2434"><span class="linenos">2434</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table_expression</span><span class="p">,</span> +</span><span id="Select.ctas-2435"><a href="#Select.ctas-2435"><span class="linenos">2435</span></a> <span class="n">kind</span><span class="o">=</span><span class="s2">"table"</span><span class="p">,</span> +</span><span id="Select.ctas-2436"><a href="#Select.ctas-2436"><span class="linenos">2436</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">instance</span><span class="p">,</span> +</span><span id="Select.ctas-2437"><a href="#Select.ctas-2437"><span class="linenos">2437</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties_expression</span><span class="p">,</span> +</span><span id="Select.ctas-2438"><a href="#Select.ctas-2438"><span class="linenos">2438</span></a> <span class="p">)</span> </span></pre></div> @@ -21051,29 +21839,29 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Select.lock"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Select.lock-2392"><a href="#Select.lock-2392"><span class="linenos">2392</span></a> <span class="k">def</span> <span class="nf">lock</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">update</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="Select.lock-2393"><a href="#Select.lock-2393"><span class="linenos">2393</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Select.lock-2394"><a href="#Select.lock-2394"><span class="linenos">2394</span></a><span class="sd"> Set the locking read mode for this expression.</span> -</span><span id="Select.lock-2395"><a href="#Select.lock-2395"><span class="linenos">2395</span></a> -</span><span id="Select.lock-2396"><a href="#Select.lock-2396"><span class="linenos">2396</span></a><span class="sd"> Examples:</span> -</span><span id="Select.lock-2397"><a href="#Select.lock-2397"><span class="linenos">2397</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")</span> -</span><span id="Select.lock-2398"><a href="#Select.lock-2398"><span class="linenos">2398</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"</span> -</span><span id="Select.lock-2399"><a href="#Select.lock-2399"><span class="linenos">2399</span></a> -</span><span id="Select.lock-2400"><a href="#Select.lock-2400"><span class="linenos">2400</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")</span> -</span><span id="Select.lock-2401"><a href="#Select.lock-2401"><span class="linenos">2401</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"</span> -</span><span id="Select.lock-2402"><a href="#Select.lock-2402"><span class="linenos">2402</span></a> -</span><span id="Select.lock-2403"><a href="#Select.lock-2403"><span class="linenos">2403</span></a><span class="sd"> Args:</span> -</span><span id="Select.lock-2404"><a href="#Select.lock-2404"><span class="linenos">2404</span></a><span class="sd"> update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.</span> -</span><span id="Select.lock-2405"><a href="#Select.lock-2405"><span class="linenos">2405</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> -</span><span id="Select.lock-2406"><a href="#Select.lock-2406"><span class="linenos">2406</span></a> -</span><span id="Select.lock-2407"><a href="#Select.lock-2407"><span class="linenos">2407</span></a><span class="sd"> Returns:</span> -</span><span id="Select.lock-2408"><a href="#Select.lock-2408"><span class="linenos">2408</span></a><span class="sd"> The modified expression.</span> -</span><span id="Select.lock-2409"><a href="#Select.lock-2409"><span class="linenos">2409</span></a><span class="sd"> """</span> -</span><span id="Select.lock-2410"><a href="#Select.lock-2410"><span class="linenos">2410</span></a> -</span><span id="Select.lock-2411"><a href="#Select.lock-2411"><span class="linenos">2411</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> -</span><span id="Select.lock-2412"><a href="#Select.lock-2412"><span class="linenos">2412</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"lock"</span><span class="p">,</span> <span class="n">Lock</span><span class="p">(</span><span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">))</span> -</span><span id="Select.lock-2413"><a href="#Select.lock-2413"><span class="linenos">2413</span></a> -</span><span id="Select.lock-2414"><a href="#Select.lock-2414"><span class="linenos">2414</span></a> <span class="k">return</span> <span class="n">inst</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Select.lock-2440"><a href="#Select.lock-2440"><span class="linenos">2440</span></a> <span class="k">def</span> <span class="nf">lock</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">update</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="Select.lock-2441"><a href="#Select.lock-2441"><span class="linenos">2441</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Select.lock-2442"><a href="#Select.lock-2442"><span class="linenos">2442</span></a><span class="sd"> Set the locking read mode for this expression.</span> +</span><span id="Select.lock-2443"><a href="#Select.lock-2443"><span class="linenos">2443</span></a> +</span><span id="Select.lock-2444"><a href="#Select.lock-2444"><span class="linenos">2444</span></a><span class="sd"> Examples:</span> +</span><span id="Select.lock-2445"><a href="#Select.lock-2445"><span class="linenos">2445</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock().sql("mysql")</span> +</span><span id="Select.lock-2446"><a href="#Select.lock-2446"><span class="linenos">2446</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR UPDATE"</span> +</span><span id="Select.lock-2447"><a href="#Select.lock-2447"><span class="linenos">2447</span></a> +</span><span id="Select.lock-2448"><a href="#Select.lock-2448"><span class="linenos">2448</span></a><span class="sd"> >>> Select().select("x").from_("tbl").where("x = 'a'").lock(update=False).sql("mysql")</span> +</span><span id="Select.lock-2449"><a href="#Select.lock-2449"><span class="linenos">2449</span></a><span class="sd"> "SELECT x FROM tbl WHERE x = 'a' FOR SHARE"</span> +</span><span id="Select.lock-2450"><a href="#Select.lock-2450"><span class="linenos">2450</span></a> +</span><span id="Select.lock-2451"><a href="#Select.lock-2451"><span class="linenos">2451</span></a><span class="sd"> Args:</span> +</span><span id="Select.lock-2452"><a href="#Select.lock-2452"><span class="linenos">2452</span></a><span class="sd"> update: if `True`, the locking type will be `FOR UPDATE`, else it will be `FOR SHARE`.</span> +</span><span id="Select.lock-2453"><a href="#Select.lock-2453"><span class="linenos">2453</span></a><span class="sd"> copy: if `False`, modify this expression instance in-place.</span> +</span><span id="Select.lock-2454"><a href="#Select.lock-2454"><span class="linenos">2454</span></a> +</span><span id="Select.lock-2455"><a href="#Select.lock-2455"><span class="linenos">2455</span></a><span class="sd"> Returns:</span> +</span><span id="Select.lock-2456"><a href="#Select.lock-2456"><span class="linenos">2456</span></a><span class="sd"> The modified expression.</span> +</span><span id="Select.lock-2457"><a href="#Select.lock-2457"><span class="linenos">2457</span></a><span class="sd"> """</span> +</span><span id="Select.lock-2458"><a href="#Select.lock-2458"><span class="linenos">2458</span></a> +</span><span id="Select.lock-2459"><a href="#Select.lock-2459"><span class="linenos">2459</span></a> <span class="n">inst</span> <span class="o">=</span> <span class="n">_maybe_copy</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">copy</span><span class="p">)</span> +</span><span id="Select.lock-2460"><a href="#Select.lock-2460"><span class="linenos">2460</span></a> <span class="n">inst</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"lock"</span><span class="p">,</span> <span class="n">Lock</span><span class="p">(</span><span class="n">update</span><span class="o">=</span><span class="n">update</span><span class="p">))</span> +</span><span id="Select.lock-2461"><a href="#Select.lock-2461"><span class="linenos">2461</span></a> +</span><span id="Select.lock-2462"><a href="#Select.lock-2462"><span class="linenos">2462</span></a> <span class="k">return</span> <span class="n">inst</span> </span></pre></div> @@ -21111,6 +21899,19 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> + <div id="Select.is_star" class="classattr"> + <div class="attr variable"> + <span class="name">is_star</span><span class="annotation">: bool</span> + + + </div> + <a class="headerlink" href="#Select.is_star"></a> + + <div class="docstring"><p>Checks whether an expression is a star.</p> +</div> + + + </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -21123,7 +21924,6 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, <dd id="Select.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> <dd id="Select.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> <dd id="Select.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="Select.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> <dd id="Select.alias" class="variable"><a href="#Expression.alias">alias</a></dd> <dd id="Select.output_name" class="variable"><a href="#Expression.output_name">output_name</a></dd> <dd id="Select.copy" class="function"><a href="#Expression.copy">copy</a></dd> @@ -21176,26 +21976,30 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Subquery"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Subquery-2425"><a href="#Subquery-2425"><span class="linenos">2425</span></a><span class="k">class</span> <span class="nc">Subquery</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">,</span> <span class="n">Unionable</span><span class="p">):</span> -</span><span id="Subquery-2426"><a href="#Subquery-2426"><span class="linenos">2426</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Subquery-2427"><a href="#Subquery-2427"><span class="linenos">2427</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Subquery-2428"><a href="#Subquery-2428"><span class="linenos">2428</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Subquery-2429"><a href="#Subquery-2429"><span class="linenos">2429</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Subquery-2430"><a href="#Subquery-2430"><span class="linenos">2430</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> -</span><span id="Subquery-2431"><a href="#Subquery-2431"><span class="linenos">2431</span></a> <span class="p">}</span> -</span><span id="Subquery-2432"><a href="#Subquery-2432"><span class="linenos">2432</span></a> -</span><span id="Subquery-2433"><a href="#Subquery-2433"><span class="linenos">2433</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Subquery-2434"><a href="#Subquery-2434"><span class="linenos">2434</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Subquery-2435"><a href="#Subquery-2435"><span class="linenos">2435</span></a><span class="sd"> Returns the first non subquery.</span> -</span><span id="Subquery-2436"><a href="#Subquery-2436"><span class="linenos">2436</span></a><span class="sd"> """</span> -</span><span id="Subquery-2437"><a href="#Subquery-2437"><span class="linenos">2437</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="Subquery-2438"><a href="#Subquery-2438"><span class="linenos">2438</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Subquery</span><span class="p">):</span> -</span><span id="Subquery-2439"><a href="#Subquery-2439"><span class="linenos">2439</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="Subquery-2440"><a href="#Subquery-2440"><span class="linenos">2440</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Subquery-2441"><a href="#Subquery-2441"><span class="linenos">2441</span></a> -</span><span id="Subquery-2442"><a href="#Subquery-2442"><span class="linenos">2442</span></a> <span class="nd">@property</span> -</span><span id="Subquery-2443"><a href="#Subquery-2443"><span class="linenos">2443</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Subquery-2444"><a href="#Subquery-2444"><span class="linenos">2444</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Subquery-2477"><a href="#Subquery-2477"><span class="linenos">2477</span></a><span class="k">class</span> <span class="nc">Subquery</span><span class="p">(</span><span class="n">DerivedTable</span><span class="p">,</span> <span class="n">Unionable</span><span class="p">):</span> +</span><span id="Subquery-2478"><a href="#Subquery-2478"><span class="linenos">2478</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Subquery-2479"><a href="#Subquery-2479"><span class="linenos">2479</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Subquery-2480"><a href="#Subquery-2480"><span class="linenos">2480</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Subquery-2481"><a href="#Subquery-2481"><span class="linenos">2481</span></a> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Subquery-2482"><a href="#Subquery-2482"><span class="linenos">2482</span></a> <span class="o">**</span><span class="n">QUERY_MODIFIERS</span><span class="p">,</span> +</span><span id="Subquery-2483"><a href="#Subquery-2483"><span class="linenos">2483</span></a> <span class="p">}</span> +</span><span id="Subquery-2484"><a href="#Subquery-2484"><span class="linenos">2484</span></a> +</span><span id="Subquery-2485"><a href="#Subquery-2485"><span class="linenos">2485</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Subquery-2486"><a href="#Subquery-2486"><span class="linenos">2486</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Subquery-2487"><a href="#Subquery-2487"><span class="linenos">2487</span></a><span class="sd"> Returns the first non subquery.</span> +</span><span id="Subquery-2488"><a href="#Subquery-2488"><span class="linenos">2488</span></a><span class="sd"> """</span> +</span><span id="Subquery-2489"><a href="#Subquery-2489"><span class="linenos">2489</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="Subquery-2490"><a href="#Subquery-2490"><span class="linenos">2490</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Subquery</span><span class="p">):</span> +</span><span id="Subquery-2491"><a href="#Subquery-2491"><span class="linenos">2491</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="Subquery-2492"><a href="#Subquery-2492"><span class="linenos">2492</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Subquery-2493"><a href="#Subquery-2493"><span class="linenos">2493</span></a> +</span><span id="Subquery-2494"><a href="#Subquery-2494"><span class="linenos">2494</span></a> <span class="nd">@property</span> +</span><span id="Subquery-2495"><a href="#Subquery-2495"><span class="linenos">2495</span></a> <span class="k">def</span> <span class="nf">is_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Subquery-2496"><a href="#Subquery-2496"><span class="linenos">2496</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">is_star</span> +</span><span id="Subquery-2497"><a href="#Subquery-2497"><span class="linenos">2497</span></a> +</span><span id="Subquery-2498"><a href="#Subquery-2498"><span class="linenos">2498</span></a> <span class="nd">@property</span> +</span><span id="Subquery-2499"><a href="#Subquery-2499"><span class="linenos">2499</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Subquery-2500"><a href="#Subquery-2500"><span class="linenos">2500</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> </span></pre></div> @@ -21212,14 +22016,14 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Subquery.unnest"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Subquery.unnest-2433"><a href="#Subquery.unnest-2433"><span class="linenos">2433</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Subquery.unnest-2434"><a href="#Subquery.unnest-2434"><span class="linenos">2434</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Subquery.unnest-2435"><a href="#Subquery.unnest-2435"><span class="linenos">2435</span></a><span class="sd"> Returns the first non subquery.</span> -</span><span id="Subquery.unnest-2436"><a href="#Subquery.unnest-2436"><span class="linenos">2436</span></a><span class="sd"> """</span> -</span><span id="Subquery.unnest-2437"><a href="#Subquery.unnest-2437"><span class="linenos">2437</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> -</span><span id="Subquery.unnest-2438"><a href="#Subquery.unnest-2438"><span class="linenos">2438</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Subquery</span><span class="p">):</span> -</span><span id="Subquery.unnest-2439"><a href="#Subquery.unnest-2439"><span class="linenos">2439</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="Subquery.unnest-2440"><a href="#Subquery.unnest-2440"><span class="linenos">2440</span></a> <span class="k">return</span> <span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Subquery.unnest-2485"><a href="#Subquery.unnest-2485"><span class="linenos">2485</span></a> <span class="k">def</span> <span class="nf">unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Subquery.unnest-2486"><a href="#Subquery.unnest-2486"><span class="linenos">2486</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Subquery.unnest-2487"><a href="#Subquery.unnest-2487"><span class="linenos">2487</span></a><span class="sd"> Returns the first non subquery.</span> +</span><span id="Subquery.unnest-2488"><a href="#Subquery.unnest-2488"><span class="linenos">2488</span></a><span class="sd"> """</span> +</span><span id="Subquery.unnest-2489"><a href="#Subquery.unnest-2489"><span class="linenos">2489</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span> +</span><span id="Subquery.unnest-2490"><a href="#Subquery.unnest-2490"><span class="linenos">2490</span></a> <span class="k">while</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">Subquery</span><span class="p">):</span> +</span><span id="Subquery.unnest-2491"><a href="#Subquery.unnest-2491"><span class="linenos">2491</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="Subquery.unnest-2492"><a href="#Subquery.unnest-2492"><span class="linenos">2492</span></a> <span class="k">return</span> <span class="n">expression</span> </span></pre></div> @@ -21228,6 +22032,19 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> + <div id="Subquery.is_star" class="classattr"> + <div class="attr variable"> + <span class="name">is_star</span><span class="annotation">: bool</span> + + + </div> + <a class="headerlink" href="#Subquery.is_star"></a> + + <div class="docstring"><p>Checks whether an expression is a star.</p> +</div> + + + </div> <div id="Subquery.output_name" class="classattr"> <div class="attr variable"> <span class="name">output_name</span> @@ -21270,7 +22087,6 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, <dd id="Subquery.is_string" class="variable"><a href="#Expression.is_string">is_string</a></dd> <dd id="Subquery.is_number" class="variable"><a href="#Expression.is_number">is_number</a></dd> <dd id="Subquery.is_int" class="variable"><a href="#Expression.is_int">is_int</a></dd> - <dd id="Subquery.is_star" class="variable"><a href="#Expression.is_star">is_star</a></dd> <dd id="Subquery.alias" class="variable"><a href="#Expression.alias">alias</a></dd> <dd id="Subquery.copy" class="function"><a href="#Expression.copy">copy</a></dd> <dd id="Subquery.append" class="function"><a href="#Expression.append">append</a></dd> @@ -21316,18 +22132,18 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#TableSample"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TableSample-2447"><a href="#TableSample-2447"><span class="linenos">2447</span></a><span class="k">class</span> <span class="nc">TableSample</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="TableSample-2448"><a href="#TableSample-2448"><span class="linenos">2448</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="TableSample-2449"><a href="#TableSample-2449"><span class="linenos">2449</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TableSample-2450"><a href="#TableSample-2450"><span class="linenos">2450</span></a> <span class="s2">"method"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TableSample-2451"><a href="#TableSample-2451"><span class="linenos">2451</span></a> <span class="s2">"bucket_numerator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TableSample-2452"><a href="#TableSample-2452"><span class="linenos">2452</span></a> <span class="s2">"bucket_denominator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TableSample-2453"><a href="#TableSample-2453"><span class="linenos">2453</span></a> <span class="s2">"bucket_field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TableSample-2454"><a href="#TableSample-2454"><span class="linenos">2454</span></a> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TableSample-2455"><a href="#TableSample-2455"><span class="linenos">2455</span></a> <span class="s2">"rows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TableSample-2456"><a href="#TableSample-2456"><span class="linenos">2456</span></a> <span class="s2">"size"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TableSample-2457"><a href="#TableSample-2457"><span class="linenos">2457</span></a> <span class="s2">"seed"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="TableSample-2458"><a href="#TableSample-2458"><span class="linenos">2458</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TableSample-2503"><a href="#TableSample-2503"><span class="linenos">2503</span></a><span class="k">class</span> <span class="nc">TableSample</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="TableSample-2504"><a href="#TableSample-2504"><span class="linenos">2504</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="TableSample-2505"><a href="#TableSample-2505"><span class="linenos">2505</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TableSample-2506"><a href="#TableSample-2506"><span class="linenos">2506</span></a> <span class="s2">"method"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TableSample-2507"><a href="#TableSample-2507"><span class="linenos">2507</span></a> <span class="s2">"bucket_numerator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TableSample-2508"><a href="#TableSample-2508"><span class="linenos">2508</span></a> <span class="s2">"bucket_denominator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TableSample-2509"><a href="#TableSample-2509"><span class="linenos">2509</span></a> <span class="s2">"bucket_field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TableSample-2510"><a href="#TableSample-2510"><span class="linenos">2510</span></a> <span class="s2">"percent"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TableSample-2511"><a href="#TableSample-2511"><span class="linenos">2511</span></a> <span class="s2">"rows"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TableSample-2512"><a href="#TableSample-2512"><span class="linenos">2512</span></a> <span class="s2">"size"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TableSample-2513"><a href="#TableSample-2513"><span class="linenos">2513</span></a> <span class="s2">"seed"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="TableSample-2514"><a href="#TableSample-2514"><span class="linenos">2514</span></a> <span class="p">}</span> </span></pre></div> @@ -21387,14 +22203,14 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Tag"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tag-2461"><a href="#Tag-2461"><span class="linenos">2461</span></a><span class="k">class</span> <span class="nc">Tag</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Tag-2462"><a href="#Tag-2462"><span class="linenos">2462</span></a><span class="w"> </span><span class="sd">"""Tags are used for generating arbitrary sql like SELECT <span>x</span>."""</span> -</span><span id="Tag-2463"><a href="#Tag-2463"><span class="linenos">2463</span></a> -</span><span id="Tag-2464"><a href="#Tag-2464"><span class="linenos">2464</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Tag-2465"><a href="#Tag-2465"><span class="linenos">2465</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Tag-2466"><a href="#Tag-2466"><span class="linenos">2466</span></a> <span class="s2">"prefix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Tag-2467"><a href="#Tag-2467"><span class="linenos">2467</span></a> <span class="s2">"postfix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Tag-2468"><a href="#Tag-2468"><span class="linenos">2468</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tag-2517"><a href="#Tag-2517"><span class="linenos">2517</span></a><span class="k">class</span> <span class="nc">Tag</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Tag-2518"><a href="#Tag-2518"><span class="linenos">2518</span></a><span class="w"> </span><span class="sd">"""Tags are used for generating arbitrary sql like SELECT <span>x</span>."""</span> +</span><span id="Tag-2519"><a href="#Tag-2519"><span class="linenos">2519</span></a> +</span><span id="Tag-2520"><a href="#Tag-2520"><span class="linenos">2520</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Tag-2521"><a href="#Tag-2521"><span class="linenos">2521</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Tag-2522"><a href="#Tag-2522"><span class="linenos">2522</span></a> <span class="s2">"prefix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Tag-2523"><a href="#Tag-2523"><span class="linenos">2523</span></a> <span class="s2">"postfix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Tag-2524"><a href="#Tag-2524"><span class="linenos">2524</span></a> <span class="p">}</span> </span></pre></div> @@ -21456,13 +22272,14 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Pivot"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Pivot-2471"><a href="#Pivot-2471"><span class="linenos">2471</span></a><span class="k">class</span> <span class="nc">Pivot</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Pivot-2472"><a href="#Pivot-2472"><span class="linenos">2472</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Pivot-2473"><a href="#Pivot-2473"><span class="linenos">2473</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Pivot-2474"><a href="#Pivot-2474"><span class="linenos">2474</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Pivot-2475"><a href="#Pivot-2475"><span class="linenos">2475</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Pivot-2476"><a href="#Pivot-2476"><span class="linenos">2476</span></a> <span class="s2">"unpivot"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Pivot-2477"><a href="#Pivot-2477"><span class="linenos">2477</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Pivot-2527"><a href="#Pivot-2527"><span class="linenos">2527</span></a><span class="k">class</span> <span class="nc">Pivot</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Pivot-2528"><a href="#Pivot-2528"><span class="linenos">2528</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Pivot-2529"><a href="#Pivot-2529"><span class="linenos">2529</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Pivot-2530"><a href="#Pivot-2530"><span class="linenos">2530</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Pivot-2531"><a href="#Pivot-2531"><span class="linenos">2531</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Pivot-2532"><a href="#Pivot-2532"><span class="linenos">2532</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Pivot-2533"><a href="#Pivot-2533"><span class="linenos">2533</span></a> <span class="s2">"unpivot"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Pivot-2534"><a href="#Pivot-2534"><span class="linenos">2534</span></a> <span class="p">}</span> </span></pre></div> @@ -21522,14 +22339,14 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Window"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Window-2480"><a href="#Window-2480"><span class="linenos">2480</span></a><span class="k">class</span> <span class="nc">Window</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Window-2481"><a href="#Window-2481"><span class="linenos">2481</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Window-2482"><a href="#Window-2482"><span class="linenos">2482</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Window-2483"><a href="#Window-2483"><span class="linenos">2483</span></a> <span class="s2">"partition_by"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Window-2484"><a href="#Window-2484"><span class="linenos">2484</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Window-2485"><a href="#Window-2485"><span class="linenos">2485</span></a> <span class="s2">"spec"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Window-2486"><a href="#Window-2486"><span class="linenos">2486</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Window-2487"><a href="#Window-2487"><span class="linenos">2487</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Window-2537"><a href="#Window-2537"><span class="linenos">2537</span></a><span class="k">class</span> <span class="nc">Window</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Window-2538"><a href="#Window-2538"><span class="linenos">2538</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Window-2539"><a href="#Window-2539"><span class="linenos">2539</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Window-2540"><a href="#Window-2540"><span class="linenos">2540</span></a> <span class="s2">"partition_by"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Window-2541"><a href="#Window-2541"><span class="linenos">2541</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Window-2542"><a href="#Window-2542"><span class="linenos">2542</span></a> <span class="s2">"spec"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Window-2543"><a href="#Window-2543"><span class="linenos">2543</span></a> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Window-2544"><a href="#Window-2544"><span class="linenos">2544</span></a> <span class="p">}</span> </span></pre></div> @@ -21589,14 +22406,14 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#WindowSpec"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="WindowSpec-2490"><a href="#WindowSpec-2490"><span class="linenos">2490</span></a><span class="k">class</span> <span class="nc">WindowSpec</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="WindowSpec-2491"><a href="#WindowSpec-2491"><span class="linenos">2491</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="WindowSpec-2492"><a href="#WindowSpec-2492"><span class="linenos">2492</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="WindowSpec-2493"><a href="#WindowSpec-2493"><span class="linenos">2493</span></a> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="WindowSpec-2494"><a href="#WindowSpec-2494"><span class="linenos">2494</span></a> <span class="s2">"start_side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="WindowSpec-2495"><a href="#WindowSpec-2495"><span class="linenos">2495</span></a> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="WindowSpec-2496"><a href="#WindowSpec-2496"><span class="linenos">2496</span></a> <span class="s2">"end_side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="WindowSpec-2497"><a href="#WindowSpec-2497"><span class="linenos">2497</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="WindowSpec-2547"><a href="#WindowSpec-2547"><span class="linenos">2547</span></a><span class="k">class</span> <span class="nc">WindowSpec</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="WindowSpec-2548"><a href="#WindowSpec-2548"><span class="linenos">2548</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="WindowSpec-2549"><a href="#WindowSpec-2549"><span class="linenos">2549</span></a> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="WindowSpec-2550"><a href="#WindowSpec-2550"><span class="linenos">2550</span></a> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="WindowSpec-2551"><a href="#WindowSpec-2551"><span class="linenos">2551</span></a> <span class="s2">"start_side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="WindowSpec-2552"><a href="#WindowSpec-2552"><span class="linenos">2552</span></a> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="WindowSpec-2553"><a href="#WindowSpec-2553"><span class="linenos">2553</span></a> <span class="s2">"end_side"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="WindowSpec-2554"><a href="#WindowSpec-2554"><span class="linenos">2554</span></a> <span class="p">}</span> </span></pre></div> @@ -21656,8 +22473,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Where"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Where-2500"><a href="#Where-2500"><span class="linenos">2500</span></a><span class="k">class</span> <span class="nc">Where</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Where-2501"><a href="#Where-2501"><span class="linenos">2501</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Where-2557"><a href="#Where-2557"><span class="linenos">2557</span></a><span class="k">class</span> <span class="nc">Where</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Where-2558"><a href="#Where-2558"><span class="linenos">2558</span></a> <span class="k">pass</span> </span></pre></div> @@ -21717,16 +22534,16 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Star"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Star-2504"><a href="#Star-2504"><span class="linenos">2504</span></a><span class="k">class</span> <span class="nc">Star</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Star-2505"><a href="#Star-2505"><span class="linenos">2505</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"except"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Star-2506"><a href="#Star-2506"><span class="linenos">2506</span></a> -</span><span id="Star-2507"><a href="#Star-2507"><span class="linenos">2507</span></a> <span class="nd">@property</span> -</span><span id="Star-2508"><a href="#Star-2508"><span class="linenos">2508</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Star-2509"><a href="#Star-2509"><span class="linenos">2509</span></a> <span class="k">return</span> <span class="s2">"*"</span> -</span><span id="Star-2510"><a href="#Star-2510"><span class="linenos">2510</span></a> -</span><span id="Star-2511"><a href="#Star-2511"><span class="linenos">2511</span></a> <span class="nd">@property</span> -</span><span id="Star-2512"><a href="#Star-2512"><span class="linenos">2512</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Star-2513"><a href="#Star-2513"><span class="linenos">2513</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Star-2561"><a href="#Star-2561"><span class="linenos">2561</span></a><span class="k">class</span> <span class="nc">Star</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Star-2562"><a href="#Star-2562"><span class="linenos">2562</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"except"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Star-2563"><a href="#Star-2563"><span class="linenos">2563</span></a> +</span><span id="Star-2564"><a href="#Star-2564"><span class="linenos">2564</span></a> <span class="nd">@property</span> +</span><span id="Star-2565"><a href="#Star-2565"><span class="linenos">2565</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Star-2566"><a href="#Star-2566"><span class="linenos">2566</span></a> <span class="k">return</span> <span class="s2">"*"</span> +</span><span id="Star-2567"><a href="#Star-2567"><span class="linenos">2567</span></a> +</span><span id="Star-2568"><a href="#Star-2568"><span class="linenos">2568</span></a> <span class="nd">@property</span> +</span><span id="Star-2569"><a href="#Star-2569"><span class="linenos">2569</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Star-2570"><a href="#Star-2570"><span class="linenos">2570</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -21815,8 +22632,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Parameter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parameter-2516"><a href="#Parameter-2516"><span class="linenos">2516</span></a><span class="k">class</span> <span class="nc">Parameter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Parameter-2517"><a href="#Parameter-2517"><span class="linenos">2517</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"wrapped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parameter-2573"><a href="#Parameter-2573"><span class="linenos">2573</span></a><span class="k">class</span> <span class="nc">Parameter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Parameter-2574"><a href="#Parameter-2574"><span class="linenos">2574</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"wrapped"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -21876,8 +22693,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#SessionParameter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SessionParameter-2520"><a href="#SessionParameter-2520"><span class="linenos">2520</span></a><span class="k">class</span> <span class="nc">SessionParameter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="SessionParameter-2521"><a href="#SessionParameter-2521"><span class="linenos">2521</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SessionParameter-2577"><a href="#SessionParameter-2577"><span class="linenos">2577</span></a><span class="k">class</span> <span class="nc">SessionParameter</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="SessionParameter-2578"><a href="#SessionParameter-2578"><span class="linenos">2578</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -21937,8 +22754,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Placeholder"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Placeholder-2524"><a href="#Placeholder-2524"><span class="linenos">2524</span></a><span class="k">class</span> <span class="nc">Placeholder</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Placeholder-2525"><a href="#Placeholder-2525"><span class="linenos">2525</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Placeholder-2581"><a href="#Placeholder-2581"><span class="linenos">2581</span></a><span class="k">class</span> <span class="nc">Placeholder</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Placeholder-2582"><a href="#Placeholder-2582"><span class="linenos">2582</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -21998,12 +22815,12 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Null"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Null-2528"><a href="#Null-2528"><span class="linenos">2528</span></a><span class="k">class</span> <span class="nc">Null</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Null-2529"><a href="#Null-2529"><span class="linenos">2529</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Null-2530"><a href="#Null-2530"><span class="linenos">2530</span></a> -</span><span id="Null-2531"><a href="#Null-2531"><span class="linenos">2531</span></a> <span class="nd">@property</span> -</span><span id="Null-2532"><a href="#Null-2532"><span class="linenos">2532</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Null-2533"><a href="#Null-2533"><span class="linenos">2533</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Null-2585"><a href="#Null-2585"><span class="linenos">2585</span></a><span class="k">class</span> <span class="nc">Null</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Null-2586"><a href="#Null-2586"><span class="linenos">2586</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Null-2587"><a href="#Null-2587"><span class="linenos">2587</span></a> +</span><span id="Null-2588"><a href="#Null-2588"><span class="linenos">2588</span></a> <span class="nd">@property</span> +</span><span id="Null-2589"><a href="#Null-2589"><span class="linenos">2589</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Null-2590"><a href="#Null-2590"><span class="linenos">2590</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> </span></pre></div> @@ -22069,8 +22886,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Boolean"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Boolean-2536"><a href="#Boolean-2536"><span class="linenos">2536</span></a><span class="k">class</span> <span class="nc">Boolean</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Boolean-2537"><a href="#Boolean-2537"><span class="linenos">2537</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Boolean-2593"><a href="#Boolean-2593"><span class="linenos">2593</span></a><span class="k">class</span> <span class="nc">Boolean</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Boolean-2594"><a href="#Boolean-2594"><span class="linenos">2594</span></a> <span class="k">pass</span> </span></pre></div> @@ -22136,121 +22953,122 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#DataType"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataType-2540"><a href="#DataType-2540"><span class="linenos">2540</span></a><span class="k">class</span> <span class="nc">DataType</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="DataType-2541"><a href="#DataType-2541"><span class="linenos">2541</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-2542"><a href="#DataType-2542"><span class="linenos">2542</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="DataType-2543"><a href="#DataType-2543"><span class="linenos">2543</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="DataType-2544"><a href="#DataType-2544"><span class="linenos">2544</span></a> <span class="s2">"nested"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="DataType-2545"><a href="#DataType-2545"><span class="linenos">2545</span></a> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="DataType-2546"><a href="#DataType-2546"><span class="linenos">2546</span></a> <span class="s2">"prefix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="DataType-2547"><a href="#DataType-2547"><span class="linenos">2547</span></a> <span class="p">}</span> -</span><span id="DataType-2548"><a href="#DataType-2548"><span class="linenos">2548</span></a> -</span><span id="DataType-2549"><a href="#DataType-2549"><span class="linenos">2549</span></a> <span class="k">class</span> <span class="nc">Type</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> -</span><span id="DataType-2550"><a href="#DataType-2550"><span class="linenos">2550</span></a> <span class="n">CHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2551"><a href="#DataType-2551"><span class="linenos">2551</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2552"><a href="#DataType-2552"><span class="linenos">2552</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2553"><a href="#DataType-2553"><span class="linenos">2553</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2554"><a href="#DataType-2554"><span class="linenos">2554</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2555"><a href="#DataType-2555"><span class="linenos">2555</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2556"><a href="#DataType-2556"><span class="linenos">2556</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2557"><a href="#DataType-2557"><span class="linenos">2557</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2558"><a href="#DataType-2558"><span class="linenos">2558</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2559"><a href="#DataType-2559"><span class="linenos">2559</span></a> <span class="n">BINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2560"><a href="#DataType-2560"><span class="linenos">2560</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2561"><a href="#DataType-2561"><span class="linenos">2561</span></a> <span class="n">INT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2562"><a href="#DataType-2562"><span class="linenos">2562</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2563"><a href="#DataType-2563"><span class="linenos">2563</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2564"><a href="#DataType-2564"><span class="linenos">2564</span></a> <span class="n">BIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2565"><a href="#DataType-2565"><span class="linenos">2565</span></a> <span class="n">FLOAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2566"><a href="#DataType-2566"><span class="linenos">2566</span></a> <span class="n">DOUBLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2567"><a href="#DataType-2567"><span class="linenos">2567</span></a> <span class="n">DECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2568"><a href="#DataType-2568"><span class="linenos">2568</span></a> <span class="n">BOOLEAN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2569"><a href="#DataType-2569"><span class="linenos">2569</span></a> <span class="n">JSON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2570"><a href="#DataType-2570"><span class="linenos">2570</span></a> <span class="n">JSONB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2571"><a href="#DataType-2571"><span class="linenos">2571</span></a> <span class="n">INTERVAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2572"><a href="#DataType-2572"><span class="linenos">2572</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2573"><a href="#DataType-2573"><span class="linenos">2573</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2574"><a href="#DataType-2574"><span class="linenos">2574</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2575"><a href="#DataType-2575"><span class="linenos">2575</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2576"><a href="#DataType-2576"><span class="linenos">2576</span></a> <span class="n">DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2577"><a href="#DataType-2577"><span class="linenos">2577</span></a> <span class="n">DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2578"><a href="#DataType-2578"><span class="linenos">2578</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2579"><a href="#DataType-2579"><span class="linenos">2579</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2580"><a href="#DataType-2580"><span class="linenos">2580</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2581"><a href="#DataType-2581"><span class="linenos">2581</span></a> <span class="n">GEOGRAPHY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2582"><a href="#DataType-2582"><span class="linenos">2582</span></a> <span class="n">GEOMETRY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2583"><a href="#DataType-2583"><span class="linenos">2583</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2584"><a href="#DataType-2584"><span class="linenos">2584</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2585"><a href="#DataType-2585"><span class="linenos">2585</span></a> <span class="n">HLLSKETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2586"><a href="#DataType-2586"><span class="linenos">2586</span></a> <span class="n">HSTORE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2587"><a href="#DataType-2587"><span class="linenos">2587</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2588"><a href="#DataType-2588"><span class="linenos">2588</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2589"><a href="#DataType-2589"><span class="linenos">2589</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2590"><a href="#DataType-2590"><span class="linenos">2590</span></a> <span class="n">BIGSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2591"><a href="#DataType-2591"><span class="linenos">2591</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2592"><a href="#DataType-2592"><span class="linenos">2592</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2593"><a href="#DataType-2593"><span class="linenos">2593</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2594"><a href="#DataType-2594"><span class="linenos">2594</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2595"><a href="#DataType-2595"><span class="linenos">2595</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2596"><a href="#DataType-2596"><span class="linenos">2596</span></a> <span class="n">IMAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2597"><a href="#DataType-2597"><span class="linenos">2597</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2598"><a href="#DataType-2598"><span class="linenos">2598</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2599"><a href="#DataType-2599"><span class="linenos">2599</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType-2600"><a href="#DataType-2600"><span class="linenos">2600</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> -</span><span id="DataType-2601"><a href="#DataType-2601"><span class="linenos">2601</span></a> -</span><span id="DataType-2602"><a href="#DataType-2602"><span class="linenos">2602</span></a> <span class="n">TEXT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-2603"><a href="#DataType-2603"><span class="linenos">2603</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="DataType-2604"><a href="#DataType-2604"><span class="linenos">2604</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="DataType-2605"><a href="#DataType-2605"><span class="linenos">2605</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="DataType-2606"><a href="#DataType-2606"><span class="linenos">2606</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="DataType-2607"><a href="#DataType-2607"><span class="linenos">2607</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="DataType-2608"><a href="#DataType-2608"><span class="linenos">2608</span></a> <span class="p">}</span> -</span><span id="DataType-2609"><a href="#DataType-2609"><span class="linenos">2609</span></a> -</span><span id="DataType-2610"><a href="#DataType-2610"><span class="linenos">2610</span></a> <span class="n">INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-2611"><a href="#DataType-2611"><span class="linenos">2611</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="DataType-2612"><a href="#DataType-2612"><span class="linenos">2612</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="DataType-2613"><a href="#DataType-2613"><span class="linenos">2613</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="DataType-2614"><a href="#DataType-2614"><span class="linenos">2614</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="DataType-2615"><a href="#DataType-2615"><span class="linenos">2615</span></a> <span class="p">}</span> -</span><span id="DataType-2616"><a href="#DataType-2616"><span class="linenos">2616</span></a> -</span><span id="DataType-2617"><a href="#DataType-2617"><span class="linenos">2617</span></a> <span class="n">FLOAT_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-2618"><a href="#DataType-2618"><span class="linenos">2618</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="DataType-2619"><a href="#DataType-2619"><span class="linenos">2619</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="DataType-2620"><a href="#DataType-2620"><span class="linenos">2620</span></a> <span class="p">}</span> -</span><span id="DataType-2621"><a href="#DataType-2621"><span class="linenos">2621</span></a> -</span><span id="DataType-2622"><a href="#DataType-2622"><span class="linenos">2622</span></a> <span class="n">NUMERIC_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">INTEGER_TYPES</span><span class="p">,</span> <span class="o">*</span><span class="n">FLOAT_TYPES</span><span class="p">}</span> -</span><span id="DataType-2623"><a href="#DataType-2623"><span class="linenos">2623</span></a> -</span><span id="DataType-2624"><a href="#DataType-2624"><span class="linenos">2624</span></a> <span class="n">TEMPORAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="DataType-2625"><a href="#DataType-2625"><span class="linenos">2625</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="DataType-2626"><a href="#DataType-2626"><span class="linenos">2626</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="DataType-2627"><a href="#DataType-2627"><span class="linenos">2627</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="DataType-2628"><a href="#DataType-2628"><span class="linenos">2628</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="DataType-2629"><a href="#DataType-2629"><span class="linenos">2629</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="DataType-2630"><a href="#DataType-2630"><span class="linenos">2630</span></a> <span class="p">}</span> -</span><span id="DataType-2631"><a href="#DataType-2631"><span class="linenos">2631</span></a> -</span><span id="DataType-2632"><a href="#DataType-2632"><span class="linenos">2632</span></a> <span class="nd">@classmethod</span> -</span><span id="DataType-2633"><a href="#DataType-2633"><span class="linenos">2633</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> -</span><span id="DataType-2634"><a href="#DataType-2634"><span class="linenos">2634</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="DataType-2635"><a href="#DataType-2635"><span class="linenos">2635</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="DataType-2636"><a href="#DataType-2636"><span class="linenos">2636</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> -</span><span id="DataType-2637"><a href="#DataType-2637"><span class="linenos">2637</span></a> -</span><span id="DataType-2638"><a href="#DataType-2638"><span class="linenos">2638</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="DataType-2639"><a href="#DataType-2639"><span class="linenos">2639</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">__members__</span><span class="p">:</span> -</span><span id="DataType-2640"><a href="#DataType-2640"><span class="linenos">2640</span></a> <span class="n">data_type_exp</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> -</span><span id="DataType-2641"><a href="#DataType-2641"><span class="linenos">2641</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataType-2642"><a href="#DataType-2642"><span class="linenos">2642</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">DataType</span><span class="p">)</span> -</span><span id="DataType-2643"><a href="#DataType-2643"><span class="linenos">2643</span></a> <span class="k">if</span> <span class="n">data_type_exp</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="DataType-2644"><a href="#DataType-2644"><span class="linenos">2644</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unparsable data type value: </span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="DataType-2645"><a href="#DataType-2645"><span class="linenos">2645</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> -</span><span id="DataType-2646"><a href="#DataType-2646"><span class="linenos">2646</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> -</span><span id="DataType-2647"><a href="#DataType-2647"><span class="linenos">2647</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> -</span><span id="DataType-2648"><a href="#DataType-2648"><span class="linenos">2648</span></a> <span class="k">return</span> <span class="n">dtype</span> -</span><span id="DataType-2649"><a href="#DataType-2649"><span class="linenos">2649</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataType-2650"><a href="#DataType-2650"><span class="linenos">2650</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> -</span><span id="DataType-2651"><a href="#DataType-2651"><span class="linenos">2651</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> -</span><span id="DataType-2652"><a href="#DataType-2652"><span class="linenos">2652</span></a> -</span><span id="DataType-2653"><a href="#DataType-2653"><span class="linenos">2653</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="DataType-2654"><a href="#DataType-2654"><span class="linenos">2654</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">dtype</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataType-2597"><a href="#DataType-2597"><span class="linenos">2597</span></a><span class="k">class</span> <span class="nc">DataType</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="DataType-2598"><a href="#DataType-2598"><span class="linenos">2598</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-2599"><a href="#DataType-2599"><span class="linenos">2599</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="DataType-2600"><a href="#DataType-2600"><span class="linenos">2600</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="DataType-2601"><a href="#DataType-2601"><span class="linenos">2601</span></a> <span class="s2">"nested"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="DataType-2602"><a href="#DataType-2602"><span class="linenos">2602</span></a> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="DataType-2603"><a href="#DataType-2603"><span class="linenos">2603</span></a> <span class="s2">"prefix"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="DataType-2604"><a href="#DataType-2604"><span class="linenos">2604</span></a> <span class="p">}</span> +</span><span id="DataType-2605"><a href="#DataType-2605"><span class="linenos">2605</span></a> +</span><span id="DataType-2606"><a href="#DataType-2606"><span class="linenos">2606</span></a> <span class="k">class</span> <span class="nc">Type</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> +</span><span id="DataType-2607"><a href="#DataType-2607"><span class="linenos">2607</span></a> <span class="n">CHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2608"><a href="#DataType-2608"><span class="linenos">2608</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2609"><a href="#DataType-2609"><span class="linenos">2609</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2610"><a href="#DataType-2610"><span class="linenos">2610</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2611"><a href="#DataType-2611"><span class="linenos">2611</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2612"><a href="#DataType-2612"><span class="linenos">2612</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2613"><a href="#DataType-2613"><span class="linenos">2613</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2614"><a href="#DataType-2614"><span class="linenos">2614</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2615"><a href="#DataType-2615"><span class="linenos">2615</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2616"><a href="#DataType-2616"><span class="linenos">2616</span></a> <span class="n">BINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2617"><a href="#DataType-2617"><span class="linenos">2617</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2618"><a href="#DataType-2618"><span class="linenos">2618</span></a> <span class="n">INT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2619"><a href="#DataType-2619"><span class="linenos">2619</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2620"><a href="#DataType-2620"><span class="linenos">2620</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2621"><a href="#DataType-2621"><span class="linenos">2621</span></a> <span class="n">BIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2622"><a href="#DataType-2622"><span class="linenos">2622</span></a> <span class="n">FLOAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2623"><a href="#DataType-2623"><span class="linenos">2623</span></a> <span class="n">DOUBLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2624"><a href="#DataType-2624"><span class="linenos">2624</span></a> <span class="n">DECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2625"><a href="#DataType-2625"><span class="linenos">2625</span></a> <span class="n">BOOLEAN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2626"><a href="#DataType-2626"><span class="linenos">2626</span></a> <span class="n">JSON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2627"><a href="#DataType-2627"><span class="linenos">2627</span></a> <span class="n">JSONB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2628"><a href="#DataType-2628"><span class="linenos">2628</span></a> <span class="n">INTERVAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2629"><a href="#DataType-2629"><span class="linenos">2629</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2630"><a href="#DataType-2630"><span class="linenos">2630</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2631"><a href="#DataType-2631"><span class="linenos">2631</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2632"><a href="#DataType-2632"><span class="linenos">2632</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2633"><a href="#DataType-2633"><span class="linenos">2633</span></a> <span class="n">DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2634"><a href="#DataType-2634"><span class="linenos">2634</span></a> <span class="n">DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2635"><a href="#DataType-2635"><span class="linenos">2635</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2636"><a href="#DataType-2636"><span class="linenos">2636</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2637"><a href="#DataType-2637"><span class="linenos">2637</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2638"><a href="#DataType-2638"><span class="linenos">2638</span></a> <span class="n">GEOGRAPHY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2639"><a href="#DataType-2639"><span class="linenos">2639</span></a> <span class="n">GEOMETRY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2640"><a href="#DataType-2640"><span class="linenos">2640</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2641"><a href="#DataType-2641"><span class="linenos">2641</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2642"><a href="#DataType-2642"><span class="linenos">2642</span></a> <span class="n">HLLSKETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2643"><a href="#DataType-2643"><span class="linenos">2643</span></a> <span class="n">HSTORE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2644"><a href="#DataType-2644"><span class="linenos">2644</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2645"><a href="#DataType-2645"><span class="linenos">2645</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2646"><a href="#DataType-2646"><span class="linenos">2646</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2647"><a href="#DataType-2647"><span class="linenos">2647</span></a> <span class="n">BIGSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2648"><a href="#DataType-2648"><span class="linenos">2648</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2649"><a href="#DataType-2649"><span class="linenos">2649</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2650"><a href="#DataType-2650"><span class="linenos">2650</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2651"><a href="#DataType-2651"><span class="linenos">2651</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2652"><a href="#DataType-2652"><span class="linenos">2652</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2653"><a href="#DataType-2653"><span class="linenos">2653</span></a> <span class="n">IMAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2654"><a href="#DataType-2654"><span class="linenos">2654</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2655"><a href="#DataType-2655"><span class="linenos">2655</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2656"><a href="#DataType-2656"><span class="linenos">2656</span></a> <span class="n">INET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2657"><a href="#DataType-2657"><span class="linenos">2657</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType-2658"><a href="#DataType-2658"><span class="linenos">2658</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> +</span><span id="DataType-2659"><a href="#DataType-2659"><span class="linenos">2659</span></a> +</span><span id="DataType-2660"><a href="#DataType-2660"><span class="linenos">2660</span></a> <span class="n">TEXT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-2661"><a href="#DataType-2661"><span class="linenos">2661</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="DataType-2662"><a href="#DataType-2662"><span class="linenos">2662</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="DataType-2663"><a href="#DataType-2663"><span class="linenos">2663</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="DataType-2664"><a href="#DataType-2664"><span class="linenos">2664</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="DataType-2665"><a href="#DataType-2665"><span class="linenos">2665</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="DataType-2666"><a href="#DataType-2666"><span class="linenos">2666</span></a> <span class="p">}</span> +</span><span id="DataType-2667"><a href="#DataType-2667"><span class="linenos">2667</span></a> +</span><span id="DataType-2668"><a href="#DataType-2668"><span class="linenos">2668</span></a> <span class="n">INTEGER_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-2669"><a href="#DataType-2669"><span class="linenos">2669</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="DataType-2670"><a href="#DataType-2670"><span class="linenos">2670</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="DataType-2671"><a href="#DataType-2671"><span class="linenos">2671</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="DataType-2672"><a href="#DataType-2672"><span class="linenos">2672</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="DataType-2673"><a href="#DataType-2673"><span class="linenos">2673</span></a> <span class="p">}</span> +</span><span id="DataType-2674"><a href="#DataType-2674"><span class="linenos">2674</span></a> +</span><span id="DataType-2675"><a href="#DataType-2675"><span class="linenos">2675</span></a> <span class="n">FLOAT_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-2676"><a href="#DataType-2676"><span class="linenos">2676</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="DataType-2677"><a href="#DataType-2677"><span class="linenos">2677</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="DataType-2678"><a href="#DataType-2678"><span class="linenos">2678</span></a> <span class="p">}</span> +</span><span id="DataType-2679"><a href="#DataType-2679"><span class="linenos">2679</span></a> +</span><span id="DataType-2680"><a href="#DataType-2680"><span class="linenos">2680</span></a> <span class="n">NUMERIC_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">INTEGER_TYPES</span><span class="p">,</span> <span class="o">*</span><span class="n">FLOAT_TYPES</span><span class="p">}</span> +</span><span id="DataType-2681"><a href="#DataType-2681"><span class="linenos">2681</span></a> +</span><span id="DataType-2682"><a href="#DataType-2682"><span class="linenos">2682</span></a> <span class="n">TEMPORAL_TYPES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="DataType-2683"><a href="#DataType-2683"><span class="linenos">2683</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="DataType-2684"><a href="#DataType-2684"><span class="linenos">2684</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="DataType-2685"><a href="#DataType-2685"><span class="linenos">2685</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="DataType-2686"><a href="#DataType-2686"><span class="linenos">2686</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="DataType-2687"><a href="#DataType-2687"><span class="linenos">2687</span></a> <span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="DataType-2688"><a href="#DataType-2688"><span class="linenos">2688</span></a> <span class="p">}</span> +</span><span id="DataType-2689"><a href="#DataType-2689"><span class="linenos">2689</span></a> +</span><span id="DataType-2690"><a href="#DataType-2690"><span class="linenos">2690</span></a> <span class="nd">@classmethod</span> +</span><span id="DataType-2691"><a href="#DataType-2691"><span class="linenos">2691</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> +</span><span id="DataType-2692"><a href="#DataType-2692"><span class="linenos">2692</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="DataType-2693"><a href="#DataType-2693"><span class="linenos">2693</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="DataType-2694"><a href="#DataType-2694"><span class="linenos">2694</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> +</span><span id="DataType-2695"><a href="#DataType-2695"><span class="linenos">2695</span></a> +</span><span id="DataType-2696"><a href="#DataType-2696"><span class="linenos">2696</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="DataType-2697"><a href="#DataType-2697"><span class="linenos">2697</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">__members__</span><span class="p">:</span> +</span><span id="DataType-2698"><a href="#DataType-2698"><span class="linenos">2698</span></a> <span class="n">data_type_exp</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> +</span><span id="DataType-2699"><a href="#DataType-2699"><span class="linenos">2699</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataType-2700"><a href="#DataType-2700"><span class="linenos">2700</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">DataType</span><span class="p">)</span> +</span><span id="DataType-2701"><a href="#DataType-2701"><span class="linenos">2701</span></a> <span class="k">if</span> <span class="n">data_type_exp</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="DataType-2702"><a href="#DataType-2702"><span class="linenos">2702</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unparsable data type value: </span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="DataType-2703"><a href="#DataType-2703"><span class="linenos">2703</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> +</span><span id="DataType-2704"><a href="#DataType-2704"><span class="linenos">2704</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> +</span><span id="DataType-2705"><a href="#DataType-2705"><span class="linenos">2705</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> +</span><span id="DataType-2706"><a href="#DataType-2706"><span class="linenos">2706</span></a> <span class="k">return</span> <span class="n">dtype</span> +</span><span id="DataType-2707"><a href="#DataType-2707"><span class="linenos">2707</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataType-2708"><a href="#DataType-2708"><span class="linenos">2708</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> +</span><span id="DataType-2709"><a href="#DataType-2709"><span class="linenos">2709</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> +</span><span id="DataType-2710"><a href="#DataType-2710"><span class="linenos">2710</span></a> +</span><span id="DataType-2711"><a href="#DataType-2711"><span class="linenos">2711</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="DataType-2712"><a href="#DataType-2712"><span class="linenos">2712</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">dtype</span> </span></pre></div> @@ -22268,26 +23086,26 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#DataType.build"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.build-2632"><a href="#DataType.build-2632"><span class="linenos">2632</span></a> <span class="nd">@classmethod</span> -</span><span id="DataType.build-2633"><a href="#DataType.build-2633"><span class="linenos">2633</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> -</span><span id="DataType.build-2634"><a href="#DataType.build-2634"><span class="linenos">2634</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="DataType.build-2635"><a href="#DataType.build-2635"><span class="linenos">2635</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> -</span><span id="DataType.build-2636"><a href="#DataType.build-2636"><span class="linenos">2636</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> -</span><span id="DataType.build-2637"><a href="#DataType.build-2637"><span class="linenos">2637</span></a> -</span><span id="DataType.build-2638"><a href="#DataType.build-2638"><span class="linenos">2638</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="DataType.build-2639"><a href="#DataType.build-2639"><span class="linenos">2639</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">__members__</span><span class="p">:</span> -</span><span id="DataType.build-2640"><a href="#DataType.build-2640"><span class="linenos">2640</span></a> <span class="n">data_type_exp</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> -</span><span id="DataType.build-2641"><a href="#DataType.build-2641"><span class="linenos">2641</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataType.build-2642"><a href="#DataType.build-2642"><span class="linenos">2642</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">DataType</span><span class="p">)</span> -</span><span id="DataType.build-2643"><a href="#DataType.build-2643"><span class="linenos">2643</span></a> <span class="k">if</span> <span class="n">data_type_exp</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="DataType.build-2644"><a href="#DataType.build-2644"><span class="linenos">2644</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unparsable data type value: </span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="DataType.build-2645"><a href="#DataType.build-2645"><span class="linenos">2645</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> -</span><span id="DataType.build-2646"><a href="#DataType.build-2646"><span class="linenos">2646</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> -</span><span id="DataType.build-2647"><a href="#DataType.build-2647"><span class="linenos">2647</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> -</span><span id="DataType.build-2648"><a href="#DataType.build-2648"><span class="linenos">2648</span></a> <span class="k">return</span> <span class="n">dtype</span> -</span><span id="DataType.build-2649"><a href="#DataType.build-2649"><span class="linenos">2649</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="DataType.build-2650"><a href="#DataType.build-2650"><span class="linenos">2650</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> -</span><span id="DataType.build-2651"><a href="#DataType.build-2651"><span class="linenos">2651</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.build-2690"><a href="#DataType.build-2690"><span class="linenos">2690</span></a> <span class="nd">@classmethod</span> +</span><span id="DataType.build-2691"><a href="#DataType.build-2691"><span class="linenos">2691</span></a> <span class="k">def</span> <span class="nf">build</span><span class="p">(</span> +</span><span id="DataType.build-2692"><a href="#DataType.build-2692"><span class="linenos">2692</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="DataType.build-2693"><a href="#DataType.build-2693"><span class="linenos">2693</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">DataType</span><span class="p">:</span> +</span><span id="DataType.build-2694"><a href="#DataType.build-2694"><span class="linenos">2694</span></a> <span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">parse_one</span> +</span><span id="DataType.build-2695"><a href="#DataType.build-2695"><span class="linenos">2695</span></a> +</span><span id="DataType.build-2696"><a href="#DataType.build-2696"><span class="linenos">2696</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="DataType.build-2697"><a href="#DataType.build-2697"><span class="linenos">2697</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">__members__</span><span class="p">:</span> +</span><span id="DataType.build-2698"><a href="#DataType.build-2698"><span class="linenos">2698</span></a> <span class="n">data_type_exp</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">dtype</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> +</span><span id="DataType.build-2699"><a href="#DataType.build-2699"><span class="linenos">2699</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataType.build-2700"><a href="#DataType.build-2700"><span class="linenos">2700</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">parse_one</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">DataType</span><span class="p">)</span> +</span><span id="DataType.build-2701"><a href="#DataType.build-2701"><span class="linenos">2701</span></a> <span class="k">if</span> <span class="n">data_type_exp</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="DataType.build-2702"><a href="#DataType.build-2702"><span class="linenos">2702</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unparsable data type value: </span><span class="si">{</span><span class="n">dtype</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="DataType.build-2703"><a href="#DataType.build-2703"><span class="linenos">2703</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">):</span> +</span><span id="DataType.build-2704"><a href="#DataType.build-2704"><span class="linenos">2704</span></a> <span class="n">data_type_exp</span> <span class="o">=</span> <span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">dtype</span><span class="p">)</span> +</span><span id="DataType.build-2705"><a href="#DataType.build-2705"><span class="linenos">2705</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dtype</span><span class="p">,</span> <span class="n">DataType</span><span class="p">):</span> +</span><span id="DataType.build-2706"><a href="#DataType.build-2706"><span class="linenos">2706</span></a> <span class="k">return</span> <span class="n">dtype</span> +</span><span id="DataType.build-2707"><a href="#DataType.build-2707"><span class="linenos">2707</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="DataType.build-2708"><a href="#DataType.build-2708"><span class="linenos">2708</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid data type: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span><span class="si">}</span><span class="s2">. Expected str or DataType.Type"</span><span class="p">)</span> +</span><span id="DataType.build-2709"><a href="#DataType.build-2709"><span class="linenos">2709</span></a> <span class="k">return</span> <span class="n">DataType</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="o">**</span><span class="n">data_type_exp</span><span class="o">.</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">})</span> </span></pre></div> @@ -22305,8 +23123,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#DataType.is_type"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.is_type-2653"><a href="#DataType.is_type-2653"><span class="linenos">2653</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="DataType.is_type-2654"><a href="#DataType.is_type-2654"><span class="linenos">2654</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">dtype</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.is_type-2711"><a href="#DataType.is_type-2711"><span class="linenos">2711</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="DataType.is_type-2712"><a href="#DataType.is_type-2712"><span class="linenos">2712</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">dtype</span> </span></pre></div> @@ -22367,58 +23185,59 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#DataType.Type"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.Type-2549"><a href="#DataType.Type-2549"><span class="linenos">2549</span></a> <span class="k">class</span> <span class="nc">Type</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> -</span><span id="DataType.Type-2550"><a href="#DataType.Type-2550"><span class="linenos">2550</span></a> <span class="n">CHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2551"><a href="#DataType.Type-2551"><span class="linenos">2551</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2552"><a href="#DataType.Type-2552"><span class="linenos">2552</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2553"><a href="#DataType.Type-2553"><span class="linenos">2553</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2554"><a href="#DataType.Type-2554"><span class="linenos">2554</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2555"><a href="#DataType.Type-2555"><span class="linenos">2555</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2556"><a href="#DataType.Type-2556"><span class="linenos">2556</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2557"><a href="#DataType.Type-2557"><span class="linenos">2557</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2558"><a href="#DataType.Type-2558"><span class="linenos">2558</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2559"><a href="#DataType.Type-2559"><span class="linenos">2559</span></a> <span class="n">BINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2560"><a href="#DataType.Type-2560"><span class="linenos">2560</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2561"><a href="#DataType.Type-2561"><span class="linenos">2561</span></a> <span class="n">INT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2562"><a href="#DataType.Type-2562"><span class="linenos">2562</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2563"><a href="#DataType.Type-2563"><span class="linenos">2563</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2564"><a href="#DataType.Type-2564"><span class="linenos">2564</span></a> <span class="n">BIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2565"><a href="#DataType.Type-2565"><span class="linenos">2565</span></a> <span class="n">FLOAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2566"><a href="#DataType.Type-2566"><span class="linenos">2566</span></a> <span class="n">DOUBLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2567"><a href="#DataType.Type-2567"><span class="linenos">2567</span></a> <span class="n">DECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2568"><a href="#DataType.Type-2568"><span class="linenos">2568</span></a> <span class="n">BOOLEAN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2569"><a href="#DataType.Type-2569"><span class="linenos">2569</span></a> <span class="n">JSON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2570"><a href="#DataType.Type-2570"><span class="linenos">2570</span></a> <span class="n">JSONB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2571"><a href="#DataType.Type-2571"><span class="linenos">2571</span></a> <span class="n">INTERVAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2572"><a href="#DataType.Type-2572"><span class="linenos">2572</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2573"><a href="#DataType.Type-2573"><span class="linenos">2573</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2574"><a href="#DataType.Type-2574"><span class="linenos">2574</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2575"><a href="#DataType.Type-2575"><span class="linenos">2575</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2576"><a href="#DataType.Type-2576"><span class="linenos">2576</span></a> <span class="n">DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2577"><a href="#DataType.Type-2577"><span class="linenos">2577</span></a> <span class="n">DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2578"><a href="#DataType.Type-2578"><span class="linenos">2578</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2579"><a href="#DataType.Type-2579"><span class="linenos">2579</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2580"><a href="#DataType.Type-2580"><span class="linenos">2580</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2581"><a href="#DataType.Type-2581"><span class="linenos">2581</span></a> <span class="n">GEOGRAPHY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2582"><a href="#DataType.Type-2582"><span class="linenos">2582</span></a> <span class="n">GEOMETRY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2583"><a href="#DataType.Type-2583"><span class="linenos">2583</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2584"><a href="#DataType.Type-2584"><span class="linenos">2584</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2585"><a href="#DataType.Type-2585"><span class="linenos">2585</span></a> <span class="n">HLLSKETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2586"><a href="#DataType.Type-2586"><span class="linenos">2586</span></a> <span class="n">HSTORE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2587"><a href="#DataType.Type-2587"><span class="linenos">2587</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2588"><a href="#DataType.Type-2588"><span class="linenos">2588</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2589"><a href="#DataType.Type-2589"><span class="linenos">2589</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2590"><a href="#DataType.Type-2590"><span class="linenos">2590</span></a> <span class="n">BIGSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2591"><a href="#DataType.Type-2591"><span class="linenos">2591</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2592"><a href="#DataType.Type-2592"><span class="linenos">2592</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2593"><a href="#DataType.Type-2593"><span class="linenos">2593</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2594"><a href="#DataType.Type-2594"><span class="linenos">2594</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2595"><a href="#DataType.Type-2595"><span class="linenos">2595</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2596"><a href="#DataType.Type-2596"><span class="linenos">2596</span></a> <span class="n">IMAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2597"><a href="#DataType.Type-2597"><span class="linenos">2597</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2598"><a href="#DataType.Type-2598"><span class="linenos">2598</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2599"><a href="#DataType.Type-2599"><span class="linenos">2599</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="DataType.Type-2600"><a href="#DataType.Type-2600"><span class="linenos">2600</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DataType.Type-2606"><a href="#DataType.Type-2606"><span class="linenos">2606</span></a> <span class="k">class</span> <span class="nc">Type</span><span class="p">(</span><span class="n">AutoName</span><span class="p">):</span> +</span><span id="DataType.Type-2607"><a href="#DataType.Type-2607"><span class="linenos">2607</span></a> <span class="n">CHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2608"><a href="#DataType.Type-2608"><span class="linenos">2608</span></a> <span class="n">NCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2609"><a href="#DataType.Type-2609"><span class="linenos">2609</span></a> <span class="n">VARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2610"><a href="#DataType.Type-2610"><span class="linenos">2610</span></a> <span class="n">NVARCHAR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2611"><a href="#DataType.Type-2611"><span class="linenos">2611</span></a> <span class="n">TEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2612"><a href="#DataType.Type-2612"><span class="linenos">2612</span></a> <span class="n">MEDIUMTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2613"><a href="#DataType.Type-2613"><span class="linenos">2613</span></a> <span class="n">LONGTEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2614"><a href="#DataType.Type-2614"><span class="linenos">2614</span></a> <span class="n">MEDIUMBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2615"><a href="#DataType.Type-2615"><span class="linenos">2615</span></a> <span class="n">LONGBLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2616"><a href="#DataType.Type-2616"><span class="linenos">2616</span></a> <span class="n">BINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2617"><a href="#DataType.Type-2617"><span class="linenos">2617</span></a> <span class="n">VARBINARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2618"><a href="#DataType.Type-2618"><span class="linenos">2618</span></a> <span class="n">INT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2619"><a href="#DataType.Type-2619"><span class="linenos">2619</span></a> <span class="n">TINYINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2620"><a href="#DataType.Type-2620"><span class="linenos">2620</span></a> <span class="n">SMALLINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2621"><a href="#DataType.Type-2621"><span class="linenos">2621</span></a> <span class="n">BIGINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2622"><a href="#DataType.Type-2622"><span class="linenos">2622</span></a> <span class="n">FLOAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2623"><a href="#DataType.Type-2623"><span class="linenos">2623</span></a> <span class="n">DOUBLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2624"><a href="#DataType.Type-2624"><span class="linenos">2624</span></a> <span class="n">DECIMAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2625"><a href="#DataType.Type-2625"><span class="linenos">2625</span></a> <span class="n">BOOLEAN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2626"><a href="#DataType.Type-2626"><span class="linenos">2626</span></a> <span class="n">JSON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2627"><a href="#DataType.Type-2627"><span class="linenos">2627</span></a> <span class="n">JSONB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2628"><a href="#DataType.Type-2628"><span class="linenos">2628</span></a> <span class="n">INTERVAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2629"><a href="#DataType.Type-2629"><span class="linenos">2629</span></a> <span class="n">TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2630"><a href="#DataType.Type-2630"><span class="linenos">2630</span></a> <span class="n">TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2631"><a href="#DataType.Type-2631"><span class="linenos">2631</span></a> <span class="n">TIMESTAMPTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2632"><a href="#DataType.Type-2632"><span class="linenos">2632</span></a> <span class="n">TIMESTAMPLTZ</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2633"><a href="#DataType.Type-2633"><span class="linenos">2633</span></a> <span class="n">DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2634"><a href="#DataType.Type-2634"><span class="linenos">2634</span></a> <span class="n">DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2635"><a href="#DataType.Type-2635"><span class="linenos">2635</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2636"><a href="#DataType.Type-2636"><span class="linenos">2636</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2637"><a href="#DataType.Type-2637"><span class="linenos">2637</span></a> <span class="n">UUID</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2638"><a href="#DataType.Type-2638"><span class="linenos">2638</span></a> <span class="n">GEOGRAPHY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2639"><a href="#DataType.Type-2639"><span class="linenos">2639</span></a> <span class="n">GEOMETRY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2640"><a href="#DataType.Type-2640"><span class="linenos">2640</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2641"><a href="#DataType.Type-2641"><span class="linenos">2641</span></a> <span class="n">NULLABLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2642"><a href="#DataType.Type-2642"><span class="linenos">2642</span></a> <span class="n">HLLSKETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2643"><a href="#DataType.Type-2643"><span class="linenos">2643</span></a> <span class="n">HSTORE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2644"><a href="#DataType.Type-2644"><span class="linenos">2644</span></a> <span class="n">SUPER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2645"><a href="#DataType.Type-2645"><span class="linenos">2645</span></a> <span class="n">SERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2646"><a href="#DataType.Type-2646"><span class="linenos">2646</span></a> <span class="n">SMALLSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2647"><a href="#DataType.Type-2647"><span class="linenos">2647</span></a> <span class="n">BIGSERIAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2648"><a href="#DataType.Type-2648"><span class="linenos">2648</span></a> <span class="n">XML</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2649"><a href="#DataType.Type-2649"><span class="linenos">2649</span></a> <span class="n">UNIQUEIDENTIFIER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2650"><a href="#DataType.Type-2650"><span class="linenos">2650</span></a> <span class="n">MONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2651"><a href="#DataType.Type-2651"><span class="linenos">2651</span></a> <span class="n">SMALLMONEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2652"><a href="#DataType.Type-2652"><span class="linenos">2652</span></a> <span class="n">ROWVERSION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2653"><a href="#DataType.Type-2653"><span class="linenos">2653</span></a> <span class="n">IMAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2654"><a href="#DataType.Type-2654"><span class="linenos">2654</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2655"><a href="#DataType.Type-2655"><span class="linenos">2655</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2656"><a href="#DataType.Type-2656"><span class="linenos">2656</span></a> <span class="n">INET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2657"><a href="#DataType.Type-2657"><span class="linenos">2657</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="DataType.Type-2658"><a href="#DataType.Type-2658"><span class="linenos">2658</span></a> <span class="n">UNKNOWN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> <span class="c1"># Sentinel value, useful for type annotation</span> </span></pre></div> @@ -22428,7 +23247,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, <div id="DataType.Type.CHAR" class="classattr"> <div class="attr variable"> - <span class="name">CHAR</span><span class="default_value"> = <Type.CHAR: 'CHAR'></span> + <span class="name">CHAR</span> = +<span class="default_value"><Type.CHAR: 'CHAR'></span> </div> @@ -22439,7 +23259,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.NCHAR" class="classattr"> <div class="attr variable"> - <span class="name">NCHAR</span><span class="default_value"> = <Type.NCHAR: 'NCHAR'></span> + <span class="name">NCHAR</span> = +<span class="default_value"><Type.NCHAR: 'NCHAR'></span> </div> @@ -22450,7 +23271,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.VARCHAR" class="classattr"> <div class="attr variable"> - <span class="name">VARCHAR</span><span class="default_value"> = <Type.VARCHAR: 'VARCHAR'></span> + <span class="name">VARCHAR</span> = +<span class="default_value"><Type.VARCHAR: 'VARCHAR'></span> </div> @@ -22461,7 +23283,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.NVARCHAR" class="classattr"> <div class="attr variable"> - <span class="name">NVARCHAR</span><span class="default_value"> = <Type.NVARCHAR: 'NVARCHAR'></span> + <span class="name">NVARCHAR</span> = +<span class="default_value"><Type.NVARCHAR: 'NVARCHAR'></span> </div> @@ -22472,7 +23295,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.TEXT" class="classattr"> <div class="attr variable"> - <span class="name">TEXT</span><span class="default_value"> = <Type.TEXT: 'TEXT'></span> + <span class="name">TEXT</span> = +<span class="default_value"><Type.TEXT: 'TEXT'></span> </div> @@ -22483,7 +23307,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.MEDIUMTEXT" class="classattr"> <div class="attr variable"> - <span class="name">MEDIUMTEXT</span><span class="default_value"> = <Type.MEDIUMTEXT: 'MEDIUMTEXT'></span> + <span class="name">MEDIUMTEXT</span> = +<span class="default_value"><Type.MEDIUMTEXT: 'MEDIUMTEXT'></span> </div> @@ -22494,7 +23319,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.LONGTEXT" class="classattr"> <div class="attr variable"> - <span class="name">LONGTEXT</span><span class="default_value"> = <Type.LONGTEXT: 'LONGTEXT'></span> + <span class="name">LONGTEXT</span> = +<span class="default_value"><Type.LONGTEXT: 'LONGTEXT'></span> </div> @@ -22505,7 +23331,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.MEDIUMBLOB" class="classattr"> <div class="attr variable"> - <span class="name">MEDIUMBLOB</span><span class="default_value"> = <Type.MEDIUMBLOB: 'MEDIUMBLOB'></span> + <span class="name">MEDIUMBLOB</span> = +<span class="default_value"><Type.MEDIUMBLOB: 'MEDIUMBLOB'></span> </div> @@ -22516,7 +23343,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.LONGBLOB" class="classattr"> <div class="attr variable"> - <span class="name">LONGBLOB</span><span class="default_value"> = <Type.LONGBLOB: 'LONGBLOB'></span> + <span class="name">LONGBLOB</span> = +<span class="default_value"><Type.LONGBLOB: 'LONGBLOB'></span> </div> @@ -22527,7 +23355,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.BINARY" class="classattr"> <div class="attr variable"> - <span class="name">BINARY</span><span class="default_value"> = <Type.BINARY: 'BINARY'></span> + <span class="name">BINARY</span> = +<span class="default_value"><Type.BINARY: 'BINARY'></span> </div> @@ -22538,7 +23367,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.VARBINARY" class="classattr"> <div class="attr variable"> - <span class="name">VARBINARY</span><span class="default_value"> = <Type.VARBINARY: 'VARBINARY'></span> + <span class="name">VARBINARY</span> = +<span class="default_value"><Type.VARBINARY: 'VARBINARY'></span> </div> @@ -22549,7 +23379,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.INT" class="classattr"> <div class="attr variable"> - <span class="name">INT</span><span class="default_value"> = <Type.INT: 'INT'></span> + <span class="name">INT</span> = +<span class="default_value"><Type.INT: 'INT'></span> </div> @@ -22560,7 +23391,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.TINYINT" class="classattr"> <div class="attr variable"> - <span class="name">TINYINT</span><span class="default_value"> = <Type.TINYINT: 'TINYINT'></span> + <span class="name">TINYINT</span> = +<span class="default_value"><Type.TINYINT: 'TINYINT'></span> </div> @@ -22571,7 +23403,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.SMALLINT" class="classattr"> <div class="attr variable"> - <span class="name">SMALLINT</span><span class="default_value"> = <Type.SMALLINT: 'SMALLINT'></span> + <span class="name">SMALLINT</span> = +<span class="default_value"><Type.SMALLINT: 'SMALLINT'></span> </div> @@ -22582,7 +23415,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.BIGINT" class="classattr"> <div class="attr variable"> - <span class="name">BIGINT</span><span class="default_value"> = <Type.BIGINT: 'BIGINT'></span> + <span class="name">BIGINT</span> = +<span class="default_value"><Type.BIGINT: 'BIGINT'></span> </div> @@ -22593,7 +23427,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.FLOAT" class="classattr"> <div class="attr variable"> - <span class="name">FLOAT</span><span class="default_value"> = <Type.FLOAT: 'FLOAT'></span> + <span class="name">FLOAT</span> = +<span class="default_value"><Type.FLOAT: 'FLOAT'></span> </div> @@ -22604,7 +23439,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.DOUBLE" class="classattr"> <div class="attr variable"> - <span class="name">DOUBLE</span><span class="default_value"> = <Type.DOUBLE: 'DOUBLE'></span> + <span class="name">DOUBLE</span> = +<span class="default_value"><Type.DOUBLE: 'DOUBLE'></span> </div> @@ -22615,7 +23451,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.DECIMAL" class="classattr"> <div class="attr variable"> - <span class="name">DECIMAL</span><span class="default_value"> = <Type.DECIMAL: 'DECIMAL'></span> + <span class="name">DECIMAL</span> = +<span class="default_value"><Type.DECIMAL: 'DECIMAL'></span> </div> @@ -22626,7 +23463,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.BOOLEAN" class="classattr"> <div class="attr variable"> - <span class="name">BOOLEAN</span><span class="default_value"> = <Type.BOOLEAN: 'BOOLEAN'></span> + <span class="name">BOOLEAN</span> = +<span class="default_value"><Type.BOOLEAN: 'BOOLEAN'></span> </div> @@ -22637,7 +23475,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.JSON" class="classattr"> <div class="attr variable"> - <span class="name">JSON</span><span class="default_value"> = <Type.JSON: 'JSON'></span> + <span class="name">JSON</span> = +<span class="default_value"><Type.JSON: 'JSON'></span> </div> @@ -22648,7 +23487,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.JSONB" class="classattr"> <div class="attr variable"> - <span class="name">JSONB</span><span class="default_value"> = <Type.JSONB: 'JSONB'></span> + <span class="name">JSONB</span> = +<span class="default_value"><Type.JSONB: 'JSONB'></span> </div> @@ -22659,7 +23499,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.INTERVAL" class="classattr"> <div class="attr variable"> - <span class="name">INTERVAL</span><span class="default_value"> = <Type.INTERVAL: 'INTERVAL'></span> + <span class="name">INTERVAL</span> = +<span class="default_value"><Type.INTERVAL: 'INTERVAL'></span> </div> @@ -22670,7 +23511,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.TIME" class="classattr"> <div class="attr variable"> - <span class="name">TIME</span><span class="default_value"> = <Type.TIME: 'TIME'></span> + <span class="name">TIME</span> = +<span class="default_value"><Type.TIME: 'TIME'></span> </div> @@ -22681,7 +23523,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.TIMESTAMP" class="classattr"> <div class="attr variable"> - <span class="name">TIMESTAMP</span><span class="default_value"> = <Type.TIMESTAMP: 'TIMESTAMP'></span> + <span class="name">TIMESTAMP</span> = +<span class="default_value"><Type.TIMESTAMP: 'TIMESTAMP'></span> </div> @@ -22692,7 +23535,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.TIMESTAMPTZ" class="classattr"> <div class="attr variable"> - <span class="name">TIMESTAMPTZ</span><span class="default_value"> = <Type.TIMESTAMPTZ: 'TIMESTAMPTZ'></span> + <span class="name">TIMESTAMPTZ</span> = +<span class="default_value"><Type.TIMESTAMPTZ: 'TIMESTAMPTZ'></span> </div> @@ -22703,7 +23547,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.TIMESTAMPLTZ" class="classattr"> <div class="attr variable"> - <span class="name">TIMESTAMPLTZ</span><span class="default_value"> = <Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'></span> + <span class="name">TIMESTAMPLTZ</span> = +<span class="default_value"><Type.TIMESTAMPLTZ: 'TIMESTAMPLTZ'></span> </div> @@ -22714,7 +23559,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.DATE" class="classattr"> <div class="attr variable"> - <span class="name">DATE</span><span class="default_value"> = <Type.DATE: 'DATE'></span> + <span class="name">DATE</span> = +<span class="default_value"><Type.DATE: 'DATE'></span> </div> @@ -22725,7 +23571,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.DATETIME" class="classattr"> <div class="attr variable"> - <span class="name">DATETIME</span><span class="default_value"> = <Type.DATETIME: 'DATETIME'></span> + <span class="name">DATETIME</span> = +<span class="default_value"><Type.DATETIME: 'DATETIME'></span> </div> @@ -22736,7 +23583,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.ARRAY" class="classattr"> <div class="attr variable"> - <span class="name">ARRAY</span><span class="default_value"> = <Type.ARRAY: 'ARRAY'></span> + <span class="name">ARRAY</span> = +<span class="default_value"><Type.ARRAY: 'ARRAY'></span> </div> @@ -22747,7 +23595,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.MAP" class="classattr"> <div class="attr variable"> - <span class="name">MAP</span><span class="default_value"> = <Type.MAP: 'MAP'></span> + <span class="name">MAP</span> = +<span class="default_value"><Type.MAP: 'MAP'></span> </div> @@ -22758,7 +23607,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.UUID" class="classattr"> <div class="attr variable"> - <span class="name">UUID</span><span class="default_value"> = <Type.UUID: 'UUID'></span> + <span class="name">UUID</span> = +<span class="default_value"><Type.UUID: 'UUID'></span> </div> @@ -22769,7 +23619,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.GEOGRAPHY" class="classattr"> <div class="attr variable"> - <span class="name">GEOGRAPHY</span><span class="default_value"> = <Type.GEOGRAPHY: 'GEOGRAPHY'></span> + <span class="name">GEOGRAPHY</span> = +<span class="default_value"><Type.GEOGRAPHY: 'GEOGRAPHY'></span> </div> @@ -22780,7 +23631,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.GEOMETRY" class="classattr"> <div class="attr variable"> - <span class="name">GEOMETRY</span><span class="default_value"> = <Type.GEOMETRY: 'GEOMETRY'></span> + <span class="name">GEOMETRY</span> = +<span class="default_value"><Type.GEOMETRY: 'GEOMETRY'></span> </div> @@ -22791,7 +23643,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.STRUCT" class="classattr"> <div class="attr variable"> - <span class="name">STRUCT</span><span class="default_value"> = <Type.STRUCT: 'STRUCT'></span> + <span class="name">STRUCT</span> = +<span class="default_value"><Type.STRUCT: 'STRUCT'></span> </div> @@ -22802,7 +23655,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.NULLABLE" class="classattr"> <div class="attr variable"> - <span class="name">NULLABLE</span><span class="default_value"> = <Type.NULLABLE: 'NULLABLE'></span> + <span class="name">NULLABLE</span> = +<span class="default_value"><Type.NULLABLE: 'NULLABLE'></span> </div> @@ -22813,7 +23667,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.HLLSKETCH" class="classattr"> <div class="attr variable"> - <span class="name">HLLSKETCH</span><span class="default_value"> = <Type.HLLSKETCH: 'HLLSKETCH'></span> + <span class="name">HLLSKETCH</span> = +<span class="default_value"><Type.HLLSKETCH: 'HLLSKETCH'></span> </div> @@ -22824,7 +23679,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.HSTORE" class="classattr"> <div class="attr variable"> - <span class="name">HSTORE</span><span class="default_value"> = <Type.HSTORE: 'HSTORE'></span> + <span class="name">HSTORE</span> = +<span class="default_value"><Type.HSTORE: 'HSTORE'></span> </div> @@ -22835,7 +23691,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.SUPER" class="classattr"> <div class="attr variable"> - <span class="name">SUPER</span><span class="default_value"> = <Type.SUPER: 'SUPER'></span> + <span class="name">SUPER</span> = +<span class="default_value"><Type.SUPER: 'SUPER'></span> </div> @@ -22846,7 +23703,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.SERIAL" class="classattr"> <div class="attr variable"> - <span class="name">SERIAL</span><span class="default_value"> = <Type.SERIAL: 'SERIAL'></span> + <span class="name">SERIAL</span> = +<span class="default_value"><Type.SERIAL: 'SERIAL'></span> </div> @@ -22857,7 +23715,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.SMALLSERIAL" class="classattr"> <div class="attr variable"> - <span class="name">SMALLSERIAL</span><span class="default_value"> = <Type.SMALLSERIAL: 'SMALLSERIAL'></span> + <span class="name">SMALLSERIAL</span> = +<span class="default_value"><Type.SMALLSERIAL: 'SMALLSERIAL'></span> </div> @@ -22868,7 +23727,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.BIGSERIAL" class="classattr"> <div class="attr variable"> - <span class="name">BIGSERIAL</span><span class="default_value"> = <Type.BIGSERIAL: 'BIGSERIAL'></span> + <span class="name">BIGSERIAL</span> = +<span class="default_value"><Type.BIGSERIAL: 'BIGSERIAL'></span> </div> @@ -22879,7 +23739,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.XML" class="classattr"> <div class="attr variable"> - <span class="name">XML</span><span class="default_value"> = <Type.XML: 'XML'></span> + <span class="name">XML</span> = +<span class="default_value"><Type.XML: 'XML'></span> </div> @@ -22890,7 +23751,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.UNIQUEIDENTIFIER" class="classattr"> <div class="attr variable"> - <span class="name">UNIQUEIDENTIFIER</span><span class="default_value"> = <Type.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'></span> + <span class="name">UNIQUEIDENTIFIER</span> = +<span class="default_value"><Type.UNIQUEIDENTIFIER: 'UNIQUEIDENTIFIER'></span> </div> @@ -22901,7 +23763,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.MONEY" class="classattr"> <div class="attr variable"> - <span class="name">MONEY</span><span class="default_value"> = <Type.MONEY: 'MONEY'></span> + <span class="name">MONEY</span> = +<span class="default_value"><Type.MONEY: 'MONEY'></span> </div> @@ -22912,7 +23775,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.SMALLMONEY" class="classattr"> <div class="attr variable"> - <span class="name">SMALLMONEY</span><span class="default_value"> = <Type.SMALLMONEY: 'SMALLMONEY'></span> + <span class="name">SMALLMONEY</span> = +<span class="default_value"><Type.SMALLMONEY: 'SMALLMONEY'></span> </div> @@ -22923,7 +23787,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.ROWVERSION" class="classattr"> <div class="attr variable"> - <span class="name">ROWVERSION</span><span class="default_value"> = <Type.ROWVERSION: 'ROWVERSION'></span> + <span class="name">ROWVERSION</span> = +<span class="default_value"><Type.ROWVERSION: 'ROWVERSION'></span> </div> @@ -22934,7 +23799,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.IMAGE" class="classattr"> <div class="attr variable"> - <span class="name">IMAGE</span><span class="default_value"> = <Type.IMAGE: 'IMAGE'></span> + <span class="name">IMAGE</span> = +<span class="default_value"><Type.IMAGE: 'IMAGE'></span> </div> @@ -22945,7 +23811,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.VARIANT" class="classattr"> <div class="attr variable"> - <span class="name">VARIANT</span><span class="default_value"> = <Type.VARIANT: 'VARIANT'></span> + <span class="name">VARIANT</span> = +<span class="default_value"><Type.VARIANT: 'VARIANT'></span> </div> @@ -22956,7 +23823,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.OBJECT" class="classattr"> <div class="attr variable"> - <span class="name">OBJECT</span><span class="default_value"> = <Type.OBJECT: 'OBJECT'></span> + <span class="name">OBJECT</span> = +<span class="default_value"><Type.OBJECT: 'OBJECT'></span> </div> @@ -22965,9 +23833,22 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> + <div id="DataType.Type.INET" class="classattr"> + <div class="attr variable"> + <span class="name">INET</span> = +<span class="default_value"><Type.INET: 'INET'></span> + + + </div> + <a class="headerlink" href="#DataType.Type.INET"></a> + + + + </div> <div id="DataType.Type.NULL" class="classattr"> <div class="attr variable"> - <span class="name">NULL</span><span class="default_value"> = <Type.NULL: 'NULL'></span> + <span class="name">NULL</span> = +<span class="default_value"><Type.NULL: 'NULL'></span> </div> @@ -22978,7 +23859,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <div id="DataType.Type.UNKNOWN" class="classattr"> <div class="attr variable"> - <span class="name">UNKNOWN</span><span class="default_value"> = <Type.UNKNOWN: 'UNKNOWN'></span> + <span class="name">UNKNOWN</span> = +<span class="default_value"><Type.UNKNOWN: 'UNKNOWN'></span> </div> @@ -23009,8 +23891,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#PseudoType"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PseudoType-2658"><a href="#PseudoType-2658"><span class="linenos">2658</span></a><span class="k">class</span> <span class="nc">PseudoType</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="PseudoType-2659"><a href="#PseudoType-2659"><span class="linenos">2659</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PseudoType-2716"><a href="#PseudoType-2716"><span class="linenos">2716</span></a><span class="k">class</span> <span class="nc">PseudoType</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="PseudoType-2717"><a href="#PseudoType-2717"><span class="linenos">2717</span></a> <span class="k">pass</span> </span></pre></div> @@ -23070,8 +23952,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#StructKwarg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StructKwarg-2662"><a href="#StructKwarg-2662"><span class="linenos">2662</span></a><span class="k">class</span> <span class="nc">StructKwarg</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="StructKwarg-2663"><a href="#StructKwarg-2663"><span class="linenos">2663</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StructKwarg-2720"><a href="#StructKwarg-2720"><span class="linenos">2720</span></a><span class="k">class</span> <span class="nc">StructKwarg</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="StructKwarg-2721"><a href="#StructKwarg-2721"><span class="linenos">2721</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -23131,8 +24013,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#SubqueryPredicate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SubqueryPredicate-2667"><a href="#SubqueryPredicate-2667"><span class="linenos">2667</span></a><span class="k">class</span> <span class="nc">SubqueryPredicate</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="SubqueryPredicate-2668"><a href="#SubqueryPredicate-2668"><span class="linenos">2668</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SubqueryPredicate-2725"><a href="#SubqueryPredicate-2725"><span class="linenos">2725</span></a><span class="k">class</span> <span class="nc">SubqueryPredicate</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="SubqueryPredicate-2726"><a href="#SubqueryPredicate-2726"><span class="linenos">2726</span></a> <span class="k">pass</span> </span></pre></div> @@ -23198,8 +24080,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#All"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="All-2671"><a href="#All-2671"><span class="linenos">2671</span></a><span class="k">class</span> <span class="nc">All</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="All-2672"><a href="#All-2672"><span class="linenos">2672</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="All-2729"><a href="#All-2729"><span class="linenos">2729</span></a><span class="k">class</span> <span class="nc">All</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="All-2730"><a href="#All-2730"><span class="linenos">2730</span></a> <span class="k">pass</span> </span></pre></div> @@ -23265,8 +24147,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Any"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Any-2675"><a href="#Any-2675"><span class="linenos">2675</span></a><span class="k">class</span> <span class="nc">Any</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="Any-2676"><a href="#Any-2676"><span class="linenos">2676</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Any-2733"><a href="#Any-2733"><span class="linenos">2733</span></a><span class="k">class</span> <span class="nc">Any</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="Any-2734"><a href="#Any-2734"><span class="linenos">2734</span></a> <span class="k">pass</span> </span></pre></div> @@ -23332,8 +24214,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Exists"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Exists-2679"><a href="#Exists-2679"><span class="linenos">2679</span></a><span class="k">class</span> <span class="nc">Exists</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> -</span><span id="Exists-2680"><a href="#Exists-2680"><span class="linenos">2680</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Exists-2737"><a href="#Exists-2737"><span class="linenos">2737</span></a><span class="k">class</span> <span class="nc">Exists</span><span class="p">(</span><span class="n">SubqueryPredicate</span><span class="p">):</span> +</span><span id="Exists-2738"><a href="#Exists-2738"><span class="linenos">2738</span></a> <span class="k">pass</span> </span></pre></div> @@ -23399,8 +24281,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Command"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Command-2685"><a href="#Command-2685"><span class="linenos">2685</span></a><span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Command-2686"><a href="#Command-2686"><span class="linenos">2686</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Command-2743"><a href="#Command-2743"><span class="linenos">2743</span></a><span class="k">class</span> <span class="nc">Command</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Command-2744"><a href="#Command-2744"><span class="linenos">2744</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -23460,8 +24342,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Transaction"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Transaction-2689"><a href="#Transaction-2689"><span class="linenos">2689</span></a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Transaction-2690"><a href="#Transaction-2690"><span class="linenos">2690</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"modes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Transaction-2747"><a href="#Transaction-2747"><span class="linenos">2747</span></a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Transaction-2748"><a href="#Transaction-2748"><span class="linenos">2748</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"modes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -23521,8 +24403,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Commit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Commit-2693"><a href="#Commit-2693"><span class="linenos">2693</span></a><span class="k">class</span> <span class="nc">Commit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Commit-2694"><a href="#Commit-2694"><span class="linenos">2694</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"chain"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Commit-2751"><a href="#Commit-2751"><span class="linenos">2751</span></a><span class="k">class</span> <span class="nc">Commit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Commit-2752"><a href="#Commit-2752"><span class="linenos">2752</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"chain"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -23582,8 +24464,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Rollback"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Rollback-2697"><a href="#Rollback-2697"><span class="linenos">2697</span></a><span class="k">class</span> <span class="nc">Rollback</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Rollback-2698"><a href="#Rollback-2698"><span class="linenos">2698</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"savepoint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Rollback-2755"><a href="#Rollback-2755"><span class="linenos">2755</span></a><span class="k">class</span> <span class="nc">Rollback</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Rollback-2756"><a href="#Rollback-2756"><span class="linenos">2756</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"savepoint"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -23643,8 +24525,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#AlterTable"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AlterTable-2701"><a href="#AlterTable-2701"><span class="linenos">2701</span></a><span class="k">class</span> <span class="nc">AlterTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="AlterTable-2702"><a href="#AlterTable-2702"><span class="linenos">2702</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AlterTable-2759"><a href="#AlterTable-2759"><span class="linenos">2759</span></a><span class="k">class</span> <span class="nc">AlterTable</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="AlterTable-2760"><a href="#AlterTable-2760"><span class="linenos">2760</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -23704,8 +24586,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#AddConstraint"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AddConstraint-2705"><a href="#AddConstraint-2705"><span class="linenos">2705</span></a><span class="k">class</span> <span class="nc">AddConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="AddConstraint-2706"><a href="#AddConstraint-2706"><span class="linenos">2706</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"enforced"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AddConstraint-2763"><a href="#AddConstraint-2763"><span class="linenos">2763</span></a><span class="k">class</span> <span class="nc">AddConstraint</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="AddConstraint-2764"><a href="#AddConstraint-2764"><span class="linenos">2764</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"enforced"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -23765,8 +24647,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#DropPartition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DropPartition-2709"><a href="#DropPartition-2709"><span class="linenos">2709</span></a><span class="k">class</span> <span class="nc">DropPartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="DropPartition-2710"><a href="#DropPartition-2710"><span class="linenos">2710</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DropPartition-2767"><a href="#DropPartition-2767"><span class="linenos">2767</span></a><span class="k">class</span> <span class="nc">DropPartition</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="DropPartition-2768"><a href="#DropPartition-2768"><span class="linenos">2768</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"exists"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -23826,16 +24708,16 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Binary"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Binary-2714"><a href="#Binary-2714"><span class="linenos">2714</span></a><span class="k">class</span> <span class="nc">Binary</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Binary-2715"><a href="#Binary-2715"><span class="linenos">2715</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Binary-2716"><a href="#Binary-2716"><span class="linenos">2716</span></a> -</span><span id="Binary-2717"><a href="#Binary-2717"><span class="linenos">2717</span></a> <span class="nd">@property</span> -</span><span id="Binary-2718"><a href="#Binary-2718"><span class="linenos">2718</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Binary-2719"><a href="#Binary-2719"><span class="linenos">2719</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> -</span><span id="Binary-2720"><a href="#Binary-2720"><span class="linenos">2720</span></a> -</span><span id="Binary-2721"><a href="#Binary-2721"><span class="linenos">2721</span></a> <span class="nd">@property</span> -</span><span id="Binary-2722"><a href="#Binary-2722"><span class="linenos">2722</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Binary-2723"><a href="#Binary-2723"><span class="linenos">2723</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Binary-2772"><a href="#Binary-2772"><span class="linenos">2772</span></a><span class="k">class</span> <span class="nc">Binary</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Binary-2773"><a href="#Binary-2773"><span class="linenos">2773</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Binary-2774"><a href="#Binary-2774"><span class="linenos">2774</span></a> +</span><span id="Binary-2775"><a href="#Binary-2775"><span class="linenos">2775</span></a> <span class="nd">@property</span> +</span><span id="Binary-2776"><a href="#Binary-2776"><span class="linenos">2776</span></a> <span class="k">def</span> <span class="nf">left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Binary-2777"><a href="#Binary-2777"><span class="linenos">2777</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span> +</span><span id="Binary-2778"><a href="#Binary-2778"><span class="linenos">2778</span></a> +</span><span id="Binary-2779"><a href="#Binary-2779"><span class="linenos">2779</span></a> <span class="nd">@property</span> +</span><span id="Binary-2780"><a href="#Binary-2780"><span class="linenos">2780</span></a> <span class="k">def</span> <span class="nf">right</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Binary-2781"><a href="#Binary-2781"><span class="linenos">2781</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span> </span></pre></div> @@ -23895,8 +24777,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Add"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Add-2726"><a href="#Add-2726"><span class="linenos">2726</span></a><span class="k">class</span> <span class="nc">Add</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Add-2727"><a href="#Add-2727"><span class="linenos">2727</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Add-2784"><a href="#Add-2784"><span class="linenos">2784</span></a><span class="k">class</span> <span class="nc">Add</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Add-2785"><a href="#Add-2785"><span class="linenos">2785</span></a> <span class="k">pass</span> </span></pre></div> @@ -23956,8 +24838,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Connector"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Connector-2730"><a href="#Connector-2730"><span class="linenos">2730</span></a><span class="k">class</span> <span class="nc">Connector</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> -</span><span id="Connector-2731"><a href="#Connector-2731"><span class="linenos">2731</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Connector-2788"><a href="#Connector-2788"><span class="linenos">2788</span></a><span class="k">class</span> <span class="nc">Connector</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="Connector-2789"><a href="#Connector-2789"><span class="linenos">2789</span></a> <span class="k">pass</span> </span></pre></div> @@ -24023,8 +24905,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#And"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="And-2734"><a href="#And-2734"><span class="linenos">2734</span></a><span class="k">class</span> <span class="nc">And</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> -</span><span id="And-2735"><a href="#And-2735"><span class="linenos">2735</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="And-2792"><a href="#And-2792"><span class="linenos">2792</span></a><span class="k">class</span> <span class="nc">And</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> +</span><span id="And-2793"><a href="#And-2793"><span class="linenos">2793</span></a> <span class="k">pass</span> </span></pre></div> @@ -24090,8 +24972,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Or"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Or-2738"><a href="#Or-2738"><span class="linenos">2738</span></a><span class="k">class</span> <span class="nc">Or</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> -</span><span id="Or-2739"><a href="#Or-2739"><span class="linenos">2739</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Or-2796"><a href="#Or-2796"><span class="linenos">2796</span></a><span class="k">class</span> <span class="nc">Or</span><span class="p">(</span><span class="n">Connector</span><span class="p">):</span> +</span><span id="Or-2797"><a href="#Or-2797"><span class="linenos">2797</span></a> <span class="k">pass</span> </span></pre></div> @@ -24157,8 +25039,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#BitwiseAnd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseAnd-2742"><a href="#BitwiseAnd-2742"><span class="linenos">2742</span></a><span class="k">class</span> <span class="nc">BitwiseAnd</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseAnd-2743"><a href="#BitwiseAnd-2743"><span class="linenos">2743</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseAnd-2800"><a href="#BitwiseAnd-2800"><span class="linenos">2800</span></a><span class="k">class</span> <span class="nc">BitwiseAnd</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseAnd-2801"><a href="#BitwiseAnd-2801"><span class="linenos">2801</span></a> <span class="k">pass</span> </span></pre></div> @@ -24218,8 +25100,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#BitwiseLeftShift"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseLeftShift-2746"><a href="#BitwiseLeftShift-2746"><span class="linenos">2746</span></a><span class="k">class</span> <span class="nc">BitwiseLeftShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseLeftShift-2747"><a href="#BitwiseLeftShift-2747"><span class="linenos">2747</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseLeftShift-2804"><a href="#BitwiseLeftShift-2804"><span class="linenos">2804</span></a><span class="k">class</span> <span class="nc">BitwiseLeftShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseLeftShift-2805"><a href="#BitwiseLeftShift-2805"><span class="linenos">2805</span></a> <span class="k">pass</span> </span></pre></div> @@ -24279,8 +25161,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#BitwiseOr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseOr-2750"><a href="#BitwiseOr-2750"><span class="linenos">2750</span></a><span class="k">class</span> <span class="nc">BitwiseOr</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseOr-2751"><a href="#BitwiseOr-2751"><span class="linenos">2751</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseOr-2808"><a href="#BitwiseOr-2808"><span class="linenos">2808</span></a><span class="k">class</span> <span class="nc">BitwiseOr</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseOr-2809"><a href="#BitwiseOr-2809"><span class="linenos">2809</span></a> <span class="k">pass</span> </span></pre></div> @@ -24340,8 +25222,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#BitwiseRightShift"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseRightShift-2754"><a href="#BitwiseRightShift-2754"><span class="linenos">2754</span></a><span class="k">class</span> <span class="nc">BitwiseRightShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseRightShift-2755"><a href="#BitwiseRightShift-2755"><span class="linenos">2755</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseRightShift-2812"><a href="#BitwiseRightShift-2812"><span class="linenos">2812</span></a><span class="k">class</span> <span class="nc">BitwiseRightShift</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseRightShift-2813"><a href="#BitwiseRightShift-2813"><span class="linenos">2813</span></a> <span class="k">pass</span> </span></pre></div> @@ -24401,8 +25283,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#BitwiseXor"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseXor-2758"><a href="#BitwiseXor-2758"><span class="linenos">2758</span></a><span class="k">class</span> <span class="nc">BitwiseXor</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="BitwiseXor-2759"><a href="#BitwiseXor-2759"><span class="linenos">2759</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseXor-2816"><a href="#BitwiseXor-2816"><span class="linenos">2816</span></a><span class="k">class</span> <span class="nc">BitwiseXor</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="BitwiseXor-2817"><a href="#BitwiseXor-2817"><span class="linenos">2817</span></a> <span class="k">pass</span> </span></pre></div> @@ -24462,8 +25344,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Div"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Div-2762"><a href="#Div-2762"><span class="linenos">2762</span></a><span class="k">class</span> <span class="nc">Div</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Div-2763"><a href="#Div-2763"><span class="linenos">2763</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Div-2820"><a href="#Div-2820"><span class="linenos">2820</span></a><span class="k">class</span> <span class="nc">Div</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Div-2821"><a href="#Div-2821"><span class="linenos">2821</span></a> <span class="k">pass</span> </span></pre></div> @@ -24523,10 +25405,10 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Dot"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Dot-2766"><a href="#Dot-2766"><span class="linenos">2766</span></a><span class="k">class</span> <span class="nc">Dot</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Dot-2767"><a href="#Dot-2767"><span class="linenos">2767</span></a> <span class="nd">@property</span> -</span><span id="Dot-2768"><a href="#Dot-2768"><span class="linenos">2768</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Dot-2769"><a href="#Dot-2769"><span class="linenos">2769</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Dot-2824"><a href="#Dot-2824"><span class="linenos">2824</span></a><span class="k">class</span> <span class="nc">Dot</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Dot-2825"><a href="#Dot-2825"><span class="linenos">2825</span></a> <span class="nd">@property</span> +</span><span id="Dot-2826"><a href="#Dot-2826"><span class="linenos">2826</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Dot-2827"><a href="#Dot-2827"><span class="linenos">2827</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span> </span></pre></div> @@ -24586,8 +25468,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#DPipe"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DPipe-2772"><a href="#DPipe-2772"><span class="linenos">2772</span></a><span class="k">class</span> <span class="nc">DPipe</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="DPipe-2773"><a href="#DPipe-2773"><span class="linenos">2773</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DPipe-2830"><a href="#DPipe-2830"><span class="linenos">2830</span></a><span class="k">class</span> <span class="nc">DPipe</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="DPipe-2831"><a href="#DPipe-2831"><span class="linenos">2831</span></a> <span class="k">pass</span> </span></pre></div> @@ -24647,8 +25529,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#EQ"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="EQ-2776"><a href="#EQ-2776"><span class="linenos">2776</span></a><span class="k">class</span> <span class="nc">EQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="EQ-2777"><a href="#EQ-2777"><span class="linenos">2777</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="EQ-2834"><a href="#EQ-2834"><span class="linenos">2834</span></a><span class="k">class</span> <span class="nc">EQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="EQ-2835"><a href="#EQ-2835"><span class="linenos">2835</span></a> <span class="k">pass</span> </span></pre></div> @@ -24714,8 +25596,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#NullSafeEQ"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NullSafeEQ-2780"><a href="#NullSafeEQ-2780"><span class="linenos">2780</span></a><span class="k">class</span> <span class="nc">NullSafeEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="NullSafeEQ-2781"><a href="#NullSafeEQ-2781"><span class="linenos">2781</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NullSafeEQ-2838"><a href="#NullSafeEQ-2838"><span class="linenos">2838</span></a><span class="k">class</span> <span class="nc">NullSafeEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="NullSafeEQ-2839"><a href="#NullSafeEQ-2839"><span class="linenos">2839</span></a> <span class="k">pass</span> </span></pre></div> @@ -24781,8 +25663,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#NullSafeNEQ"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NullSafeNEQ-2784"><a href="#NullSafeNEQ-2784"><span class="linenos">2784</span></a><span class="k">class</span> <span class="nc">NullSafeNEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="NullSafeNEQ-2785"><a href="#NullSafeNEQ-2785"><span class="linenos">2785</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NullSafeNEQ-2842"><a href="#NullSafeNEQ-2842"><span class="linenos">2842</span></a><span class="k">class</span> <span class="nc">NullSafeNEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="NullSafeNEQ-2843"><a href="#NullSafeNEQ-2843"><span class="linenos">2843</span></a> <span class="k">pass</span> </span></pre></div> @@ -24848,8 +25730,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Distance"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Distance-2788"><a href="#Distance-2788"><span class="linenos">2788</span></a><span class="k">class</span> <span class="nc">Distance</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Distance-2789"><a href="#Distance-2789"><span class="linenos">2789</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Distance-2846"><a href="#Distance-2846"><span class="linenos">2846</span></a><span class="k">class</span> <span class="nc">Distance</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Distance-2847"><a href="#Distance-2847"><span class="linenos">2847</span></a> <span class="k">pass</span> </span></pre></div> @@ -24909,8 +25791,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Escape"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Escape-2792"><a href="#Escape-2792"><span class="linenos">2792</span></a><span class="k">class</span> <span class="nc">Escape</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Escape-2793"><a href="#Escape-2793"><span class="linenos">2793</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Escape-2850"><a href="#Escape-2850"><span class="linenos">2850</span></a><span class="k">class</span> <span class="nc">Escape</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Escape-2851"><a href="#Escape-2851"><span class="linenos">2851</span></a> <span class="k">pass</span> </span></pre></div> @@ -24970,8 +25852,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Glob"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Glob-2796"><a href="#Glob-2796"><span class="linenos">2796</span></a><span class="k">class</span> <span class="nc">Glob</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="Glob-2797"><a href="#Glob-2797"><span class="linenos">2797</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Glob-2854"><a href="#Glob-2854"><span class="linenos">2854</span></a><span class="k">class</span> <span class="nc">Glob</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="Glob-2855"><a href="#Glob-2855"><span class="linenos">2855</span></a> <span class="k">pass</span> </span></pre></div> @@ -25037,8 +25919,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#GT"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GT-2800"><a href="#GT-2800"><span class="linenos">2800</span></a><span class="k">class</span> <span class="nc">GT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="GT-2801"><a href="#GT-2801"><span class="linenos">2801</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GT-2858"><a href="#GT-2858"><span class="linenos">2858</span></a><span class="k">class</span> <span class="nc">GT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="GT-2859"><a href="#GT-2859"><span class="linenos">2859</span></a> <span class="k">pass</span> </span></pre></div> @@ -25104,8 +25986,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#GTE"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GTE-2804"><a href="#GTE-2804"><span class="linenos">2804</span></a><span class="k">class</span> <span class="nc">GTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="GTE-2805"><a href="#GTE-2805"><span class="linenos">2805</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GTE-2862"><a href="#GTE-2862"><span class="linenos">2862</span></a><span class="k">class</span> <span class="nc">GTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="GTE-2863"><a href="#GTE-2863"><span class="linenos">2863</span></a> <span class="k">pass</span> </span></pre></div> @@ -25171,8 +26053,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#ILike"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ILike-2808"><a href="#ILike-2808"><span class="linenos">2808</span></a><span class="k">class</span> <span class="nc">ILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="ILike-2809"><a href="#ILike-2809"><span class="linenos">2809</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ILike-2866"><a href="#ILike-2866"><span class="linenos">2866</span></a><span class="k">class</span> <span class="nc">ILike</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="ILike-2867"><a href="#ILike-2867"><span class="linenos">2867</span></a> <span class="k">pass</span> </span></pre></div> @@ -25238,8 +26120,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#ILikeAny"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ILikeAny-2812"><a href="#ILikeAny-2812"><span class="linenos">2812</span></a><span class="k">class</span> <span class="nc">ILikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="ILikeAny-2813"><a href="#ILikeAny-2813"><span class="linenos">2813</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ILikeAny-2870"><a href="#ILikeAny-2870"><span class="linenos">2870</span></a><span class="k">class</span> <span class="nc">ILikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="ILikeAny-2871"><a href="#ILikeAny-2871"><span class="linenos">2871</span></a> <span class="k">pass</span> </span></pre></div> @@ -25305,8 +26187,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#IntDiv"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IntDiv-2816"><a href="#IntDiv-2816"><span class="linenos">2816</span></a><span class="k">class</span> <span class="nc">IntDiv</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="IntDiv-2817"><a href="#IntDiv-2817"><span class="linenos">2817</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IntDiv-2874"><a href="#IntDiv-2874"><span class="linenos">2874</span></a><span class="k">class</span> <span class="nc">IntDiv</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="IntDiv-2875"><a href="#IntDiv-2875"><span class="linenos">2875</span></a> <span class="k">pass</span> </span></pre></div> @@ -25366,8 +26248,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Is"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Is-2820"><a href="#Is-2820"><span class="linenos">2820</span></a><span class="k">class</span> <span class="nc">Is</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="Is-2821"><a href="#Is-2821"><span class="linenos">2821</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Is-2878"><a href="#Is-2878"><span class="linenos">2878</span></a><span class="k">class</span> <span class="nc">Is</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="Is-2879"><a href="#Is-2879"><span class="linenos">2879</span></a> <span class="k">pass</span> </span></pre></div> @@ -25433,8 +26315,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Kwarg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Kwarg-2824"><a href="#Kwarg-2824"><span class="linenos">2824</span></a><span class="k">class</span> <span class="nc">Kwarg</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Kwarg-2825"><a href="#Kwarg-2825"><span class="linenos">2825</span></a><span class="w"> </span><span class="sd">"""Kwarg in special functions like func(kwarg => y)."""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Kwarg-2882"><a href="#Kwarg-2882"><span class="linenos">2882</span></a><span class="k">class</span> <span class="nc">Kwarg</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Kwarg-2883"><a href="#Kwarg-2883"><span class="linenos">2883</span></a><span class="w"> </span><span class="sd">"""Kwarg in special functions like func(kwarg => y)."""</span> </span></pre></div> @@ -25496,8 +26378,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Like"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Like-2828"><a href="#Like-2828"><span class="linenos">2828</span></a><span class="k">class</span> <span class="nc">Like</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="Like-2829"><a href="#Like-2829"><span class="linenos">2829</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Like-2886"><a href="#Like-2886"><span class="linenos">2886</span></a><span class="k">class</span> <span class="nc">Like</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="Like-2887"><a href="#Like-2887"><span class="linenos">2887</span></a> <span class="k">pass</span> </span></pre></div> @@ -25563,8 +26445,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#LikeAny"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LikeAny-2832"><a href="#LikeAny-2832"><span class="linenos">2832</span></a><span class="k">class</span> <span class="nc">LikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="LikeAny-2833"><a href="#LikeAny-2833"><span class="linenos">2833</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LikeAny-2890"><a href="#LikeAny-2890"><span class="linenos">2890</span></a><span class="k">class</span> <span class="nc">LikeAny</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="LikeAny-2891"><a href="#LikeAny-2891"><span class="linenos">2891</span></a> <span class="k">pass</span> </span></pre></div> @@ -25630,8 +26512,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#LT"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LT-2836"><a href="#LT-2836"><span class="linenos">2836</span></a><span class="k">class</span> <span class="nc">LT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="LT-2837"><a href="#LT-2837"><span class="linenos">2837</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LT-2894"><a href="#LT-2894"><span class="linenos">2894</span></a><span class="k">class</span> <span class="nc">LT</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="LT-2895"><a href="#LT-2895"><span class="linenos">2895</span></a> <span class="k">pass</span> </span></pre></div> @@ -25697,8 +26579,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#LTE"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LTE-2840"><a href="#LTE-2840"><span class="linenos">2840</span></a><span class="k">class</span> <span class="nc">LTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="LTE-2841"><a href="#LTE-2841"><span class="linenos">2841</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LTE-2898"><a href="#LTE-2898"><span class="linenos">2898</span></a><span class="k">class</span> <span class="nc">LTE</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="LTE-2899"><a href="#LTE-2899"><span class="linenos">2899</span></a> <span class="k">pass</span> </span></pre></div> @@ -25764,8 +26646,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Mod"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Mod-2844"><a href="#Mod-2844"><span class="linenos">2844</span></a><span class="k">class</span> <span class="nc">Mod</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Mod-2845"><a href="#Mod-2845"><span class="linenos">2845</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Mod-2902"><a href="#Mod-2902"><span class="linenos">2902</span></a><span class="k">class</span> <span class="nc">Mod</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Mod-2903"><a href="#Mod-2903"><span class="linenos">2903</span></a> <span class="k">pass</span> </span></pre></div> @@ -25825,8 +26707,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Mul"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Mul-2848"><a href="#Mul-2848"><span class="linenos">2848</span></a><span class="k">class</span> <span class="nc">Mul</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Mul-2849"><a href="#Mul-2849"><span class="linenos">2849</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Mul-2906"><a href="#Mul-2906"><span class="linenos">2906</span></a><span class="k">class</span> <span class="nc">Mul</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Mul-2907"><a href="#Mul-2907"><span class="linenos">2907</span></a> <span class="k">pass</span> </span></pre></div> @@ -25886,8 +26768,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#NEQ"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NEQ-2852"><a href="#NEQ-2852"><span class="linenos">2852</span></a><span class="k">class</span> <span class="nc">NEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="NEQ-2853"><a href="#NEQ-2853"><span class="linenos">2853</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NEQ-2910"><a href="#NEQ-2910"><span class="linenos">2910</span></a><span class="k">class</span> <span class="nc">NEQ</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="NEQ-2911"><a href="#NEQ-2911"><span class="linenos">2911</span></a> <span class="k">pass</span> </span></pre></div> @@ -25953,8 +26835,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#SimilarTo"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SimilarTo-2856"><a href="#SimilarTo-2856"><span class="linenos">2856</span></a><span class="k">class</span> <span class="nc">SimilarTo</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> -</span><span id="SimilarTo-2857"><a href="#SimilarTo-2857"><span class="linenos">2857</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SimilarTo-2914"><a href="#SimilarTo-2914"><span class="linenos">2914</span></a><span class="k">class</span> <span class="nc">SimilarTo</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Predicate</span><span class="p">):</span> +</span><span id="SimilarTo-2915"><a href="#SimilarTo-2915"><span class="linenos">2915</span></a> <span class="k">pass</span> </span></pre></div> @@ -26020,8 +26902,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Slice"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Slice-2860"><a href="#Slice-2860"><span class="linenos">2860</span></a><span class="k">class</span> <span class="nc">Slice</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Slice-2861"><a href="#Slice-2861"><span class="linenos">2861</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Slice-2918"><a href="#Slice-2918"><span class="linenos">2918</span></a><span class="k">class</span> <span class="nc">Slice</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Slice-2919"><a href="#Slice-2919"><span class="linenos">2919</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -26081,8 +26963,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Sub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Sub-2864"><a href="#Sub-2864"><span class="linenos">2864</span></a><span class="k">class</span> <span class="nc">Sub</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Sub-2865"><a href="#Sub-2865"><span class="linenos">2865</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Sub-2922"><a href="#Sub-2922"><span class="linenos">2922</span></a><span class="k">class</span> <span class="nc">Sub</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Sub-2923"><a href="#Sub-2923"><span class="linenos">2923</span></a> <span class="k">pass</span> </span></pre></div> @@ -26142,8 +27024,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Unary"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unary-2870"><a href="#Unary-2870"><span class="linenos">2870</span></a><span class="k">class</span> <span class="nc">Unary</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Unary-2871"><a href="#Unary-2871"><span class="linenos">2871</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unary-2928"><a href="#Unary-2928"><span class="linenos">2928</span></a><span class="k">class</span> <span class="nc">Unary</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Unary-2929"><a href="#Unary-2929"><span class="linenos">2929</span></a> <span class="k">pass</span> </span></pre></div> @@ -26203,8 +27085,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#BitwiseNot"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseNot-2874"><a href="#BitwiseNot-2874"><span class="linenos">2874</span></a><span class="k">class</span> <span class="nc">BitwiseNot</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="BitwiseNot-2875"><a href="#BitwiseNot-2875"><span class="linenos">2875</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="BitwiseNot-2932"><a href="#BitwiseNot-2932"><span class="linenos">2932</span></a><span class="k">class</span> <span class="nc">BitwiseNot</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="BitwiseNot-2933"><a href="#BitwiseNot-2933"><span class="linenos">2933</span></a> <span class="k">pass</span> </span></pre></div> @@ -26264,8 +27146,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Not"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Not-2878"><a href="#Not-2878"><span class="linenos">2878</span></a><span class="k">class</span> <span class="nc">Not</span><span class="p">(</span><span class="n">Unary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> -</span><span id="Not-2879"><a href="#Not-2879"><span class="linenos">2879</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Not-2936"><a href="#Not-2936"><span class="linenos">2936</span></a><span class="k">class</span> <span class="nc">Not</span><span class="p">(</span><span class="n">Unary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="Not-2937"><a href="#Not-2937"><span class="linenos">2937</span></a> <span class="k">pass</span> </span></pre></div> @@ -26331,8 +27213,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Paren"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Paren-2882"><a href="#Paren-2882"><span class="linenos">2882</span></a><span class="k">class</span> <span class="nc">Paren</span><span class="p">(</span><span class="n">Unary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> -</span><span id="Paren-2883"><a href="#Paren-2883"><span class="linenos">2883</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Paren-2940"><a href="#Paren-2940"><span class="linenos">2940</span></a><span class="k">class</span> <span class="nc">Paren</span><span class="p">(</span><span class="n">Unary</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="Paren-2941"><a href="#Paren-2941"><span class="linenos">2941</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"with"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -26398,8 +27280,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Neg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Neg-2886"><a href="#Neg-2886"><span class="linenos">2886</span></a><span class="k">class</span> <span class="nc">Neg</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> -</span><span id="Neg-2887"><a href="#Neg-2887"><span class="linenos">2887</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Neg-2944"><a href="#Neg-2944"><span class="linenos">2944</span></a><span class="k">class</span> <span class="nc">Neg</span><span class="p">(</span><span class="n">Unary</span><span class="p">):</span> +</span><span id="Neg-2945"><a href="#Neg-2945"><span class="linenos">2945</span></a> <span class="k">pass</span> </span></pre></div> @@ -26459,12 +27341,12 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Alias"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Alias-2891"><a href="#Alias-2891"><span class="linenos">2891</span></a><span class="k">class</span> <span class="nc">Alias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Alias-2892"><a href="#Alias-2892"><span class="linenos">2892</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Alias-2893"><a href="#Alias-2893"><span class="linenos">2893</span></a> -</span><span id="Alias-2894"><a href="#Alias-2894"><span class="linenos">2894</span></a> <span class="nd">@property</span> -</span><span id="Alias-2895"><a href="#Alias-2895"><span class="linenos">2895</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Alias-2896"><a href="#Alias-2896"><span class="linenos">2896</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Alias-2949"><a href="#Alias-2949"><span class="linenos">2949</span></a><span class="k">class</span> <span class="nc">Alias</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Alias-2950"><a href="#Alias-2950"><span class="linenos">2950</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Alias-2951"><a href="#Alias-2951"><span class="linenos">2951</span></a> +</span><span id="Alias-2952"><a href="#Alias-2952"><span class="linenos">2952</span></a> <span class="nd">@property</span> +</span><span id="Alias-2953"><a href="#Alias-2953"><span class="linenos">2953</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Alias-2954"><a href="#Alias-2954"><span class="linenos">2954</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias</span> </span></pre></div> @@ -26553,12 +27435,12 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Aliases"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Aliases-2899"><a href="#Aliases-2899"><span class="linenos">2899</span></a><span class="k">class</span> <span class="nc">Aliases</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Aliases-2900"><a href="#Aliases-2900"><span class="linenos">2900</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Aliases-2901"><a href="#Aliases-2901"><span class="linenos">2901</span></a> -</span><span id="Aliases-2902"><a href="#Aliases-2902"><span class="linenos">2902</span></a> <span class="nd">@property</span> -</span><span id="Aliases-2903"><a href="#Aliases-2903"><span class="linenos">2903</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Aliases-2904"><a href="#Aliases-2904"><span class="linenos">2904</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Aliases-2957"><a href="#Aliases-2957"><span class="linenos">2957</span></a><span class="k">class</span> <span class="nc">Aliases</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Aliases-2958"><a href="#Aliases-2958"><span class="linenos">2958</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Aliases-2959"><a href="#Aliases-2959"><span class="linenos">2959</span></a> +</span><span id="Aliases-2960"><a href="#Aliases-2960"><span class="linenos">2960</span></a> <span class="nd">@property</span> +</span><span id="Aliases-2961"><a href="#Aliases-2961"><span class="linenos">2961</span></a> <span class="k">def</span> <span class="nf">aliases</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Aliases-2962"><a href="#Aliases-2962"><span class="linenos">2962</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span> </span></pre></div> @@ -26618,8 +27500,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#AtTimeZone"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AtTimeZone-2907"><a href="#AtTimeZone-2907"><span class="linenos">2907</span></a><span class="k">class</span> <span class="nc">AtTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="AtTimeZone-2908"><a href="#AtTimeZone-2908"><span class="linenos">2908</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AtTimeZone-2965"><a href="#AtTimeZone-2965"><span class="linenos">2965</span></a><span class="k">class</span> <span class="nc">AtTimeZone</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="AtTimeZone-2966"><a href="#AtTimeZone-2966"><span class="linenos">2966</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -26679,8 +27561,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Between"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Between-2911"><a href="#Between-2911"><span class="linenos">2911</span></a><span class="k">class</span> <span class="nc">Between</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="Between-2912"><a href="#Between-2912"><span class="linenos">2912</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"low"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"high"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Between-2969"><a href="#Between-2969"><span class="linenos">2969</span></a><span class="k">class</span> <span class="nc">Between</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="Between-2970"><a href="#Between-2970"><span class="linenos">2970</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"low"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"high"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -26746,8 +27628,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Bracket"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Bracket-2915"><a href="#Bracket-2915"><span class="linenos">2915</span></a><span class="k">class</span> <span class="nc">Bracket</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Bracket-2916"><a href="#Bracket-2916"><span class="linenos">2916</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Bracket-2973"><a href="#Bracket-2973"><span class="linenos">2973</span></a><span class="k">class</span> <span class="nc">Bracket</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Bracket-2974"><a href="#Bracket-2974"><span class="linenos">2974</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -26813,8 +27695,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Distinct"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Distinct-2919"><a href="#Distinct-2919"><span class="linenos">2919</span></a><span class="k">class</span> <span class="nc">Distinct</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Distinct-2920"><a href="#Distinct-2920"><span class="linenos">2920</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Distinct-2977"><a href="#Distinct-2977"><span class="linenos">2977</span></a><span class="k">class</span> <span class="nc">Distinct</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Distinct-2978"><a href="#Distinct-2978"><span class="linenos">2978</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -26874,15 +27756,15 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#In"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="In-2923"><a href="#In-2923"><span class="linenos">2923</span></a><span class="k">class</span> <span class="nc">In</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> -</span><span id="In-2924"><a href="#In-2924"><span class="linenos">2924</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="In-2925"><a href="#In-2925"><span class="linenos">2925</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="In-2926"><a href="#In-2926"><span class="linenos">2926</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-2927"><a href="#In-2927"><span class="linenos">2927</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-2928"><a href="#In-2928"><span class="linenos">2928</span></a> <span class="s2">"unnest"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-2929"><a href="#In-2929"><span class="linenos">2929</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-2930"><a href="#In-2930"><span class="linenos">2930</span></a> <span class="s2">"is_global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="In-2931"><a href="#In-2931"><span class="linenos">2931</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="In-2981"><a href="#In-2981"><span class="linenos">2981</span></a><span class="k">class</span> <span class="nc">In</span><span class="p">(</span><span class="n">Predicate</span><span class="p">):</span> +</span><span id="In-2982"><a href="#In-2982"><span class="linenos">2982</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="In-2983"><a href="#In-2983"><span class="linenos">2983</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="In-2984"><a href="#In-2984"><span class="linenos">2984</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-2985"><a href="#In-2985"><span class="linenos">2985</span></a> <span class="s2">"query"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-2986"><a href="#In-2986"><span class="linenos">2986</span></a> <span class="s2">"unnest"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-2987"><a href="#In-2987"><span class="linenos">2987</span></a> <span class="s2">"field"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-2988"><a href="#In-2988"><span class="linenos">2988</span></a> <span class="s2">"is_global"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="In-2989"><a href="#In-2989"><span class="linenos">2989</span></a> <span class="p">}</span> </span></pre></div> @@ -26948,18 +27830,18 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#TimeUnit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit-2934"><a href="#TimeUnit-2934"><span class="linenos">2934</span></a><span class="k">class</span> <span class="nc">TimeUnit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="TimeUnit-2935"><a href="#TimeUnit-2935"><span class="linenos">2935</span></a><span class="w"> </span><span class="sd">"""Automatically converts unit arg into a var."""</span> -</span><span id="TimeUnit-2936"><a href="#TimeUnit-2936"><span class="linenos">2936</span></a> -</span><span id="TimeUnit-2937"><a href="#TimeUnit-2937"><span class="linenos">2937</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="TimeUnit-2938"><a href="#TimeUnit-2938"><span class="linenos">2938</span></a> -</span><span id="TimeUnit-2939"><a href="#TimeUnit-2939"><span class="linenos">2939</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> -</span><span id="TimeUnit-2940"><a href="#TimeUnit-2940"><span class="linenos">2940</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> -</span><span id="TimeUnit-2941"><a href="#TimeUnit-2941"><span class="linenos">2941</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> -</span><span id="TimeUnit-2942"><a href="#TimeUnit-2942"><span class="linenos">2942</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="TimeUnit-2943"><a href="#TimeUnit-2943"><span class="linenos">2943</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> -</span><span id="TimeUnit-2944"><a href="#TimeUnit-2944"><span class="linenos">2944</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> -</span><span id="TimeUnit-2945"><a href="#TimeUnit-2945"><span class="linenos">2945</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit-2992"><a href="#TimeUnit-2992"><span class="linenos">2992</span></a><span class="k">class</span> <span class="nc">TimeUnit</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="TimeUnit-2993"><a href="#TimeUnit-2993"><span class="linenos">2993</span></a><span class="w"> </span><span class="sd">"""Automatically converts unit arg into a var."""</span> +</span><span id="TimeUnit-2994"><a href="#TimeUnit-2994"><span class="linenos">2994</span></a> +</span><span id="TimeUnit-2995"><a href="#TimeUnit-2995"><span class="linenos">2995</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="TimeUnit-2996"><a href="#TimeUnit-2996"><span class="linenos">2996</span></a> +</span><span id="TimeUnit-2997"><a href="#TimeUnit-2997"><span class="linenos">2997</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> +</span><span id="TimeUnit-2998"><a href="#TimeUnit-2998"><span class="linenos">2998</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> +</span><span id="TimeUnit-2999"><a href="#TimeUnit-2999"><span class="linenos">2999</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> +</span><span id="TimeUnit-3000"><a href="#TimeUnit-3000"><span class="linenos">3000</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="TimeUnit-3001"><a href="#TimeUnit-3001"><span class="linenos">3001</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> +</span><span id="TimeUnit-3002"><a href="#TimeUnit-3002"><span class="linenos">3002</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> +</span><span id="TimeUnit-3003"><a href="#TimeUnit-3003"><span class="linenos">3003</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> </span></pre></div> @@ -26977,13 +27859,13 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#TimeUnit.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit.__init__-2939"><a href="#TimeUnit.__init__-2939"><span class="linenos">2939</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> -</span><span id="TimeUnit.__init__-2940"><a href="#TimeUnit.__init__-2940"><span class="linenos">2940</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> -</span><span id="TimeUnit.__init__-2941"><a href="#TimeUnit.__init__-2941"><span class="linenos">2941</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> -</span><span id="TimeUnit.__init__-2942"><a href="#TimeUnit.__init__-2942"><span class="linenos">2942</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="TimeUnit.__init__-2943"><a href="#TimeUnit.__init__-2943"><span class="linenos">2943</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> -</span><span id="TimeUnit.__init__-2944"><a href="#TimeUnit.__init__-2944"><span class="linenos">2944</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> -</span><span id="TimeUnit.__init__-2945"><a href="#TimeUnit.__init__-2945"><span class="linenos">2945</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeUnit.__init__-2997"><a href="#TimeUnit.__init__-2997"><span class="linenos">2997</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">args</span><span class="p">):</span> +</span><span id="TimeUnit.__init__-2998"><a href="#TimeUnit.__init__-2998"><span class="linenos">2998</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> +</span><span id="TimeUnit.__init__-2999"><a href="#TimeUnit.__init__-2999"><span class="linenos">2999</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> +</span><span id="TimeUnit.__init__-3000"><a href="#TimeUnit.__init__-3000"><span class="linenos">3000</span></a> <span class="n">args</span><span class="p">[</span><span class="s2">"unit"</span><span class="p">]</span> <span class="o">=</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="TimeUnit.__init__-3001"><a href="#TimeUnit.__init__-3001"><span class="linenos">3001</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">unit</span><span class="p">,</span> <span class="n">Week</span><span class="p">):</span> +</span><span id="TimeUnit.__init__-3002"><a href="#TimeUnit.__init__-3002"><span class="linenos">3002</span></a> <span class="n">unit</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">unit</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> +</span><span id="TimeUnit.__init__-3003"><a href="#TimeUnit.__init__-3003"><span class="linenos">3003</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="o">**</span><span class="n">args</span><span class="p">)</span> </span></pre></div> @@ -27043,8 +27925,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Interval"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Interval-2948"><a href="#Interval-2948"><span class="linenos">2948</span></a><span class="k">class</span> <span class="nc">Interval</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="Interval-2949"><a href="#Interval-2949"><span class="linenos">2949</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Interval-3006"><a href="#Interval-3006"><span class="linenos">3006</span></a><span class="k">class</span> <span class="nc">Interval</span><span class="p">(</span><span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="Interval-3007"><a href="#Interval-3007"><span class="linenos">3007</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -27107,8 +27989,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#IgnoreNulls"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IgnoreNulls-2952"><a href="#IgnoreNulls-2952"><span class="linenos">2952</span></a><span class="k">class</span> <span class="nc">IgnoreNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="IgnoreNulls-2953"><a href="#IgnoreNulls-2953"><span class="linenos">2953</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IgnoreNulls-3010"><a href="#IgnoreNulls-3010"><span class="linenos">3010</span></a><span class="k">class</span> <span class="nc">IgnoreNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="IgnoreNulls-3011"><a href="#IgnoreNulls-3011"><span class="linenos">3011</span></a> <span class="k">pass</span> </span></pre></div> @@ -27168,8 +28050,8 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#RespectNulls"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RespectNulls-2956"><a href="#RespectNulls-2956"><span class="linenos">2956</span></a><span class="k">class</span> <span class="nc">RespectNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="RespectNulls-2957"><a href="#RespectNulls-2957"><span class="linenos">2957</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RespectNulls-3014"><a href="#RespectNulls-3014"><span class="linenos">3014</span></a><span class="k">class</span> <span class="nc">RespectNulls</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="RespectNulls-3015"><a href="#RespectNulls-3015"><span class="linenos">3015</span></a> <span class="k">pass</span> </span></pre></div> @@ -27229,53 +28111,53 @@ If another <code><a href="#Expression">Expression</a></code> instance is passed, </div> <a class="headerlink" href="#Func"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func-2961"><a href="#Func-2961"><span class="linenos">2961</span></a><span class="k">class</span> <span class="nc">Func</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> -</span><span id="Func-2962"><a href="#Func-2962"><span class="linenos">2962</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Func-2963"><a href="#Func-2963"><span class="linenos">2963</span></a><span class="sd"> The base class for all function expressions.</span> -</span><span id="Func-2964"><a href="#Func-2964"><span class="linenos">2964</span></a> -</span><span id="Func-2965"><a href="#Func-2965"><span class="linenos">2965</span></a><span class="sd"> Attributes:</span> -</span><span id="Func-2966"><a href="#Func-2966"><span class="linenos">2966</span></a><span class="sd"> is_var_len_args (bool): if set to True the last argument defined in arg_types will be</span> -</span><span id="Func-2967"><a href="#Func-2967"><span class="linenos">2967</span></a><span class="sd"> treated as a variable length argument and the argument's value will be stored as a list.</span> -</span><span id="Func-2968"><a href="#Func-2968"><span class="linenos">2968</span></a><span class="sd"> _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)</span> -</span><span id="Func-2969"><a href="#Func-2969"><span class="linenos">2969</span></a><span class="sd"> for this function expression. These values are used to map this node to a name during parsing</span> -</span><span id="Func-2970"><a href="#Func-2970"><span class="linenos">2970</span></a><span class="sd"> as well as to provide the function's name during SQL string generation. By default the SQL</span> -</span><span id="Func-2971"><a href="#Func-2971"><span class="linenos">2971</span></a><span class="sd"> name is set to the expression's class name transformed to snake case.</span> -</span><span id="Func-2972"><a href="#Func-2972"><span class="linenos">2972</span></a><span class="sd"> """</span> -</span><span id="Func-2973"><a href="#Func-2973"><span class="linenos">2973</span></a> -</span><span id="Func-2974"><a href="#Func-2974"><span class="linenos">2974</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Func-2975"><a href="#Func-2975"><span class="linenos">2975</span></a> -</span><span id="Func-2976"><a href="#Func-2976"><span class="linenos">2976</span></a> <span class="nd">@classmethod</span> -</span><span id="Func-2977"><a href="#Func-2977"><span class="linenos">2977</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> -</span><span id="Func-2978"><a href="#Func-2978"><span class="linenos">2978</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> -</span><span id="Func-2979"><a href="#Func-2979"><span class="linenos">2979</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> -</span><span id="Func-2980"><a href="#Func-2980"><span class="linenos">2980</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> -</span><span id="Func-2981"><a href="#Func-2981"><span class="linenos">2981</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</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="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> -</span><span id="Func-2982"><a href="#Func-2982"><span class="linenos">2982</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> -</span><span id="Func-2983"><a href="#Func-2983"><span class="linenos">2983</span></a> -</span><span id="Func-2984"><a href="#Func-2984"><span class="linenos">2984</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> -</span><span id="Func-2985"><a href="#Func-2985"><span class="linenos">2985</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> -</span><span id="Func-2986"><a href="#Func-2986"><span class="linenos">2986</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Func-2987"><a href="#Func-2987"><span class="linenos">2987</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> -</span><span id="Func-2988"><a href="#Func-2988"><span class="linenos">2988</span></a> -</span><span id="Func-2989"><a href="#Func-2989"><span class="linenos">2989</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> -</span><span id="Func-2990"><a href="#Func-2990"><span class="linenos">2990</span></a> -</span><span id="Func-2991"><a href="#Func-2991"><span class="linenos">2991</span></a> <span class="nd">@classmethod</span> -</span><span id="Func-2992"><a href="#Func-2992"><span class="linenos">2992</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func-2993"><a href="#Func-2993"><span class="linenos">2993</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> -</span><span id="Func-2994"><a href="#Func-2994"><span class="linenos">2994</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> -</span><span id="Func-2995"><a href="#Func-2995"><span class="linenos">2995</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> -</span><span id="Func-2996"><a href="#Func-2996"><span class="linenos">2996</span></a> <span class="p">)</span> -</span><span id="Func-2997"><a href="#Func-2997"><span class="linenos">2997</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> -</span><span id="Func-2998"><a href="#Func-2998"><span class="linenos">2998</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> -</span><span id="Func-2999"><a href="#Func-2999"><span class="linenos">2999</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> -</span><span id="Func-3000"><a href="#Func-3000"><span class="linenos">3000</span></a> -</span><span id="Func-3001"><a href="#Func-3001"><span class="linenos">3001</span></a> <span class="nd">@classmethod</span> -</span><span id="Func-3002"><a href="#Func-3002"><span class="linenos">3002</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func-3003"><a href="#Func-3003"><span class="linenos">3003</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="Func-3004"><a href="#Func-3004"><span class="linenos">3004</span></a> -</span><span id="Func-3005"><a href="#Func-3005"><span class="linenos">3005</span></a> <span class="nd">@classmethod</span> -</span><span id="Func-3006"><a href="#Func-3006"><span class="linenos">3006</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func-3007"><a href="#Func-3007"><span class="linenos">3007</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func-3019"><a href="#Func-3019"><span class="linenos">3019</span></a><span class="k">class</span> <span class="nc">Func</span><span class="p">(</span><span class="n">Condition</span><span class="p">):</span> +</span><span id="Func-3020"><a href="#Func-3020"><span class="linenos">3020</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Func-3021"><a href="#Func-3021"><span class="linenos">3021</span></a><span class="sd"> The base class for all function expressions.</span> +</span><span id="Func-3022"><a href="#Func-3022"><span class="linenos">3022</span></a> +</span><span id="Func-3023"><a href="#Func-3023"><span class="linenos">3023</span></a><span class="sd"> Attributes:</span> +</span><span id="Func-3024"><a href="#Func-3024"><span class="linenos">3024</span></a><span class="sd"> is_var_len_args (bool): if set to True the last argument defined in arg_types will be</span> +</span><span id="Func-3025"><a href="#Func-3025"><span class="linenos">3025</span></a><span class="sd"> treated as a variable length argument and the argument's value will be stored as a list.</span> +</span><span id="Func-3026"><a href="#Func-3026"><span class="linenos">3026</span></a><span class="sd"> _sql_names (list): determines the SQL name (1st item in the list) and aliases (subsequent items)</span> +</span><span id="Func-3027"><a href="#Func-3027"><span class="linenos">3027</span></a><span class="sd"> for this function expression. These values are used to map this node to a name during parsing</span> +</span><span id="Func-3028"><a href="#Func-3028"><span class="linenos">3028</span></a><span class="sd"> as well as to provide the function's name during SQL string generation. By default the SQL</span> +</span><span id="Func-3029"><a href="#Func-3029"><span class="linenos">3029</span></a><span class="sd"> name is set to the expression's class name transformed to snake case.</span> +</span><span id="Func-3030"><a href="#Func-3030"><span class="linenos">3030</span></a><span class="sd"> """</span> +</span><span id="Func-3031"><a href="#Func-3031"><span class="linenos">3031</span></a> +</span><span id="Func-3032"><a href="#Func-3032"><span class="linenos">3032</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Func-3033"><a href="#Func-3033"><span class="linenos">3033</span></a> +</span><span id="Func-3034"><a href="#Func-3034"><span class="linenos">3034</span></a> <span class="nd">@classmethod</span> +</span><span id="Func-3035"><a href="#Func-3035"><span class="linenos">3035</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> +</span><span id="Func-3036"><a href="#Func-3036"><span class="linenos">3036</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> +</span><span id="Func-3037"><a href="#Func-3037"><span class="linenos">3037</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> +</span><span id="Func-3038"><a href="#Func-3038"><span class="linenos">3038</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> +</span><span id="Func-3039"><a href="#Func-3039"><span class="linenos">3039</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</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="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> +</span><span id="Func-3040"><a href="#Func-3040"><span class="linenos">3040</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> +</span><span id="Func-3041"><a href="#Func-3041"><span class="linenos">3041</span></a> +</span><span id="Func-3042"><a href="#Func-3042"><span class="linenos">3042</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> +</span><span id="Func-3043"><a href="#Func-3043"><span class="linenos">3043</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> +</span><span id="Func-3044"><a href="#Func-3044"><span class="linenos">3044</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Func-3045"><a href="#Func-3045"><span class="linenos">3045</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> +</span><span id="Func-3046"><a href="#Func-3046"><span class="linenos">3046</span></a> +</span><span id="Func-3047"><a href="#Func-3047"><span class="linenos">3047</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> +</span><span id="Func-3048"><a href="#Func-3048"><span class="linenos">3048</span></a> +</span><span id="Func-3049"><a href="#Func-3049"><span class="linenos">3049</span></a> <span class="nd">@classmethod</span> +</span><span id="Func-3050"><a href="#Func-3050"><span class="linenos">3050</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func-3051"><a href="#Func-3051"><span class="linenos">3051</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> +</span><span id="Func-3052"><a href="#Func-3052"><span class="linenos">3052</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> +</span><span id="Func-3053"><a href="#Func-3053"><span class="linenos">3053</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> +</span><span id="Func-3054"><a href="#Func-3054"><span class="linenos">3054</span></a> <span class="p">)</span> +</span><span id="Func-3055"><a href="#Func-3055"><span class="linenos">3055</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> +</span><span id="Func-3056"><a href="#Func-3056"><span class="linenos">3056</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> +</span><span id="Func-3057"><a href="#Func-3057"><span class="linenos">3057</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> +</span><span id="Func-3058"><a href="#Func-3058"><span class="linenos">3058</span></a> +</span><span id="Func-3059"><a href="#Func-3059"><span class="linenos">3059</span></a> <span class="nd">@classmethod</span> +</span><span id="Func-3060"><a href="#Func-3060"><span class="linenos">3060</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func-3061"><a href="#Func-3061"><span class="linenos">3061</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="Func-3062"><a href="#Func-3062"><span class="linenos">3062</span></a> +</span><span id="Func-3063"><a href="#Func-3063"><span class="linenos">3063</span></a> <span class="nd">@classmethod</span> +</span><span id="Func-3064"><a href="#Func-3064"><span class="linenos">3064</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func-3065"><a href="#Func-3065"><span class="linenos">3065</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> </span></pre></div> @@ -27306,20 +28188,20 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Func.from_arg_list"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func.from_arg_list-2976"><a href="#Func.from_arg_list-2976"><span class="linenos">2976</span></a> <span class="nd">@classmethod</span> -</span><span id="Func.from_arg_list-2977"><a href="#Func.from_arg_list-2977"><span class="linenos">2977</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> -</span><span id="Func.from_arg_list-2978"><a href="#Func.from_arg_list-2978"><span class="linenos">2978</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> -</span><span id="Func.from_arg_list-2979"><a href="#Func.from_arg_list-2979"><span class="linenos">2979</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> -</span><span id="Func.from_arg_list-2980"><a href="#Func.from_arg_list-2980"><span class="linenos">2980</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> -</span><span id="Func.from_arg_list-2981"><a href="#Func.from_arg_list-2981"><span class="linenos">2981</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</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="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> -</span><span id="Func.from_arg_list-2982"><a href="#Func.from_arg_list-2982"><span class="linenos">2982</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> -</span><span id="Func.from_arg_list-2983"><a href="#Func.from_arg_list-2983"><span class="linenos">2983</span></a> -</span><span id="Func.from_arg_list-2984"><a href="#Func.from_arg_list-2984"><span class="linenos">2984</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> -</span><span id="Func.from_arg_list-2985"><a href="#Func.from_arg_list-2985"><span class="linenos">2985</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> -</span><span id="Func.from_arg_list-2986"><a href="#Func.from_arg_list-2986"><span class="linenos">2986</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Func.from_arg_list-2987"><a href="#Func.from_arg_list-2987"><span class="linenos">2987</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> -</span><span id="Func.from_arg_list-2988"><a href="#Func.from_arg_list-2988"><span class="linenos">2988</span></a> -</span><span id="Func.from_arg_list-2989"><a href="#Func.from_arg_list-2989"><span class="linenos">2989</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func.from_arg_list-3034"><a href="#Func.from_arg_list-3034"><span class="linenos">3034</span></a> <span class="nd">@classmethod</span> +</span><span id="Func.from_arg_list-3035"><a href="#Func.from_arg_list-3035"><span class="linenos">3035</span></a> <span class="k">def</span> <span class="nf">from_arg_list</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span> +</span><span id="Func.from_arg_list-3036"><a href="#Func.from_arg_list-3036"><span class="linenos">3036</span></a> <span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span><span class="p">:</span> +</span><span id="Func.from_arg_list-3037"><a href="#Func.from_arg_list-3037"><span class="linenos">3037</span></a> <span class="n">all_arg_keys</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)</span> +</span><span id="Func.from_arg_list-3038"><a href="#Func.from_arg_list-3038"><span class="linenos">3038</span></a> <span class="c1"># If this function supports variable length argument treat the last argument as such.</span> +</span><span id="Func.from_arg_list-3039"><a href="#Func.from_arg_list-3039"><span class="linenos">3039</span></a> <span class="n">non_var_len_arg_keys</span> <span class="o">=</span> <span class="n">all_arg_keys</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="bp">cls</span><span class="o">.</span><span class="n">is_var_len_args</span> <span class="k">else</span> <span class="n">all_arg_keys</span> +</span><span id="Func.from_arg_list-3040"><a href="#Func.from_arg_list-3040"><span class="linenos">3040</span></a> <span class="n">num_non_var</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">non_var_len_arg_keys</span><span class="p">)</span> +</span><span id="Func.from_arg_list-3041"><a href="#Func.from_arg_list-3041"><span class="linenos">3041</span></a> +</span><span id="Func.from_arg_list-3042"><a href="#Func.from_arg_list-3042"><span class="linenos">3042</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">non_var_len_arg_keys</span><span class="p">)}</span> +</span><span id="Func.from_arg_list-3043"><a href="#Func.from_arg_list-3043"><span class="linenos">3043</span></a> <span class="n">args_dict</span><span class="p">[</span><span class="n">all_arg_keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">num_non_var</span><span class="p">:]</span> +</span><span id="Func.from_arg_list-3044"><a href="#Func.from_arg_list-3044"><span class="linenos">3044</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Func.from_arg_list-3045"><a href="#Func.from_arg_list-3045"><span class="linenos">3045</span></a> <span class="n">args_dict</span> <span class="o">=</span> <span class="p">{</span><span class="n">arg_key</span><span class="p">:</span> <span class="n">arg</span> <span class="k">for</span> <span class="n">arg</span><span class="p">,</span> <span class="n">arg_key</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="bp">cls</span><span class="o">.</span><span class="n">arg_types</span><span class="p">)}</span> +</span><span id="Func.from_arg_list-3046"><a href="#Func.from_arg_list-3046"><span class="linenos">3046</span></a> +</span><span id="Func.from_arg_list-3047"><a href="#Func.from_arg_list-3047"><span class="linenos">3047</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="o">**</span><span class="n">args_dict</span><span class="p">)</span> </span></pre></div> @@ -27338,15 +28220,15 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Func.sql_names"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func.sql_names-2991"><a href="#Func.sql_names-2991"><span class="linenos">2991</span></a> <span class="nd">@classmethod</span> -</span><span id="Func.sql_names-2992"><a href="#Func.sql_names-2992"><span class="linenos">2992</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func.sql_names-2993"><a href="#Func.sql_names-2993"><span class="linenos">2993</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> -</span><span id="Func.sql_names-2994"><a href="#Func.sql_names-2994"><span class="linenos">2994</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> -</span><span id="Func.sql_names-2995"><a href="#Func.sql_names-2995"><span class="linenos">2995</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> -</span><span id="Func.sql_names-2996"><a href="#Func.sql_names-2996"><span class="linenos">2996</span></a> <span class="p">)</span> -</span><span id="Func.sql_names-2997"><a href="#Func.sql_names-2997"><span class="linenos">2997</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> -</span><span id="Func.sql_names-2998"><a href="#Func.sql_names-2998"><span class="linenos">2998</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> -</span><span id="Func.sql_names-2999"><a href="#Func.sql_names-2999"><span class="linenos">2999</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func.sql_names-3049"><a href="#Func.sql_names-3049"><span class="linenos">3049</span></a> <span class="nd">@classmethod</span> +</span><span id="Func.sql_names-3050"><a href="#Func.sql_names-3050"><span class="linenos">3050</span></a> <span class="k">def</span> <span class="nf">sql_names</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func.sql_names-3051"><a href="#Func.sql_names-3051"><span class="linenos">3051</span></a> <span class="k">if</span> <span class="bp">cls</span> <span class="ow">is</span> <span class="n">Func</span><span class="p">:</span> +</span><span id="Func.sql_names-3052"><a href="#Func.sql_names-3052"><span class="linenos">3052</span></a> <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span> +</span><span id="Func.sql_names-3053"><a href="#Func.sql_names-3053"><span class="linenos">3053</span></a> <span class="s2">"SQL name is only supported by concrete function implementations"</span> +</span><span id="Func.sql_names-3054"><a href="#Func.sql_names-3054"><span class="linenos">3054</span></a> <span class="p">)</span> +</span><span id="Func.sql_names-3055"><a href="#Func.sql_names-3055"><span class="linenos">3055</span></a> <span class="k">if</span> <span class="s2">"_sql_names"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">:</span> +</span><span id="Func.sql_names-3056"><a href="#Func.sql_names-3056"><span class="linenos">3056</span></a> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">camel_to_snake_case</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)]</span> +</span><span id="Func.sql_names-3057"><a href="#Func.sql_names-3057"><span class="linenos">3057</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_sql_names</span> </span></pre></div> @@ -27365,9 +28247,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Func.sql_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func.sql_name-3001"><a href="#Func.sql_name-3001"><span class="linenos">3001</span></a> <span class="nd">@classmethod</span> -</span><span id="Func.sql_name-3002"><a href="#Func.sql_name-3002"><span class="linenos">3002</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func.sql_name-3003"><a href="#Func.sql_name-3003"><span class="linenos">3003</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func.sql_name-3059"><a href="#Func.sql_name-3059"><span class="linenos">3059</span></a> <span class="nd">@classmethod</span> +</span><span id="Func.sql_name-3060"><a href="#Func.sql_name-3060"><span class="linenos">3060</span></a> <span class="k">def</span> <span class="nf">sql_name</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func.sql_name-3061"><a href="#Func.sql_name-3061"><span class="linenos">3061</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span> </span></pre></div> @@ -27386,9 +28268,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Func.default_parser_mappings"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Func.default_parser_mappings-3005"><a href="#Func.default_parser_mappings-3005"><span class="linenos">3005</span></a> <span class="nd">@classmethod</span> -</span><span id="Func.default_parser_mappings-3006"><a href="#Func.default_parser_mappings-3006"><span class="linenos">3006</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> -</span><span id="Func.default_parser_mappings-3007"><a href="#Func.default_parser_mappings-3007"><span class="linenos">3007</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Func.default_parser_mappings-3063"><a href="#Func.default_parser_mappings-3063"><span class="linenos">3063</span></a> <span class="nd">@classmethod</span> +</span><span id="Func.default_parser_mappings-3064"><a href="#Func.default_parser_mappings-3064"><span class="linenos">3064</span></a> <span class="k">def</span> <span class="nf">default_parser_mappings</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span> +</span><span id="Func.default_parser_mappings-3065"><a href="#Func.default_parser_mappings-3065"><span class="linenos">3065</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">name</span><span class="p">:</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_arg_list</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">sql_names</span><span class="p">()}</span> </span></pre></div> @@ -27455,8 +28337,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#AggFunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AggFunc-3010"><a href="#AggFunc-3010"><span class="linenos">3010</span></a><span class="k">class</span> <span class="nc">AggFunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="AggFunc-3011"><a href="#AggFunc-3011"><span class="linenos">3011</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AggFunc-3068"><a href="#AggFunc-3068"><span class="linenos">3068</span></a><span class="k">class</span> <span class="nc">AggFunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="AggFunc-3069"><a href="#AggFunc-3069"><span class="linenos">3069</span></a> <span class="k">pass</span> </span></pre></div> @@ -27529,8 +28411,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Abs"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Abs-3014"><a href="#Abs-3014"><span class="linenos">3014</span></a><span class="k">class</span> <span class="nc">Abs</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Abs-3015"><a href="#Abs-3015"><span class="linenos">3015</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Abs-3072"><a href="#Abs-3072"><span class="linenos">3072</span></a><span class="k">class</span> <span class="nc">Abs</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Abs-3073"><a href="#Abs-3073"><span class="linenos">3073</span></a> <span class="k">pass</span> </span></pre></div> @@ -27603,9 +28485,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Anonymous"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Anonymous-3018"><a href="#Anonymous-3018"><span class="linenos">3018</span></a><span class="k">class</span> <span class="nc">Anonymous</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Anonymous-3019"><a href="#Anonymous-3019"><span class="linenos">3019</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Anonymous-3020"><a href="#Anonymous-3020"><span class="linenos">3020</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Anonymous-3076"><a href="#Anonymous-3076"><span class="linenos">3076</span></a><span class="k">class</span> <span class="nc">Anonymous</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Anonymous-3077"><a href="#Anonymous-3077"><span class="linenos">3077</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Anonymous-3078"><a href="#Anonymous-3078"><span class="linenos">3078</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -27678,8 +28560,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ApproxDistinct"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxDistinct-3023"><a href="#ApproxDistinct-3023"><span class="linenos">3023</span></a><span class="k">class</span> <span class="nc">ApproxDistinct</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ApproxDistinct-3024"><a href="#ApproxDistinct-3024"><span class="linenos">3024</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxDistinct-3081"><a href="#ApproxDistinct-3081"><span class="linenos">3081</span></a><span class="k">class</span> <span class="nc">ApproxDistinct</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ApproxDistinct-3082"><a href="#ApproxDistinct-3082"><span class="linenos">3082</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -27752,9 +28634,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Array"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Array-3027"><a href="#Array-3027"><span class="linenos">3027</span></a><span class="k">class</span> <span class="nc">Array</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Array-3028"><a href="#Array-3028"><span class="linenos">3028</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Array-3029"><a href="#Array-3029"><span class="linenos">3029</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Array-3085"><a href="#Array-3085"><span class="linenos">3085</span></a><span class="k">class</span> <span class="nc">Array</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Array-3086"><a href="#Array-3086"><span class="linenos">3086</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Array-3087"><a href="#Array-3087"><span class="linenos">3087</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -27827,8 +28709,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#GenerateSeries"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GenerateSeries-3032"><a href="#GenerateSeries-3032"><span class="linenos">3032</span></a><span class="k">class</span> <span class="nc">GenerateSeries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="GenerateSeries-3033"><a href="#GenerateSeries-3033"><span class="linenos">3033</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GenerateSeries-3090"><a href="#GenerateSeries-3090"><span class="linenos">3090</span></a><span class="k">class</span> <span class="nc">GenerateSeries</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="GenerateSeries-3091"><a href="#GenerateSeries-3091"><span class="linenos">3091</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"start"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"step"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -27901,8 +28783,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAgg-3036"><a href="#ArrayAgg-3036"><span class="linenos">3036</span></a><span class="k">class</span> <span class="nc">ArrayAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ArrayAgg-3037"><a href="#ArrayAgg-3037"><span class="linenos">3037</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAgg-3094"><a href="#ArrayAgg-3094"><span class="linenos">3094</span></a><span class="k">class</span> <span class="nc">ArrayAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ArrayAgg-3095"><a href="#ArrayAgg-3095"><span class="linenos">3095</span></a> <span class="k">pass</span> </span></pre></div> @@ -27975,8 +28857,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayAll"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAll-3040"><a href="#ArrayAll-3040"><span class="linenos">3040</span></a><span class="k">class</span> <span class="nc">ArrayAll</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayAll-3041"><a href="#ArrayAll-3041"><span class="linenos">3041</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAll-3098"><a href="#ArrayAll-3098"><span class="linenos">3098</span></a><span class="k">class</span> <span class="nc">ArrayAll</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayAll-3099"><a href="#ArrayAll-3099"><span class="linenos">3099</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -28049,8 +28931,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayAny"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAny-3044"><a href="#ArrayAny-3044"><span class="linenos">3044</span></a><span class="k">class</span> <span class="nc">ArrayAny</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayAny-3045"><a href="#ArrayAny-3045"><span class="linenos">3045</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayAny-3102"><a href="#ArrayAny-3102"><span class="linenos">3102</span></a><span class="k">class</span> <span class="nc">ArrayAny</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayAny-3103"><a href="#ArrayAny-3103"><span class="linenos">3103</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -28123,9 +29005,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayConcat"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayConcat-3048"><a href="#ArrayConcat-3048"><span class="linenos">3048</span></a><span class="k">class</span> <span class="nc">ArrayConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayConcat-3049"><a href="#ArrayConcat-3049"><span class="linenos">3049</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="ArrayConcat-3050"><a href="#ArrayConcat-3050"><span class="linenos">3050</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayConcat-3106"><a href="#ArrayConcat-3106"><span class="linenos">3106</span></a><span class="k">class</span> <span class="nc">ArrayConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayConcat-3107"><a href="#ArrayConcat-3107"><span class="linenos">3107</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="ArrayConcat-3108"><a href="#ArrayConcat-3108"><span class="linenos">3108</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -28198,8 +29080,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayContains"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayContains-3053"><a href="#ArrayContains-3053"><span class="linenos">3053</span></a><span class="k">class</span> <span class="nc">ArrayContains</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayContains-3054"><a href="#ArrayContains-3054"><span class="linenos">3054</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayContains-3111"><a href="#ArrayContains-3111"><span class="linenos">3111</span></a><span class="k">class</span> <span class="nc">ArrayContains</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayContains-3112"><a href="#ArrayContains-3112"><span class="linenos">3112</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -28272,9 +29154,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayFilter"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayFilter-3057"><a href="#ArrayFilter-3057"><span class="linenos">3057</span></a><span class="k">class</span> <span class="nc">ArrayFilter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArrayFilter-3058"><a href="#ArrayFilter-3058"><span class="linenos">3058</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="ArrayFilter-3059"><a href="#ArrayFilter-3059"><span class="linenos">3059</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"FILTER"</span><span class="p">,</span> <span class="s2">"ARRAY_FILTER"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayFilter-3115"><a href="#ArrayFilter-3115"><span class="linenos">3115</span></a><span class="k">class</span> <span class="nc">ArrayFilter</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArrayFilter-3116"><a href="#ArrayFilter-3116"><span class="linenos">3116</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="ArrayFilter-3117"><a href="#ArrayFilter-3117"><span class="linenos">3117</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"FILTER"</span><span class="p">,</span> <span class="s2">"ARRAY_FILTER"</span><span class="p">]</span> </span></pre></div> @@ -28347,8 +29229,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArraySize"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySize-3062"><a href="#ArraySize-3062"><span class="linenos">3062</span></a><span class="k">class</span> <span class="nc">ArraySize</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArraySize-3063"><a href="#ArraySize-3063"><span class="linenos">3063</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySize-3120"><a href="#ArraySize-3120"><span class="linenos">3120</span></a><span class="k">class</span> <span class="nc">ArraySize</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArraySize-3121"><a href="#ArraySize-3121"><span class="linenos">3121</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -28421,8 +29303,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArraySort"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySort-3066"><a href="#ArraySort-3066"><span class="linenos">3066</span></a><span class="k">class</span> <span class="nc">ArraySort</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArraySort-3067"><a href="#ArraySort-3067"><span class="linenos">3067</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySort-3124"><a href="#ArraySort-3124"><span class="linenos">3124</span></a><span class="k">class</span> <span class="nc">ArraySort</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArraySort-3125"><a href="#ArraySort-3125"><span class="linenos">3125</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -28495,8 +29377,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArraySum"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySum-3070"><a href="#ArraySum-3070"><span class="linenos">3070</span></a><span class="k">class</span> <span class="nc">ArraySum</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ArraySum-3071"><a href="#ArraySum-3071"><span class="linenos">3071</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArraySum-3128"><a href="#ArraySum-3128"><span class="linenos">3128</span></a><span class="k">class</span> <span class="nc">ArraySum</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ArraySum-3129"><a href="#ArraySum-3129"><span class="linenos">3129</span></a> <span class="k">pass</span> </span></pre></div> @@ -28569,8 +29451,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ArrayUnionAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayUnionAgg-3074"><a href="#ArrayUnionAgg-3074"><span class="linenos">3074</span></a><span class="k">class</span> <span class="nc">ArrayUnionAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="ArrayUnionAgg-3075"><a href="#ArrayUnionAgg-3075"><span class="linenos">3075</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ArrayUnionAgg-3132"><a href="#ArrayUnionAgg-3132"><span class="linenos">3132</span></a><span class="k">class</span> <span class="nc">ArrayUnionAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="ArrayUnionAgg-3133"><a href="#ArrayUnionAgg-3133"><span class="linenos">3133</span></a> <span class="k">pass</span> </span></pre></div> @@ -28643,8 +29525,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Avg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Avg-3078"><a href="#Avg-3078"><span class="linenos">3078</span></a><span class="k">class</span> <span class="nc">Avg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Avg-3079"><a href="#Avg-3079"><span class="linenos">3079</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Avg-3136"><a href="#Avg-3136"><span class="linenos">3136</span></a><span class="k">class</span> <span class="nc">Avg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Avg-3137"><a href="#Avg-3137"><span class="linenos">3137</span></a> <span class="k">pass</span> </span></pre></div> @@ -28717,8 +29599,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#AnyValue"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="AnyValue-3082"><a href="#AnyValue-3082"><span class="linenos">3082</span></a><span class="k">class</span> <span class="nc">AnyValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="AnyValue-3083"><a href="#AnyValue-3083"><span class="linenos">3083</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="AnyValue-3140"><a href="#AnyValue-3140"><span class="linenos">3140</span></a><span class="k">class</span> <span class="nc">AnyValue</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="AnyValue-3141"><a href="#AnyValue-3141"><span class="linenos">3141</span></a> <span class="k">pass</span> </span></pre></div> @@ -28791,8 +29673,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Case"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Case-3086"><a href="#Case-3086"><span class="linenos">3086</span></a><span class="k">class</span> <span class="nc">Case</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Case-3087"><a href="#Case-3087"><span class="linenos">3087</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"ifs"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Case-3144"><a href="#Case-3144"><span class="linenos">3144</span></a><span class="k">class</span> <span class="nc">Case</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Case-3145"><a href="#Case-3145"><span class="linenos">3145</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"ifs"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"default"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -28865,23 +29747,23 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Cast"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cast-3090"><a href="#Cast-3090"><span class="linenos">3090</span></a><span class="k">class</span> <span class="nc">Cast</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Cast-3091"><a href="#Cast-3091"><span class="linenos">3091</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Cast-3092"><a href="#Cast-3092"><span class="linenos">3092</span></a> -</span><span id="Cast-3093"><a href="#Cast-3093"><span class="linenos">3093</span></a> <span class="nd">@property</span> -</span><span id="Cast-3094"><a href="#Cast-3094"><span class="linenos">3094</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Cast-3095"><a href="#Cast-3095"><span class="linenos">3095</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> -</span><span id="Cast-3096"><a href="#Cast-3096"><span class="linenos">3096</span></a> -</span><span id="Cast-3097"><a href="#Cast-3097"><span class="linenos">3097</span></a> <span class="nd">@property</span> -</span><span id="Cast-3098"><a href="#Cast-3098"><span class="linenos">3098</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Cast-3099"><a href="#Cast-3099"><span class="linenos">3099</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> -</span><span id="Cast-3100"><a href="#Cast-3100"><span class="linenos">3100</span></a> -</span><span id="Cast-3101"><a href="#Cast-3101"><span class="linenos">3101</span></a> <span class="nd">@property</span> -</span><span id="Cast-3102"><a href="#Cast-3102"><span class="linenos">3102</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Cast-3103"><a href="#Cast-3103"><span class="linenos">3103</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> -</span><span id="Cast-3104"><a href="#Cast-3104"><span class="linenos">3104</span></a> -</span><span id="Cast-3105"><a href="#Cast-3105"><span class="linenos">3105</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Cast-3106"><a href="#Cast-3106"><span class="linenos">3106</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cast-3148"><a href="#Cast-3148"><span class="linenos">3148</span></a><span class="k">class</span> <span class="nc">Cast</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Cast-3149"><a href="#Cast-3149"><span class="linenos">3149</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Cast-3150"><a href="#Cast-3150"><span class="linenos">3150</span></a> +</span><span id="Cast-3151"><a href="#Cast-3151"><span class="linenos">3151</span></a> <span class="nd">@property</span> +</span><span id="Cast-3152"><a href="#Cast-3152"><span class="linenos">3152</span></a> <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Cast-3153"><a href="#Cast-3153"><span class="linenos">3153</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">name</span> +</span><span id="Cast-3154"><a href="#Cast-3154"><span class="linenos">3154</span></a> +</span><span id="Cast-3155"><a href="#Cast-3155"><span class="linenos">3155</span></a> <span class="nd">@property</span> +</span><span id="Cast-3156"><a href="#Cast-3156"><span class="linenos">3156</span></a> <span class="k">def</span> <span class="nf">to</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Cast-3157"><a href="#Cast-3157"><span class="linenos">3157</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"to"</span><span class="p">]</span> +</span><span id="Cast-3158"><a href="#Cast-3158"><span class="linenos">3158</span></a> +</span><span id="Cast-3159"><a href="#Cast-3159"><span class="linenos">3159</span></a> <span class="nd">@property</span> +</span><span id="Cast-3160"><a href="#Cast-3160"><span class="linenos">3160</span></a> <span class="k">def</span> <span class="nf">output_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Cast-3161"><a href="#Cast-3161"><span class="linenos">3161</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> +</span><span id="Cast-3162"><a href="#Cast-3162"><span class="linenos">3162</span></a> +</span><span id="Cast-3163"><a href="#Cast-3163"><span class="linenos">3163</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Cast-3164"><a href="#Cast-3164"><span class="linenos">3164</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> </span></pre></div> @@ -28928,8 +29810,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Cast.is_type"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.is_type-3105"><a href="#Cast.is_type-3105"><span class="linenos">3105</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Cast.is_type-3106"><a href="#Cast.is_type-3106"><span class="linenos">3106</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Cast.is_type-3163"><a href="#Cast.is_type-3163"><span class="linenos">3163</span></a> <span class="k">def</span> <span class="nf">is_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dtype</span><span class="p">:</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Cast.is_type-3164"><a href="#Cast.is_type-3164"><span class="linenos">3164</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">to</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="n">dtype</span><span class="p">)</span> </span></pre></div> @@ -29002,8 +29884,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Collate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Collate-3109"><a href="#Collate-3109"><span class="linenos">3109</span></a><span class="k">class</span> <span class="nc">Collate</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="Collate-3110"><a href="#Collate-3110"><span class="linenos">3110</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Collate-3167"><a href="#Collate-3167"><span class="linenos">3167</span></a><span class="k">class</span> <span class="nc">Collate</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="Collate-3168"><a href="#Collate-3168"><span class="linenos">3168</span></a> <span class="k">pass</span> </span></pre></div> @@ -29063,8 +29945,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#TryCast"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TryCast-3113"><a href="#TryCast-3113"><span class="linenos">3113</span></a><span class="k">class</span> <span class="nc">TryCast</span><span class="p">(</span><span class="n">Cast</span><span class="p">):</span> -</span><span id="TryCast-3114"><a href="#TryCast-3114"><span class="linenos">3114</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TryCast-3171"><a href="#TryCast-3171"><span class="linenos">3171</span></a><span class="k">class</span> <span class="nc">TryCast</span><span class="p">(</span><span class="n">Cast</span><span class="p">):</span> +</span><span id="TryCast-3172"><a href="#TryCast-3172"><span class="linenos">3172</span></a> <span class="k">pass</span> </span></pre></div> @@ -29141,9 +30023,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Ceil"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Ceil-3117"><a href="#Ceil-3117"><span class="linenos">3117</span></a><span class="k">class</span> <span class="nc">Ceil</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Ceil-3118"><a href="#Ceil-3118"><span class="linenos">3118</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Ceil-3119"><a href="#Ceil-3119"><span class="linenos">3119</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CEIL"</span><span class="p">,</span> <span class="s2">"CEILING"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Ceil-3175"><a href="#Ceil-3175"><span class="linenos">3175</span></a><span class="k">class</span> <span class="nc">Ceil</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Ceil-3176"><a href="#Ceil-3176"><span class="linenos">3176</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Ceil-3177"><a href="#Ceil-3177"><span class="linenos">3177</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CEIL"</span><span class="p">,</span> <span class="s2">"CEILING"</span><span class="p">]</span> </span></pre></div> @@ -29216,9 +30098,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Coalesce"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Coalesce-3122"><a href="#Coalesce-3122"><span class="linenos">3122</span></a><span class="k">class</span> <span class="nc">Coalesce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Coalesce-3123"><a href="#Coalesce-3123"><span class="linenos">3123</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Coalesce-3124"><a href="#Coalesce-3124"><span class="linenos">3124</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Coalesce-3180"><a href="#Coalesce-3180"><span class="linenos">3180</span></a><span class="k">class</span> <span class="nc">Coalesce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Coalesce-3181"><a href="#Coalesce-3181"><span class="linenos">3181</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Coalesce-3182"><a href="#Coalesce-3182"><span class="linenos">3182</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -29291,9 +30173,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Concat"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Concat-3127"><a href="#Concat-3127"><span class="linenos">3127</span></a><span class="k">class</span> <span class="nc">Concat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Concat-3128"><a href="#Concat-3128"><span class="linenos">3128</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Concat-3129"><a href="#Concat-3129"><span class="linenos">3129</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Concat-3185"><a href="#Concat-3185"><span class="linenos">3185</span></a><span class="k">class</span> <span class="nc">Concat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Concat-3186"><a href="#Concat-3186"><span class="linenos">3186</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Concat-3187"><a href="#Concat-3187"><span class="linenos">3187</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -29366,8 +30248,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#ConcatWs"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ConcatWs-3132"><a href="#ConcatWs-3132"><span class="linenos">3132</span></a><span class="k">class</span> <span class="nc">ConcatWs</span><span class="p">(</span><span class="n">Concat</span><span class="p">):</span> -</span><span id="ConcatWs-3133"><a href="#ConcatWs-3133"><span class="linenos">3133</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CONCAT_WS"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ConcatWs-3190"><a href="#ConcatWs-3190"><span class="linenos">3190</span></a><span class="k">class</span> <span class="nc">ConcatWs</span><span class="p">(</span><span class="n">Concat</span><span class="p">):</span> +</span><span id="ConcatWs-3191"><a href="#ConcatWs-3191"><span class="linenos">3191</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"CONCAT_WS"</span><span class="p">]</span> </span></pre></div> @@ -29440,8 +30322,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Count"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Count-3136"><a href="#Count-3136"><span class="linenos">3136</span></a><span class="k">class</span> <span class="nc">Count</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Count-3137"><a href="#Count-3137"><span class="linenos">3137</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Count-3194"><a href="#Count-3194"><span class="linenos">3194</span></a><span class="k">class</span> <span class="nc">Count</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Count-3195"><a href="#Count-3195"><span class="linenos">3195</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -29514,8 +30396,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#CurrentDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentDate-3140"><a href="#CurrentDate-3140"><span class="linenos">3140</span></a><span class="k">class</span> <span class="nc">CurrentDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CurrentDate-3141"><a href="#CurrentDate-3141"><span class="linenos">3141</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentDate-3198"><a href="#CurrentDate-3198"><span class="linenos">3198</span></a><span class="k">class</span> <span class="nc">CurrentDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CurrentDate-3199"><a href="#CurrentDate-3199"><span class="linenos">3199</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -29588,8 +30470,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#CurrentDatetime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentDatetime-3144"><a href="#CurrentDatetime-3144"><span class="linenos">3144</span></a><span class="k">class</span> <span class="nc">CurrentDatetime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CurrentDatetime-3145"><a href="#CurrentDatetime-3145"><span class="linenos">3145</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentDatetime-3202"><a href="#CurrentDatetime-3202"><span class="linenos">3202</span></a><span class="k">class</span> <span class="nc">CurrentDatetime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CurrentDatetime-3203"><a href="#CurrentDatetime-3203"><span class="linenos">3203</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -29662,8 +30544,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#CurrentTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentTime-3148"><a href="#CurrentTime-3148"><span class="linenos">3148</span></a><span class="k">class</span> <span class="nc">CurrentTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CurrentTime-3149"><a href="#CurrentTime-3149"><span class="linenos">3149</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentTime-3206"><a href="#CurrentTime-3206"><span class="linenos">3206</span></a><span class="k">class</span> <span class="nc">CurrentTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CurrentTime-3207"><a href="#CurrentTime-3207"><span class="linenos">3207</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -29736,8 +30618,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#CurrentTimestamp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentTimestamp-3152"><a href="#CurrentTimestamp-3152"><span class="linenos">3152</span></a><span class="k">class</span> <span class="nc">CurrentTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="CurrentTimestamp-3153"><a href="#CurrentTimestamp-3153"><span class="linenos">3153</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="CurrentTimestamp-3210"><a href="#CurrentTimestamp-3210"><span class="linenos">3210</span></a><span class="k">class</span> <span class="nc">CurrentTimestamp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="CurrentTimestamp-3211"><a href="#CurrentTimestamp-3211"><span class="linenos">3211</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -29810,8 +30692,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DateAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateAdd-3156"><a href="#DateAdd-3156"><span class="linenos">3156</span></a><span class="k">class</span> <span class="nc">DateAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DateAdd-3157"><a href="#DateAdd-3157"><span class="linenos">3157</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateAdd-3214"><a href="#DateAdd-3214"><span class="linenos">3214</span></a><span class="k">class</span> <span class="nc">DateAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DateAdd-3215"><a href="#DateAdd-3215"><span class="linenos">3215</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -29887,8 +30769,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DateSub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateSub-3160"><a href="#DateSub-3160"><span class="linenos">3160</span></a><span class="k">class</span> <span class="nc">DateSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DateSub-3161"><a href="#DateSub-3161"><span class="linenos">3161</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateSub-3218"><a href="#DateSub-3218"><span class="linenos">3218</span></a><span class="k">class</span> <span class="nc">DateSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DateSub-3219"><a href="#DateSub-3219"><span class="linenos">3219</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -29964,8 +30846,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DateDiff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateDiff-3164"><a href="#DateDiff-3164"><span class="linenos">3164</span></a><span class="k">class</span> <span class="nc">DateDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DateDiff-3165"><a href="#DateDiff-3165"><span class="linenos">3165</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateDiff-3222"><a href="#DateDiff-3222"><span class="linenos">3222</span></a><span class="k">class</span> <span class="nc">DateDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DateDiff-3223"><a href="#DateDiff-3223"><span class="linenos">3223</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -30041,8 +30923,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DateTrunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateTrunc-3168"><a href="#DateTrunc-3168"><span class="linenos">3168</span></a><span class="k">class</span> <span class="nc">DateTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateTrunc-3169"><a href="#DateTrunc-3169"><span class="linenos">3169</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateTrunc-3226"><a href="#DateTrunc-3226"><span class="linenos">3226</span></a><span class="k">class</span> <span class="nc">DateTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateTrunc-3227"><a href="#DateTrunc-3227"><span class="linenos">3227</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -30115,8 +30997,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DatetimeAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeAdd-3172"><a href="#DatetimeAdd-3172"><span class="linenos">3172</span></a><span class="k">class</span> <span class="nc">DatetimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DatetimeAdd-3173"><a href="#DatetimeAdd-3173"><span class="linenos">3173</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeAdd-3230"><a href="#DatetimeAdd-3230"><span class="linenos">3230</span></a><span class="k">class</span> <span class="nc">DatetimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DatetimeAdd-3231"><a href="#DatetimeAdd-3231"><span class="linenos">3231</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -30192,8 +31074,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DatetimeSub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeSub-3176"><a href="#DatetimeSub-3176"><span class="linenos">3176</span></a><span class="k">class</span> <span class="nc">DatetimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DatetimeSub-3177"><a href="#DatetimeSub-3177"><span class="linenos">3177</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeSub-3234"><a href="#DatetimeSub-3234"><span class="linenos">3234</span></a><span class="k">class</span> <span class="nc">DatetimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DatetimeSub-3235"><a href="#DatetimeSub-3235"><span class="linenos">3235</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -30269,8 +31151,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DatetimeDiff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeDiff-3180"><a href="#DatetimeDiff-3180"><span class="linenos">3180</span></a><span class="k">class</span> <span class="nc">DatetimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DatetimeDiff-3181"><a href="#DatetimeDiff-3181"><span class="linenos">3181</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeDiff-3238"><a href="#DatetimeDiff-3238"><span class="linenos">3238</span></a><span class="k">class</span> <span class="nc">DatetimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DatetimeDiff-3239"><a href="#DatetimeDiff-3239"><span class="linenos">3239</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -30346,8 +31228,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DatetimeTrunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeTrunc-3184"><a href="#DatetimeTrunc-3184"><span class="linenos">3184</span></a><span class="k">class</span> <span class="nc">DatetimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="DatetimeTrunc-3185"><a href="#DatetimeTrunc-3185"><span class="linenos">3185</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DatetimeTrunc-3242"><a href="#DatetimeTrunc-3242"><span class="linenos">3242</span></a><span class="k">class</span> <span class="nc">DatetimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="DatetimeTrunc-3243"><a href="#DatetimeTrunc-3243"><span class="linenos">3243</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -30423,8 +31305,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DayOfWeek"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfWeek-3188"><a href="#DayOfWeek-3188"><span class="linenos">3188</span></a><span class="k">class</span> <span class="nc">DayOfWeek</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DayOfWeek-3189"><a href="#DayOfWeek-3189"><span class="linenos">3189</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_WEEK"</span><span class="p">,</span> <span class="s2">"DAYOFWEEK"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfWeek-3246"><a href="#DayOfWeek-3246"><span class="linenos">3246</span></a><span class="k">class</span> <span class="nc">DayOfWeek</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DayOfWeek-3247"><a href="#DayOfWeek-3247"><span class="linenos">3247</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_WEEK"</span><span class="p">,</span> <span class="s2">"DAYOFWEEK"</span><span class="p">]</span> </span></pre></div> @@ -30497,8 +31379,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DayOfMonth"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfMonth-3192"><a href="#DayOfMonth-3192"><span class="linenos">3192</span></a><span class="k">class</span> <span class="nc">DayOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DayOfMonth-3193"><a href="#DayOfMonth-3193"><span class="linenos">3193</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_MONTH"</span><span class="p">,</span> <span class="s2">"DAYOFMONTH"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfMonth-3250"><a href="#DayOfMonth-3250"><span class="linenos">3250</span></a><span class="k">class</span> <span class="nc">DayOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DayOfMonth-3251"><a href="#DayOfMonth-3251"><span class="linenos">3251</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_MONTH"</span><span class="p">,</span> <span class="s2">"DAYOFMONTH"</span><span class="p">]</span> </span></pre></div> @@ -30571,8 +31453,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DayOfYear"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfYear-3196"><a href="#DayOfYear-3196"><span class="linenos">3196</span></a><span class="k">class</span> <span class="nc">DayOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DayOfYear-3197"><a href="#DayOfYear-3197"><span class="linenos">3197</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_YEAR"</span><span class="p">,</span> <span class="s2">"DAYOFYEAR"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DayOfYear-3254"><a href="#DayOfYear-3254"><span class="linenos">3254</span></a><span class="k">class</span> <span class="nc">DayOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DayOfYear-3255"><a href="#DayOfYear-3255"><span class="linenos">3255</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DAY_OF_YEAR"</span><span class="p">,</span> <span class="s2">"DAYOFYEAR"</span><span class="p">]</span> </span></pre></div> @@ -30645,8 +31527,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#WeekOfYear"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="WeekOfYear-3200"><a href="#WeekOfYear-3200"><span class="linenos">3200</span></a><span class="k">class</span> <span class="nc">WeekOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="WeekOfYear-3201"><a href="#WeekOfYear-3201"><span class="linenos">3201</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"WEEK_OF_YEAR"</span><span class="p">,</span> <span class="s2">"WEEKOFYEAR"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="WeekOfYear-3258"><a href="#WeekOfYear-3258"><span class="linenos">3258</span></a><span class="k">class</span> <span class="nc">WeekOfYear</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="WeekOfYear-3259"><a href="#WeekOfYear-3259"><span class="linenos">3259</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"WEEK_OF_YEAR"</span><span class="p">,</span> <span class="s2">"WEEKOFYEAR"</span><span class="p">]</span> </span></pre></div> @@ -30719,8 +31601,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#LastDateOfMonth"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LastDateOfMonth-3204"><a href="#LastDateOfMonth-3204"><span class="linenos">3204</span></a><span class="k">class</span> <span class="nc">LastDateOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="LastDateOfMonth-3205"><a href="#LastDateOfMonth-3205"><span class="linenos">3205</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LastDateOfMonth-3262"><a href="#LastDateOfMonth-3262"><span class="linenos">3262</span></a><span class="k">class</span> <span class="nc">LastDateOfMonth</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="LastDateOfMonth-3263"><a href="#LastDateOfMonth-3263"><span class="linenos">3263</span></a> <span class="k">pass</span> </span></pre></div> @@ -30793,8 +31675,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Extract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Extract-3208"><a href="#Extract-3208"><span class="linenos">3208</span></a><span class="k">class</span> <span class="nc">Extract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Extract-3209"><a href="#Extract-3209"><span class="linenos">3209</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Extract-3266"><a href="#Extract-3266"><span class="linenos">3266</span></a><span class="k">class</span> <span class="nc">Extract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Extract-3267"><a href="#Extract-3267"><span class="linenos">3267</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -30867,8 +31749,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#TimestampAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampAdd-3212"><a href="#TimestampAdd-3212"><span class="linenos">3212</span></a><span class="k">class</span> <span class="nc">TimestampAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimestampAdd-3213"><a href="#TimestampAdd-3213"><span class="linenos">3213</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampAdd-3270"><a href="#TimestampAdd-3270"><span class="linenos">3270</span></a><span class="k">class</span> <span class="nc">TimestampAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimestampAdd-3271"><a href="#TimestampAdd-3271"><span class="linenos">3271</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -30944,8 +31826,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#TimestampSub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampSub-3216"><a href="#TimestampSub-3216"><span class="linenos">3216</span></a><span class="k">class</span> <span class="nc">TimestampSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimestampSub-3217"><a href="#TimestampSub-3217"><span class="linenos">3217</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampSub-3274"><a href="#TimestampSub-3274"><span class="linenos">3274</span></a><span class="k">class</span> <span class="nc">TimestampSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimestampSub-3275"><a href="#TimestampSub-3275"><span class="linenos">3275</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -31021,8 +31903,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#TimestampDiff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampDiff-3220"><a href="#TimestampDiff-3220"><span class="linenos">3220</span></a><span class="k">class</span> <span class="nc">TimestampDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimestampDiff-3221"><a href="#TimestampDiff-3221"><span class="linenos">3221</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampDiff-3278"><a href="#TimestampDiff-3278"><span class="linenos">3278</span></a><span class="k">class</span> <span class="nc">TimestampDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimestampDiff-3279"><a href="#TimestampDiff-3279"><span class="linenos">3279</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -31098,8 +31980,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#TimestampTrunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampTrunc-3224"><a href="#TimestampTrunc-3224"><span class="linenos">3224</span></a><span class="k">class</span> <span class="nc">TimestampTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimestampTrunc-3225"><a href="#TimestampTrunc-3225"><span class="linenos">3225</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimestampTrunc-3282"><a href="#TimestampTrunc-3282"><span class="linenos">3282</span></a><span class="k">class</span> <span class="nc">TimestampTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimestampTrunc-3283"><a href="#TimestampTrunc-3283"><span class="linenos">3283</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -31175,8 +32057,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#TimeAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeAdd-3228"><a href="#TimeAdd-3228"><span class="linenos">3228</span></a><span class="k">class</span> <span class="nc">TimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimeAdd-3229"><a href="#TimeAdd-3229"><span class="linenos">3229</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeAdd-3286"><a href="#TimeAdd-3286"><span class="linenos">3286</span></a><span class="k">class</span> <span class="nc">TimeAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimeAdd-3287"><a href="#TimeAdd-3287"><span class="linenos">3287</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -31252,8 +32134,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#TimeSub"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeSub-3232"><a href="#TimeSub-3232"><span class="linenos">3232</span></a><span class="k">class</span> <span class="nc">TimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimeSub-3233"><a href="#TimeSub-3233"><span class="linenos">3233</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeSub-3290"><a href="#TimeSub-3290"><span class="linenos">3290</span></a><span class="k">class</span> <span class="nc">TimeSub</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimeSub-3291"><a href="#TimeSub-3291"><span class="linenos">3291</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -31329,8 +32211,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#TimeDiff"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeDiff-3236"><a href="#TimeDiff-3236"><span class="linenos">3236</span></a><span class="k">class</span> <span class="nc">TimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimeDiff-3237"><a href="#TimeDiff-3237"><span class="linenos">3237</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeDiff-3294"><a href="#TimeDiff-3294"><span class="linenos">3294</span></a><span class="k">class</span> <span class="nc">TimeDiff</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimeDiff-3295"><a href="#TimeDiff-3295"><span class="linenos">3295</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -31406,8 +32288,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#TimeTrunc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeTrunc-3240"><a href="#TimeTrunc-3240"><span class="linenos">3240</span></a><span class="k">class</span> <span class="nc">TimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TimeTrunc-3241"><a href="#TimeTrunc-3241"><span class="linenos">3241</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeTrunc-3298"><a href="#TimeTrunc-3298"><span class="linenos">3298</span></a><span class="k">class</span> <span class="nc">TimeTrunc</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TimeTrunc-3299"><a href="#TimeTrunc-3299"><span class="linenos">3299</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -31483,9 +32365,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DateFromParts"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateFromParts-3244"><a href="#DateFromParts-3244"><span class="linenos">3244</span></a><span class="k">class</span> <span class="nc">DateFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateFromParts-3245"><a href="#DateFromParts-3245"><span class="linenos">3245</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATEFROMPARTS"</span><span class="p">]</span> -</span><span id="DateFromParts-3246"><a href="#DateFromParts-3246"><span class="linenos">3246</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateFromParts-3302"><a href="#DateFromParts-3302"><span class="linenos">3302</span></a><span class="k">class</span> <span class="nc">DateFromParts</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateFromParts-3303"><a href="#DateFromParts-3303"><span class="linenos">3303</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"DATEFROMPARTS"</span><span class="p">]</span> +</span><span id="DateFromParts-3304"><a href="#DateFromParts-3304"><span class="linenos">3304</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"year"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"month"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"day"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -31558,8 +32440,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DateStrToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateStrToDate-3249"><a href="#DateStrToDate-3249"><span class="linenos">3249</span></a><span class="k">class</span> <span class="nc">DateStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateStrToDate-3250"><a href="#DateStrToDate-3250"><span class="linenos">3250</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateStrToDate-3307"><a href="#DateStrToDate-3307"><span class="linenos">3307</span></a><span class="k">class</span> <span class="nc">DateStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateStrToDate-3308"><a href="#DateStrToDate-3308"><span class="linenos">3308</span></a> <span class="k">pass</span> </span></pre></div> @@ -31632,8 +32514,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DateToDateStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateToDateStr-3253"><a href="#DateToDateStr-3253"><span class="linenos">3253</span></a><span class="k">class</span> <span class="nc">DateToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateToDateStr-3254"><a href="#DateToDateStr-3254"><span class="linenos">3254</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateToDateStr-3311"><a href="#DateToDateStr-3311"><span class="linenos">3311</span></a><span class="k">class</span> <span class="nc">DateToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateToDateStr-3312"><a href="#DateToDateStr-3312"><span class="linenos">3312</span></a> <span class="k">pass</span> </span></pre></div> @@ -31706,8 +32588,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DateToDi"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DateToDi-3257"><a href="#DateToDi-3257"><span class="linenos">3257</span></a><span class="k">class</span> <span class="nc">DateToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DateToDi-3258"><a href="#DateToDi-3258"><span class="linenos">3258</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DateToDi-3315"><a href="#DateToDi-3315"><span class="linenos">3315</span></a><span class="k">class</span> <span class="nc">DateToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DateToDi-3316"><a href="#DateToDi-3316"><span class="linenos">3316</span></a> <span class="k">pass</span> </span></pre></div> @@ -31780,8 +32662,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Day"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Day-3261"><a href="#Day-3261"><span class="linenos">3261</span></a><span class="k">class</span> <span class="nc">Day</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Day-3262"><a href="#Day-3262"><span class="linenos">3262</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Day-3319"><a href="#Day-3319"><span class="linenos">3319</span></a><span class="k">class</span> <span class="nc">Day</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Day-3320"><a href="#Day-3320"><span class="linenos">3320</span></a> <span class="k">pass</span> </span></pre></div> @@ -31854,8 +32736,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Decode"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Decode-3265"><a href="#Decode-3265"><span class="linenos">3265</span></a><span class="k">class</span> <span class="nc">Decode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Decode-3266"><a href="#Decode-3266"><span class="linenos">3266</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Decode-3323"><a href="#Decode-3323"><span class="linenos">3323</span></a><span class="k">class</span> <span class="nc">Decode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Decode-3324"><a href="#Decode-3324"><span class="linenos">3324</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -31928,8 +32810,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#DiToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="DiToDate-3269"><a href="#DiToDate-3269"><span class="linenos">3269</span></a><span class="k">class</span> <span class="nc">DiToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="DiToDate-3270"><a href="#DiToDate-3270"><span class="linenos">3270</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="DiToDate-3327"><a href="#DiToDate-3327"><span class="linenos">3327</span></a><span class="k">class</span> <span class="nc">DiToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="DiToDate-3328"><a href="#DiToDate-3328"><span class="linenos">3328</span></a> <span class="k">pass</span> </span></pre></div> @@ -32002,8 +32884,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Encode"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Encode-3273"><a href="#Encode-3273"><span class="linenos">3273</span></a><span class="k">class</span> <span class="nc">Encode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Encode-3274"><a href="#Encode-3274"><span class="linenos">3274</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Encode-3331"><a href="#Encode-3331"><span class="linenos">3331</span></a><span class="k">class</span> <span class="nc">Encode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Encode-3332"><a href="#Encode-3332"><span class="linenos">3332</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"charset"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -32076,8 +32958,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Exp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Exp-3277"><a href="#Exp-3277"><span class="linenos">3277</span></a><span class="k">class</span> <span class="nc">Exp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Exp-3278"><a href="#Exp-3278"><span class="linenos">3278</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Exp-3335"><a href="#Exp-3335"><span class="linenos">3335</span></a><span class="k">class</span> <span class="nc">Exp</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Exp-3336"><a href="#Exp-3336"><span class="linenos">3336</span></a> <span class="k">pass</span> </span></pre></div> @@ -32150,8 +33032,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Explode"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Explode-3281"><a href="#Explode-3281"><span class="linenos">3281</span></a><span class="k">class</span> <span class="nc">Explode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Explode-3282"><a href="#Explode-3282"><span class="linenos">3282</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Explode-3339"><a href="#Explode-3339"><span class="linenos">3339</span></a><span class="k">class</span> <span class="nc">Explode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Explode-3340"><a href="#Explode-3340"><span class="linenos">3340</span></a> <span class="k">pass</span> </span></pre></div> @@ -32224,8 +33106,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Floor"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Floor-3285"><a href="#Floor-3285"><span class="linenos">3285</span></a><span class="k">class</span> <span class="nc">Floor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Floor-3286"><a href="#Floor-3286"><span class="linenos">3286</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Floor-3343"><a href="#Floor-3343"><span class="linenos">3343</span></a><span class="k">class</span> <span class="nc">Floor</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Floor-3344"><a href="#Floor-3344"><span class="linenos">3344</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -32298,9 +33180,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Greatest"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Greatest-3289"><a href="#Greatest-3289"><span class="linenos">3289</span></a><span class="k">class</span> <span class="nc">Greatest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Greatest-3290"><a href="#Greatest-3290"><span class="linenos">3290</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Greatest-3291"><a href="#Greatest-3291"><span class="linenos">3291</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Greatest-3347"><a href="#Greatest-3347"><span class="linenos">3347</span></a><span class="k">class</span> <span class="nc">Greatest</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Greatest-3348"><a href="#Greatest-3348"><span class="linenos">3348</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Greatest-3349"><a href="#Greatest-3349"><span class="linenos">3349</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -32373,8 +33255,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#GroupConcat"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="GroupConcat-3294"><a href="#GroupConcat-3294"><span class="linenos">3294</span></a><span class="k">class</span> <span class="nc">GroupConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="GroupConcat-3295"><a href="#GroupConcat-3295"><span class="linenos">3295</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"separator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="GroupConcat-3352"><a href="#GroupConcat-3352"><span class="linenos">3352</span></a><span class="k">class</span> <span class="nc">GroupConcat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="GroupConcat-3353"><a href="#GroupConcat-3353"><span class="linenos">3353</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"separator"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -32447,8 +33329,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Hex"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Hex-3298"><a href="#Hex-3298"><span class="linenos">3298</span></a><span class="k">class</span> <span class="nc">Hex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Hex-3299"><a href="#Hex-3299"><span class="linenos">3299</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Hex-3356"><a href="#Hex-3356"><span class="linenos">3356</span></a><span class="k">class</span> <span class="nc">Hex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Hex-3357"><a href="#Hex-3357"><span class="linenos">3357</span></a> <span class="k">pass</span> </span></pre></div> @@ -32521,8 +33403,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#If"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="If-3302"><a href="#If-3302"><span class="linenos">3302</span></a><span class="k">class</span> <span class="nc">If</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="If-3303"><a href="#If-3303"><span class="linenos">3303</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="If-3360"><a href="#If-3360"><span class="linenos">3360</span></a><span class="k">class</span> <span class="nc">If</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="If-3361"><a href="#If-3361"><span class="linenos">3361</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -32595,9 +33477,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#IfNull"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="IfNull-3306"><a href="#IfNull-3306"><span class="linenos">3306</span></a><span class="k">class</span> <span class="nc">IfNull</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="IfNull-3307"><a href="#IfNull-3307"><span class="linenos">3307</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="IfNull-3308"><a href="#IfNull-3308"><span class="linenos">3308</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IFNULL"</span><span class="p">,</span> <span class="s2">"NVL"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="IfNull-3364"><a href="#IfNull-3364"><span class="linenos">3364</span></a><span class="k">class</span> <span class="nc">IfNull</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="IfNull-3365"><a href="#IfNull-3365"><span class="linenos">3365</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="IfNull-3366"><a href="#IfNull-3366"><span class="linenos">3366</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"IFNULL"</span><span class="p">,</span> <span class="s2">"NVL"</span><span class="p">]</span> </span></pre></div> @@ -32670,8 +33552,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Initcap"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Initcap-3311"><a href="#Initcap-3311"><span class="linenos">3311</span></a><span class="k">class</span> <span class="nc">Initcap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Initcap-3312"><a href="#Initcap-3312"><span class="linenos">3312</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Initcap-3369"><a href="#Initcap-3369"><span class="linenos">3369</span></a><span class="k">class</span> <span class="nc">Initcap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Initcap-3370"><a href="#Initcap-3370"><span class="linenos">3370</span></a> <span class="k">pass</span> </span></pre></div> @@ -32744,8 +33626,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#JSONBContains"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBContains-3315"><a href="#JSONBContains-3315"><span class="linenos">3315</span></a><span class="k">class</span> <span class="nc">JSONBContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> -</span><span id="JSONBContains-3316"><a href="#JSONBContains-3316"><span class="linenos">3316</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_CONTAINS"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBContains-3373"><a href="#JSONBContains-3373"><span class="linenos">3373</span></a><span class="k">class</span> <span class="nc">JSONBContains</span><span class="p">(</span><span class="n">Binary</span><span class="p">):</span> +</span><span id="JSONBContains-3374"><a href="#JSONBContains-3374"><span class="linenos">3374</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_CONTAINS"</span><span class="p">]</span> </span></pre></div> @@ -32805,8 +33687,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#JSONExtract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtract-3319"><a href="#JSONExtract-3319"><span class="linenos">3319</span></a><span class="k">class</span> <span class="nc">JSONExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="JSONExtract-3320"><a href="#JSONExtract-3320"><span class="linenos">3320</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtract-3377"><a href="#JSONExtract-3377"><span class="linenos">3377</span></a><span class="k">class</span> <span class="nc">JSONExtract</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="JSONExtract-3378"><a href="#JSONExtract-3378"><span class="linenos">3378</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT"</span><span class="p">]</span> </span></pre></div> @@ -32879,8 +33761,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#JSONExtractScalar"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtractScalar-3323"><a href="#JSONExtractScalar-3323"><span class="linenos">3323</span></a><span class="k">class</span> <span class="nc">JSONExtractScalar</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> -</span><span id="JSONExtractScalar-3324"><a href="#JSONExtractScalar-3324"><span class="linenos">3324</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT_SCALAR"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONExtractScalar-3381"><a href="#JSONExtractScalar-3381"><span class="linenos">3381</span></a><span class="k">class</span> <span class="nc">JSONExtractScalar</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> +</span><span id="JSONExtractScalar-3382"><a href="#JSONExtractScalar-3382"><span class="linenos">3382</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSON_EXTRACT_SCALAR"</span><span class="p">]</span> </span></pre></div> @@ -32953,8 +33835,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#JSONBExtract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBExtract-3327"><a href="#JSONBExtract-3327"><span class="linenos">3327</span></a><span class="k">class</span> <span class="nc">JSONBExtract</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> -</span><span id="JSONBExtract-3328"><a href="#JSONBExtract-3328"><span class="linenos">3328</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBExtract-3385"><a href="#JSONBExtract-3385"><span class="linenos">3385</span></a><span class="k">class</span> <span class="nc">JSONBExtract</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> +</span><span id="JSONBExtract-3386"><a href="#JSONBExtract-3386"><span class="linenos">3386</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT"</span><span class="p">]</span> </span></pre></div> @@ -33027,8 +33909,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#JSONBExtractScalar"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBExtractScalar-3331"><a href="#JSONBExtractScalar-3331"><span class="linenos">3331</span></a><span class="k">class</span> <span class="nc">JSONBExtractScalar</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> -</span><span id="JSONBExtractScalar-3332"><a href="#JSONBExtractScalar-3332"><span class="linenos">3332</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT_SCALAR"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="JSONBExtractScalar-3389"><a href="#JSONBExtractScalar-3389"><span class="linenos">3389</span></a><span class="k">class</span> <span class="nc">JSONBExtractScalar</span><span class="p">(</span><span class="n">JSONExtract</span><span class="p">):</span> +</span><span id="JSONBExtractScalar-3390"><a href="#JSONBExtractScalar-3390"><span class="linenos">3390</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"JSONB_EXTRACT_SCALAR"</span><span class="p">]</span> </span></pre></div> @@ -33101,9 +33983,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Least"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Least-3335"><a href="#Least-3335"><span class="linenos">3335</span></a><span class="k">class</span> <span class="nc">Least</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Least-3336"><a href="#Least-3336"><span class="linenos">3336</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="Least-3337"><a href="#Least-3337"><span class="linenos">3337</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Least-3393"><a href="#Least-3393"><span class="linenos">3393</span></a><span class="k">class</span> <span class="nc">Least</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Least-3394"><a href="#Least-3394"><span class="linenos">3394</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="Least-3395"><a href="#Least-3395"><span class="linenos">3395</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -33176,8 +34058,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Length"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Length-3340"><a href="#Length-3340"><span class="linenos">3340</span></a><span class="k">class</span> <span class="nc">Length</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Length-3341"><a href="#Length-3341"><span class="linenos">3341</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Length-3398"><a href="#Length-3398"><span class="linenos">3398</span></a><span class="k">class</span> <span class="nc">Length</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Length-3399"><a href="#Length-3399"><span class="linenos">3399</span></a> <span class="k">pass</span> </span></pre></div> @@ -33250,14 +34132,14 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Levenshtein"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Levenshtein-3344"><a href="#Levenshtein-3344"><span class="linenos">3344</span></a><span class="k">class</span> <span class="nc">Levenshtein</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Levenshtein-3345"><a href="#Levenshtein-3345"><span class="linenos">3345</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Levenshtein-3346"><a href="#Levenshtein-3346"><span class="linenos">3346</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Levenshtein-3347"><a href="#Levenshtein-3347"><span class="linenos">3347</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Levenshtein-3348"><a href="#Levenshtein-3348"><span class="linenos">3348</span></a> <span class="s2">"ins_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Levenshtein-3349"><a href="#Levenshtein-3349"><span class="linenos">3349</span></a> <span class="s2">"del_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Levenshtein-3350"><a href="#Levenshtein-3350"><span class="linenos">3350</span></a> <span class="s2">"sub_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Levenshtein-3351"><a href="#Levenshtein-3351"><span class="linenos">3351</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Levenshtein-3402"><a href="#Levenshtein-3402"><span class="linenos">3402</span></a><span class="k">class</span> <span class="nc">Levenshtein</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Levenshtein-3403"><a href="#Levenshtein-3403"><span class="linenos">3403</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Levenshtein-3404"><a href="#Levenshtein-3404"><span class="linenos">3404</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Levenshtein-3405"><a href="#Levenshtein-3405"><span class="linenos">3405</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Levenshtein-3406"><a href="#Levenshtein-3406"><span class="linenos">3406</span></a> <span class="s2">"ins_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Levenshtein-3407"><a href="#Levenshtein-3407"><span class="linenos">3407</span></a> <span class="s2">"del_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Levenshtein-3408"><a href="#Levenshtein-3408"><span class="linenos">3408</span></a> <span class="s2">"sub_cost"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Levenshtein-3409"><a href="#Levenshtein-3409"><span class="linenos">3409</span></a> <span class="p">}</span> </span></pre></div> @@ -33330,8 +34212,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Ln"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Ln-3354"><a href="#Ln-3354"><span class="linenos">3354</span></a><span class="k">class</span> <span class="nc">Ln</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Ln-3355"><a href="#Ln-3355"><span class="linenos">3355</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Ln-3412"><a href="#Ln-3412"><span class="linenos">3412</span></a><span class="k">class</span> <span class="nc">Ln</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Ln-3413"><a href="#Ln-3413"><span class="linenos">3413</span></a> <span class="k">pass</span> </span></pre></div> @@ -33404,8 +34286,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Log"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Log-3358"><a href="#Log-3358"><span class="linenos">3358</span></a><span class="k">class</span> <span class="nc">Log</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Log-3359"><a href="#Log-3359"><span class="linenos">3359</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Log-3416"><a href="#Log-3416"><span class="linenos">3416</span></a><span class="k">class</span> <span class="nc">Log</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Log-3417"><a href="#Log-3417"><span class="linenos">3417</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -33478,8 +34360,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Log2"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Log2-3362"><a href="#Log2-3362"><span class="linenos">3362</span></a><span class="k">class</span> <span class="nc">Log2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Log2-3363"><a href="#Log2-3363"><span class="linenos">3363</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Log2-3420"><a href="#Log2-3420"><span class="linenos">3420</span></a><span class="k">class</span> <span class="nc">Log2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Log2-3421"><a href="#Log2-3421"><span class="linenos">3421</span></a> <span class="k">pass</span> </span></pre></div> @@ -33552,8 +34434,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Log10"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Log10-3366"><a href="#Log10-3366"><span class="linenos">3366</span></a><span class="k">class</span> <span class="nc">Log10</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Log10-3367"><a href="#Log10-3367"><span class="linenos">3367</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Log10-3424"><a href="#Log10-3424"><span class="linenos">3424</span></a><span class="k">class</span> <span class="nc">Log10</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Log10-3425"><a href="#Log10-3425"><span class="linenos">3425</span></a> <span class="k">pass</span> </span></pre></div> @@ -33626,8 +34508,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#LogicalOr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="LogicalOr-3370"><a href="#LogicalOr-3370"><span class="linenos">3370</span></a><span class="k">class</span> <span class="nc">LogicalOr</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="LogicalOr-3371"><a href="#LogicalOr-3371"><span class="linenos">3371</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_OR"</span><span class="p">,</span> <span class="s2">"BOOL_OR"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="LogicalOr-3428"><a href="#LogicalOr-3428"><span class="linenos">3428</span></a><span class="k">class</span> <span class="nc">LogicalOr</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="LogicalOr-3429"><a href="#LogicalOr-3429"><span class="linenos">3429</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOGICAL_OR"</span><span class="p">,</span> <span class="s2">"BOOL_OR"</span><span class="p">]</span> </span></pre></div> @@ -33700,8 +34582,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Lower"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Lower-3374"><a href="#Lower-3374"><span class="linenos">3374</span></a><span class="k">class</span> <span class="nc">Lower</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Lower-3375"><a href="#Lower-3375"><span class="linenos">3375</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOWER"</span><span class="p">,</span> <span class="s2">"LCASE"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Lower-3432"><a href="#Lower-3432"><span class="linenos">3432</span></a><span class="k">class</span> <span class="nc">Lower</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Lower-3433"><a href="#Lower-3433"><span class="linenos">3433</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"LOWER"</span><span class="p">,</span> <span class="s2">"LCASE"</span><span class="p">]</span> </span></pre></div> @@ -33774,8 +34656,8 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Map"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Map-3378"><a href="#Map-3378"><span class="linenos">3378</span></a><span class="k">class</span> <span class="nc">Map</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Map-3379"><a href="#Map-3379"><span class="linenos">3379</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Map-3436"><a href="#Map-3436"><span class="linenos">3436</span></a><span class="k">class</span> <span class="nc">Map</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Map-3437"><a href="#Map-3437"><span class="linenos">3437</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -33848,9 +34730,9 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#VarMap"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="VarMap-3382"><a href="#VarMap-3382"><span class="linenos">3382</span></a><span class="k">class</span> <span class="nc">VarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="VarMap-3383"><a href="#VarMap-3383"><span class="linenos">3383</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="VarMap-3384"><a href="#VarMap-3384"><span class="linenos">3384</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="VarMap-3440"><a href="#VarMap-3440"><span class="linenos">3440</span></a><span class="k">class</span> <span class="nc">VarMap</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="VarMap-3441"><a href="#VarMap-3441"><span class="linenos">3441</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"keys"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"values"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="VarMap-3442"><a href="#VarMap-3442"><span class="linenos">3442</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -33923,14 +34805,14 @@ name is set to the expression's class name transformed to snake case.</li> </div> <a class="headerlink" href="#Matches"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Matches-3387"><a href="#Matches-3387"><span class="linenos">3387</span></a><span class="k">class</span> <span class="nc">Matches</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Matches-3388"><a href="#Matches-3388"><span class="linenos">3388</span></a><span class="w"> </span><span class="sd">"""Oracle/Snowflake decode.</span> -</span><span id="Matches-3389"><a href="#Matches-3389"><span class="linenos">3389</span></a><span class="sd"> https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm</span> -</span><span id="Matches-3390"><a href="#Matches-3390"><span class="linenos">3390</span></a><span class="sd"> Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</span> -</span><span id="Matches-3391"><a href="#Matches-3391"><span class="linenos">3391</span></a><span class="sd"> """</span> -</span><span id="Matches-3392"><a href="#Matches-3392"><span class="linenos">3392</span></a> -</span><span id="Matches-3393"><a href="#Matches-3393"><span class="linenos">3393</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Matches-3394"><a href="#Matches-3394"><span class="linenos">3394</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Matches-3445"><a href="#Matches-3445"><span class="linenos">3445</span></a><span class="k">class</span> <span class="nc">Matches</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Matches-3446"><a href="#Matches-3446"><span class="linenos">3446</span></a><span class="w"> </span><span class="sd">"""Oracle/Snowflake decode.</span> +</span><span id="Matches-3447"><a href="#Matches-3447"><span class="linenos">3447</span></a><span class="sd"> https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions040.htm</span> +</span><span id="Matches-3448"><a href="#Matches-3448"><span class="linenos">3448</span></a><span class="sd"> Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</span> +</span><span id="Matches-3449"><a href="#Matches-3449"><span class="linenos">3449</span></a><span class="sd"> """</span> +</span><span id="Matches-3450"><a href="#Matches-3450"><span class="linenos">3450</span></a> +</span><span id="Matches-3451"><a href="#Matches-3451"><span class="linenos">3451</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Matches-3452"><a href="#Matches-3452"><span class="linenos">3452</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -34007,8 +34889,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Max"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Max-3397"><a href="#Max-3397"><span class="linenos">3397</span></a><span class="k">class</span> <span class="nc">Max</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Max-3398"><a href="#Max-3398"><span class="linenos">3398</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Max-3455"><a href="#Max-3455"><span class="linenos">3455</span></a><span class="k">class</span> <span class="nc">Max</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Max-3456"><a href="#Max-3456"><span class="linenos">3456</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -34081,8 +34963,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Min"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Min-3401"><a href="#Min-3401"><span class="linenos">3401</span></a><span class="k">class</span> <span class="nc">Min</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Min-3402"><a href="#Min-3402"><span class="linenos">3402</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Min-3459"><a href="#Min-3459"><span class="linenos">3459</span></a><span class="k">class</span> <span class="nc">Min</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Min-3460"><a href="#Min-3460"><span class="linenos">3460</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -34155,8 +35037,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Month"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Month-3405"><a href="#Month-3405"><span class="linenos">3405</span></a><span class="k">class</span> <span class="nc">Month</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Month-3406"><a href="#Month-3406"><span class="linenos">3406</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Month-3463"><a href="#Month-3463"><span class="linenos">3463</span></a><span class="k">class</span> <span class="nc">Month</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Month-3464"><a href="#Month-3464"><span class="linenos">3464</span></a> <span class="k">pass</span> </span></pre></div> @@ -34229,8 +35111,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Nvl2"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Nvl2-3409"><a href="#Nvl2-3409"><span class="linenos">3409</span></a><span class="k">class</span> <span class="nc">Nvl2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Nvl2-3410"><a href="#Nvl2-3410"><span class="linenos">3410</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Nvl2-3467"><a href="#Nvl2-3467"><span class="linenos">3467</span></a><span class="k">class</span> <span class="nc">Nvl2</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Nvl2-3468"><a href="#Nvl2-3468"><span class="linenos">3468</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"true"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"false"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -34303,8 +35185,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Posexplode"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Posexplode-3413"><a href="#Posexplode-3413"><span class="linenos">3413</span></a><span class="k">class</span> <span class="nc">Posexplode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Posexplode-3414"><a href="#Posexplode-3414"><span class="linenos">3414</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Posexplode-3471"><a href="#Posexplode-3471"><span class="linenos">3471</span></a><span class="k">class</span> <span class="nc">Posexplode</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Posexplode-3472"><a href="#Posexplode-3472"><span class="linenos">3472</span></a> <span class="k">pass</span> </span></pre></div> @@ -34377,8 +35259,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Pow"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Pow-3417"><a href="#Pow-3417"><span class="linenos">3417</span></a><span class="k">class</span> <span class="nc">Pow</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> -</span><span id="Pow-3418"><a href="#Pow-3418"><span class="linenos">3418</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"POWER"</span><span class="p">,</span> <span class="s2">"POW"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Pow-3475"><a href="#Pow-3475"><span class="linenos">3475</span></a><span class="k">class</span> <span class="nc">Pow</span><span class="p">(</span><span class="n">Binary</span><span class="p">,</span> <span class="n">Func</span><span class="p">):</span> +</span><span id="Pow-3476"><a href="#Pow-3476"><span class="linenos">3476</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"POWER"</span><span class="p">,</span> <span class="s2">"POW"</span><span class="p">]</span> </span></pre></div> @@ -34451,8 +35333,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#PercentileCont"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PercentileCont-3421"><a href="#PercentileCont-3421"><span class="linenos">3421</span></a><span class="k">class</span> <span class="nc">PercentileCont</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="PercentileCont-3422"><a href="#PercentileCont-3422"><span class="linenos">3422</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PercentileCont-3479"><a href="#PercentileCont-3479"><span class="linenos">3479</span></a><span class="k">class</span> <span class="nc">PercentileCont</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="PercentileCont-3480"><a href="#PercentileCont-3480"><span class="linenos">3480</span></a> <span class="k">pass</span> </span></pre></div> @@ -34525,8 +35407,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#PercentileDisc"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="PercentileDisc-3425"><a href="#PercentileDisc-3425"><span class="linenos">3425</span></a><span class="k">class</span> <span class="nc">PercentileDisc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="PercentileDisc-3426"><a href="#PercentileDisc-3426"><span class="linenos">3426</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="PercentileDisc-3483"><a href="#PercentileDisc-3483"><span class="linenos">3483</span></a><span class="k">class</span> <span class="nc">PercentileDisc</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="PercentileDisc-3484"><a href="#PercentileDisc-3484"><span class="linenos">3484</span></a> <span class="k">pass</span> </span></pre></div> @@ -34599,8 +35481,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Quantile"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Quantile-3429"><a href="#Quantile-3429"><span class="linenos">3429</span></a><span class="k">class</span> <span class="nc">Quantile</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Quantile-3430"><a href="#Quantile-3430"><span class="linenos">3430</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Quantile-3487"><a href="#Quantile-3487"><span class="linenos">3487</span></a><span class="k">class</span> <span class="nc">Quantile</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Quantile-3488"><a href="#Quantile-3488"><span class="linenos">3488</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -34673,8 +35555,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Quantiles"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Quantiles-3435"><a href="#Quantiles-3435"><span class="linenos">3435</span></a><span class="k">class</span> <span class="nc">Quantiles</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Quantiles-3436"><a href="#Quantiles-3436"><span class="linenos">3436</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Quantiles-3493"><a href="#Quantiles-3493"><span class="linenos">3493</span></a><span class="k">class</span> <span class="nc">Quantiles</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Quantiles-3494"><a href="#Quantiles-3494"><span class="linenos">3494</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -34747,8 +35629,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#QuantileIf"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="QuantileIf-3439"><a href="#QuantileIf-3439"><span class="linenos">3439</span></a><span class="k">class</span> <span class="nc">QuantileIf</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="QuantileIf-3440"><a href="#QuantileIf-3440"><span class="linenos">3440</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="QuantileIf-3497"><a href="#QuantileIf-3497"><span class="linenos">3497</span></a><span class="k">class</span> <span class="nc">QuantileIf</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="QuantileIf-3498"><a href="#QuantileIf-3498"><span class="linenos">3498</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"parameters"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -34821,8 +35703,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#ApproxQuantile"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxQuantile-3443"><a href="#ApproxQuantile-3443"><span class="linenos">3443</span></a><span class="k">class</span> <span class="nc">ApproxQuantile</span><span class="p">(</span><span class="n">Quantile</span><span class="p">):</span> -</span><span id="ApproxQuantile-3444"><a href="#ApproxQuantile-3444"><span class="linenos">3444</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"weight"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ApproxQuantile-3501"><a href="#ApproxQuantile-3501"><span class="linenos">3501</span></a><span class="k">class</span> <span class="nc">ApproxQuantile</span><span class="p">(</span><span class="n">Quantile</span><span class="p">):</span> +</span><span id="ApproxQuantile-3502"><a href="#ApproxQuantile-3502"><span class="linenos">3502</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"quantile"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"accuracy"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"weight"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -34895,10 +35777,10 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#ReadCSV"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="ReadCSV-3447"><a href="#ReadCSV-3447"><span class="linenos">3447</span></a><span class="k">class</span> <span class="nc">ReadCSV</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="ReadCSV-3448"><a href="#ReadCSV-3448"><span class="linenos">3448</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"READ_CSV"</span><span class="p">]</span> -</span><span id="ReadCSV-3449"><a href="#ReadCSV-3449"><span class="linenos">3449</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="ReadCSV-3450"><a href="#ReadCSV-3450"><span class="linenos">3450</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="ReadCSV-3505"><a href="#ReadCSV-3505"><span class="linenos">3505</span></a><span class="k">class</span> <span class="nc">ReadCSV</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="ReadCSV-3506"><a href="#ReadCSV-3506"><span class="linenos">3506</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"READ_CSV"</span><span class="p">]</span> +</span><span id="ReadCSV-3507"><a href="#ReadCSV-3507"><span class="linenos">3507</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="ReadCSV-3508"><a href="#ReadCSV-3508"><span class="linenos">3508</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -34971,8 +35853,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Reduce"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Reduce-3453"><a href="#Reduce-3453"><span class="linenos">3453</span></a><span class="k">class</span> <span class="nc">Reduce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Reduce-3454"><a href="#Reduce-3454"><span class="linenos">3454</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"initial"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"merge"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"finish"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Reduce-3511"><a href="#Reduce-3511"><span class="linenos">3511</span></a><span class="k">class</span> <span class="nc">Reduce</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Reduce-3512"><a href="#Reduce-3512"><span class="linenos">3512</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"initial"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"merge"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"finish"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -35045,14 +35927,14 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#RegexpExtract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpExtract-3457"><a href="#RegexpExtract-3457"><span class="linenos">3457</span></a><span class="k">class</span> <span class="nc">RegexpExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RegexpExtract-3458"><a href="#RegexpExtract-3458"><span class="linenos">3458</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="RegexpExtract-3459"><a href="#RegexpExtract-3459"><span class="linenos">3459</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="RegexpExtract-3460"><a href="#RegexpExtract-3460"><span class="linenos">3460</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="RegexpExtract-3461"><a href="#RegexpExtract-3461"><span class="linenos">3461</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpExtract-3462"><a href="#RegexpExtract-3462"><span class="linenos">3462</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpExtract-3463"><a href="#RegexpExtract-3463"><span class="linenos">3463</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="RegexpExtract-3464"><a href="#RegexpExtract-3464"><span class="linenos">3464</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpExtract-3515"><a href="#RegexpExtract-3515"><span class="linenos">3515</span></a><span class="k">class</span> <span class="nc">RegexpExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RegexpExtract-3516"><a href="#RegexpExtract-3516"><span class="linenos">3516</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="RegexpExtract-3517"><a href="#RegexpExtract-3517"><span class="linenos">3517</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="RegexpExtract-3518"><a href="#RegexpExtract-3518"><span class="linenos">3518</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="RegexpExtract-3519"><a href="#RegexpExtract-3519"><span class="linenos">3519</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpExtract-3520"><a href="#RegexpExtract-3520"><span class="linenos">3520</span></a> <span class="s2">"occurrence"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpExtract-3521"><a href="#RegexpExtract-3521"><span class="linenos">3521</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="RegexpExtract-3522"><a href="#RegexpExtract-3522"><span class="linenos">3522</span></a> <span class="p">}</span> </span></pre></div> @@ -35125,8 +36007,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#RegexpLike"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpLike-3467"><a href="#RegexpLike-3467"><span class="linenos">3467</span></a><span class="k">class</span> <span class="nc">RegexpLike</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RegexpLike-3468"><a href="#RegexpLike-3468"><span class="linenos">3468</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpLike-3525"><a href="#RegexpLike-3525"><span class="linenos">3525</span></a><span class="k">class</span> <span class="nc">RegexpLike</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RegexpLike-3526"><a href="#RegexpLike-3526"><span class="linenos">3526</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -35199,8 +36081,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#RegexpILike"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpILike-3471"><a href="#RegexpILike-3471"><span class="linenos">3471</span></a><span class="k">class</span> <span class="nc">RegexpILike</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RegexpILike-3472"><a href="#RegexpILike-3472"><span class="linenos">3472</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpILike-3529"><a href="#RegexpILike-3529"><span class="linenos">3529</span></a><span class="k">class</span> <span class="nc">RegexpILike</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RegexpILike-3530"><a href="#RegexpILike-3530"><span class="linenos">3530</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"flag"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -35273,8 +36155,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#RegexpSplit"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpSplit-3475"><a href="#RegexpSplit-3475"><span class="linenos">3475</span></a><span class="k">class</span> <span class="nc">RegexpSplit</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RegexpSplit-3476"><a href="#RegexpSplit-3476"><span class="linenos">3476</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RegexpSplit-3533"><a href="#RegexpSplit-3533"><span class="linenos">3533</span></a><span class="k">class</span> <span class="nc">RegexpSplit</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RegexpSplit-3534"><a href="#RegexpSplit-3534"><span class="linenos">3534</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -35347,8 +36229,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Repeat"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Repeat-3479"><a href="#Repeat-3479"><span class="linenos">3479</span></a><span class="k">class</span> <span class="nc">Repeat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Repeat-3480"><a href="#Repeat-3480"><span class="linenos">3480</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"times"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Repeat-3537"><a href="#Repeat-3537"><span class="linenos">3537</span></a><span class="k">class</span> <span class="nc">Repeat</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Repeat-3538"><a href="#Repeat-3538"><span class="linenos">3538</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"times"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -35421,8 +36303,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Round"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Round-3483"><a href="#Round-3483"><span class="linenos">3483</span></a><span class="k">class</span> <span class="nc">Round</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Round-3484"><a href="#Round-3484"><span class="linenos">3484</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Round-3541"><a href="#Round-3541"><span class="linenos">3541</span></a><span class="k">class</span> <span class="nc">Round</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Round-3542"><a href="#Round-3542"><span class="linenos">3542</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"decimals"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -35495,8 +36377,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#RowNumber"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="RowNumber-3487"><a href="#RowNumber-3487"><span class="linenos">3487</span></a><span class="k">class</span> <span class="nc">RowNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="RowNumber-3488"><a href="#RowNumber-3488"><span class="linenos">3488</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="RowNumber-3545"><a href="#RowNumber-3545"><span class="linenos">3545</span></a><span class="k">class</span> <span class="nc">RowNumber</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="RowNumber-3546"><a href="#RowNumber-3546"><span class="linenos">3546</span></a> <span class="n">arg_types</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span></pre></div> @@ -35569,8 +36451,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#SafeDivide"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SafeDivide-3491"><a href="#SafeDivide-3491"><span class="linenos">3491</span></a><span class="k">class</span> <span class="nc">SafeDivide</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="SafeDivide-3492"><a href="#SafeDivide-3492"><span class="linenos">3492</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SafeDivide-3549"><a href="#SafeDivide-3549"><span class="linenos">3549</span></a><span class="k">class</span> <span class="nc">SafeDivide</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="SafeDivide-3550"><a href="#SafeDivide-3550"><span class="linenos">3550</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -35643,8 +36525,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#SetAgg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SetAgg-3495"><a href="#SetAgg-3495"><span class="linenos">3495</span></a><span class="k">class</span> <span class="nc">SetAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="SetAgg-3496"><a href="#SetAgg-3496"><span class="linenos">3496</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SetAgg-3553"><a href="#SetAgg-3553"><span class="linenos">3553</span></a><span class="k">class</span> <span class="nc">SetAgg</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="SetAgg-3554"><a href="#SetAgg-3554"><span class="linenos">3554</span></a> <span class="k">pass</span> </span></pre></div> @@ -35717,8 +36599,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#SortArray"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="SortArray-3499"><a href="#SortArray-3499"><span class="linenos">3499</span></a><span class="k">class</span> <span class="nc">SortArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="SortArray-3500"><a href="#SortArray-3500"><span class="linenos">3500</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"asc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="SortArray-3557"><a href="#SortArray-3557"><span class="linenos">3557</span></a><span class="k">class</span> <span class="nc">SortArray</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="SortArray-3558"><a href="#SortArray-3558"><span class="linenos">3558</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"asc"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -35791,8 +36673,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Split"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Split-3503"><a href="#Split-3503"><span class="linenos">3503</span></a><span class="k">class</span> <span class="nc">Split</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Split-3504"><a href="#Split-3504"><span class="linenos">3504</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Split-3561"><a href="#Split-3561"><span class="linenos">3561</span></a><span class="k">class</span> <span class="nc">Split</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Split-3562"><a href="#Split-3562"><span class="linenos">3562</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"limit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -35865,8 +36747,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Substring"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Substring-3509"><a href="#Substring-3509"><span class="linenos">3509</span></a><span class="k">class</span> <span class="nc">Substring</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Substring-3510"><a href="#Substring-3510"><span class="linenos">3510</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Substring-3567"><a href="#Substring-3567"><span class="linenos">3567</span></a><span class="k">class</span> <span class="nc">Substring</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Substring-3568"><a href="#Substring-3568"><span class="linenos">3568</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"length"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -35939,13 +36821,13 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#StrPosition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StrPosition-3513"><a href="#StrPosition-3513"><span class="linenos">3513</span></a><span class="k">class</span> <span class="nc">StrPosition</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StrPosition-3514"><a href="#StrPosition-3514"><span class="linenos">3514</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="StrPosition-3515"><a href="#StrPosition-3515"><span class="linenos">3515</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="StrPosition-3516"><a href="#StrPosition-3516"><span class="linenos">3516</span></a> <span class="s2">"substr"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="StrPosition-3517"><a href="#StrPosition-3517"><span class="linenos">3517</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="StrPosition-3518"><a href="#StrPosition-3518"><span class="linenos">3518</span></a> <span class="s2">"instance"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="StrPosition-3519"><a href="#StrPosition-3519"><span class="linenos">3519</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StrPosition-3571"><a href="#StrPosition-3571"><span class="linenos">3571</span></a><span class="k">class</span> <span class="nc">StrPosition</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StrPosition-3572"><a href="#StrPosition-3572"><span class="linenos">3572</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="StrPosition-3573"><a href="#StrPosition-3573"><span class="linenos">3573</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="StrPosition-3574"><a href="#StrPosition-3574"><span class="linenos">3574</span></a> <span class="s2">"substr"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="StrPosition-3575"><a href="#StrPosition-3575"><span class="linenos">3575</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="StrPosition-3576"><a href="#StrPosition-3576"><span class="linenos">3576</span></a> <span class="s2">"instance"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="StrPosition-3577"><a href="#StrPosition-3577"><span class="linenos">3577</span></a> <span class="p">}</span> </span></pre></div> @@ -36018,8 +36900,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#StrToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StrToDate-3522"><a href="#StrToDate-3522"><span class="linenos">3522</span></a><span class="k">class</span> <span class="nc">StrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StrToDate-3523"><a href="#StrToDate-3523"><span class="linenos">3523</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StrToDate-3580"><a href="#StrToDate-3580"><span class="linenos">3580</span></a><span class="k">class</span> <span class="nc">StrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StrToDate-3581"><a href="#StrToDate-3581"><span class="linenos">3581</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -36092,8 +36974,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#StrToTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StrToTime-3526"><a href="#StrToTime-3526"><span class="linenos">3526</span></a><span class="k">class</span> <span class="nc">StrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StrToTime-3527"><a href="#StrToTime-3527"><span class="linenos">3527</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StrToTime-3584"><a href="#StrToTime-3584"><span class="linenos">3584</span></a><span class="k">class</span> <span class="nc">StrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StrToTime-3585"><a href="#StrToTime-3585"><span class="linenos">3585</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -36166,8 +37048,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#StrToUnix"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StrToUnix-3532"><a href="#StrToUnix-3532"><span class="linenos">3532</span></a><span class="k">class</span> <span class="nc">StrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StrToUnix-3533"><a href="#StrToUnix-3533"><span class="linenos">3533</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StrToUnix-3590"><a href="#StrToUnix-3590"><span class="linenos">3590</span></a><span class="k">class</span> <span class="nc">StrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StrToUnix-3591"><a href="#StrToUnix-3591"><span class="linenos">3591</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -36240,8 +37122,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#NumberToStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="NumberToStr-3536"><a href="#NumberToStr-3536"><span class="linenos">3536</span></a><span class="k">class</span> <span class="nc">NumberToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="NumberToStr-3537"><a href="#NumberToStr-3537"><span class="linenos">3537</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="NumberToStr-3594"><a href="#NumberToStr-3594"><span class="linenos">3594</span></a><span class="k">class</span> <span class="nc">NumberToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="NumberToStr-3595"><a href="#NumberToStr-3595"><span class="linenos">3595</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -36314,9 +37196,9 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Struct"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Struct-3540"><a href="#Struct-3540"><span class="linenos">3540</span></a><span class="k">class</span> <span class="nc">Struct</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Struct-3541"><a href="#Struct-3541"><span class="linenos">3541</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> -</span><span id="Struct-3542"><a href="#Struct-3542"><span class="linenos">3542</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Struct-3598"><a href="#Struct-3598"><span class="linenos">3598</span></a><span class="k">class</span> <span class="nc">Struct</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Struct-3599"><a href="#Struct-3599"><span class="linenos">3599</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> +</span><span id="Struct-3600"><a href="#Struct-3600"><span class="linenos">3600</span></a> <span class="n">is_var_len_args</span> <span class="o">=</span> <span class="kc">True</span> </span></pre></div> @@ -36389,8 +37271,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#StructExtract"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StructExtract-3545"><a href="#StructExtract-3545"><span class="linenos">3545</span></a><span class="k">class</span> <span class="nc">StructExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="StructExtract-3546"><a href="#StructExtract-3546"><span class="linenos">3546</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StructExtract-3603"><a href="#StructExtract-3603"><span class="linenos">3603</span></a><span class="k">class</span> <span class="nc">StructExtract</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="StructExtract-3604"><a href="#StructExtract-3604"><span class="linenos">3604</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -36463,8 +37345,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Sum"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Sum-3549"><a href="#Sum-3549"><span class="linenos">3549</span></a><span class="k">class</span> <span class="nc">Sum</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Sum-3550"><a href="#Sum-3550"><span class="linenos">3550</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Sum-3607"><a href="#Sum-3607"><span class="linenos">3607</span></a><span class="k">class</span> <span class="nc">Sum</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Sum-3608"><a href="#Sum-3608"><span class="linenos">3608</span></a> <span class="k">pass</span> </span></pre></div> @@ -36537,8 +37419,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Sqrt"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Sqrt-3553"><a href="#Sqrt-3553"><span class="linenos">3553</span></a><span class="k">class</span> <span class="nc">Sqrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Sqrt-3554"><a href="#Sqrt-3554"><span class="linenos">3554</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Sqrt-3611"><a href="#Sqrt-3611"><span class="linenos">3611</span></a><span class="k">class</span> <span class="nc">Sqrt</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Sqrt-3612"><a href="#Sqrt-3612"><span class="linenos">3612</span></a> <span class="k">pass</span> </span></pre></div> @@ -36611,8 +37493,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Stddev"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Stddev-3557"><a href="#Stddev-3557"><span class="linenos">3557</span></a><span class="k">class</span> <span class="nc">Stddev</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Stddev-3558"><a href="#Stddev-3558"><span class="linenos">3558</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Stddev-3615"><a href="#Stddev-3615"><span class="linenos">3615</span></a><span class="k">class</span> <span class="nc">Stddev</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Stddev-3616"><a href="#Stddev-3616"><span class="linenos">3616</span></a> <span class="k">pass</span> </span></pre></div> @@ -36685,8 +37567,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#StddevPop"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StddevPop-3561"><a href="#StddevPop-3561"><span class="linenos">3561</span></a><span class="k">class</span> <span class="nc">StddevPop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="StddevPop-3562"><a href="#StddevPop-3562"><span class="linenos">3562</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StddevPop-3619"><a href="#StddevPop-3619"><span class="linenos">3619</span></a><span class="k">class</span> <span class="nc">StddevPop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="StddevPop-3620"><a href="#StddevPop-3620"><span class="linenos">3620</span></a> <span class="k">pass</span> </span></pre></div> @@ -36759,8 +37641,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#StddevSamp"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="StddevSamp-3565"><a href="#StddevSamp-3565"><span class="linenos">3565</span></a><span class="k">class</span> <span class="nc">StddevSamp</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="StddevSamp-3566"><a href="#StddevSamp-3566"><span class="linenos">3566</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="StddevSamp-3623"><a href="#StddevSamp-3623"><span class="linenos">3623</span></a><span class="k">class</span> <span class="nc">StddevSamp</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="StddevSamp-3624"><a href="#StddevSamp-3624"><span class="linenos">3624</span></a> <span class="k">pass</span> </span></pre></div> @@ -36833,8 +37715,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TimeToStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToStr-3569"><a href="#TimeToStr-3569"><span class="linenos">3569</span></a><span class="k">class</span> <span class="nc">TimeToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeToStr-3570"><a href="#TimeToStr-3570"><span class="linenos">3570</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToStr-3627"><a href="#TimeToStr-3627"><span class="linenos">3627</span></a><span class="k">class</span> <span class="nc">TimeToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeToStr-3628"><a href="#TimeToStr-3628"><span class="linenos">3628</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -36907,8 +37789,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TimeToTimeStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToTimeStr-3573"><a href="#TimeToTimeStr-3573"><span class="linenos">3573</span></a><span class="k">class</span> <span class="nc">TimeToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeToTimeStr-3574"><a href="#TimeToTimeStr-3574"><span class="linenos">3574</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToTimeStr-3631"><a href="#TimeToTimeStr-3631"><span class="linenos">3631</span></a><span class="k">class</span> <span class="nc">TimeToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeToTimeStr-3632"><a href="#TimeToTimeStr-3632"><span class="linenos">3632</span></a> <span class="k">pass</span> </span></pre></div> @@ -36981,8 +37863,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TimeToUnix"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToUnix-3577"><a href="#TimeToUnix-3577"><span class="linenos">3577</span></a><span class="k">class</span> <span class="nc">TimeToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeToUnix-3578"><a href="#TimeToUnix-3578"><span class="linenos">3578</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeToUnix-3635"><a href="#TimeToUnix-3635"><span class="linenos">3635</span></a><span class="k">class</span> <span class="nc">TimeToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeToUnix-3636"><a href="#TimeToUnix-3636"><span class="linenos">3636</span></a> <span class="k">pass</span> </span></pre></div> @@ -37055,8 +37937,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TimeStrToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToDate-3581"><a href="#TimeStrToDate-3581"><span class="linenos">3581</span></a><span class="k">class</span> <span class="nc">TimeStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeStrToDate-3582"><a href="#TimeStrToDate-3582"><span class="linenos">3582</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToDate-3639"><a href="#TimeStrToDate-3639"><span class="linenos">3639</span></a><span class="k">class</span> <span class="nc">TimeStrToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeStrToDate-3640"><a href="#TimeStrToDate-3640"><span class="linenos">3640</span></a> <span class="k">pass</span> </span></pre></div> @@ -37129,8 +38011,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TimeStrToTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToTime-3585"><a href="#TimeStrToTime-3585"><span class="linenos">3585</span></a><span class="k">class</span> <span class="nc">TimeStrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeStrToTime-3586"><a href="#TimeStrToTime-3586"><span class="linenos">3586</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToTime-3643"><a href="#TimeStrToTime-3643"><span class="linenos">3643</span></a><span class="k">class</span> <span class="nc">TimeStrToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeStrToTime-3644"><a href="#TimeStrToTime-3644"><span class="linenos">3644</span></a> <span class="k">pass</span> </span></pre></div> @@ -37203,8 +38085,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TimeStrToUnix"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToUnix-3589"><a href="#TimeStrToUnix-3589"><span class="linenos">3589</span></a><span class="k">class</span> <span class="nc">TimeStrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TimeStrToUnix-3590"><a href="#TimeStrToUnix-3590"><span class="linenos">3590</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TimeStrToUnix-3647"><a href="#TimeStrToUnix-3647"><span class="linenos">3647</span></a><span class="k">class</span> <span class="nc">TimeStrToUnix</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TimeStrToUnix-3648"><a href="#TimeStrToUnix-3648"><span class="linenos">3648</span></a> <span class="k">pass</span> </span></pre></div> @@ -37277,13 +38159,13 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Trim"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Trim-3593"><a href="#Trim-3593"><span class="linenos">3593</span></a><span class="k">class</span> <span class="nc">Trim</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Trim-3594"><a href="#Trim-3594"><span class="linenos">3594</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Trim-3595"><a href="#Trim-3595"><span class="linenos">3595</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Trim-3596"><a href="#Trim-3596"><span class="linenos">3596</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Trim-3597"><a href="#Trim-3597"><span class="linenos">3597</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Trim-3598"><a href="#Trim-3598"><span class="linenos">3598</span></a> <span class="s2">"collation"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Trim-3599"><a href="#Trim-3599"><span class="linenos">3599</span></a> <span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Trim-3651"><a href="#Trim-3651"><span class="linenos">3651</span></a><span class="k">class</span> <span class="nc">Trim</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Trim-3652"><a href="#Trim-3652"><span class="linenos">3652</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Trim-3653"><a href="#Trim-3653"><span class="linenos">3653</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Trim-3654"><a href="#Trim-3654"><span class="linenos">3654</span></a> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Trim-3655"><a href="#Trim-3655"><span class="linenos">3655</span></a> <span class="s2">"position"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Trim-3656"><a href="#Trim-3656"><span class="linenos">3656</span></a> <span class="s2">"collation"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Trim-3657"><a href="#Trim-3657"><span class="linenos">3657</span></a> <span class="p">}</span> </span></pre></div> @@ -37356,8 +38238,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TsOrDsAdd"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsAdd-3602"><a href="#TsOrDsAdd-3602"><span class="linenos">3602</span></a><span class="k">class</span> <span class="nc">TsOrDsAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> -</span><span id="TsOrDsAdd-3603"><a href="#TsOrDsAdd-3603"><span class="linenos">3603</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsAdd-3660"><a href="#TsOrDsAdd-3660"><span class="linenos">3660</span></a><span class="k">class</span> <span class="nc">TsOrDsAdd</span><span class="p">(</span><span class="n">Func</span><span class="p">,</span> <span class="n">TimeUnit</span><span class="p">):</span> +</span><span id="TsOrDsAdd-3661"><a href="#TsOrDsAdd-3661"><span class="linenos">3661</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"unit"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -37433,8 +38315,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TsOrDsToDateStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToDateStr-3606"><a href="#TsOrDsToDateStr-3606"><span class="linenos">3606</span></a><span class="k">class</span> <span class="nc">TsOrDsToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TsOrDsToDateStr-3607"><a href="#TsOrDsToDateStr-3607"><span class="linenos">3607</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToDateStr-3664"><a href="#TsOrDsToDateStr-3664"><span class="linenos">3664</span></a><span class="k">class</span> <span class="nc">TsOrDsToDateStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TsOrDsToDateStr-3665"><a href="#TsOrDsToDateStr-3665"><span class="linenos">3665</span></a> <span class="k">pass</span> </span></pre></div> @@ -37507,8 +38389,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TsOrDsToDate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToDate-3610"><a href="#TsOrDsToDate-3610"><span class="linenos">3610</span></a><span class="k">class</span> <span class="nc">TsOrDsToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TsOrDsToDate-3611"><a href="#TsOrDsToDate-3611"><span class="linenos">3611</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDsToDate-3668"><a href="#TsOrDsToDate-3668"><span class="linenos">3668</span></a><span class="k">class</span> <span class="nc">TsOrDsToDate</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TsOrDsToDate-3669"><a href="#TsOrDsToDate-3669"><span class="linenos">3669</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -37581,8 +38463,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#TsOrDiToDi"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDiToDi-3614"><a href="#TsOrDiToDi-3614"><span class="linenos">3614</span></a><span class="k">class</span> <span class="nc">TsOrDiToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="TsOrDiToDi-3615"><a href="#TsOrDiToDi-3615"><span class="linenos">3615</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="TsOrDiToDi-3672"><a href="#TsOrDiToDi-3672"><span class="linenos">3672</span></a><span class="k">class</span> <span class="nc">TsOrDiToDi</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="TsOrDiToDi-3673"><a href="#TsOrDiToDi-3673"><span class="linenos">3673</span></a> <span class="k">pass</span> </span></pre></div> @@ -37655,8 +38537,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Unhex"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Unhex-3618"><a href="#Unhex-3618"><span class="linenos">3618</span></a><span class="k">class</span> <span class="nc">Unhex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Unhex-3619"><a href="#Unhex-3619"><span class="linenos">3619</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Unhex-3676"><a href="#Unhex-3676"><span class="linenos">3676</span></a><span class="k">class</span> <span class="nc">Unhex</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Unhex-3677"><a href="#Unhex-3677"><span class="linenos">3677</span></a> <span class="k">pass</span> </span></pre></div> @@ -37729,8 +38611,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#UnixToStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToStr-3622"><a href="#UnixToStr-3622"><span class="linenos">3622</span></a><span class="k">class</span> <span class="nc">UnixToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="UnixToStr-3623"><a href="#UnixToStr-3623"><span class="linenos">3623</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToStr-3680"><a href="#UnixToStr-3680"><span class="linenos">3680</span></a><span class="k">class</span> <span class="nc">UnixToStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="UnixToStr-3681"><a href="#UnixToStr-3681"><span class="linenos">3681</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -37803,12 +38685,12 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#UnixToTime"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToTime-3628"><a href="#UnixToTime-3628"><span class="linenos">3628</span></a><span class="k">class</span> <span class="nc">UnixToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="UnixToTime-3629"><a href="#UnixToTime-3629"><span class="linenos">3629</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"hours"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"minutes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> -</span><span id="UnixToTime-3630"><a href="#UnixToTime-3630"><span class="linenos">3630</span></a> -</span><span id="UnixToTime-3631"><a href="#UnixToTime-3631"><span class="linenos">3631</span></a> <span class="n">SECONDS</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">"seconds"</span><span class="p">)</span> -</span><span id="UnixToTime-3632"><a href="#UnixToTime-3632"><span class="linenos">3632</span></a> <span class="n">MILLIS</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">"millis"</span><span class="p">)</span> -</span><span id="UnixToTime-3633"><a href="#UnixToTime-3633"><span class="linenos">3633</span></a> <span class="n">MICROS</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">"micros"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToTime-3686"><a href="#UnixToTime-3686"><span class="linenos">3686</span></a><span class="k">class</span> <span class="nc">UnixToTime</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="UnixToTime-3687"><a href="#UnixToTime-3687"><span class="linenos">3687</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"scale"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"zone"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"hours"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"minutes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> +</span><span id="UnixToTime-3688"><a href="#UnixToTime-3688"><span class="linenos">3688</span></a> +</span><span id="UnixToTime-3689"><a href="#UnixToTime-3689"><span class="linenos">3689</span></a> <span class="n">SECONDS</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">"seconds"</span><span class="p">)</span> +</span><span id="UnixToTime-3690"><a href="#UnixToTime-3690"><span class="linenos">3690</span></a> <span class="n">MILLIS</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">"millis"</span><span class="p">)</span> +</span><span id="UnixToTime-3691"><a href="#UnixToTime-3691"><span class="linenos">3691</span></a> <span class="n">MICROS</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">"micros"</span><span class="p">)</span> </span></pre></div> @@ -37881,8 +38763,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#UnixToTimeStr"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToTimeStr-3636"><a href="#UnixToTimeStr-3636"><span class="linenos">3636</span></a><span class="k">class</span> <span class="nc">UnixToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="UnixToTimeStr-3637"><a href="#UnixToTimeStr-3637"><span class="linenos">3637</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="UnixToTimeStr-3694"><a href="#UnixToTimeStr-3694"><span class="linenos">3694</span></a><span class="k">class</span> <span class="nc">UnixToTimeStr</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="UnixToTimeStr-3695"><a href="#UnixToTimeStr-3695"><span class="linenos">3695</span></a> <span class="k">pass</span> </span></pre></div> @@ -37955,8 +38837,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Upper"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Upper-3640"><a href="#Upper-3640"><span class="linenos">3640</span></a><span class="k">class</span> <span class="nc">Upper</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Upper-3641"><a href="#Upper-3641"><span class="linenos">3641</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"UPPER"</span><span class="p">,</span> <span class="s2">"UCASE"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Upper-3698"><a href="#Upper-3698"><span class="linenos">3698</span></a><span class="k">class</span> <span class="nc">Upper</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Upper-3699"><a href="#Upper-3699"><span class="linenos">3699</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"UPPER"</span><span class="p">,</span> <span class="s2">"UCASE"</span><span class="p">]</span> </span></pre></div> @@ -38029,8 +38911,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Variance"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Variance-3644"><a href="#Variance-3644"><span class="linenos">3644</span></a><span class="k">class</span> <span class="nc">Variance</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="Variance-3645"><a href="#Variance-3645"><span class="linenos">3645</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE"</span><span class="p">,</span> <span class="s2">"VARIANCE_SAMP"</span><span class="p">,</span> <span class="s2">"VAR_SAMP"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Variance-3702"><a href="#Variance-3702"><span class="linenos">3702</span></a><span class="k">class</span> <span class="nc">Variance</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="Variance-3703"><a href="#Variance-3703"><span class="linenos">3703</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE"</span><span class="p">,</span> <span class="s2">"VARIANCE_SAMP"</span><span class="p">,</span> <span class="s2">"VAR_SAMP"</span><span class="p">]</span> </span></pre></div> @@ -38103,8 +38985,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#VariancePop"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="VariancePop-3648"><a href="#VariancePop-3648"><span class="linenos">3648</span></a><span class="k">class</span> <span class="nc">VariancePop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> -</span><span id="VariancePop-3649"><a href="#VariancePop-3649"><span class="linenos">3649</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE_POP"</span><span class="p">,</span> <span class="s2">"VAR_POP"</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="VariancePop-3706"><a href="#VariancePop-3706"><span class="linenos">3706</span></a><span class="k">class</span> <span class="nc">VariancePop</span><span class="p">(</span><span class="n">AggFunc</span><span class="p">):</span> +</span><span id="VariancePop-3707"><a href="#VariancePop-3707"><span class="linenos">3707</span></a> <span class="n">_sql_names</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"VARIANCE_POP"</span><span class="p">,</span> <span class="s2">"VAR_POP"</span><span class="p">]</span> </span></pre></div> @@ -38177,8 +39059,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Week"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Week-3652"><a href="#Week-3652"><span class="linenos">3652</span></a><span class="k">class</span> <span class="nc">Week</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Week-3653"><a href="#Week-3653"><span class="linenos">3653</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"mode"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Week-3710"><a href="#Week-3710"><span class="linenos">3710</span></a><span class="k">class</span> <span class="nc">Week</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Week-3711"><a href="#Week-3711"><span class="linenos">3711</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"mode"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -38251,8 +39133,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#XMLTable"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="XMLTable-3656"><a href="#XMLTable-3656"><span class="linenos">3656</span></a><span class="k">class</span> <span class="nc">XMLTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="XMLTable-3657"><a href="#XMLTable-3657"><span class="linenos">3657</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"passing"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"by_ref"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="XMLTable-3714"><a href="#XMLTable-3714"><span class="linenos">3714</span></a><span class="k">class</span> <span class="nc">XMLTable</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="XMLTable-3715"><a href="#XMLTable-3715"><span class="linenos">3715</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"passing"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"columns"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span> <span class="s2">"by_ref"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -38325,8 +39207,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Year"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Year-3660"><a href="#Year-3660"><span class="linenos">3660</span></a><span class="k">class</span> <span class="nc">Year</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Year-3661"><a href="#Year-3661"><span class="linenos">3661</span></a> <span class="k">pass</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Year-3718"><a href="#Year-3718"><span class="linenos">3718</span></a><span class="k">class</span> <span class="nc">Year</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Year-3719"><a href="#Year-3719"><span class="linenos">3719</span></a> <span class="k">pass</span> </span></pre></div> @@ -38399,8 +39281,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Use"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Use-3664"><a href="#Use-3664"><span class="linenos">3664</span></a><span class="k">class</span> <span class="nc">Use</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Use-3665"><a href="#Use-3665"><span class="linenos">3665</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Use-3722"><a href="#Use-3722"><span class="linenos">3722</span></a><span class="k">class</span> <span class="nc">Use</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Use-3723"><a href="#Use-3723"><span class="linenos">3723</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="kc">False</span><span class="p">}</span> </span></pre></div> @@ -38460,8 +39342,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#Merge"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Merge-3668"><a href="#Merge-3668"><span class="linenos">3668</span></a><span class="k">class</span> <span class="nc">Merge</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Merge-3669"><a href="#Merge-3669"><span class="linenos">3669</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Merge-3726"><a href="#Merge-3726"><span class="linenos">3726</span></a><span class="k">class</span> <span class="nc">Merge</span><span class="p">(</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Merge-3727"><a href="#Merge-3727"><span class="linenos">3727</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"using"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"expressions"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -38521,8 +39403,8 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#When"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="When-3672"><a href="#When-3672"><span class="linenos">3672</span></a><span class="k">class</span> <span class="nc">When</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> -</span><span id="When-3673"><a href="#When-3673"><span class="linenos">3673</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"then"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="When-3730"><a href="#When-3730"><span class="linenos">3730</span></a><span class="k">class</span> <span class="nc">When</span><span class="p">(</span><span class="n">Func</span><span class="p">):</span> +</span><span id="When-3731"><a href="#When-3731"><span class="linenos">3731</span></a> <span class="n">arg_types</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">"then"</span><span class="p">:</span> <span class="kc">True</span><span class="p">}</span> </span></pre></div> @@ -38595,48 +39477,48 @@ Pattern matching MATCHES(value, search1, result1, ...searchN, resultN, else)</p> </div> <a class="headerlink" href="#maybe_parse"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="maybe_parse-3701"><a href="#maybe_parse-3701"><span class="linenos">3701</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> -</span><span id="maybe_parse-3702"><a href="#maybe_parse-3702"><span class="linenos">3702</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="maybe_parse-3703"><a href="#maybe_parse-3703"><span class="linenos">3703</span></a> <span class="o">*</span><span class="p">,</span> -</span><span id="maybe_parse-3704"><a href="#maybe_parse-3704"><span class="linenos">3704</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="maybe_parse-3705"><a href="#maybe_parse-3705"><span class="linenos">3705</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="maybe_parse-3706"><a href="#maybe_parse-3706"><span class="linenos">3706</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="maybe_parse-3707"><a href="#maybe_parse-3707"><span class="linenos">3707</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="maybe_parse-3708"><a href="#maybe_parse-3708"><span class="linenos">3708</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="maybe_parse-3709"><a href="#maybe_parse-3709"><span class="linenos">3709</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="maybe_parse-3710"><a href="#maybe_parse-3710"><span class="linenos">3710</span></a><span class="w"> </span><span class="sd">"""Gracefully handle a possible string or expression.</span> -</span><span id="maybe_parse-3711"><a href="#maybe_parse-3711"><span class="linenos">3711</span></a> -</span><span id="maybe_parse-3712"><a href="#maybe_parse-3712"><span class="linenos">3712</span></a><span class="sd"> Example:</span> -</span><span id="maybe_parse-3713"><a href="#maybe_parse-3713"><span class="linenos">3713</span></a><span class="sd"> >>> maybe_parse("1")</span> -</span><span id="maybe_parse-3714"><a href="#maybe_parse-3714"><span class="linenos">3714</span></a><span class="sd"> (LITERAL this: 1, is_string: False)</span> -</span><span id="maybe_parse-3715"><a href="#maybe_parse-3715"><span class="linenos">3715</span></a><span class="sd"> >>> maybe_parse(to_identifier("x"))</span> -</span><span id="maybe_parse-3716"><a href="#maybe_parse-3716"><span class="linenos">3716</span></a><span class="sd"> (IDENTIFIER this: x, quoted: False)</span> -</span><span id="maybe_parse-3717"><a href="#maybe_parse-3717"><span class="linenos">3717</span></a> -</span><span id="maybe_parse-3718"><a href="#maybe_parse-3718"><span class="linenos">3718</span></a><span class="sd"> Args:</span> -</span><span id="maybe_parse-3719"><a href="#maybe_parse-3719"><span class="linenos">3719</span></a><span class="sd"> sql_or_expression: the SQL code string or an expression</span> -</span><span id="maybe_parse-3720"><a href="#maybe_parse-3720"><span class="linenos">3720</span></a><span class="sd"> into: the SQLGlot Expression to parse into</span> -</span><span id="maybe_parse-3721"><a href="#maybe_parse-3721"><span class="linenos">3721</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> -</span><span id="maybe_parse-3722"><a href="#maybe_parse-3722"><span class="linenos">3722</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="maybe_parse-3723"><a href="#maybe_parse-3723"><span class="linenos">3723</span></a><span class="sd"> prefix: a string to prefix the sql with before it gets parsed</span> -</span><span id="maybe_parse-3724"><a href="#maybe_parse-3724"><span class="linenos">3724</span></a><span class="sd"> (automatically includes a space)</span> -</span><span id="maybe_parse-3725"><a href="#maybe_parse-3725"><span class="linenos">3725</span></a><span class="sd"> copy: whether or not to copy the expression.</span> -</span><span id="maybe_parse-3726"><a href="#maybe_parse-3726"><span class="linenos">3726</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="maybe_parse-3727"><a href="#maybe_parse-3727"><span class="linenos">3727</span></a><span class="sd"> that an input expression is a SQL string).</span> -</span><span id="maybe_parse-3728"><a href="#maybe_parse-3728"><span class="linenos">3728</span></a> -</span><span id="maybe_parse-3729"><a href="#maybe_parse-3729"><span class="linenos">3729</span></a><span class="sd"> Returns:</span> -</span><span id="maybe_parse-3730"><a href="#maybe_parse-3730"><span class="linenos">3730</span></a><span class="sd"> Expression: the parsed or given expression.</span> -</span><span id="maybe_parse-3731"><a href="#maybe_parse-3731"><span class="linenos">3731</span></a><span class="sd"> """</span> -</span><span id="maybe_parse-3732"><a href="#maybe_parse-3732"><span class="linenos">3732</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="maybe_parse-3733"><a href="#maybe_parse-3733"><span class="linenos">3733</span></a> <span class="k">if</span> <span class="n">copy</span><span class="p">:</span> -</span><span id="maybe_parse-3734"><a href="#maybe_parse-3734"><span class="linenos">3734</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="maybe_parse-3735"><a href="#maybe_parse-3735"><span class="linenos">3735</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span> -</span><span id="maybe_parse-3736"><a href="#maybe_parse-3736"><span class="linenos">3736</span></a> -</span><span id="maybe_parse-3737"><a href="#maybe_parse-3737"><span class="linenos">3737</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> -</span><span id="maybe_parse-3738"><a href="#maybe_parse-3738"><span class="linenos">3738</span></a> -</span><span id="maybe_parse-3739"><a href="#maybe_parse-3739"><span class="linenos">3739</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">)</span> -</span><span id="maybe_parse-3740"><a href="#maybe_parse-3740"><span class="linenos">3740</span></a> <span class="k">if</span> <span class="n">prefix</span><span class="p">:</span> -</span><span id="maybe_parse-3741"><a href="#maybe_parse-3741"><span class="linenos">3741</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="maybe_parse-3742"><a href="#maybe_parse-3742"><span class="linenos">3742</span></a> <span class="k">return</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">parse_one</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="maybe_parse-3759"><a href="#maybe_parse-3759"><span class="linenos">3759</span></a><span class="k">def</span> <span class="nf">maybe_parse</span><span class="p">(</span> +</span><span id="maybe_parse-3760"><a href="#maybe_parse-3760"><span class="linenos">3760</span></a> <span class="n">sql_or_expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="maybe_parse-3761"><a href="#maybe_parse-3761"><span class="linenos">3761</span></a> <span class="o">*</span><span class="p">,</span> +</span><span id="maybe_parse-3762"><a href="#maybe_parse-3762"><span class="linenos">3762</span></a> <span class="n">into</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">IntoType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="maybe_parse-3763"><a href="#maybe_parse-3763"><span class="linenos">3763</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="maybe_parse-3764"><a href="#maybe_parse-3764"><span class="linenos">3764</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="maybe_parse-3765"><a href="#maybe_parse-3765"><span class="linenos">3765</span></a> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="maybe_parse-3766"><a href="#maybe_parse-3766"><span class="linenos">3766</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="maybe_parse-3767"><a href="#maybe_parse-3767"><span class="linenos">3767</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="maybe_parse-3768"><a href="#maybe_parse-3768"><span class="linenos">3768</span></a><span class="w"> </span><span class="sd">"""Gracefully handle a possible string or expression.</span> +</span><span id="maybe_parse-3769"><a href="#maybe_parse-3769"><span class="linenos">3769</span></a> +</span><span id="maybe_parse-3770"><a href="#maybe_parse-3770"><span class="linenos">3770</span></a><span class="sd"> Example:</span> +</span><span id="maybe_parse-3771"><a href="#maybe_parse-3771"><span class="linenos">3771</span></a><span class="sd"> >>> maybe_parse("1")</span> +</span><span id="maybe_parse-3772"><a href="#maybe_parse-3772"><span class="linenos">3772</span></a><span class="sd"> (LITERAL this: 1, is_string: False)</span> +</span><span id="maybe_parse-3773"><a href="#maybe_parse-3773"><span class="linenos">3773</span></a><span class="sd"> >>> maybe_parse(to_identifier("x"))</span> +</span><span id="maybe_parse-3774"><a href="#maybe_parse-3774"><span class="linenos">3774</span></a><span class="sd"> (IDENTIFIER this: x, quoted: False)</span> +</span><span id="maybe_parse-3775"><a href="#maybe_parse-3775"><span class="linenos">3775</span></a> +</span><span id="maybe_parse-3776"><a href="#maybe_parse-3776"><span class="linenos">3776</span></a><span class="sd"> Args:</span> +</span><span id="maybe_parse-3777"><a href="#maybe_parse-3777"><span class="linenos">3777</span></a><span class="sd"> sql_or_expression: the SQL code string or an expression</span> +</span><span id="maybe_parse-3778"><a href="#maybe_parse-3778"><span class="linenos">3778</span></a><span class="sd"> into: the SQLGlot Expression to parse into</span> +</span><span id="maybe_parse-3779"><a href="#maybe_parse-3779"><span class="linenos">3779</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> +</span><span id="maybe_parse-3780"><a href="#maybe_parse-3780"><span class="linenos">3780</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="maybe_parse-3781"><a href="#maybe_parse-3781"><span class="linenos">3781</span></a><span class="sd"> prefix: a string to prefix the sql with before it gets parsed</span> +</span><span id="maybe_parse-3782"><a href="#maybe_parse-3782"><span class="linenos">3782</span></a><span class="sd"> (automatically includes a space)</span> +</span><span id="maybe_parse-3783"><a href="#maybe_parse-3783"><span class="linenos">3783</span></a><span class="sd"> copy: whether or not to copy the expression.</span> +</span><span id="maybe_parse-3784"><a href="#maybe_parse-3784"><span class="linenos">3784</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="maybe_parse-3785"><a href="#maybe_parse-3785"><span class="linenos">3785</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="maybe_parse-3786"><a href="#maybe_parse-3786"><span class="linenos">3786</span></a> +</span><span id="maybe_parse-3787"><a href="#maybe_parse-3787"><span class="linenos">3787</span></a><span class="sd"> Returns:</span> +</span><span id="maybe_parse-3788"><a href="#maybe_parse-3788"><span class="linenos">3788</span></a><span class="sd"> Expression: the parsed or given expression.</span> +</span><span id="maybe_parse-3789"><a href="#maybe_parse-3789"><span class="linenos">3789</span></a><span class="sd"> """</span> +</span><span id="maybe_parse-3790"><a href="#maybe_parse-3790"><span class="linenos">3790</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="maybe_parse-3791"><a href="#maybe_parse-3791"><span class="linenos">3791</span></a> <span class="k">if</span> <span class="n">copy</span><span class="p">:</span> +</span><span id="maybe_parse-3792"><a href="#maybe_parse-3792"><span class="linenos">3792</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="maybe_parse-3793"><a href="#maybe_parse-3793"><span class="linenos">3793</span></a> <span class="k">return</span> <span class="n">sql_or_expression</span> +</span><span id="maybe_parse-3794"><a href="#maybe_parse-3794"><span class="linenos">3794</span></a> +</span><span id="maybe_parse-3795"><a href="#maybe_parse-3795"><span class="linenos">3795</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> +</span><span id="maybe_parse-3796"><a href="#maybe_parse-3796"><span class="linenos">3796</span></a> +</span><span id="maybe_parse-3797"><a href="#maybe_parse-3797"><span class="linenos">3797</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="p">)</span> +</span><span id="maybe_parse-3798"><a href="#maybe_parse-3798"><span class="linenos">3798</span></a> <span class="k">if</span> <span class="n">prefix</span><span class="p">:</span> +</span><span id="maybe_parse-3799"><a href="#maybe_parse-3799"><span class="linenos">3799</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="maybe_parse-3800"><a href="#maybe_parse-3800"><span class="linenos">3800</span></a> <span class="k">return</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">parse_one</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">read</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">into</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -38688,29 +39570,29 @@ that an input expression is a SQL string).</li> </div> <a class="headerlink" href="#union"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="union-3888"><a href="#union-3888"><span class="linenos">3888</span></a><span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="union-3889"><a href="#union-3889"><span class="linenos">3889</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="union-3890"><a href="#union-3890"><span class="linenos">3890</span></a><span class="sd"> Initializes a syntax tree from one UNION expression.</span> -</span><span id="union-3891"><a href="#union-3891"><span class="linenos">3891</span></a> -</span><span id="union-3892"><a href="#union-3892"><span class="linenos">3892</span></a><span class="sd"> Example:</span> -</span><span id="union-3893"><a href="#union-3893"><span class="linenos">3893</span></a><span class="sd"> >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="union-3894"><a href="#union-3894"><span class="linenos">3894</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> -</span><span id="union-3895"><a href="#union-3895"><span class="linenos">3895</span></a> -</span><span id="union-3896"><a href="#union-3896"><span class="linenos">3896</span></a><span class="sd"> Args:</span> -</span><span id="union-3897"><a href="#union-3897"><span class="linenos">3897</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> -</span><span id="union-3898"><a href="#union-3898"><span class="linenos">3898</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="union-3899"><a href="#union-3899"><span class="linenos">3899</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> -</span><span id="union-3900"><a href="#union-3900"><span class="linenos">3900</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="union-3901"><a href="#union-3901"><span class="linenos">3901</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="union-3902"><a href="#union-3902"><span class="linenos">3902</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="union-3903"><a href="#union-3903"><span class="linenos">3903</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="union-3904"><a href="#union-3904"><span class="linenos">3904</span></a><span class="sd"> Returns:</span> -</span><span id="union-3905"><a href="#union-3905"><span class="linenos">3905</span></a><span class="sd"> Union: the syntax tree for the UNION expression.</span> -</span><span id="union-3906"><a href="#union-3906"><span class="linenos">3906</span></a><span class="sd"> """</span> -</span><span id="union-3907"><a href="#union-3907"><span class="linenos">3907</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="union-3908"><a href="#union-3908"><span class="linenos">3908</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="union-3909"><a href="#union-3909"><span class="linenos">3909</span></a> -</span><span id="union-3910"><a href="#union-3910"><span class="linenos">3910</span></a> <span class="k">return</span> <span class="n">Union</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="union-3946"><a href="#union-3946"><span class="linenos">3946</span></a><span class="k">def</span> <span class="nf">union</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="union-3947"><a href="#union-3947"><span class="linenos">3947</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="union-3948"><a href="#union-3948"><span class="linenos">3948</span></a><span class="sd"> Initializes a syntax tree from one UNION expression.</span> +</span><span id="union-3949"><a href="#union-3949"><span class="linenos">3949</span></a> +</span><span id="union-3950"><a href="#union-3950"><span class="linenos">3950</span></a><span class="sd"> Example:</span> +</span><span id="union-3951"><a href="#union-3951"><span class="linenos">3951</span></a><span class="sd"> >>> union("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="union-3952"><a href="#union-3952"><span class="linenos">3952</span></a><span class="sd"> 'SELECT * FROM foo UNION SELECT * FROM bla'</span> +</span><span id="union-3953"><a href="#union-3953"><span class="linenos">3953</span></a> +</span><span id="union-3954"><a href="#union-3954"><span class="linenos">3954</span></a><span class="sd"> Args:</span> +</span><span id="union-3955"><a href="#union-3955"><span class="linenos">3955</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> +</span><span id="union-3956"><a href="#union-3956"><span class="linenos">3956</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="union-3957"><a href="#union-3957"><span class="linenos">3957</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> +</span><span id="union-3958"><a href="#union-3958"><span class="linenos">3958</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="union-3959"><a href="#union-3959"><span class="linenos">3959</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="union-3960"><a href="#union-3960"><span class="linenos">3960</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="union-3961"><a href="#union-3961"><span class="linenos">3961</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="union-3962"><a href="#union-3962"><span class="linenos">3962</span></a><span class="sd"> Returns:</span> +</span><span id="union-3963"><a href="#union-3963"><span class="linenos">3963</span></a><span class="sd"> Union: the syntax tree for the UNION expression.</span> +</span><span id="union-3964"><a href="#union-3964"><span class="linenos">3964</span></a><span class="sd"> """</span> +</span><span id="union-3965"><a href="#union-3965"><span class="linenos">3965</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="union-3966"><a href="#union-3966"><span class="linenos">3966</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="union-3967"><a href="#union-3967"><span class="linenos">3967</span></a> +</span><span id="union-3968"><a href="#union-3968"><span class="linenos">3968</span></a> <span class="k">return</span> <span class="n">Union</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> </span></pre></div> @@ -38758,29 +39640,29 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#intersect"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="intersect-3913"><a href="#intersect-3913"><span class="linenos">3913</span></a><span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="intersect-3914"><a href="#intersect-3914"><span class="linenos">3914</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="intersect-3915"><a href="#intersect-3915"><span class="linenos">3915</span></a><span class="sd"> Initializes a syntax tree from one INTERSECT expression.</span> -</span><span id="intersect-3916"><a href="#intersect-3916"><span class="linenos">3916</span></a> -</span><span id="intersect-3917"><a href="#intersect-3917"><span class="linenos">3917</span></a><span class="sd"> Example:</span> -</span><span id="intersect-3918"><a href="#intersect-3918"><span class="linenos">3918</span></a><span class="sd"> >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="intersect-3919"><a href="#intersect-3919"><span class="linenos">3919</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> -</span><span id="intersect-3920"><a href="#intersect-3920"><span class="linenos">3920</span></a> -</span><span id="intersect-3921"><a href="#intersect-3921"><span class="linenos">3921</span></a><span class="sd"> Args:</span> -</span><span id="intersect-3922"><a href="#intersect-3922"><span class="linenos">3922</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> -</span><span id="intersect-3923"><a href="#intersect-3923"><span class="linenos">3923</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="intersect-3924"><a href="#intersect-3924"><span class="linenos">3924</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> -</span><span id="intersect-3925"><a href="#intersect-3925"><span class="linenos">3925</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="intersect-3926"><a href="#intersect-3926"><span class="linenos">3926</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="intersect-3927"><a href="#intersect-3927"><span class="linenos">3927</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="intersect-3928"><a href="#intersect-3928"><span class="linenos">3928</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="intersect-3929"><a href="#intersect-3929"><span class="linenos">3929</span></a><span class="sd"> Returns:</span> -</span><span id="intersect-3930"><a href="#intersect-3930"><span class="linenos">3930</span></a><span class="sd"> Intersect: the syntax tree for the INTERSECT expression.</span> -</span><span id="intersect-3931"><a href="#intersect-3931"><span class="linenos">3931</span></a><span class="sd"> """</span> -</span><span id="intersect-3932"><a href="#intersect-3932"><span class="linenos">3932</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="intersect-3933"><a href="#intersect-3933"><span class="linenos">3933</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="intersect-3934"><a href="#intersect-3934"><span class="linenos">3934</span></a> -</span><span id="intersect-3935"><a href="#intersect-3935"><span class="linenos">3935</span></a> <span class="k">return</span> <span class="n">Intersect</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="intersect-3971"><a href="#intersect-3971"><span class="linenos">3971</span></a><span class="k">def</span> <span class="nf">intersect</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="intersect-3972"><a href="#intersect-3972"><span class="linenos">3972</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="intersect-3973"><a href="#intersect-3973"><span class="linenos">3973</span></a><span class="sd"> Initializes a syntax tree from one INTERSECT expression.</span> +</span><span id="intersect-3974"><a href="#intersect-3974"><span class="linenos">3974</span></a> +</span><span id="intersect-3975"><a href="#intersect-3975"><span class="linenos">3975</span></a><span class="sd"> Example:</span> +</span><span id="intersect-3976"><a href="#intersect-3976"><span class="linenos">3976</span></a><span class="sd"> >>> intersect("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="intersect-3977"><a href="#intersect-3977"><span class="linenos">3977</span></a><span class="sd"> 'SELECT * FROM foo INTERSECT SELECT * FROM bla'</span> +</span><span id="intersect-3978"><a href="#intersect-3978"><span class="linenos">3978</span></a> +</span><span id="intersect-3979"><a href="#intersect-3979"><span class="linenos">3979</span></a><span class="sd"> Args:</span> +</span><span id="intersect-3980"><a href="#intersect-3980"><span class="linenos">3980</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> +</span><span id="intersect-3981"><a href="#intersect-3981"><span class="linenos">3981</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="intersect-3982"><a href="#intersect-3982"><span class="linenos">3982</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> +</span><span id="intersect-3983"><a href="#intersect-3983"><span class="linenos">3983</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="intersect-3984"><a href="#intersect-3984"><span class="linenos">3984</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="intersect-3985"><a href="#intersect-3985"><span class="linenos">3985</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="intersect-3986"><a href="#intersect-3986"><span class="linenos">3986</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="intersect-3987"><a href="#intersect-3987"><span class="linenos">3987</span></a><span class="sd"> Returns:</span> +</span><span id="intersect-3988"><a href="#intersect-3988"><span class="linenos">3988</span></a><span class="sd"> Intersect: the syntax tree for the INTERSECT expression.</span> +</span><span id="intersect-3989"><a href="#intersect-3989"><span class="linenos">3989</span></a><span class="sd"> """</span> +</span><span id="intersect-3990"><a href="#intersect-3990"><span class="linenos">3990</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="intersect-3991"><a href="#intersect-3991"><span class="linenos">3991</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="intersect-3992"><a href="#intersect-3992"><span class="linenos">3992</span></a> +</span><span id="intersect-3993"><a href="#intersect-3993"><span class="linenos">3993</span></a> <span class="k">return</span> <span class="n">Intersect</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> </span></pre></div> @@ -38828,29 +39710,29 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#except_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="except_-3938"><a href="#except_-3938"><span class="linenos">3938</span></a><span class="k">def</span> <span class="nf">except_</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="except_-3939"><a href="#except_-3939"><span class="linenos">3939</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="except_-3940"><a href="#except_-3940"><span class="linenos">3940</span></a><span class="sd"> Initializes a syntax tree from one EXCEPT expression.</span> -</span><span id="except_-3941"><a href="#except_-3941"><span class="linenos">3941</span></a> -</span><span id="except_-3942"><a href="#except_-3942"><span class="linenos">3942</span></a><span class="sd"> Example:</span> -</span><span id="except_-3943"><a href="#except_-3943"><span class="linenos">3943</span></a><span class="sd"> >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> -</span><span id="except_-3944"><a href="#except_-3944"><span class="linenos">3944</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> -</span><span id="except_-3945"><a href="#except_-3945"><span class="linenos">3945</span></a> -</span><span id="except_-3946"><a href="#except_-3946"><span class="linenos">3946</span></a><span class="sd"> Args:</span> -</span><span id="except_-3947"><a href="#except_-3947"><span class="linenos">3947</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> -</span><span id="except_-3948"><a href="#except_-3948"><span class="linenos">3948</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="except_-3949"><a href="#except_-3949"><span class="linenos">3949</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> -</span><span id="except_-3950"><a href="#except_-3950"><span class="linenos">3950</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> -</span><span id="except_-3951"><a href="#except_-3951"><span class="linenos">3951</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> -</span><span id="except_-3952"><a href="#except_-3952"><span class="linenos">3952</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="except_-3953"><a href="#except_-3953"><span class="linenos">3953</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> -</span><span id="except_-3954"><a href="#except_-3954"><span class="linenos">3954</span></a><span class="sd"> Returns:</span> -</span><span id="except_-3955"><a href="#except_-3955"><span class="linenos">3955</span></a><span class="sd"> Except: the syntax tree for the EXCEPT statement.</span> -</span><span id="except_-3956"><a href="#except_-3956"><span class="linenos">3956</span></a><span class="sd"> """</span> -</span><span id="except_-3957"><a href="#except_-3957"><span class="linenos">3957</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="except_-3958"><a href="#except_-3958"><span class="linenos">3958</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="except_-3959"><a href="#except_-3959"><span class="linenos">3959</span></a> -</span><span id="except_-3960"><a href="#except_-3960"><span class="linenos">3960</span></a> <span class="k">return</span> <span class="n">Except</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="except_-3996"><a href="#except_-3996"><span class="linenos">3996</span></a><span class="k">def</span> <span class="nf">except_</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="except_-3997"><a href="#except_-3997"><span class="linenos">3997</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="except_-3998"><a href="#except_-3998"><span class="linenos">3998</span></a><span class="sd"> Initializes a syntax tree from one EXCEPT expression.</span> +</span><span id="except_-3999"><a href="#except_-3999"><span class="linenos">3999</span></a> +</span><span id="except_-4000"><a href="#except_-4000"><span class="linenos">4000</span></a><span class="sd"> Example:</span> +</span><span id="except_-4001"><a href="#except_-4001"><span class="linenos">4001</span></a><span class="sd"> >>> except_("SELECT * FROM foo", "SELECT * FROM bla").sql()</span> +</span><span id="except_-4002"><a href="#except_-4002"><span class="linenos">4002</span></a><span class="sd"> 'SELECT * FROM foo EXCEPT SELECT * FROM bla'</span> +</span><span id="except_-4003"><a href="#except_-4003"><span class="linenos">4003</span></a> +</span><span id="except_-4004"><a href="#except_-4004"><span class="linenos">4004</span></a><span class="sd"> Args:</span> +</span><span id="except_-4005"><a href="#except_-4005"><span class="linenos">4005</span></a><span class="sd"> left (str | Expression): the SQL code string corresponding to the left-hand side.</span> +</span><span id="except_-4006"><a href="#except_-4006"><span class="linenos">4006</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="except_-4007"><a href="#except_-4007"><span class="linenos">4007</span></a><span class="sd"> right (str | Expression): the SQL code string corresponding to the right-hand side.</span> +</span><span id="except_-4008"><a href="#except_-4008"><span class="linenos">4008</span></a><span class="sd"> If an `Expression` instance is passed, it will be used as-is.</span> +</span><span id="except_-4009"><a href="#except_-4009"><span class="linenos">4009</span></a><span class="sd"> distinct (bool): set the DISTINCT flag if and only if this is true.</span> +</span><span id="except_-4010"><a href="#except_-4010"><span class="linenos">4010</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="except_-4011"><a href="#except_-4011"><span class="linenos">4011</span></a><span class="sd"> opts (kwargs): other options to use to parse the input expressions.</span> +</span><span id="except_-4012"><a href="#except_-4012"><span class="linenos">4012</span></a><span class="sd"> Returns:</span> +</span><span id="except_-4013"><a href="#except_-4013"><span class="linenos">4013</span></a><span class="sd"> Except: the syntax tree for the EXCEPT statement.</span> +</span><span id="except_-4014"><a href="#except_-4014"><span class="linenos">4014</span></a><span class="sd"> """</span> +</span><span id="except_-4015"><a href="#except_-4015"><span class="linenos">4015</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="except_-4016"><a href="#except_-4016"><span class="linenos">4016</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">sql_or_expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="except_-4017"><a href="#except_-4017"><span class="linenos">4017</span></a> +</span><span id="except_-4018"><a href="#except_-4018"><span class="linenos">4018</span></a> <span class="k">return</span> <span class="n">Except</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">left</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">right</span><span class="p">,</span> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">)</span> </span></pre></div> @@ -38898,26 +39780,26 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w </div> <a class="headerlink" href="#select"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="select-3963"><a href="#select-3963"><span class="linenos">3963</span></a><span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="select-3964"><a href="#select-3964"><span class="linenos">3964</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="select-3965"><a href="#select-3965"><span class="linenos">3965</span></a><span class="sd"> Initializes a syntax tree from one or multiple SELECT expressions.</span> -</span><span id="select-3966"><a href="#select-3966"><span class="linenos">3966</span></a> -</span><span id="select-3967"><a href="#select-3967"><span class="linenos">3967</span></a><span class="sd"> Example:</span> -</span><span id="select-3968"><a href="#select-3968"><span class="linenos">3968</span></a><span class="sd"> >>> select("col1", "col2").from_("tbl").sql()</span> -</span><span id="select-3969"><a href="#select-3969"><span class="linenos">3969</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> -</span><span id="select-3970"><a href="#select-3970"><span class="linenos">3970</span></a> -</span><span id="select-3971"><a href="#select-3971"><span class="linenos">3971</span></a><span class="sd"> Args:</span> -</span><span id="select-3972"><a href="#select-3972"><span class="linenos">3972</span></a><span class="sd"> *expressions: the SQL code string to parse as the expressions of a</span> -</span><span id="select-3973"><a href="#select-3973"><span class="linenos">3973</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> -</span><span id="select-3974"><a href="#select-3974"><span class="linenos">3974</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> -</span><span id="select-3975"><a href="#select-3975"><span class="linenos">3975</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="select-3976"><a href="#select-3976"><span class="linenos">3976</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="select-3977"><a href="#select-3977"><span class="linenos">3977</span></a><span class="sd"> that an input expression is a SQL string).</span> -</span><span id="select-3978"><a href="#select-3978"><span class="linenos">3978</span></a> -</span><span id="select-3979"><a href="#select-3979"><span class="linenos">3979</span></a><span class="sd"> Returns:</span> -</span><span id="select-3980"><a href="#select-3980"><span class="linenos">3980</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> -</span><span id="select-3981"><a href="#select-3981"><span class="linenos">3981</span></a><span class="sd"> """</span> -</span><span id="select-3982"><a href="#select-3982"><span class="linenos">3982</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="select-4021"><a href="#select-4021"><span class="linenos">4021</span></a><span class="k">def</span> <span class="nf">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="select-4022"><a href="#select-4022"><span class="linenos">4022</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="select-4023"><a href="#select-4023"><span class="linenos">4023</span></a><span class="sd"> Initializes a syntax tree from one or multiple SELECT expressions.</span> +</span><span id="select-4024"><a href="#select-4024"><span class="linenos">4024</span></a> +</span><span id="select-4025"><a href="#select-4025"><span class="linenos">4025</span></a><span class="sd"> Example:</span> +</span><span id="select-4026"><a href="#select-4026"><span class="linenos">4026</span></a><span class="sd"> >>> select("col1", "col2").from_("tbl").sql()</span> +</span><span id="select-4027"><a href="#select-4027"><span class="linenos">4027</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="select-4028"><a href="#select-4028"><span class="linenos">4028</span></a> +</span><span id="select-4029"><a href="#select-4029"><span class="linenos">4029</span></a><span class="sd"> Args:</span> +</span><span id="select-4030"><a href="#select-4030"><span class="linenos">4030</span></a><span class="sd"> *expressions: the SQL code string to parse as the expressions of a</span> +</span><span id="select-4031"><a href="#select-4031"><span class="linenos">4031</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> +</span><span id="select-4032"><a href="#select-4032"><span class="linenos">4032</span></a><span class="sd"> dialect: the dialect used to parse the input expressions (in the case that an</span> +</span><span id="select-4033"><a href="#select-4033"><span class="linenos">4033</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="select-4034"><a href="#select-4034"><span class="linenos">4034</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="select-4035"><a href="#select-4035"><span class="linenos">4035</span></a><span class="sd"> that an input expression is a SQL string).</span> +</span><span id="select-4036"><a href="#select-4036"><span class="linenos">4036</span></a> +</span><span id="select-4037"><a href="#select-4037"><span class="linenos">4037</span></a><span class="sd"> Returns:</span> +</span><span id="select-4038"><a href="#select-4038"><span class="linenos">4038</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> +</span><span id="select-4039"><a href="#select-4039"><span class="linenos">4039</span></a><span class="sd"> """</span> +</span><span id="select-4040"><a href="#select-4040"><span class="linenos">4040</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -38964,26 +39846,26 @@ that an input expression is a SQL string).</li> </div> <a class="headerlink" href="#from_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="from_-3985"><a href="#from_-3985"><span class="linenos">3985</span></a><span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> -</span><span id="from_-3986"><a href="#from_-3986"><span class="linenos">3986</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="from_-3987"><a href="#from_-3987"><span class="linenos">3987</span></a><span class="sd"> Initializes a syntax tree from a FROM expression.</span> -</span><span id="from_-3988"><a href="#from_-3988"><span class="linenos">3988</span></a> -</span><span id="from_-3989"><a href="#from_-3989"><span class="linenos">3989</span></a><span class="sd"> Example:</span> -</span><span id="from_-3990"><a href="#from_-3990"><span class="linenos">3990</span></a><span class="sd"> >>> from_("tbl").select("col1", "col2").sql()</span> -</span><span id="from_-3991"><a href="#from_-3991"><span class="linenos">3991</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> -</span><span id="from_-3992"><a href="#from_-3992"><span class="linenos">3992</span></a> -</span><span id="from_-3993"><a href="#from_-3993"><span class="linenos">3993</span></a><span class="sd"> Args:</span> -</span><span id="from_-3994"><a href="#from_-3994"><span class="linenos">3994</span></a><span class="sd"> *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a</span> -</span><span id="from_-3995"><a href="#from_-3995"><span class="linenos">3995</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> -</span><span id="from_-3996"><a href="#from_-3996"><span class="linenos">3996</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression (in the case that the</span> -</span><span id="from_-3997"><a href="#from_-3997"><span class="linenos">3997</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="from_-3998"><a href="#from_-3998"><span class="linenos">3998</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="from_-3999"><a href="#from_-3999"><span class="linenos">3999</span></a><span class="sd"> that the input expression is a SQL string).</span> -</span><span id="from_-4000"><a href="#from_-4000"><span class="linenos">4000</span></a> -</span><span id="from_-4001"><a href="#from_-4001"><span class="linenos">4001</span></a><span class="sd"> Returns:</span> -</span><span id="from_-4002"><a href="#from_-4002"><span class="linenos">4002</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> -</span><span id="from_-4003"><a href="#from_-4003"><span class="linenos">4003</span></a><span class="sd"> """</span> -</span><span id="from_-4004"><a href="#from_-4004"><span class="linenos">4004</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="from_-4043"><a href="#from_-4043"><span class="linenos">4043</span></a><span class="k">def</span> <span class="nf">from_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Select</span><span class="p">:</span> +</span><span id="from_-4044"><a href="#from_-4044"><span class="linenos">4044</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="from_-4045"><a href="#from_-4045"><span class="linenos">4045</span></a><span class="sd"> Initializes a syntax tree from a FROM expression.</span> +</span><span id="from_-4046"><a href="#from_-4046"><span class="linenos">4046</span></a> +</span><span id="from_-4047"><a href="#from_-4047"><span class="linenos">4047</span></a><span class="sd"> Example:</span> +</span><span id="from_-4048"><a href="#from_-4048"><span class="linenos">4048</span></a><span class="sd"> >>> from_("tbl").select("col1", "col2").sql()</span> +</span><span id="from_-4049"><a href="#from_-4049"><span class="linenos">4049</span></a><span class="sd"> 'SELECT col1, col2 FROM tbl'</span> +</span><span id="from_-4050"><a href="#from_-4050"><span class="linenos">4050</span></a> +</span><span id="from_-4051"><a href="#from_-4051"><span class="linenos">4051</span></a><span class="sd"> Args:</span> +</span><span id="from_-4052"><a href="#from_-4052"><span class="linenos">4052</span></a><span class="sd"> *expressions (str | Expression): the SQL code string to parse as the FROM expressions of a</span> +</span><span id="from_-4053"><a href="#from_-4053"><span class="linenos">4053</span></a><span class="sd"> SELECT statement. If an Expression instance is passed, this is used as-is.</span> +</span><span id="from_-4054"><a href="#from_-4054"><span class="linenos">4054</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression (in the case that the</span> +</span><span id="from_-4055"><a href="#from_-4055"><span class="linenos">4055</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="from_-4056"><a href="#from_-4056"><span class="linenos">4056</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="from_-4057"><a href="#from_-4057"><span class="linenos">4057</span></a><span class="sd"> that the input expression is a SQL string).</span> +</span><span id="from_-4058"><a href="#from_-4058"><span class="linenos">4058</span></a> +</span><span id="from_-4059"><a href="#from_-4059"><span class="linenos">4059</span></a><span class="sd"> Returns:</span> +</span><span id="from_-4060"><a href="#from_-4060"><span class="linenos">4060</span></a><span class="sd"> Select: the syntax tree for the SELECT statement.</span> +</span><span id="from_-4061"><a href="#from_-4061"><span class="linenos">4061</span></a><span class="sd"> """</span> +</span><span id="from_-4062"><a href="#from_-4062"><span class="linenos">4062</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -39030,46 +39912,46 @@ that the input expression is a SQL string).</li> </div> <a class="headerlink" href="#update"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="update-4007"><a href="#update-4007"><span class="linenos">4007</span></a><span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Update</span><span class="p">:</span> -</span><span id="update-4008"><a href="#update-4008"><span class="linenos">4008</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="update-4009"><a href="#update-4009"><span class="linenos">4009</span></a><span class="sd"> Creates an update statement.</span> -</span><span id="update-4010"><a href="#update-4010"><span class="linenos">4010</span></a> -</span><span id="update-4011"><a href="#update-4011"><span class="linenos">4011</span></a><span class="sd"> Example:</span> -</span><span id="update-4012"><a href="#update-4012"><span class="linenos">4012</span></a><span class="sd"> >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()</span> -</span><span id="update-4013"><a href="#update-4013"><span class="linenos">4013</span></a><span class="sd"> "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"</span> -</span><span id="update-4014"><a href="#update-4014"><span class="linenos">4014</span></a> -</span><span id="update-4015"><a href="#update-4015"><span class="linenos">4015</span></a><span class="sd"> Args:</span> -</span><span id="update-4016"><a href="#update-4016"><span class="linenos">4016</span></a><span class="sd"> *properties (Dict[str, Any]): dictionary of properties to set which are</span> -</span><span id="update-4017"><a href="#update-4017"><span class="linenos">4017</span></a><span class="sd"> auto converted to sql objects eg None -> NULL</span> -</span><span id="update-4018"><a href="#update-4018"><span class="linenos">4018</span></a><span class="sd"> where (str): sql conditional parsed into a WHERE statement</span> -</span><span id="update-4019"><a href="#update-4019"><span class="linenos">4019</span></a><span class="sd"> from_ (str): sql statement parsed into a FROM statement</span> -</span><span id="update-4020"><a href="#update-4020"><span class="linenos">4020</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="update-4021"><a href="#update-4021"><span class="linenos">4021</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="update-4022"><a href="#update-4022"><span class="linenos">4022</span></a> -</span><span id="update-4023"><a href="#update-4023"><span class="linenos">4023</span></a><span class="sd"> Returns:</span> -</span><span id="update-4024"><a href="#update-4024"><span class="linenos">4024</span></a><span class="sd"> Update: the syntax tree for the UPDATE statement.</span> -</span><span id="update-4025"><a href="#update-4025"><span class="linenos">4025</span></a><span class="sd"> """</span> -</span><span id="update-4026"><a href="#update-4026"><span class="linenos">4026</span></a> <span class="n">update</span> <span class="o">=</span> <span class="n">Update</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">))</span> -</span><span id="update-4027"><a href="#update-4027"><span class="linenos">4027</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="update-4028"><a href="#update-4028"><span class="linenos">4028</span></a> <span class="s2">"expressions"</span><span class="p">,</span> -</span><span id="update-4029"><a href="#update-4029"><span class="linenos">4029</span></a> <span class="p">[</span> -</span><span id="update-4030"><a href="#update-4030"><span class="linenos">4030</span></a> <span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> -</span><span id="update-4031"><a href="#update-4031"><span class="linenos">4031</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="update-4032"><a href="#update-4032"><span class="linenos">4032</span></a> <span class="p">],</span> -</span><span id="update-4033"><a href="#update-4033"><span class="linenos">4033</span></a> <span class="p">)</span> -</span><span id="update-4034"><a href="#update-4034"><span class="linenos">4034</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="update-4035"><a href="#update-4035"><span class="linenos">4035</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="update-4036"><a href="#update-4036"><span class="linenos">4036</span></a> <span class="s2">"from"</span><span class="p">,</span> -</span><span id="update-4037"><a href="#update-4037"><span class="linenos">4037</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">from_</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="update-4038"><a href="#update-4038"><span class="linenos">4038</span></a> <span class="p">)</span> -</span><span id="update-4039"><a href="#update-4039"><span class="linenos">4039</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> -</span><span id="update-4040"><a href="#update-4040"><span class="linenos">4040</span></a> <span class="n">where</span> <span class="o">=</span> <span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> -</span><span id="update-4041"><a href="#update-4041"><span class="linenos">4041</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> -</span><span id="update-4042"><a href="#update-4042"><span class="linenos">4042</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="update-4043"><a href="#update-4043"><span class="linenos">4043</span></a> <span class="s2">"where"</span><span class="p">,</span> -</span><span id="update-4044"><a href="#update-4044"><span class="linenos">4044</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="update-4045"><a href="#update-4045"><span class="linenos">4045</span></a> <span class="p">)</span> -</span><span id="update-4046"><a href="#update-4046"><span class="linenos">4046</span></a> <span class="k">return</span> <span class="n">update</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="update-4065"><a href="#update-4065"><span class="linenos">4065</span></a><span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">properties</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">from_</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Update</span><span class="p">:</span> +</span><span id="update-4066"><a href="#update-4066"><span class="linenos">4066</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="update-4067"><a href="#update-4067"><span class="linenos">4067</span></a><span class="sd"> Creates an update statement.</span> +</span><span id="update-4068"><a href="#update-4068"><span class="linenos">4068</span></a> +</span><span id="update-4069"><a href="#update-4069"><span class="linenos">4069</span></a><span class="sd"> Example:</span> +</span><span id="update-4070"><a href="#update-4070"><span class="linenos">4070</span></a><span class="sd"> >>> update("my_table", {"x": 1, "y": "2", "z": None}, from_="baz", where="id > 1").sql()</span> +</span><span id="update-4071"><a href="#update-4071"><span class="linenos">4071</span></a><span class="sd"> "UPDATE my_table SET x = 1, y = '2', z = NULL FROM baz WHERE id > 1"</span> +</span><span id="update-4072"><a href="#update-4072"><span class="linenos">4072</span></a> +</span><span id="update-4073"><a href="#update-4073"><span class="linenos">4073</span></a><span class="sd"> Args:</span> +</span><span id="update-4074"><a href="#update-4074"><span class="linenos">4074</span></a><span class="sd"> *properties (Dict[str, Any]): dictionary of properties to set which are</span> +</span><span id="update-4075"><a href="#update-4075"><span class="linenos">4075</span></a><span class="sd"> auto converted to sql objects eg None -> NULL</span> +</span><span id="update-4076"><a href="#update-4076"><span class="linenos">4076</span></a><span class="sd"> where (str): sql conditional parsed into a WHERE statement</span> +</span><span id="update-4077"><a href="#update-4077"><span class="linenos">4077</span></a><span class="sd"> from_ (str): sql statement parsed into a FROM statement</span> +</span><span id="update-4078"><a href="#update-4078"><span class="linenos">4078</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="update-4079"><a href="#update-4079"><span class="linenos">4079</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="update-4080"><a href="#update-4080"><span class="linenos">4080</span></a> +</span><span id="update-4081"><a href="#update-4081"><span class="linenos">4081</span></a><span class="sd"> Returns:</span> +</span><span id="update-4082"><a href="#update-4082"><span class="linenos">4082</span></a><span class="sd"> Update: the syntax tree for the UPDATE statement.</span> +</span><span id="update-4083"><a href="#update-4083"><span class="linenos">4083</span></a><span class="sd"> """</span> +</span><span id="update-4084"><a href="#update-4084"><span class="linenos">4084</span></a> <span class="n">update</span> <span class="o">=</span> <span class="n">Update</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">))</span> +</span><span id="update-4085"><a href="#update-4085"><span class="linenos">4085</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="update-4086"><a href="#update-4086"><span class="linenos">4086</span></a> <span class="s2">"expressions"</span><span class="p">,</span> +</span><span id="update-4087"><a href="#update-4087"><span class="linenos">4087</span></a> <span class="p">[</span> +</span><span id="update-4088"><a href="#update-4088"><span class="linenos">4088</span></a> <span class="n">EQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">))</span> +</span><span id="update-4089"><a href="#update-4089"><span class="linenos">4089</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="update-4090"><a href="#update-4090"><span class="linenos">4090</span></a> <span class="p">],</span> +</span><span id="update-4091"><a href="#update-4091"><span class="linenos">4091</span></a> <span class="p">)</span> +</span><span id="update-4092"><a href="#update-4092"><span class="linenos">4092</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="update-4093"><a href="#update-4093"><span class="linenos">4093</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="update-4094"><a href="#update-4094"><span class="linenos">4094</span></a> <span class="s2">"from"</span><span class="p">,</span> +</span><span id="update-4095"><a href="#update-4095"><span class="linenos">4095</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">from_</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">From</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"FROM"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="update-4096"><a href="#update-4096"><span class="linenos">4096</span></a> <span class="p">)</span> +</span><span id="update-4097"><a href="#update-4097"><span class="linenos">4097</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">):</span> +</span><span id="update-4098"><a href="#update-4098"><span class="linenos">4098</span></a> <span class="n">where</span> <span class="o">=</span> <span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> +</span><span id="update-4099"><a href="#update-4099"><span class="linenos">4099</span></a> <span class="k">if</span> <span class="n">where</span><span class="p">:</span> +</span><span id="update-4100"><a href="#update-4100"><span class="linenos">4100</span></a> <span class="n">update</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="update-4101"><a href="#update-4101"><span class="linenos">4101</span></a> <span class="s2">"where"</span><span class="p">,</span> +</span><span id="update-4102"><a href="#update-4102"><span class="linenos">4102</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="update-4103"><a href="#update-4103"><span class="linenos">4103</span></a> <span class="p">)</span> +</span><span id="update-4104"><a href="#update-4104"><span class="linenos">4104</span></a> <span class="k">return</span> <span class="n">update</span> </span></pre></div> @@ -39116,28 +39998,28 @@ auto converted to sql objects eg None -> NULL</li> </div> <a class="headerlink" href="#delete"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="delete-4049"><a href="#delete-4049"><span class="linenos">4049</span></a><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Delete</span><span class="p">:</span> -</span><span id="delete-4050"><a href="#delete-4050"><span class="linenos">4050</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="delete-4051"><a href="#delete-4051"><span class="linenos">4051</span></a><span class="sd"> Builds a delete statement.</span> -</span><span id="delete-4052"><a href="#delete-4052"><span class="linenos">4052</span></a> -</span><span id="delete-4053"><a href="#delete-4053"><span class="linenos">4053</span></a><span class="sd"> Example:</span> -</span><span id="delete-4054"><a href="#delete-4054"><span class="linenos">4054</span></a><span class="sd"> >>> delete("my_table", where="id > 1").sql()</span> -</span><span id="delete-4055"><a href="#delete-4055"><span class="linenos">4055</span></a><span class="sd"> 'DELETE FROM my_table WHERE id > 1'</span> -</span><span id="delete-4056"><a href="#delete-4056"><span class="linenos">4056</span></a> -</span><span id="delete-4057"><a href="#delete-4057"><span class="linenos">4057</span></a><span class="sd"> Args:</span> -</span><span id="delete-4058"><a href="#delete-4058"><span class="linenos">4058</span></a><span class="sd"> where (str|Condition): sql conditional parsed into a WHERE statement</span> -</span><span id="delete-4059"><a href="#delete-4059"><span class="linenos">4059</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> -</span><span id="delete-4060"><a href="#delete-4060"><span class="linenos">4060</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="delete-4061"><a href="#delete-4061"><span class="linenos">4061</span></a> -</span><span id="delete-4062"><a href="#delete-4062"><span class="linenos">4062</span></a><span class="sd"> Returns:</span> -</span><span id="delete-4063"><a href="#delete-4063"><span class="linenos">4063</span></a><span class="sd"> Delete: the syntax tree for the DELETE statement.</span> -</span><span id="delete-4064"><a href="#delete-4064"><span class="linenos">4064</span></a><span class="sd"> """</span> -</span><span id="delete-4065"><a href="#delete-4065"><span class="linenos">4065</span></a> <span class="k">return</span> <span class="n">Delete</span><span class="p">(</span> -</span><span id="delete-4066"><a href="#delete-4066"><span class="linenos">4066</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="delete-4067"><a href="#delete-4067"><span class="linenos">4067</span></a> <span class="n">where</span><span class="o">=</span><span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> -</span><span id="delete-4068"><a href="#delete-4068"><span class="linenos">4068</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">)</span> -</span><span id="delete-4069"><a href="#delete-4069"><span class="linenos">4069</span></a> <span class="k">else</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> -</span><span id="delete-4070"><a href="#delete-4070"><span class="linenos">4070</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="delete-4107"><a href="#delete-4107"><span class="linenos">4107</span></a><span class="k">def</span> <span class="nf">delete</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Delete</span><span class="p">:</span> +</span><span id="delete-4108"><a href="#delete-4108"><span class="linenos">4108</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="delete-4109"><a href="#delete-4109"><span class="linenos">4109</span></a><span class="sd"> Builds a delete statement.</span> +</span><span id="delete-4110"><a href="#delete-4110"><span class="linenos">4110</span></a> +</span><span id="delete-4111"><a href="#delete-4111"><span class="linenos">4111</span></a><span class="sd"> Example:</span> +</span><span id="delete-4112"><a href="#delete-4112"><span class="linenos">4112</span></a><span class="sd"> >>> delete("my_table", where="id > 1").sql()</span> +</span><span id="delete-4113"><a href="#delete-4113"><span class="linenos">4113</span></a><span class="sd"> 'DELETE FROM my_table WHERE id > 1'</span> +</span><span id="delete-4114"><a href="#delete-4114"><span class="linenos">4114</span></a> +</span><span id="delete-4115"><a href="#delete-4115"><span class="linenos">4115</span></a><span class="sd"> Args:</span> +</span><span id="delete-4116"><a href="#delete-4116"><span class="linenos">4116</span></a><span class="sd"> where (str|Condition): sql conditional parsed into a WHERE statement</span> +</span><span id="delete-4117"><a href="#delete-4117"><span class="linenos">4117</span></a><span class="sd"> dialect (str): the dialect used to parse the input expressions.</span> +</span><span id="delete-4118"><a href="#delete-4118"><span class="linenos">4118</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="delete-4119"><a href="#delete-4119"><span class="linenos">4119</span></a> +</span><span id="delete-4120"><a href="#delete-4120"><span class="linenos">4120</span></a><span class="sd"> Returns:</span> +</span><span id="delete-4121"><a href="#delete-4121"><span class="linenos">4121</span></a><span class="sd"> Delete: the syntax tree for the DELETE statement.</span> +</span><span id="delete-4122"><a href="#delete-4122"><span class="linenos">4122</span></a><span class="sd"> """</span> +</span><span id="delete-4123"><a href="#delete-4123"><span class="linenos">4123</span></a> <span class="k">return</span> <span class="n">Delete</span><span class="p">(</span> +</span><span id="delete-4124"><a href="#delete-4124"><span class="linenos">4124</span></a> <span class="n">this</span><span class="o">=</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="delete-4125"><a href="#delete-4125"><span class="linenos">4125</span></a> <span class="n">where</span><span class="o">=</span><span class="n">Where</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> +</span><span id="delete-4126"><a href="#delete-4126"><span class="linenos">4126</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">Condition</span><span class="p">)</span> +</span><span id="delete-4127"><a href="#delete-4127"><span class="linenos">4127</span></a> <span class="k">else</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">where</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Where</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"WHERE"</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">),</span> +</span><span id="delete-4128"><a href="#delete-4128"><span class="linenos">4128</span></a> <span class="p">)</span> </span></pre></div> @@ -39181,37 +40063,37 @@ auto converted to sql objects eg None -> NULL</li> </div> <a class="headerlink" href="#condition"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="condition-4073"><a href="#condition-4073"><span class="linenos">4073</span></a><span class="k">def</span> <span class="nf">condition</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="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> -</span><span id="condition-4074"><a href="#condition-4074"><span class="linenos">4074</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="condition-4075"><a href="#condition-4075"><span class="linenos">4075</span></a><span class="sd"> Initialize a logical condition expression.</span> -</span><span id="condition-4076"><a href="#condition-4076"><span class="linenos">4076</span></a> -</span><span id="condition-4077"><a href="#condition-4077"><span class="linenos">4077</span></a><span class="sd"> Example:</span> -</span><span id="condition-4078"><a href="#condition-4078"><span class="linenos">4078</span></a><span class="sd"> >>> condition("x=1").sql()</span> -</span><span id="condition-4079"><a href="#condition-4079"><span class="linenos">4079</span></a><span class="sd"> 'x = 1'</span> -</span><span id="condition-4080"><a href="#condition-4080"><span class="linenos">4080</span></a> -</span><span id="condition-4081"><a href="#condition-4081"><span class="linenos">4081</span></a><span class="sd"> This is helpful for composing larger logical syntax trees:</span> -</span><span id="condition-4082"><a href="#condition-4082"><span class="linenos">4082</span></a><span class="sd"> >>> where = condition("x=1")</span> -</span><span id="condition-4083"><a href="#condition-4083"><span class="linenos">4083</span></a><span class="sd"> >>> where = where.and_("y=1")</span> -</span><span id="condition-4084"><a href="#condition-4084"><span class="linenos">4084</span></a><span class="sd"> >>> Select().from_("tbl").select("*").where(where).sql()</span> -</span><span id="condition-4085"><a href="#condition-4085"><span class="linenos">4085</span></a><span class="sd"> 'SELECT * FROM tbl WHERE x = 1 AND y = 1'</span> -</span><span id="condition-4086"><a href="#condition-4086"><span class="linenos">4086</span></a> -</span><span id="condition-4087"><a href="#condition-4087"><span class="linenos">4087</span></a><span class="sd"> Args:</span> -</span><span id="condition-4088"><a href="#condition-4088"><span class="linenos">4088</span></a><span class="sd"> *expression (str | Expression): the SQL code string to parse.</span> -</span><span id="condition-4089"><a href="#condition-4089"><span class="linenos">4089</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="condition-4090"><a href="#condition-4090"><span class="linenos">4090</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression (in the case that the</span> -</span><span id="condition-4091"><a href="#condition-4091"><span class="linenos">4091</span></a><span class="sd"> input expression is a SQL string).</span> -</span><span id="condition-4092"><a href="#condition-4092"><span class="linenos">4092</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> -</span><span id="condition-4093"><a href="#condition-4093"><span class="linenos">4093</span></a><span class="sd"> that the input expression is a SQL string).</span> -</span><span id="condition-4094"><a href="#condition-4094"><span class="linenos">4094</span></a> -</span><span id="condition-4095"><a href="#condition-4095"><span class="linenos">4095</span></a><span class="sd"> Returns:</span> -</span><span id="condition-4096"><a href="#condition-4096"><span class="linenos">4096</span></a><span class="sd"> Condition: the expression</span> -</span><span id="condition-4097"><a href="#condition-4097"><span class="linenos">4097</span></a><span class="sd"> """</span> -</span><span id="condition-4098"><a href="#condition-4098"><span class="linenos">4098</span></a> <span class="k">return</span> <span class="n">maybe_parse</span><span class="p">(</span> <span class="c1"># type: ignore</span> -</span><span id="condition-4099"><a href="#condition-4099"><span class="linenos">4099</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="condition-4100"><a href="#condition-4100"><span class="linenos">4100</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Condition</span><span class="p">,</span> -</span><span id="condition-4101"><a href="#condition-4101"><span class="linenos">4101</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="condition-4102"><a href="#condition-4102"><span class="linenos">4102</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="condition-4103"><a href="#condition-4103"><span class="linenos">4103</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="condition-4131"><a href="#condition-4131"><span class="linenos">4131</span></a><span class="k">def</span> <span class="nf">condition</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="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Condition</span><span class="p">:</span> +</span><span id="condition-4132"><a href="#condition-4132"><span class="linenos">4132</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="condition-4133"><a href="#condition-4133"><span class="linenos">4133</span></a><span class="sd"> Initialize a logical condition expression.</span> +</span><span id="condition-4134"><a href="#condition-4134"><span class="linenos">4134</span></a> +</span><span id="condition-4135"><a href="#condition-4135"><span class="linenos">4135</span></a><span class="sd"> Example:</span> +</span><span id="condition-4136"><a href="#condition-4136"><span class="linenos">4136</span></a><span class="sd"> >>> condition("x=1").sql()</span> +</span><span id="condition-4137"><a href="#condition-4137"><span class="linenos">4137</span></a><span class="sd"> 'x = 1'</span> +</span><span id="condition-4138"><a href="#condition-4138"><span class="linenos">4138</span></a> +</span><span id="condition-4139"><a href="#condition-4139"><span class="linenos">4139</span></a><span class="sd"> This is helpful for composing larger logical syntax trees:</span> +</span><span id="condition-4140"><a href="#condition-4140"><span class="linenos">4140</span></a><span class="sd"> >>> where = condition("x=1")</span> +</span><span id="condition-4141"><a href="#condition-4141"><span class="linenos">4141</span></a><span class="sd"> >>> where = where.and_("y=1")</span> +</span><span id="condition-4142"><a href="#condition-4142"><span class="linenos">4142</span></a><span class="sd"> >>> Select().from_("tbl").select("*").where(where).sql()</span> +</span><span id="condition-4143"><a href="#condition-4143"><span class="linenos">4143</span></a><span class="sd"> 'SELECT * FROM tbl WHERE x = 1 AND y = 1'</span> +</span><span id="condition-4144"><a href="#condition-4144"><span class="linenos">4144</span></a> +</span><span id="condition-4145"><a href="#condition-4145"><span class="linenos">4145</span></a><span class="sd"> Args:</span> +</span><span id="condition-4146"><a href="#condition-4146"><span class="linenos">4146</span></a><span class="sd"> *expression (str | Expression): the SQL code string to parse.</span> +</span><span id="condition-4147"><a href="#condition-4147"><span class="linenos">4147</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="condition-4148"><a href="#condition-4148"><span class="linenos">4148</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression (in the case that the</span> +</span><span id="condition-4149"><a href="#condition-4149"><span class="linenos">4149</span></a><span class="sd"> input expression is a SQL string).</span> +</span><span id="condition-4150"><a href="#condition-4150"><span class="linenos">4150</span></a><span class="sd"> **opts: other options to use to parse the input expressions (again, in the case</span> +</span><span id="condition-4151"><a href="#condition-4151"><span class="linenos">4151</span></a><span class="sd"> that the input expression is a SQL string).</span> +</span><span id="condition-4152"><a href="#condition-4152"><span class="linenos">4152</span></a> +</span><span id="condition-4153"><a href="#condition-4153"><span class="linenos">4153</span></a><span class="sd"> Returns:</span> +</span><span id="condition-4154"><a href="#condition-4154"><span class="linenos">4154</span></a><span class="sd"> Condition: the expression</span> +</span><span id="condition-4155"><a href="#condition-4155"><span class="linenos">4155</span></a><span class="sd"> """</span> +</span><span id="condition-4156"><a href="#condition-4156"><span class="linenos">4156</span></a> <span class="k">return</span> <span class="n">maybe_parse</span><span class="p">(</span> <span class="c1"># type: ignore</span> +</span><span id="condition-4157"><a href="#condition-4157"><span class="linenos">4157</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="condition-4158"><a href="#condition-4158"><span class="linenos">4158</span></a> <span class="n">into</span><span class="o">=</span><span class="n">Condition</span><span class="p">,</span> +</span><span id="condition-4159"><a href="#condition-4159"><span class="linenos">4159</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="condition-4160"><a href="#condition-4160"><span class="linenos">4160</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="condition-4161"><a href="#condition-4161"><span class="linenos">4161</span></a> <span class="p">)</span> </span></pre></div> @@ -39268,24 +40150,24 @@ that the input expression is a SQL string).</li> </div> <a class="headerlink" href="#and_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="and_-4106"><a href="#and_-4106"><span class="linenos">4106</span></a><span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">And</span><span class="p">:</span> -</span><span id="and_-4107"><a href="#and_-4107"><span class="linenos">4107</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="and_-4108"><a href="#and_-4108"><span class="linenos">4108</span></a><span class="sd"> Combine multiple conditions with an AND logical operator.</span> -</span><span id="and_-4109"><a href="#and_-4109"><span class="linenos">4109</span></a> -</span><span id="and_-4110"><a href="#and_-4110"><span class="linenos">4110</span></a><span class="sd"> Example:</span> -</span><span id="and_-4111"><a href="#and_-4111"><span class="linenos">4111</span></a><span class="sd"> >>> and_("x=1", and_("y=1", "z=1")).sql()</span> -</span><span id="and_-4112"><a href="#and_-4112"><span class="linenos">4112</span></a><span class="sd"> 'x = 1 AND (y = 1 AND z = 1)'</span> -</span><span id="and_-4113"><a href="#and_-4113"><span class="linenos">4113</span></a> -</span><span id="and_-4114"><a href="#and_-4114"><span class="linenos">4114</span></a><span class="sd"> Args:</span> -</span><span id="and_-4115"><a href="#and_-4115"><span class="linenos">4115</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="and_-4116"><a href="#and_-4116"><span class="linenos">4116</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="and_-4117"><a href="#and_-4117"><span class="linenos">4117</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="and_-4118"><a href="#and_-4118"><span class="linenos">4118</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="and_-4119"><a href="#and_-4119"><span class="linenos">4119</span></a> -</span><span id="and_-4120"><a href="#and_-4120"><span class="linenos">4120</span></a><span class="sd"> Returns:</span> -</span><span id="and_-4121"><a href="#and_-4121"><span class="linenos">4121</span></a><span class="sd"> And: the new condition</span> -</span><span id="and_-4122"><a href="#and_-4122"><span class="linenos">4122</span></a><span class="sd"> """</span> -</span><span id="and_-4123"><a href="#and_-4123"><span class="linenos">4123</span></a> <span class="k">return</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">And</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="and_-4164"><a href="#and_-4164"><span class="linenos">4164</span></a><span class="k">def</span> <span class="nf">and_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">And</span><span class="p">:</span> +</span><span id="and_-4165"><a href="#and_-4165"><span class="linenos">4165</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="and_-4166"><a href="#and_-4166"><span class="linenos">4166</span></a><span class="sd"> Combine multiple conditions with an AND logical operator.</span> +</span><span id="and_-4167"><a href="#and_-4167"><span class="linenos">4167</span></a> +</span><span id="and_-4168"><a href="#and_-4168"><span class="linenos">4168</span></a><span class="sd"> Example:</span> +</span><span id="and_-4169"><a href="#and_-4169"><span class="linenos">4169</span></a><span class="sd"> >>> and_("x=1", and_("y=1", "z=1")).sql()</span> +</span><span id="and_-4170"><a href="#and_-4170"><span class="linenos">4170</span></a><span class="sd"> 'x = 1 AND (y = 1 AND z = 1)'</span> +</span><span id="and_-4171"><a href="#and_-4171"><span class="linenos">4171</span></a> +</span><span id="and_-4172"><a href="#and_-4172"><span class="linenos">4172</span></a><span class="sd"> Args:</span> +</span><span id="and_-4173"><a href="#and_-4173"><span class="linenos">4173</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="and_-4174"><a href="#and_-4174"><span class="linenos">4174</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="and_-4175"><a href="#and_-4175"><span class="linenos">4175</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="and_-4176"><a href="#and_-4176"><span class="linenos">4176</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="and_-4177"><a href="#and_-4177"><span class="linenos">4177</span></a> +</span><span id="and_-4178"><a href="#and_-4178"><span class="linenos">4178</span></a><span class="sd"> Returns:</span> +</span><span id="and_-4179"><a href="#and_-4179"><span class="linenos">4179</span></a><span class="sd"> And: the new condition</span> +</span><span id="and_-4180"><a href="#and_-4180"><span class="linenos">4180</span></a><span class="sd"> """</span> +</span><span id="and_-4181"><a href="#and_-4181"><span class="linenos">4181</span></a> <span class="k">return</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">And</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -39330,24 +40212,24 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#or_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="or_-4126"><a href="#or_-4126"><span class="linenos">4126</span></a><span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Or</span><span class="p">:</span> -</span><span id="or_-4127"><a href="#or_-4127"><span class="linenos">4127</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="or_-4128"><a href="#or_-4128"><span class="linenos">4128</span></a><span class="sd"> Combine multiple conditions with an OR logical operator.</span> -</span><span id="or_-4129"><a href="#or_-4129"><span class="linenos">4129</span></a> -</span><span id="or_-4130"><a href="#or_-4130"><span class="linenos">4130</span></a><span class="sd"> Example:</span> -</span><span id="or_-4131"><a href="#or_-4131"><span class="linenos">4131</span></a><span class="sd"> >>> or_("x=1", or_("y=1", "z=1")).sql()</span> -</span><span id="or_-4132"><a href="#or_-4132"><span class="linenos">4132</span></a><span class="sd"> 'x = 1 OR (y = 1 OR z = 1)'</span> -</span><span id="or_-4133"><a href="#or_-4133"><span class="linenos">4133</span></a> -</span><span id="or_-4134"><a href="#or_-4134"><span class="linenos">4134</span></a><span class="sd"> Args:</span> -</span><span id="or_-4135"><a href="#or_-4135"><span class="linenos">4135</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> -</span><span id="or_-4136"><a href="#or_-4136"><span class="linenos">4136</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="or_-4137"><a href="#or_-4137"><span class="linenos">4137</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="or_-4138"><a href="#or_-4138"><span class="linenos">4138</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="or_-4139"><a href="#or_-4139"><span class="linenos">4139</span></a> -</span><span id="or_-4140"><a href="#or_-4140"><span class="linenos">4140</span></a><span class="sd"> Returns:</span> -</span><span id="or_-4141"><a href="#or_-4141"><span class="linenos">4141</span></a><span class="sd"> Or: the new condition</span> -</span><span id="or_-4142"><a href="#or_-4142"><span class="linenos">4142</span></a><span class="sd"> """</span> -</span><span id="or_-4143"><a href="#or_-4143"><span class="linenos">4143</span></a> <span class="k">return</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="or_-4184"><a href="#or_-4184"><span class="linenos">4184</span></a><span class="k">def</span> <span class="nf">or_</span><span class="p">(</span><span class="o">*</span><span class="n">expressions</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Or</span><span class="p">:</span> +</span><span id="or_-4185"><a href="#or_-4185"><span class="linenos">4185</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="or_-4186"><a href="#or_-4186"><span class="linenos">4186</span></a><span class="sd"> Combine multiple conditions with an OR logical operator.</span> +</span><span id="or_-4187"><a href="#or_-4187"><span class="linenos">4187</span></a> +</span><span id="or_-4188"><a href="#or_-4188"><span class="linenos">4188</span></a><span class="sd"> Example:</span> +</span><span id="or_-4189"><a href="#or_-4189"><span class="linenos">4189</span></a><span class="sd"> >>> or_("x=1", or_("y=1", "z=1")).sql()</span> +</span><span id="or_-4190"><a href="#or_-4190"><span class="linenos">4190</span></a><span class="sd"> 'x = 1 OR (y = 1 OR z = 1)'</span> +</span><span id="or_-4191"><a href="#or_-4191"><span class="linenos">4191</span></a> +</span><span id="or_-4192"><a href="#or_-4192"><span class="linenos">4192</span></a><span class="sd"> Args:</span> +</span><span id="or_-4193"><a href="#or_-4193"><span class="linenos">4193</span></a><span class="sd"> *expressions (str | Expression): the SQL code strings to parse.</span> +</span><span id="or_-4194"><a href="#or_-4194"><span class="linenos">4194</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="or_-4195"><a href="#or_-4195"><span class="linenos">4195</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="or_-4196"><a href="#or_-4196"><span class="linenos">4196</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="or_-4197"><a href="#or_-4197"><span class="linenos">4197</span></a> +</span><span id="or_-4198"><a href="#or_-4198"><span class="linenos">4198</span></a><span class="sd"> Returns:</span> +</span><span id="or_-4199"><a href="#or_-4199"><span class="linenos">4199</span></a><span class="sd"> Or: the new condition</span> +</span><span id="or_-4200"><a href="#or_-4200"><span class="linenos">4200</span></a><span class="sd"> """</span> +</span><span id="or_-4201"><a href="#or_-4201"><span class="linenos">4201</span></a> <span class="k">return</span> <span class="n">_combine</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="n">Or</span><span class="p">,</span> <span class="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -39392,29 +40274,29 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#not_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="not_-4146"><a href="#not_-4146"><span class="linenos">4146</span></a><span class="k">def</span> <span class="nf">not_</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="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Not</span><span class="p">:</span> -</span><span id="not_-4147"><a href="#not_-4147"><span class="linenos">4147</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="not_-4148"><a href="#not_-4148"><span class="linenos">4148</span></a><span class="sd"> Wrap a condition with a NOT operator.</span> -</span><span id="not_-4149"><a href="#not_-4149"><span class="linenos">4149</span></a> -</span><span id="not_-4150"><a href="#not_-4150"><span class="linenos">4150</span></a><span class="sd"> Example:</span> -</span><span id="not_-4151"><a href="#not_-4151"><span class="linenos">4151</span></a><span class="sd"> >>> not_("this_suit='black'").sql()</span> -</span><span id="not_-4152"><a href="#not_-4152"><span class="linenos">4152</span></a><span class="sd"> "NOT this_suit = 'black'"</span> -</span><span id="not_-4153"><a href="#not_-4153"><span class="linenos">4153</span></a> -</span><span id="not_-4154"><a href="#not_-4154"><span class="linenos">4154</span></a><span class="sd"> Args:</span> -</span><span id="not_-4155"><a href="#not_-4155"><span class="linenos">4155</span></a><span class="sd"> expression (str | Expression): the SQL code strings to parse.</span> -</span><span id="not_-4156"><a href="#not_-4156"><span class="linenos">4156</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="not_-4157"><a href="#not_-4157"><span class="linenos">4157</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="not_-4158"><a href="#not_-4158"><span class="linenos">4158</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="not_-4159"><a href="#not_-4159"><span class="linenos">4159</span></a> -</span><span id="not_-4160"><a href="#not_-4160"><span class="linenos">4160</span></a><span class="sd"> Returns:</span> -</span><span id="not_-4161"><a href="#not_-4161"><span class="linenos">4161</span></a><span class="sd"> Not: the new condition</span> -</span><span id="not_-4162"><a href="#not_-4162"><span class="linenos">4162</span></a><span class="sd"> """</span> -</span><span id="not_-4163"><a href="#not_-4163"><span class="linenos">4163</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">condition</span><span class="p">(</span> -</span><span id="not_-4164"><a href="#not_-4164"><span class="linenos">4164</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="not_-4165"><a href="#not_-4165"><span class="linenos">4165</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> -</span><span id="not_-4166"><a href="#not_-4166"><span class="linenos">4166</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="not_-4167"><a href="#not_-4167"><span class="linenos">4167</span></a> <span class="p">)</span> -</span><span id="not_-4168"><a href="#not_-4168"><span class="linenos">4168</span></a> <span class="k">return</span> <span class="n">Not</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_wrap_operator</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="not_-4204"><a href="#not_-4204"><span class="linenos">4204</span></a><span class="k">def</span> <span class="nf">not_</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="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Not</span><span class="p">:</span> +</span><span id="not_-4205"><a href="#not_-4205"><span class="linenos">4205</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="not_-4206"><a href="#not_-4206"><span class="linenos">4206</span></a><span class="sd"> Wrap a condition with a NOT operator.</span> +</span><span id="not_-4207"><a href="#not_-4207"><span class="linenos">4207</span></a> +</span><span id="not_-4208"><a href="#not_-4208"><span class="linenos">4208</span></a><span class="sd"> Example:</span> +</span><span id="not_-4209"><a href="#not_-4209"><span class="linenos">4209</span></a><span class="sd"> >>> not_("this_suit='black'").sql()</span> +</span><span id="not_-4210"><a href="#not_-4210"><span class="linenos">4210</span></a><span class="sd"> "NOT this_suit = 'black'"</span> +</span><span id="not_-4211"><a href="#not_-4211"><span class="linenos">4211</span></a> +</span><span id="not_-4212"><a href="#not_-4212"><span class="linenos">4212</span></a><span class="sd"> Args:</span> +</span><span id="not_-4213"><a href="#not_-4213"><span class="linenos">4213</span></a><span class="sd"> expression (str | Expression): the SQL code strings to parse.</span> +</span><span id="not_-4214"><a href="#not_-4214"><span class="linenos">4214</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="not_-4215"><a href="#not_-4215"><span class="linenos">4215</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="not_-4216"><a href="#not_-4216"><span class="linenos">4216</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="not_-4217"><a href="#not_-4217"><span class="linenos">4217</span></a> +</span><span id="not_-4218"><a href="#not_-4218"><span class="linenos">4218</span></a><span class="sd"> Returns:</span> +</span><span id="not_-4219"><a href="#not_-4219"><span class="linenos">4219</span></a><span class="sd"> Not: the new condition</span> +</span><span id="not_-4220"><a href="#not_-4220"><span class="linenos">4220</span></a><span class="sd"> """</span> +</span><span id="not_-4221"><a href="#not_-4221"><span class="linenos">4221</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">condition</span><span class="p">(</span> +</span><span id="not_-4222"><a href="#not_-4222"><span class="linenos">4222</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="not_-4223"><a href="#not_-4223"><span class="linenos">4223</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> +</span><span id="not_-4224"><a href="#not_-4224"><span class="linenos">4224</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="not_-4225"><a href="#not_-4225"><span class="linenos">4225</span></a> <span class="p">)</span> +</span><span id="not_-4226"><a href="#not_-4226"><span class="linenos">4226</span></a> <span class="k">return</span> <span class="n">Not</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">_wrap_operator</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> </span></pre></div> @@ -39459,8 +40341,8 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#paren"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="paren-4171"><a href="#paren-4171"><span class="linenos">4171</span></a><span class="k">def</span> <span class="nf">paren</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">Paren</span><span class="p">:</span> -</span><span id="paren-4172"><a href="#paren-4172"><span class="linenos">4172</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="paren-4229"><a href="#paren-4229"><span class="linenos">4229</span></a><span class="k">def</span> <span class="nf">paren</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">Paren</span><span class="p">:</span> +</span><span id="paren-4230"><a href="#paren-4230"><span class="linenos">4230</span></a> <span class="k">return</span> <span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -39478,30 +40360,30 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#to_identifier"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="to_identifier-4188"><a href="#to_identifier-4188"><span class="linenos">4188</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> -</span><span id="to_identifier-4189"><a href="#to_identifier-4189"><span class="linenos">4189</span></a><span class="w"> </span><span class="sd">"""Builds an identifier.</span> -</span><span id="to_identifier-4190"><a href="#to_identifier-4190"><span class="linenos">4190</span></a> -</span><span id="to_identifier-4191"><a href="#to_identifier-4191"><span class="linenos">4191</span></a><span class="sd"> Args:</span> -</span><span id="to_identifier-4192"><a href="#to_identifier-4192"><span class="linenos">4192</span></a><span class="sd"> name: The name to turn into an identifier.</span> -</span><span id="to_identifier-4193"><a href="#to_identifier-4193"><span class="linenos">4193</span></a><span class="sd"> quoted: Whether or not force quote the identifier.</span> -</span><span id="to_identifier-4194"><a href="#to_identifier-4194"><span class="linenos">4194</span></a> -</span><span id="to_identifier-4195"><a href="#to_identifier-4195"><span class="linenos">4195</span></a><span class="sd"> Returns:</span> -</span><span id="to_identifier-4196"><a href="#to_identifier-4196"><span class="linenos">4196</span></a><span class="sd"> The identifier ast node.</span> -</span><span id="to_identifier-4197"><a href="#to_identifier-4197"><span class="linenos">4197</span></a><span class="sd"> """</span> -</span><span id="to_identifier-4198"><a href="#to_identifier-4198"><span class="linenos">4198</span></a> -</span><span id="to_identifier-4199"><a href="#to_identifier-4199"><span class="linenos">4199</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="to_identifier-4200"><a href="#to_identifier-4200"><span class="linenos">4200</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="to_identifier-4201"><a href="#to_identifier-4201"><span class="linenos">4201</span></a> -</span><span id="to_identifier-4202"><a href="#to_identifier-4202"><span class="linenos">4202</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Identifier</span><span class="p">):</span> -</span><span id="to_identifier-4203"><a href="#to_identifier-4203"><span class="linenos">4203</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">name</span> -</span><span id="to_identifier-4204"><a href="#to_identifier-4204"><span class="linenos">4204</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="to_identifier-4205"><a href="#to_identifier-4205"><span class="linenos">4205</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">Identifier</span><span class="p">(</span> -</span><span id="to_identifier-4206"><a href="#to_identifier-4206"><span class="linenos">4206</span></a> <span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> -</span><span id="to_identifier-4207"><a href="#to_identifier-4207"><span class="linenos">4207</span></a> <span class="n">quoted</span><span class="o">=</span><span class="ow">not</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">quoted</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">quoted</span><span class="p">,</span> -</span><span id="to_identifier-4208"><a href="#to_identifier-4208"><span class="linenos">4208</span></a> <span class="p">)</span> -</span><span id="to_identifier-4209"><a href="#to_identifier-4209"><span class="linenos">4209</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="to_identifier-4210"><a href="#to_identifier-4210"><span class="linenos">4210</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Name needs to be a string or an Identifier, got: </span><span class="si">{</span><span class="n">name</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="to_identifier-4211"><a href="#to_identifier-4211"><span class="linenos">4211</span></a> <span class="k">return</span> <span class="n">identifier</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="to_identifier-4246"><a href="#to_identifier-4246"><span class="linenos">4246</span></a><span class="k">def</span> <span class="nf">to_identifier</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +</span><span id="to_identifier-4247"><a href="#to_identifier-4247"><span class="linenos">4247</span></a><span class="w"> </span><span class="sd">"""Builds an identifier.</span> +</span><span id="to_identifier-4248"><a href="#to_identifier-4248"><span class="linenos">4248</span></a> +</span><span id="to_identifier-4249"><a href="#to_identifier-4249"><span class="linenos">4249</span></a><span class="sd"> Args:</span> +</span><span id="to_identifier-4250"><a href="#to_identifier-4250"><span class="linenos">4250</span></a><span class="sd"> name: The name to turn into an identifier.</span> +</span><span id="to_identifier-4251"><a href="#to_identifier-4251"><span class="linenos">4251</span></a><span class="sd"> quoted: Whether or not force quote the identifier.</span> +</span><span id="to_identifier-4252"><a href="#to_identifier-4252"><span class="linenos">4252</span></a> +</span><span id="to_identifier-4253"><a href="#to_identifier-4253"><span class="linenos">4253</span></a><span class="sd"> Returns:</span> +</span><span id="to_identifier-4254"><a href="#to_identifier-4254"><span class="linenos">4254</span></a><span class="sd"> The identifier ast node.</span> +</span><span id="to_identifier-4255"><a href="#to_identifier-4255"><span class="linenos">4255</span></a><span class="sd"> """</span> +</span><span id="to_identifier-4256"><a href="#to_identifier-4256"><span class="linenos">4256</span></a> +</span><span id="to_identifier-4257"><a href="#to_identifier-4257"><span class="linenos">4257</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="to_identifier-4258"><a href="#to_identifier-4258"><span class="linenos">4258</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="to_identifier-4259"><a href="#to_identifier-4259"><span class="linenos">4259</span></a> +</span><span id="to_identifier-4260"><a href="#to_identifier-4260"><span class="linenos">4260</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Identifier</span><span class="p">):</span> +</span><span id="to_identifier-4261"><a href="#to_identifier-4261"><span class="linenos">4261</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">name</span> +</span><span id="to_identifier-4262"><a href="#to_identifier-4262"><span class="linenos">4262</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="to_identifier-4263"><a href="#to_identifier-4263"><span class="linenos">4263</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">Identifier</span><span class="p">(</span> +</span><span id="to_identifier-4264"><a href="#to_identifier-4264"><span class="linenos">4264</span></a> <span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> +</span><span id="to_identifier-4265"><a href="#to_identifier-4265"><span class="linenos">4265</span></a> <span class="n">quoted</span><span class="o">=</span><span class="ow">not</span> <span class="n">re</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">SAFE_IDENTIFIER_RE</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span> <span class="k">if</span> <span class="n">quoted</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">quoted</span><span class="p">,</span> +</span><span id="to_identifier-4266"><a href="#to_identifier-4266"><span class="linenos">4266</span></a> <span class="p">)</span> +</span><span id="to_identifier-4267"><a href="#to_identifier-4267"><span class="linenos">4267</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="to_identifier-4268"><a href="#to_identifier-4268"><span class="linenos">4268</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Name needs to be a string or an Identifier, got: </span><span class="si">{</span><span class="n">name</span><span class="o">.</span><span class="vm">__class__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="to_identifier-4269"><a href="#to_identifier-4269"><span class="linenos">4269</span></a> <span class="k">return</span> <span class="n">identifier</span> </span></pre></div> @@ -39534,23 +40416,23 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#to_interval"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="to_interval-4217"><a href="#to_interval-4217"><span class="linenos">4217</span></a><span class="k">def</span> <span class="nf">to_interval</span><span class="p">(</span><span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="n">Interval</span><span class="p">:</span> -</span><span id="to_interval-4218"><a href="#to_interval-4218"><span class="linenos">4218</span></a><span class="w"> </span><span class="sd">"""Builds an interval expression from a string like '1 day' or '5 months'."""</span> -</span><span id="to_interval-4219"><a href="#to_interval-4219"><span class="linenos">4219</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> -</span><span id="to_interval-4220"><a href="#to_interval-4220"><span class="linenos">4220</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="to_interval-4221"><a href="#to_interval-4221"><span class="linenos">4221</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> -</span><span id="to_interval-4222"><a href="#to_interval-4222"><span class="linenos">4222</span></a> -</span><span id="to_interval-4223"><a href="#to_interval-4223"><span class="linenos">4223</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> -</span><span id="to_interval-4224"><a href="#to_interval-4224"><span class="linenos">4224</span></a> -</span><span id="to_interval-4225"><a href="#to_interval-4225"><span class="linenos">4225</span></a> <span class="n">interval_parts</span> <span class="o">=</span> <span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="to_interval-4226"><a href="#to_interval-4226"><span class="linenos">4226</span></a> -</span><span id="to_interval-4227"><a href="#to_interval-4227"><span class="linenos">4227</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval_parts</span><span class="p">:</span> -</span><span id="to_interval-4228"><a href="#to_interval-4228"><span class="linenos">4228</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> -</span><span id="to_interval-4229"><a href="#to_interval-4229"><span class="linenos">4229</span></a> -</span><span id="to_interval-4230"><a href="#to_interval-4230"><span class="linenos">4230</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> -</span><span id="to_interval-4231"><a href="#to_interval-4231"><span class="linenos">4231</span></a> <span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> -</span><span id="to_interval-4232"><a href="#to_interval-4232"><span class="linenos">4232</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">)),</span> -</span><span id="to_interval-4233"><a href="#to_interval-4233"><span class="linenos">4233</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="to_interval-4275"><a href="#to_interval-4275"><span class="linenos">4275</span></a><span class="k">def</span> <span class="nf">to_interval</span><span class="p">(</span><span class="n">interval</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="n">Interval</span><span class="p">:</span> +</span><span id="to_interval-4276"><a href="#to_interval-4276"><span class="linenos">4276</span></a><span class="w"> </span><span class="sd">"""Builds an interval expression from a string like '1 day' or '5 months'."""</span> +</span><span id="to_interval-4277"><a href="#to_interval-4277"><span class="linenos">4277</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">interval</span><span class="p">,</span> <span class="n">Literal</span><span class="p">):</span> +</span><span id="to_interval-4278"><a href="#to_interval-4278"><span class="linenos">4278</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="to_interval-4279"><a href="#to_interval-4279"><span class="linenos">4279</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> +</span><span id="to_interval-4280"><a href="#to_interval-4280"><span class="linenos">4280</span></a> +</span><span id="to_interval-4281"><a href="#to_interval-4281"><span class="linenos">4281</span></a> <span class="n">interval</span> <span class="o">=</span> <span class="n">interval</span><span class="o">.</span><span class="n">this</span> +</span><span id="to_interval-4282"><a href="#to_interval-4282"><span class="linenos">4282</span></a> +</span><span id="to_interval-4283"><a href="#to_interval-4283"><span class="linenos">4283</span></a> <span class="n">interval_parts</span> <span class="o">=</span> <span class="n">INTERVAL_STRING_RE</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">interval</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="to_interval-4284"><a href="#to_interval-4284"><span class="linenos">4284</span></a> +</span><span id="to_interval-4285"><a href="#to_interval-4285"><span class="linenos">4285</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">interval_parts</span><span class="p">:</span> +</span><span id="to_interval-4286"><a href="#to_interval-4286"><span class="linenos">4286</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Invalid interval string."</span><span class="p">)</span> +</span><span id="to_interval-4287"><a href="#to_interval-4287"><span class="linenos">4287</span></a> +</span><span id="to_interval-4288"><a href="#to_interval-4288"><span class="linenos">4288</span></a> <span class="k">return</span> <span class="n">Interval</span><span class="p">(</span> +</span><span id="to_interval-4289"><a href="#to_interval-4289"><span class="linenos">4289</span></a> <span class="n">this</span><span class="o">=</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">)),</span> +</span><span id="to_interval-4290"><a href="#to_interval-4290"><span class="linenos">4290</span></a> <span class="n">unit</span><span class="o">=</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">interval_parts</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">2</span><span class="p">)),</span> +</span><span id="to_interval-4291"><a href="#to_interval-4291"><span class="linenos">4291</span></a> <span class="p">)</span> </span></pre></div> @@ -39570,24 +40452,24 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#to_table"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="to_table-4246"><a href="#to_table-4246"><span class="linenos">4246</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Table</span><span class="p">]:</span> -</span><span id="to_table-4247"><a href="#to_table-4247"><span class="linenos">4247</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="to_table-4248"><a href="#to_table-4248"><span class="linenos">4248</span></a><span class="sd"> Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.</span> -</span><span id="to_table-4249"><a href="#to_table-4249"><span class="linenos">4249</span></a><span class="sd"> If a table is passed in then that table is returned.</span> -</span><span id="to_table-4250"><a href="#to_table-4250"><span class="linenos">4250</span></a> -</span><span id="to_table-4251"><a href="#to_table-4251"><span class="linenos">4251</span></a><span class="sd"> Args:</span> -</span><span id="to_table-4252"><a href="#to_table-4252"><span class="linenos">4252</span></a><span class="sd"> sql_path: a `[catalog].[schema].[table]` string.</span> -</span><span id="to_table-4253"><a href="#to_table-4253"><span class="linenos">4253</span></a> -</span><span id="to_table-4254"><a href="#to_table-4254"><span class="linenos">4254</span></a><span class="sd"> Returns:</span> -</span><span id="to_table-4255"><a href="#to_table-4255"><span class="linenos">4255</span></a><span class="sd"> A table expression.</span> -</span><span id="to_table-4256"><a href="#to_table-4256"><span class="linenos">4256</span></a><span class="sd"> """</span> -</span><span id="to_table-4257"><a href="#to_table-4257"><span class="linenos">4257</span></a> <span class="k">if</span> <span class="n">sql_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="to_table-4258"><a href="#to_table-4258"><span class="linenos">4258</span></a> <span class="k">return</span> <span class="n">sql_path</span> -</span><span id="to_table-4259"><a href="#to_table-4259"><span class="linenos">4259</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="to_table-4260"><a href="#to_table-4260"><span class="linenos">4260</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid type provided for a table: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">sql_path</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="to_table-4261"><a href="#to_table-4261"><span class="linenos">4261</span></a> -</span><span id="to_table-4262"><a href="#to_table-4262"><span class="linenos">4262</span></a> <span class="n">catalog</span><span class="p">,</span> <span class="n">db</span><span class="p">,</span> <span class="n">table_name</span> <span class="o">=</span> <span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">split_num_words</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="s2">"."</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> -</span><span id="to_table-4263"><a href="#to_table-4263"><span class="linenos">4263</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_name</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="to_table-4304"><a href="#to_table-4304"><span class="linenos">4304</span></a><span class="k">def</span> <span class="nf">to_table</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Table</span><span class="p">]:</span> +</span><span id="to_table-4305"><a href="#to_table-4305"><span class="linenos">4305</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="to_table-4306"><a href="#to_table-4306"><span class="linenos">4306</span></a><span class="sd"> Create a table expression from a `[catalog].[schema].[table]` sql path. Catalog and schema are optional.</span> +</span><span id="to_table-4307"><a href="#to_table-4307"><span class="linenos">4307</span></a><span class="sd"> If a table is passed in then that table is returned.</span> +</span><span id="to_table-4308"><a href="#to_table-4308"><span class="linenos">4308</span></a> +</span><span id="to_table-4309"><a href="#to_table-4309"><span class="linenos">4309</span></a><span class="sd"> Args:</span> +</span><span id="to_table-4310"><a href="#to_table-4310"><span class="linenos">4310</span></a><span class="sd"> sql_path: a `[catalog].[schema].[table]` string.</span> +</span><span id="to_table-4311"><a href="#to_table-4311"><span class="linenos">4311</span></a> +</span><span id="to_table-4312"><a href="#to_table-4312"><span class="linenos">4312</span></a><span class="sd"> Returns:</span> +</span><span id="to_table-4313"><a href="#to_table-4313"><span class="linenos">4313</span></a><span class="sd"> A table expression.</span> +</span><span id="to_table-4314"><a href="#to_table-4314"><span class="linenos">4314</span></a><span class="sd"> """</span> +</span><span id="to_table-4315"><a href="#to_table-4315"><span class="linenos">4315</span></a> <span class="k">if</span> <span class="n">sql_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="to_table-4316"><a href="#to_table-4316"><span class="linenos">4316</span></a> <span class="k">return</span> <span class="n">sql_path</span> +</span><span id="to_table-4317"><a href="#to_table-4317"><span class="linenos">4317</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="to_table-4318"><a href="#to_table-4318"><span class="linenos">4318</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid type provided for a table: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">sql_path</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="to_table-4319"><a href="#to_table-4319"><span class="linenos">4319</span></a> +</span><span id="to_table-4320"><a href="#to_table-4320"><span class="linenos">4320</span></a> <span class="n">catalog</span><span class="p">,</span> <span class="n">db</span><span class="p">,</span> <span class="n">table_name</span> <span class="o">=</span> <span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">split_num_words</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="s2">"."</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span> +</span><span id="to_table-4321"><a href="#to_table-4321"><span class="linenos">4321</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_name</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span></pre></div> @@ -39620,23 +40502,23 @@ If a table is passed in then that table is returned.</p> </div> <a class="headerlink" href="#to_column"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="to_column-4266"><a href="#to_column-4266"><span class="linenos">4266</span></a><span class="k">def</span> <span class="nf">to_column</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> -</span><span id="to_column-4267"><a href="#to_column-4267"><span class="linenos">4267</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="to_column-4268"><a href="#to_column-4268"><span class="linenos">4268</span></a><span class="sd"> Create a column from a `[table].[column]` sql path. Schema is optional.</span> -</span><span id="to_column-4269"><a href="#to_column-4269"><span class="linenos">4269</span></a> -</span><span id="to_column-4270"><a href="#to_column-4270"><span class="linenos">4270</span></a><span class="sd"> If a column is passed in then that column is returned.</span> -</span><span id="to_column-4271"><a href="#to_column-4271"><span class="linenos">4271</span></a> -</span><span id="to_column-4272"><a href="#to_column-4272"><span class="linenos">4272</span></a><span class="sd"> Args:</span> -</span><span id="to_column-4273"><a href="#to_column-4273"><span class="linenos">4273</span></a><span class="sd"> sql_path: `[table].[column]` string</span> -</span><span id="to_column-4274"><a href="#to_column-4274"><span class="linenos">4274</span></a><span class="sd"> Returns:</span> -</span><span id="to_column-4275"><a href="#to_column-4275"><span class="linenos">4275</span></a><span class="sd"> Table: A column expression</span> -</span><span id="to_column-4276"><a href="#to_column-4276"><span class="linenos">4276</span></a><span class="sd"> """</span> -</span><span id="to_column-4277"><a href="#to_column-4277"><span class="linenos">4277</span></a> <span class="k">if</span> <span class="n">sql_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> -</span><span id="to_column-4278"><a href="#to_column-4278"><span class="linenos">4278</span></a> <span class="k">return</span> <span class="n">sql_path</span> -</span><span id="to_column-4279"><a href="#to_column-4279"><span class="linenos">4279</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="to_column-4280"><a href="#to_column-4280"><span class="linenos">4280</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid type provided for column: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">sql_path</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="to_column-4281"><a href="#to_column-4281"><span class="linenos">4281</span></a> <span class="n">table_name</span><span class="p">,</span> <span class="n">column_name</span> <span class="o">=</span> <span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">split_num_words</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="s2">"."</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> -</span><span id="to_column-4282"><a href="#to_column-4282"><span class="linenos">4282</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">column_name</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="n">table_name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="to_column-4324"><a href="#to_column-4324"><span class="linenos">4324</span></a><span class="k">def</span> <span class="nf">to_column</span><span class="p">(</span><span class="n">sql_path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Column</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> +</span><span id="to_column-4325"><a href="#to_column-4325"><span class="linenos">4325</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="to_column-4326"><a href="#to_column-4326"><span class="linenos">4326</span></a><span class="sd"> Create a column from a `[table].[column]` sql path. Schema is optional.</span> +</span><span id="to_column-4327"><a href="#to_column-4327"><span class="linenos">4327</span></a> +</span><span id="to_column-4328"><a href="#to_column-4328"><span class="linenos">4328</span></a><span class="sd"> If a column is passed in then that column is returned.</span> +</span><span id="to_column-4329"><a href="#to_column-4329"><span class="linenos">4329</span></a> +</span><span id="to_column-4330"><a href="#to_column-4330"><span class="linenos">4330</span></a><span class="sd"> Args:</span> +</span><span id="to_column-4331"><a href="#to_column-4331"><span class="linenos">4331</span></a><span class="sd"> sql_path: `[table].[column]` string</span> +</span><span id="to_column-4332"><a href="#to_column-4332"><span class="linenos">4332</span></a><span class="sd"> Returns:</span> +</span><span id="to_column-4333"><a href="#to_column-4333"><span class="linenos">4333</span></a><span class="sd"> Table: A column expression</span> +</span><span id="to_column-4334"><a href="#to_column-4334"><span class="linenos">4334</span></a><span class="sd"> """</span> +</span><span id="to_column-4335"><a href="#to_column-4335"><span class="linenos">4335</span></a> <span class="k">if</span> <span class="n">sql_path</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="n">Column</span><span class="p">):</span> +</span><span id="to_column-4336"><a href="#to_column-4336"><span class="linenos">4336</span></a> <span class="k">return</span> <span class="n">sql_path</span> +</span><span id="to_column-4337"><a href="#to_column-4337"><span class="linenos">4337</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="to_column-4338"><a href="#to_column-4338"><span class="linenos">4338</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Invalid type provided for column: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">sql_path</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="to_column-4339"><a href="#to_column-4339"><span class="linenos">4339</span></a> <span class="n">table_name</span><span class="p">,</span> <span class="n">column_name</span> <span class="o">=</span> <span class="p">(</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">split_num_words</span><span class="p">(</span><span class="n">sql_path</span><span class="p">,</span> <span class="s2">"."</span><span class="p">,</span> <span class="mi">2</span><span class="p">))</span> +</span><span id="to_column-4340"><a href="#to_column-4340"><span class="linenos">4340</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">column_name</span><span class="p">,</span> <span class="n">table</span><span class="o">=</span><span class="n">table_name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span></pre></div> @@ -39670,60 +40552,60 @@ If a table is passed in then that table is returned.</p> </div> <a class="headerlink" href="#alias_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="alias_-4285"><a href="#alias_-4285"><span class="linenos">4285</span></a><span class="k">def</span> <span class="nf">alias_</span><span class="p">(</span> -</span><span id="alias_-4286"><a href="#alias_-4286"><span class="linenos">4286</span></a> <span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> -</span><span id="alias_-4287"><a href="#alias_-4287"><span class="linenos">4287</span></a> <span class="n">alias</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> -</span><span id="alias_-4288"><a href="#alias_-4288"><span class="linenos">4288</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="alias_-4289"><a href="#alias_-4289"><span class="linenos">4289</span></a> <span class="n">quoted</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 class="p">,</span> -</span><span id="alias_-4290"><a href="#alias_-4290"><span class="linenos">4290</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="alias_-4291"><a href="#alias_-4291"><span class="linenos">4291</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> -</span><span id="alias_-4292"><a href="#alias_-4292"><span class="linenos">4292</span></a><span class="p">):</span> -</span><span id="alias_-4293"><a href="#alias_-4293"><span class="linenos">4293</span></a><span class="w"> </span><span class="sd">"""Create an Alias expression.</span> -</span><span id="alias_-4294"><a href="#alias_-4294"><span class="linenos">4294</span></a> -</span><span id="alias_-4295"><a href="#alias_-4295"><span class="linenos">4295</span></a><span class="sd"> Example:</span> -</span><span id="alias_-4296"><a href="#alias_-4296"><span class="linenos">4296</span></a><span class="sd"> >>> alias_('foo', 'bar').sql()</span> -</span><span id="alias_-4297"><a href="#alias_-4297"><span class="linenos">4297</span></a><span class="sd"> 'foo AS bar'</span> -</span><span id="alias_-4298"><a href="#alias_-4298"><span class="linenos">4298</span></a> -</span><span id="alias_-4299"><a href="#alias_-4299"><span class="linenos">4299</span></a><span class="sd"> >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()</span> -</span><span id="alias_-4300"><a href="#alias_-4300"><span class="linenos">4300</span></a><span class="sd"> '(SELECT 1, 2) AS bar(a, b)'</span> -</span><span id="alias_-4301"><a href="#alias_-4301"><span class="linenos">4301</span></a> -</span><span id="alias_-4302"><a href="#alias_-4302"><span class="linenos">4302</span></a><span class="sd"> Args:</span> -</span><span id="alias_-4303"><a href="#alias_-4303"><span class="linenos">4303</span></a><span class="sd"> expression: the SQL code strings to parse.</span> -</span><span id="alias_-4304"><a href="#alias_-4304"><span class="linenos">4304</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="alias_-4305"><a href="#alias_-4305"><span class="linenos">4305</span></a><span class="sd"> alias: the alias name to use. If the name has</span> -</span><span id="alias_-4306"><a href="#alias_-4306"><span class="linenos">4306</span></a><span class="sd"> special characters it is quoted.</span> -</span><span id="alias_-4307"><a href="#alias_-4307"><span class="linenos">4307</span></a><span class="sd"> table: Whether or not to create a table alias, can also be a list of columns.</span> -</span><span id="alias_-4308"><a href="#alias_-4308"><span class="linenos">4308</span></a><span class="sd"> quoted: whether or not to quote the alias</span> -</span><span id="alias_-4309"><a href="#alias_-4309"><span class="linenos">4309</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> -</span><span id="alias_-4310"><a href="#alias_-4310"><span class="linenos">4310</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="alias_-4311"><a href="#alias_-4311"><span class="linenos">4311</span></a> -</span><span id="alias_-4312"><a href="#alias_-4312"><span class="linenos">4312</span></a><span class="sd"> Returns:</span> -</span><span id="alias_-4313"><a href="#alias_-4313"><span class="linenos">4313</span></a><span class="sd"> Alias: the aliased expression</span> -</span><span id="alias_-4314"><a href="#alias_-4314"><span class="linenos">4314</span></a><span class="sd"> """</span> -</span><span id="alias_-4315"><a href="#alias_-4315"><span class="linenos">4315</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">maybe_parse</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="alias_-4316"><a href="#alias_-4316"><span class="linenos">4316</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> -</span><span id="alias_-4317"><a href="#alias_-4317"><span class="linenos">4317</span></a> -</span><span id="alias_-4318"><a href="#alias_-4318"><span class="linenos">4318</span></a> <span class="k">if</span> <span class="n">table</span><span class="p">:</span> -</span><span id="alias_-4319"><a href="#alias_-4319"><span class="linenos">4319</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="alias_-4320"><a href="#alias_-4320"><span class="linenos">4320</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">table_alias</span><span class="p">)</span> -</span><span id="alias_-4321"><a href="#alias_-4321"><span class="linenos">4321</span></a> -</span><span id="alias_-4322"><a href="#alias_-4322"><span class="linenos">4322</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> -</span><span id="alias_-4323"><a href="#alias_-4323"><span class="linenos">4323</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> -</span><span id="alias_-4324"><a href="#alias_-4324"><span class="linenos">4324</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">))</span> -</span><span id="alias_-4325"><a href="#alias_-4325"><span class="linenos">4325</span></a> -</span><span id="alias_-4326"><a href="#alias_-4326"><span class="linenos">4326</span></a> <span class="k">return</span> <span class="n">exp</span> -</span><span id="alias_-4327"><a href="#alias_-4327"><span class="linenos">4327</span></a> -</span><span id="alias_-4328"><a href="#alias_-4328"><span class="linenos">4328</span></a> <span class="c1"># We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in</span> -</span><span id="alias_-4329"><a href="#alias_-4329"><span class="linenos">4329</span></a> <span class="c1"># the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node</span> -</span><span id="alias_-4330"><a href="#alias_-4330"><span class="linenos">4330</span></a> <span class="c1"># for the complete Window expression.</span> -</span><span id="alias_-4331"><a href="#alias_-4331"><span class="linenos">4331</span></a> <span class="c1">#</span> -</span><span id="alias_-4332"><a href="#alias_-4332"><span class="linenos">4332</span></a> <span class="c1"># [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls</span> -</span><span id="alias_-4333"><a href="#alias_-4333"><span class="linenos">4333</span></a> -</span><span id="alias_-4334"><a href="#alias_-4334"><span class="linenos">4334</span></a> <span class="k">if</span> <span class="s2">"alias"</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">arg_types</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exp</span><span class="p">,</span> <span class="n">Window</span><span class="p">):</span> -</span><span id="alias_-4335"><a href="#alias_-4335"><span class="linenos">4335</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="alias_-4336"><a href="#alias_-4336"><span class="linenos">4336</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> -</span><span id="alias_-4337"><a href="#alias_-4337"><span class="linenos">4337</span></a> <span class="k">return</span> <span class="n">exp</span> -</span><span id="alias_-4338"><a href="#alias_-4338"><span class="linenos">4338</span></a> <span class="k">return</span> <span class="n">Alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="alias_-4343"><a href="#alias_-4343"><span class="linenos">4343</span></a><span class="k">def</span> <span class="nf">alias_</span><span class="p">(</span> +</span><span id="alias_-4344"><a href="#alias_-4344"><span class="linenos">4344</span></a> <span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> +</span><span id="alias_-4345"><a href="#alias_-4345"><span class="linenos">4345</span></a> <span class="n">alias</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> +</span><span id="alias_-4346"><a href="#alias_-4346"><span class="linenos">4346</span></a> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="alias_-4347"><a href="#alias_-4347"><span class="linenos">4347</span></a> <span class="n">quoted</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 class="p">,</span> +</span><span id="alias_-4348"><a href="#alias_-4348"><span class="linenos">4348</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="alias_-4349"><a href="#alias_-4349"><span class="linenos">4349</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span> +</span><span id="alias_-4350"><a href="#alias_-4350"><span class="linenos">4350</span></a><span class="p">):</span> +</span><span id="alias_-4351"><a href="#alias_-4351"><span class="linenos">4351</span></a><span class="w"> </span><span class="sd">"""Create an Alias expression.</span> +</span><span id="alias_-4352"><a href="#alias_-4352"><span class="linenos">4352</span></a> +</span><span id="alias_-4353"><a href="#alias_-4353"><span class="linenos">4353</span></a><span class="sd"> Example:</span> +</span><span id="alias_-4354"><a href="#alias_-4354"><span class="linenos">4354</span></a><span class="sd"> >>> alias_('foo', 'bar').sql()</span> +</span><span id="alias_-4355"><a href="#alias_-4355"><span class="linenos">4355</span></a><span class="sd"> 'foo AS bar'</span> +</span><span id="alias_-4356"><a href="#alias_-4356"><span class="linenos">4356</span></a> +</span><span id="alias_-4357"><a href="#alias_-4357"><span class="linenos">4357</span></a><span class="sd"> >>> alias_('(select 1, 2)', 'bar', table=['a', 'b']).sql()</span> +</span><span id="alias_-4358"><a href="#alias_-4358"><span class="linenos">4358</span></a><span class="sd"> '(SELECT 1, 2) AS bar(a, b)'</span> +</span><span id="alias_-4359"><a href="#alias_-4359"><span class="linenos">4359</span></a> +</span><span id="alias_-4360"><a href="#alias_-4360"><span class="linenos">4360</span></a><span class="sd"> Args:</span> +</span><span id="alias_-4361"><a href="#alias_-4361"><span class="linenos">4361</span></a><span class="sd"> expression: the SQL code strings to parse.</span> +</span><span id="alias_-4362"><a href="#alias_-4362"><span class="linenos">4362</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="alias_-4363"><a href="#alias_-4363"><span class="linenos">4363</span></a><span class="sd"> alias: the alias name to use. If the name has</span> +</span><span id="alias_-4364"><a href="#alias_-4364"><span class="linenos">4364</span></a><span class="sd"> special characters it is quoted.</span> +</span><span id="alias_-4365"><a href="#alias_-4365"><span class="linenos">4365</span></a><span class="sd"> table: Whether or not to create a table alias, can also be a list of columns.</span> +</span><span id="alias_-4366"><a href="#alias_-4366"><span class="linenos">4366</span></a><span class="sd"> quoted: whether or not to quote the alias</span> +</span><span id="alias_-4367"><a href="#alias_-4367"><span class="linenos">4367</span></a><span class="sd"> dialect: the dialect used to parse the input expression.</span> +</span><span id="alias_-4368"><a href="#alias_-4368"><span class="linenos">4368</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="alias_-4369"><a href="#alias_-4369"><span class="linenos">4369</span></a> +</span><span id="alias_-4370"><a href="#alias_-4370"><span class="linenos">4370</span></a><span class="sd"> Returns:</span> +</span><span id="alias_-4371"><a href="#alias_-4371"><span class="linenos">4371</span></a><span class="sd"> Alias: the aliased expression</span> +</span><span id="alias_-4372"><a href="#alias_-4372"><span class="linenos">4372</span></a><span class="sd"> """</span> +</span><span id="alias_-4373"><a href="#alias_-4373"><span class="linenos">4373</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">maybe_parse</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="alias_-4374"><a href="#alias_-4374"><span class="linenos">4374</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> +</span><span id="alias_-4375"><a href="#alias_-4375"><span class="linenos">4375</span></a> +</span><span id="alias_-4376"><a href="#alias_-4376"><span class="linenos">4376</span></a> <span class="k">if</span> <span class="n">table</span><span class="p">:</span> +</span><span id="alias_-4377"><a href="#alias_-4377"><span class="linenos">4377</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="alias_-4378"><a href="#alias_-4378"><span class="linenos">4378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">table_alias</span><span class="p">)</span> +</span><span id="alias_-4379"><a href="#alias_-4379"><span class="linenos">4379</span></a> +</span><span id="alias_-4380"><a href="#alias_-4380"><span class="linenos">4380</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> +</span><span id="alias_-4381"><a href="#alias_-4381"><span class="linenos">4381</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span> +</span><span id="alias_-4382"><a href="#alias_-4382"><span class="linenos">4382</span></a> <span class="n">table_alias</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">))</span> +</span><span id="alias_-4383"><a href="#alias_-4383"><span class="linenos">4383</span></a> +</span><span id="alias_-4384"><a href="#alias_-4384"><span class="linenos">4384</span></a> <span class="k">return</span> <span class="n">exp</span> +</span><span id="alias_-4385"><a href="#alias_-4385"><span class="linenos">4385</span></a> +</span><span id="alias_-4386"><a href="#alias_-4386"><span class="linenos">4386</span></a> <span class="c1"># We don't set the "alias" arg for Window expressions, because that would add an IDENTIFIER node in</span> +</span><span id="alias_-4387"><a href="#alias_-4387"><span class="linenos">4387</span></a> <span class="c1"># the AST, representing a "named_window" [1] construct (eg. bigquery). What we want is an ALIAS node</span> +</span><span id="alias_-4388"><a href="#alias_-4388"><span class="linenos">4388</span></a> <span class="c1"># for the complete Window expression.</span> +</span><span id="alias_-4389"><a href="#alias_-4389"><span class="linenos">4389</span></a> <span class="c1">#</span> +</span><span id="alias_-4390"><a href="#alias_-4390"><span class="linenos">4390</span></a> <span class="c1"># [1]: https://cloud.google.com/bigquery/docs/reference/standard-sql/window-function-calls</span> +</span><span id="alias_-4391"><a href="#alias_-4391"><span class="linenos">4391</span></a> +</span><span id="alias_-4392"><a href="#alias_-4392"><span class="linenos">4392</span></a> <span class="k">if</span> <span class="s2">"alias"</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">arg_types</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exp</span><span class="p">,</span> <span class="n">Window</span><span class="p">):</span> +</span><span id="alias_-4393"><a href="#alias_-4393"><span class="linenos">4393</span></a> <span class="n">exp</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="alias_-4394"><a href="#alias_-4394"><span class="linenos">4394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> +</span><span id="alias_-4395"><a href="#alias_-4395"><span class="linenos">4395</span></a> <span class="k">return</span> <span class="n">exp</span> +</span><span id="alias_-4396"><a href="#alias_-4396"><span class="linenos">4396</span></a> <span class="k">return</span> <span class="n">Alias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> </span></pre></div> @@ -39778,27 +40660,27 @@ special characters it is quoted.</li> </div> <a class="headerlink" href="#subquery"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="subquery-4341"><a href="#subquery-4341"><span class="linenos">4341</span></a><span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> -</span><span id="subquery-4342"><a href="#subquery-4342"><span class="linenos">4342</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="subquery-4343"><a href="#subquery-4343"><span class="linenos">4343</span></a><span class="sd"> Build a subquery expression.</span> -</span><span id="subquery-4344"><a href="#subquery-4344"><span class="linenos">4344</span></a> -</span><span id="subquery-4345"><a href="#subquery-4345"><span class="linenos">4345</span></a><span class="sd"> Example:</span> -</span><span id="subquery-4346"><a href="#subquery-4346"><span class="linenos">4346</span></a><span class="sd"> >>> subquery('select x from tbl', 'bar').select('x').sql()</span> -</span><span id="subquery-4347"><a href="#subquery-4347"><span class="linenos">4347</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl) AS bar'</span> -</span><span id="subquery-4348"><a href="#subquery-4348"><span class="linenos">4348</span></a> -</span><span id="subquery-4349"><a href="#subquery-4349"><span class="linenos">4349</span></a><span class="sd"> Args:</span> -</span><span id="subquery-4350"><a href="#subquery-4350"><span class="linenos">4350</span></a><span class="sd"> expression (str | Expression): the SQL code strings to parse.</span> -</span><span id="subquery-4351"><a href="#subquery-4351"><span class="linenos">4351</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> -</span><span id="subquery-4352"><a href="#subquery-4352"><span class="linenos">4352</span></a><span class="sd"> alias (str | Expression): the alias name to use.</span> -</span><span id="subquery-4353"><a href="#subquery-4353"><span class="linenos">4353</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> -</span><span id="subquery-4354"><a href="#subquery-4354"><span class="linenos">4354</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> -</span><span id="subquery-4355"><a href="#subquery-4355"><span class="linenos">4355</span></a> -</span><span id="subquery-4356"><a href="#subquery-4356"><span class="linenos">4356</span></a><span class="sd"> Returns:</span> -</span><span id="subquery-4357"><a href="#subquery-4357"><span class="linenos">4357</span></a><span class="sd"> Select: a new select with the subquery expression included</span> -</span><span id="subquery-4358"><a href="#subquery-4358"><span class="linenos">4358</span></a><span class="sd"> """</span> -</span><span id="subquery-4359"><a href="#subquery-4359"><span class="linenos">4359</span></a> -</span><span id="subquery-4360"><a href="#subquery-4360"><span class="linenos">4360</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> -</span><span id="subquery-4361"><a href="#subquery-4361"><span class="linenos">4361</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="subquery-4399"><a href="#subquery-4399"><span class="linenos">4399</span></a><span class="k">def</span> <span class="nf">subquery</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">):</span> +</span><span id="subquery-4400"><a href="#subquery-4400"><span class="linenos">4400</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="subquery-4401"><a href="#subquery-4401"><span class="linenos">4401</span></a><span class="sd"> Build a subquery expression.</span> +</span><span id="subquery-4402"><a href="#subquery-4402"><span class="linenos">4402</span></a> +</span><span id="subquery-4403"><a href="#subquery-4403"><span class="linenos">4403</span></a><span class="sd"> Example:</span> +</span><span id="subquery-4404"><a href="#subquery-4404"><span class="linenos">4404</span></a><span class="sd"> >>> subquery('select x from tbl', 'bar').select('x').sql()</span> +</span><span id="subquery-4405"><a href="#subquery-4405"><span class="linenos">4405</span></a><span class="sd"> 'SELECT x FROM (SELECT x FROM tbl) AS bar'</span> +</span><span id="subquery-4406"><a href="#subquery-4406"><span class="linenos">4406</span></a> +</span><span id="subquery-4407"><a href="#subquery-4407"><span class="linenos">4407</span></a><span class="sd"> Args:</span> +</span><span id="subquery-4408"><a href="#subquery-4408"><span class="linenos">4408</span></a><span class="sd"> expression (str | Expression): the SQL code strings to parse.</span> +</span><span id="subquery-4409"><a href="#subquery-4409"><span class="linenos">4409</span></a><span class="sd"> If an Expression instance is passed, this is used as-is.</span> +</span><span id="subquery-4410"><a href="#subquery-4410"><span class="linenos">4410</span></a><span class="sd"> alias (str | Expression): the alias name to use.</span> +</span><span id="subquery-4411"><a href="#subquery-4411"><span class="linenos">4411</span></a><span class="sd"> dialect (str): the dialect used to parse the input expression.</span> +</span><span id="subquery-4412"><a href="#subquery-4412"><span class="linenos">4412</span></a><span class="sd"> **opts: other options to use to parse the input expressions.</span> +</span><span id="subquery-4413"><a href="#subquery-4413"><span class="linenos">4413</span></a> +</span><span id="subquery-4414"><a href="#subquery-4414"><span class="linenos">4414</span></a><span class="sd"> Returns:</span> +</span><span id="subquery-4415"><a href="#subquery-4415"><span class="linenos">4415</span></a><span class="sd"> Select: a new select with the subquery expression included</span> +</span><span id="subquery-4416"><a href="#subquery-4416"><span class="linenos">4416</span></a><span class="sd"> """</span> +</span><span id="subquery-4417"><a href="#subquery-4417"><span class="linenos">4417</span></a> +</span><span id="subquery-4418"><a href="#subquery-4418"><span class="linenos">4418</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> +</span><span id="subquery-4419"><a href="#subquery-4419"><span class="linenos">4419</span></a> <span class="k">return</span> <span class="n">Select</span><span class="p">()</span><span class="o">.</span><span class="n">from_</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="n">dialect</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> </span></pre></div> @@ -39844,28 +40726,28 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#column"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="column-4364"><a href="#column-4364"><span class="linenos">4364</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> -</span><span id="column-4365"><a href="#column-4365"><span class="linenos">4365</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> -</span><span id="column-4366"><a href="#column-4366"><span class="linenos">4366</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="column-4367"><a href="#column-4367"><span class="linenos">4367</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="column-4368"><a href="#column-4368"><span class="linenos">4368</span></a> <span class="n">quoted</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 class="p">,</span> -</span><span id="column-4369"><a href="#column-4369"><span class="linenos">4369</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> -</span><span id="column-4370"><a href="#column-4370"><span class="linenos">4370</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="column-4371"><a href="#column-4371"><span class="linenos">4371</span></a><span class="sd"> Build a Column.</span> -</span><span id="column-4372"><a href="#column-4372"><span class="linenos">4372</span></a> -</span><span id="column-4373"><a href="#column-4373"><span class="linenos">4373</span></a><span class="sd"> Args:</span> -</span><span id="column-4374"><a href="#column-4374"><span class="linenos">4374</span></a><span class="sd"> col: column name</span> -</span><span id="column-4375"><a href="#column-4375"><span class="linenos">4375</span></a><span class="sd"> table: table name</span> -</span><span id="column-4376"><a href="#column-4376"><span class="linenos">4376</span></a><span class="sd"> schema: schema name</span> -</span><span id="column-4377"><a href="#column-4377"><span class="linenos">4377</span></a><span class="sd"> quoted: whether or not to force quote each part</span> -</span><span id="column-4378"><a href="#column-4378"><span class="linenos">4378</span></a><span class="sd"> Returns:</span> -</span><span id="column-4379"><a href="#column-4379"><span class="linenos">4379</span></a><span class="sd"> Column: column instance</span> -</span><span id="column-4380"><a href="#column-4380"><span class="linenos">4380</span></a><span class="sd"> """</span> -</span><span id="column-4381"><a href="#column-4381"><span class="linenos">4381</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span> -</span><span id="column-4382"><a href="#column-4382"><span class="linenos">4382</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="column-4383"><a href="#column-4383"><span class="linenos">4383</span></a> <span class="n">table</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="column-4384"><a href="#column-4384"><span class="linenos">4384</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="column-4385"><a href="#column-4385"><span class="linenos">4385</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="column-4422"><a href="#column-4422"><span class="linenos">4422</span></a><span class="k">def</span> <span class="nf">column</span><span class="p">(</span> +</span><span id="column-4423"><a href="#column-4423"><span class="linenos">4423</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">,</span> +</span><span id="column-4424"><a href="#column-4424"><span class="linenos">4424</span></a> <span class="n">table</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="column-4425"><a href="#column-4425"><span class="linenos">4425</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Identifier</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="column-4426"><a href="#column-4426"><span class="linenos">4426</span></a> <span class="n">quoted</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 class="p">,</span> +</span><span id="column-4427"><a href="#column-4427"><span class="linenos">4427</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Column</span><span class="p">:</span> +</span><span id="column-4428"><a href="#column-4428"><span class="linenos">4428</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="column-4429"><a href="#column-4429"><span class="linenos">4429</span></a><span class="sd"> Build a Column.</span> +</span><span id="column-4430"><a href="#column-4430"><span class="linenos">4430</span></a> +</span><span id="column-4431"><a href="#column-4431"><span class="linenos">4431</span></a><span class="sd"> Args:</span> +</span><span id="column-4432"><a href="#column-4432"><span class="linenos">4432</span></a><span class="sd"> col: column name</span> +</span><span id="column-4433"><a href="#column-4433"><span class="linenos">4433</span></a><span class="sd"> table: table name</span> +</span><span id="column-4434"><a href="#column-4434"><span class="linenos">4434</span></a><span class="sd"> schema: schema name</span> +</span><span id="column-4435"><a href="#column-4435"><span class="linenos">4435</span></a><span class="sd"> quoted: whether or not to force quote each part</span> +</span><span id="column-4436"><a href="#column-4436"><span class="linenos">4436</span></a><span class="sd"> Returns:</span> +</span><span id="column-4437"><a href="#column-4437"><span class="linenos">4437</span></a><span class="sd"> Column: column instance</span> +</span><span id="column-4438"><a href="#column-4438"><span class="linenos">4438</span></a><span class="sd"> """</span> +</span><span id="column-4439"><a href="#column-4439"><span class="linenos">4439</span></a> <span class="k">return</span> <span class="n">Column</span><span class="p">(</span> +</span><span id="column-4440"><a href="#column-4440"><span class="linenos">4440</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">col</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="column-4441"><a href="#column-4441"><span class="linenos">4441</span></a> <span class="n">table</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="column-4442"><a href="#column-4442"><span class="linenos">4442</span></a> <span class="n">schema</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="column-4443"><a href="#column-4443"><span class="linenos">4443</span></a> <span class="p">)</span> </span></pre></div> @@ -39900,22 +40782,22 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#cast"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="cast-4388"><a href="#cast-4388"><span class="linenos">4388</span></a><span class="k">def</span> <span class="nf">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Cast</span><span class="p">:</span> -</span><span id="cast-4389"><a href="#cast-4389"><span class="linenos">4389</span></a><span class="w"> </span><span class="sd">"""Cast an expression to a data type.</span> -</span><span id="cast-4390"><a href="#cast-4390"><span class="linenos">4390</span></a> -</span><span id="cast-4391"><a href="#cast-4391"><span class="linenos">4391</span></a><span class="sd"> Example:</span> -</span><span id="cast-4392"><a href="#cast-4392"><span class="linenos">4392</span></a><span class="sd"> >>> cast('x + 1', 'int').sql()</span> -</span><span id="cast-4393"><a href="#cast-4393"><span class="linenos">4393</span></a><span class="sd"> 'CAST(x + 1 AS INT)'</span> -</span><span id="cast-4394"><a href="#cast-4394"><span class="linenos">4394</span></a> -</span><span id="cast-4395"><a href="#cast-4395"><span class="linenos">4395</span></a><span class="sd"> Args:</span> -</span><span id="cast-4396"><a href="#cast-4396"><span class="linenos">4396</span></a><span class="sd"> expression: The expression to cast.</span> -</span><span id="cast-4397"><a href="#cast-4397"><span class="linenos">4397</span></a><span class="sd"> to: The datatype to cast to.</span> -</span><span id="cast-4398"><a href="#cast-4398"><span class="linenos">4398</span></a> -</span><span id="cast-4399"><a href="#cast-4399"><span class="linenos">4399</span></a><span class="sd"> Returns:</span> -</span><span id="cast-4400"><a href="#cast-4400"><span class="linenos">4400</span></a><span class="sd"> A cast node.</span> -</span><span id="cast-4401"><a href="#cast-4401"><span class="linenos">4401</span></a><span class="sd"> """</span> -</span><span id="cast-4402"><a href="#cast-4402"><span class="linenos">4402</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> -</span><span id="cast-4403"><a href="#cast-4403"><span class="linenos">4403</span></a> <span class="k">return</span> <span class="n">Cast</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">to</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="cast-4446"><a href="#cast-4446"><span class="linenos">4446</span></a><span class="k">def</span> <span class="nf">cast</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">DataType</span> <span class="o">|</span> <span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> <span class="o">-></span> <span class="n">Cast</span><span class="p">:</span> +</span><span id="cast-4447"><a href="#cast-4447"><span class="linenos">4447</span></a><span class="w"> </span><span class="sd">"""Cast an expression to a data type.</span> +</span><span id="cast-4448"><a href="#cast-4448"><span class="linenos">4448</span></a> +</span><span id="cast-4449"><a href="#cast-4449"><span class="linenos">4449</span></a><span class="sd"> Example:</span> +</span><span id="cast-4450"><a href="#cast-4450"><span class="linenos">4450</span></a><span class="sd"> >>> cast('x + 1', 'int').sql()</span> +</span><span id="cast-4451"><a href="#cast-4451"><span class="linenos">4451</span></a><span class="sd"> 'CAST(x + 1 AS INT)'</span> +</span><span id="cast-4452"><a href="#cast-4452"><span class="linenos">4452</span></a> +</span><span id="cast-4453"><a href="#cast-4453"><span class="linenos">4453</span></a><span class="sd"> Args:</span> +</span><span id="cast-4454"><a href="#cast-4454"><span class="linenos">4454</span></a><span class="sd"> expression: The expression to cast.</span> +</span><span id="cast-4455"><a href="#cast-4455"><span class="linenos">4455</span></a><span class="sd"> to: The datatype to cast to.</span> +</span><span id="cast-4456"><a href="#cast-4456"><span class="linenos">4456</span></a> +</span><span id="cast-4457"><a href="#cast-4457"><span class="linenos">4457</span></a><span class="sd"> Returns:</span> +</span><span id="cast-4458"><a href="#cast-4458"><span class="linenos">4458</span></a><span class="sd"> A cast node.</span> +</span><span id="cast-4459"><a href="#cast-4459"><span class="linenos">4459</span></a><span class="sd"> """</span> +</span><span id="cast-4460"><a href="#cast-4460"><span class="linenos">4460</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span> +</span><span id="cast-4461"><a href="#cast-4461"><span class="linenos">4461</span></a> <span class="k">return</span> <span class="n">Cast</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">to</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">))</span> </span></pre></div> @@ -39958,23 +40840,23 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#table_"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="table_-4406"><a href="#table_-4406"><span class="linenos">4406</span></a><span class="k">def</span> <span class="nf">table_</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> -</span><span id="table_-4407"><a href="#table_-4407"><span class="linenos">4407</span></a><span class="w"> </span><span class="sd">"""Build a Table.</span> -</span><span id="table_-4408"><a href="#table_-4408"><span class="linenos">4408</span></a> -</span><span id="table_-4409"><a href="#table_-4409"><span class="linenos">4409</span></a><span class="sd"> Args:</span> -</span><span id="table_-4410"><a href="#table_-4410"><span class="linenos">4410</span></a><span class="sd"> table (str | Expression): column name</span> -</span><span id="table_-4411"><a href="#table_-4411"><span class="linenos">4411</span></a><span class="sd"> db (str | Expression): db name</span> -</span><span id="table_-4412"><a href="#table_-4412"><span class="linenos">4412</span></a><span class="sd"> catalog (str | Expression): catalog name</span> -</span><span id="table_-4413"><a href="#table_-4413"><span class="linenos">4413</span></a> -</span><span id="table_-4414"><a href="#table_-4414"><span class="linenos">4414</span></a><span class="sd"> Returns:</span> -</span><span id="table_-4415"><a href="#table_-4415"><span class="linenos">4415</span></a><span class="sd"> Table: table instance</span> -</span><span id="table_-4416"><a href="#table_-4416"><span class="linenos">4416</span></a><span class="sd"> """</span> -</span><span id="table_-4417"><a href="#table_-4417"><span class="linenos">4417</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span> -</span><span id="table_-4418"><a href="#table_-4418"><span class="linenos">4418</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="table_-4419"><a href="#table_-4419"><span class="linenos">4419</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="table_-4420"><a href="#table_-4420"><span class="linenos">4420</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> -</span><span id="table_-4421"><a href="#table_-4421"><span class="linenos">4421</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="table_-4422"><a href="#table_-4422"><span class="linenos">4422</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="table_-4464"><a href="#table_-4464"><span class="linenos">4464</span></a><span class="k">def</span> <span class="nf">table_</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Table</span><span class="p">:</span> +</span><span id="table_-4465"><a href="#table_-4465"><span class="linenos">4465</span></a><span class="w"> </span><span class="sd">"""Build a Table.</span> +</span><span id="table_-4466"><a href="#table_-4466"><span class="linenos">4466</span></a> +</span><span id="table_-4467"><a href="#table_-4467"><span class="linenos">4467</span></a><span class="sd"> Args:</span> +</span><span id="table_-4468"><a href="#table_-4468"><span class="linenos">4468</span></a><span class="sd"> table (str | Expression): column name</span> +</span><span id="table_-4469"><a href="#table_-4469"><span class="linenos">4469</span></a><span class="sd"> db (str | Expression): db name</span> +</span><span id="table_-4470"><a href="#table_-4470"><span class="linenos">4470</span></a><span class="sd"> catalog (str | Expression): catalog name</span> +</span><span id="table_-4471"><a href="#table_-4471"><span class="linenos">4471</span></a> +</span><span id="table_-4472"><a href="#table_-4472"><span class="linenos">4472</span></a><span class="sd"> Returns:</span> +</span><span id="table_-4473"><a href="#table_-4473"><span class="linenos">4473</span></a><span class="sd"> Table: table instance</span> +</span><span id="table_-4474"><a href="#table_-4474"><span class="linenos">4474</span></a><span class="sd"> """</span> +</span><span id="table_-4475"><a href="#table_-4475"><span class="linenos">4475</span></a> <span class="k">return</span> <span class="n">Table</span><span class="p">(</span> +</span><span id="table_-4476"><a href="#table_-4476"><span class="linenos">4476</span></a> <span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="table_-4477"><a href="#table_-4477"><span class="linenos">4477</span></a> <span class="n">db</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">db</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="table_-4478"><a href="#table_-4478"><span class="linenos">4478</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">catalog</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">),</span> +</span><span id="table_-4479"><a href="#table_-4479"><span class="linenos">4479</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">))</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="table_-4480"><a href="#table_-4480"><span class="linenos">4480</span></a> <span class="p">)</span> </span></pre></div> @@ -40008,46 +40890,46 @@ If an Expression instance is passed, this is used as-is.</li> </div> <a class="headerlink" href="#values"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="values-4425"><a href="#values-4425"><span class="linenos">4425</span></a><span class="k">def</span> <span class="nf">values</span><span class="p">(</span> -</span><span id="values-4426"><a href="#values-4426"><span class="linenos">4426</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Iterable</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="o">...</span><span class="p">]],</span> -</span><span id="values-4427"><a href="#values-4427"><span class="linenos">4427</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="values-4428"><a href="#values-4428"><span class="linenos">4428</span></a> <span class="n">columns</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Iterable</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="values-4429"><a href="#values-4429"><span class="linenos">4429</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Values</span><span class="p">:</span> -</span><span id="values-4430"><a href="#values-4430"><span class="linenos">4430</span></a><span class="w"> </span><span class="sd">"""Build VALUES statement.</span> -</span><span id="values-4431"><a href="#values-4431"><span class="linenos">4431</span></a> -</span><span id="values-4432"><a href="#values-4432"><span class="linenos">4432</span></a><span class="sd"> Example:</span> -</span><span id="values-4433"><a href="#values-4433"><span class="linenos">4433</span></a><span class="sd"> >>> values([(1, '2')]).sql()</span> -</span><span id="values-4434"><a href="#values-4434"><span class="linenos">4434</span></a><span class="sd"> "VALUES (1, '2')"</span> -</span><span id="values-4435"><a href="#values-4435"><span class="linenos">4435</span></a> -</span><span id="values-4436"><a href="#values-4436"><span class="linenos">4436</span></a><span class="sd"> Args:</span> -</span><span id="values-4437"><a href="#values-4437"><span class="linenos">4437</span></a><span class="sd"> values: values statements that will be converted to SQL</span> -</span><span id="values-4438"><a href="#values-4438"><span class="linenos">4438</span></a><span class="sd"> alias: optional alias</span> -</span><span id="values-4439"><a href="#values-4439"><span class="linenos">4439</span></a><span class="sd"> columns: Optional list of ordered column names or ordered dictionary of column names to types.</span> -</span><span id="values-4440"><a href="#values-4440"><span class="linenos">4440</span></a><span class="sd"> If either are provided then an alias is also required.</span> -</span><span id="values-4441"><a href="#values-4441"><span class="linenos">4441</span></a><span class="sd"> If a dictionary is provided then the first column of the values will be casted to the expected type</span> -</span><span id="values-4442"><a href="#values-4442"><span class="linenos">4442</span></a><span class="sd"> in order to help with type inference.</span> -</span><span id="values-4443"><a href="#values-4443"><span class="linenos">4443</span></a> -</span><span id="values-4444"><a href="#values-4444"><span class="linenos">4444</span></a><span class="sd"> Returns:</span> -</span><span id="values-4445"><a href="#values-4445"><span class="linenos">4445</span></a><span class="sd"> Values: the Values expression object</span> -</span><span id="values-4446"><a href="#values-4446"><span class="linenos">4446</span></a><span class="sd"> """</span> -</span><span id="values-4447"><a href="#values-4447"><span class="linenos">4447</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="values-4448"><a href="#values-4448"><span class="linenos">4448</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Alias is required when providing columns"</span><span class="p">)</span> -</span><span id="values-4449"><a href="#values-4449"><span class="linenos">4449</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="values-4450"><a href="#values-4450"><span class="linenos">4450</span></a> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">),</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> -</span><span id="values-4451"><a href="#values-4451"><span class="linenos">4451</span></a> <span class="k">if</span> <span class="n">columns</span> -</span><span id="values-4452"><a href="#values-4452"><span class="linenos">4452</span></a> <span class="k">else</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="values-4453"><a href="#values-4453"><span class="linenos">4453</span></a> <span class="p">)</span> -</span><span id="values-4454"><a href="#values-4454"><span class="linenos">4454</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="n">values</span><span class="p">]</span> -</span><span id="values-4455"><a href="#values-4455"><span class="linenos">4455</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="values-4456"><a href="#values-4456"><span class="linenos">4456</span></a> <span class="n">types</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">columns</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> -</span><span id="values-4457"><a href="#values-4457"><span class="linenos">4457</span></a> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="values-4458"><a href="#values-4458"><span class="linenos">4458</span></a> <span class="s2">"expressions"</span><span class="p">,</span> -</span><span id="values-4459"><a href="#values-4459"><span class="linenos">4459</span></a> <span class="p">[</span><span class="n">cast</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">)],</span> -</span><span id="values-4460"><a href="#values-4460"><span class="linenos">4460</span></a> <span class="p">)</span> -</span><span id="values-4461"><a href="#values-4461"><span class="linenos">4461</span></a> <span class="k">return</span> <span class="n">Values</span><span class="p">(</span> -</span><span id="values-4462"><a href="#values-4462"><span class="linenos">4462</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="values-4463"><a href="#values-4463"><span class="linenos">4463</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> -</span><span id="values-4464"><a href="#values-4464"><span class="linenos">4464</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="values-4483"><a href="#values-4483"><span class="linenos">4483</span></a><span class="k">def</span> <span class="nf">values</span><span class="p">(</span> +</span><span id="values-4484"><a href="#values-4484"><span class="linenos">4484</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Iterable</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="o">...</span><span class="p">]],</span> +</span><span id="values-4485"><a href="#values-4485"><span class="linenos">4485</span></a> <span class="n">alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="values-4486"><a href="#values-4486"><span class="linenos">4486</span></a> <span class="n">columns</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Iterable</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">DataType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="values-4487"><a href="#values-4487"><span class="linenos">4487</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">Values</span><span class="p">:</span> +</span><span id="values-4488"><a href="#values-4488"><span class="linenos">4488</span></a><span class="w"> </span><span class="sd">"""Build VALUES statement.</span> +</span><span id="values-4489"><a href="#values-4489"><span class="linenos">4489</span></a> +</span><span id="values-4490"><a href="#values-4490"><span class="linenos">4490</span></a><span class="sd"> Example:</span> +</span><span id="values-4491"><a href="#values-4491"><span class="linenos">4491</span></a><span class="sd"> >>> values([(1, '2')]).sql()</span> +</span><span id="values-4492"><a href="#values-4492"><span class="linenos">4492</span></a><span class="sd"> "VALUES (1, '2')"</span> +</span><span id="values-4493"><a href="#values-4493"><span class="linenos">4493</span></a> +</span><span id="values-4494"><a href="#values-4494"><span class="linenos">4494</span></a><span class="sd"> Args:</span> +</span><span id="values-4495"><a href="#values-4495"><span class="linenos">4495</span></a><span class="sd"> values: values statements that will be converted to SQL</span> +</span><span id="values-4496"><a href="#values-4496"><span class="linenos">4496</span></a><span class="sd"> alias: optional alias</span> +</span><span id="values-4497"><a href="#values-4497"><span class="linenos">4497</span></a><span class="sd"> columns: Optional list of ordered column names or ordered dictionary of column names to types.</span> +</span><span id="values-4498"><a href="#values-4498"><span class="linenos">4498</span></a><span class="sd"> If either are provided then an alias is also required.</span> +</span><span id="values-4499"><a href="#values-4499"><span class="linenos">4499</span></a><span class="sd"> If a dictionary is provided then the first column of the values will be casted to the expected type</span> +</span><span id="values-4500"><a href="#values-4500"><span class="linenos">4500</span></a><span class="sd"> in order to help with type inference.</span> +</span><span id="values-4501"><a href="#values-4501"><span class="linenos">4501</span></a> +</span><span id="values-4502"><a href="#values-4502"><span class="linenos">4502</span></a><span class="sd"> Returns:</span> +</span><span id="values-4503"><a href="#values-4503"><span class="linenos">4503</span></a><span class="sd"> Values: the Values expression object</span> +</span><span id="values-4504"><a href="#values-4504"><span class="linenos">4504</span></a><span class="sd"> """</span> +</span><span id="values-4505"><a href="#values-4505"><span class="linenos">4505</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="values-4506"><a href="#values-4506"><span class="linenos">4506</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Alias is required when providing columns"</span><span class="p">)</span> +</span><span id="values-4507"><a href="#values-4507"><span class="linenos">4507</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="values-4508"><a href="#values-4508"><span class="linenos">4508</span></a> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">),</span> <span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">])</span> +</span><span id="values-4509"><a href="#values-4509"><span class="linenos">4509</span></a> <span class="k">if</span> <span class="n">columns</span> +</span><span id="values-4510"><a href="#values-4510"><span class="linenos">4510</span></a> <span class="k">else</span> <span class="n">TableAlias</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="values-4511"><a href="#values-4511"><span class="linenos">4511</span></a> <span class="p">)</span> +</span><span id="values-4512"><a href="#values-4512"><span class="linenos">4512</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">tup</span><span class="p">)</span> <span class="k">for</span> <span class="n">tup</span> <span class="ow">in</span> <span class="n">values</span><span class="p">]</span> +</span><span id="values-4513"><a href="#values-4513"><span class="linenos">4513</span></a> <span class="k">if</span> <span class="n">columns</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">columns</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="values-4514"><a href="#values-4514"><span class="linenos">4514</span></a> <span class="n">types</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">columns</span><span class="o">.</span><span class="n">values</span><span class="p">())</span> +</span><span id="values-4515"><a href="#values-4515"><span class="linenos">4515</span></a> <span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="values-4516"><a href="#values-4516"><span class="linenos">4516</span></a> <span class="s2">"expressions"</span><span class="p">,</span> +</span><span id="values-4517"><a href="#values-4517"><span class="linenos">4517</span></a> <span class="p">[</span><span class="n">cast</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">types</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">expressions</span><span class="p">)],</span> +</span><span id="values-4518"><a href="#values-4518"><span class="linenos">4518</span></a> <span class="p">)</span> +</span><span id="values-4519"><a href="#values-4519"><span class="linenos">4519</span></a> <span class="k">return</span> <span class="n">Values</span><span class="p">(</span> +</span><span id="values-4520"><a href="#values-4520"><span class="linenos">4520</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="values-4521"><a href="#values-4521"><span class="linenos">4521</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> +</span><span id="values-4522"><a href="#values-4522"><span class="linenos">4522</span></a> <span class="p">)</span> </span></pre></div> @@ -40094,28 +40976,28 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#var"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="var-4467"><a href="#var-4467"><span class="linenos">4467</span></a><span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Var</span><span class="p">:</span> -</span><span id="var-4468"><a href="#var-4468"><span class="linenos">4468</span></a><span class="w"> </span><span class="sd">"""Build a SQL variable.</span> -</span><span id="var-4469"><a href="#var-4469"><span class="linenos">4469</span></a> -</span><span id="var-4470"><a href="#var-4470"><span class="linenos">4470</span></a><span class="sd"> Example:</span> -</span><span id="var-4471"><a href="#var-4471"><span class="linenos">4471</span></a><span class="sd"> >>> repr(var('x'))</span> -</span><span id="var-4472"><a href="#var-4472"><span class="linenos">4472</span></a><span class="sd"> '(VAR this: x)'</span> -</span><span id="var-4473"><a href="#var-4473"><span class="linenos">4473</span></a> -</span><span id="var-4474"><a href="#var-4474"><span class="linenos">4474</span></a><span class="sd"> >>> repr(var(column('x', table='y')))</span> -</span><span id="var-4475"><a href="#var-4475"><span class="linenos">4475</span></a><span class="sd"> '(VAR this: x)'</span> -</span><span id="var-4476"><a href="#var-4476"><span class="linenos">4476</span></a> -</span><span id="var-4477"><a href="#var-4477"><span class="linenos">4477</span></a><span class="sd"> Args:</span> -</span><span id="var-4478"><a href="#var-4478"><span class="linenos">4478</span></a><span class="sd"> name: The name of the var or an expression who's name will become the var.</span> -</span><span id="var-4479"><a href="#var-4479"><span class="linenos">4479</span></a> -</span><span id="var-4480"><a href="#var-4480"><span class="linenos">4480</span></a><span class="sd"> Returns:</span> -</span><span id="var-4481"><a href="#var-4481"><span class="linenos">4481</span></a><span class="sd"> The new variable node.</span> -</span><span id="var-4482"><a href="#var-4482"><span class="linenos">4482</span></a><span class="sd"> """</span> -</span><span id="var-4483"><a href="#var-4483"><span class="linenos">4483</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> -</span><span id="var-4484"><a href="#var-4484"><span class="linenos">4484</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert empty name into var."</span><span class="p">)</span> -</span><span id="var-4485"><a href="#var-4485"><span class="linenos">4485</span></a> -</span><span id="var-4486"><a href="#var-4486"><span class="linenos">4486</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="var-4487"><a href="#var-4487"><span class="linenos">4487</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> -</span><span id="var-4488"><a href="#var-4488"><span class="linenos">4488</span></a> <span class="k">return</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="var-4525"><a href="#var-4525"><span class="linenos">4525</span></a><span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">Var</span><span class="p">:</span> +</span><span id="var-4526"><a href="#var-4526"><span class="linenos">4526</span></a><span class="w"> </span><span class="sd">"""Build a SQL variable.</span> +</span><span id="var-4527"><a href="#var-4527"><span class="linenos">4527</span></a> +</span><span id="var-4528"><a href="#var-4528"><span class="linenos">4528</span></a><span class="sd"> Example:</span> +</span><span id="var-4529"><a href="#var-4529"><span class="linenos">4529</span></a><span class="sd"> >>> repr(var('x'))</span> +</span><span id="var-4530"><a href="#var-4530"><span class="linenos">4530</span></a><span class="sd"> '(VAR this: x)'</span> +</span><span id="var-4531"><a href="#var-4531"><span class="linenos">4531</span></a> +</span><span id="var-4532"><a href="#var-4532"><span class="linenos">4532</span></a><span class="sd"> >>> repr(var(column('x', table='y')))</span> +</span><span id="var-4533"><a href="#var-4533"><span class="linenos">4533</span></a><span class="sd"> '(VAR this: x)'</span> +</span><span id="var-4534"><a href="#var-4534"><span class="linenos">4534</span></a> +</span><span id="var-4535"><a href="#var-4535"><span class="linenos">4535</span></a><span class="sd"> Args:</span> +</span><span id="var-4536"><a href="#var-4536"><span class="linenos">4536</span></a><span class="sd"> name: The name of the var or an expression who's name will become the var.</span> +</span><span id="var-4537"><a href="#var-4537"><span class="linenos">4537</span></a> +</span><span id="var-4538"><a href="#var-4538"><span class="linenos">4538</span></a><span class="sd"> Returns:</span> +</span><span id="var-4539"><a href="#var-4539"><span class="linenos">4539</span></a><span class="sd"> The new variable node.</span> +</span><span id="var-4540"><a href="#var-4540"><span class="linenos">4540</span></a><span class="sd"> """</span> +</span><span id="var-4541"><a href="#var-4541"><span class="linenos">4541</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span> +</span><span id="var-4542"><a href="#var-4542"><span class="linenos">4542</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert empty name into var."</span><span class="p">)</span> +</span><span id="var-4543"><a href="#var-4543"><span class="linenos">4543</span></a> +</span><span id="var-4544"><a href="#var-4544"><span class="linenos">4544</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="var-4545"><a href="#var-4545"><span class="linenos">4545</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> +</span><span id="var-4546"><a href="#var-4546"><span class="linenos">4546</span></a> <span class="k">return</span> <span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">)</span> </span></pre></div> @@ -40163,24 +41045,24 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#rename_table"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="rename_table-4491"><a href="#rename_table-4491"><span class="linenos">4491</span></a><span class="k">def</span> <span class="nf">rename_table</span><span class="p">(</span><span class="n">old_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">new_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> -</span><span id="rename_table-4492"><a href="#rename_table-4492"><span class="linenos">4492</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME... expression</span> -</span><span id="rename_table-4493"><a href="#rename_table-4493"><span class="linenos">4493</span></a> -</span><span id="rename_table-4494"><a href="#rename_table-4494"><span class="linenos">4494</span></a><span class="sd"> Args:</span> -</span><span id="rename_table-4495"><a href="#rename_table-4495"><span class="linenos">4495</span></a><span class="sd"> old_name: The old name of the table</span> -</span><span id="rename_table-4496"><a href="#rename_table-4496"><span class="linenos">4496</span></a><span class="sd"> new_name: The new name of the table</span> -</span><span id="rename_table-4497"><a href="#rename_table-4497"><span class="linenos">4497</span></a> -</span><span id="rename_table-4498"><a href="#rename_table-4498"><span class="linenos">4498</span></a><span class="sd"> Returns:</span> -</span><span id="rename_table-4499"><a href="#rename_table-4499"><span class="linenos">4499</span></a><span class="sd"> Alter table expression</span> -</span><span id="rename_table-4500"><a href="#rename_table-4500"><span class="linenos">4500</span></a><span class="sd"> """</span> -</span><span id="rename_table-4501"><a href="#rename_table-4501"><span class="linenos">4501</span></a> <span class="n">old_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">old_name</span><span class="p">)</span> -</span><span id="rename_table-4502"><a href="#rename_table-4502"><span class="linenos">4502</span></a> <span class="n">new_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> -</span><span id="rename_table-4503"><a href="#rename_table-4503"><span class="linenos">4503</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> -</span><span id="rename_table-4504"><a href="#rename_table-4504"><span class="linenos">4504</span></a> <span class="n">this</span><span class="o">=</span><span class="n">old_table</span><span class="p">,</span> -</span><span id="rename_table-4505"><a href="#rename_table-4505"><span class="linenos">4505</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> -</span><span id="rename_table-4506"><a href="#rename_table-4506"><span class="linenos">4506</span></a> <span class="n">RenameTable</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">new_table</span><span class="p">),</span> -</span><span id="rename_table-4507"><a href="#rename_table-4507"><span class="linenos">4507</span></a> <span class="p">],</span> -</span><span id="rename_table-4508"><a href="#rename_table-4508"><span class="linenos">4508</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="rename_table-4549"><a href="#rename_table-4549"><span class="linenos">4549</span></a><span class="k">def</span> <span class="nf">rename_table</span><span class="p">(</span><span class="n">old_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">,</span> <span class="n">new_name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">Table</span><span class="p">)</span> <span class="o">-></span> <span class="n">AlterTable</span><span class="p">:</span> +</span><span id="rename_table-4550"><a href="#rename_table-4550"><span class="linenos">4550</span></a><span class="w"> </span><span class="sd">"""Build ALTER TABLE... RENAME... expression</span> +</span><span id="rename_table-4551"><a href="#rename_table-4551"><span class="linenos">4551</span></a> +</span><span id="rename_table-4552"><a href="#rename_table-4552"><span class="linenos">4552</span></a><span class="sd"> Args:</span> +</span><span id="rename_table-4553"><a href="#rename_table-4553"><span class="linenos">4553</span></a><span class="sd"> old_name: The old name of the table</span> +</span><span id="rename_table-4554"><a href="#rename_table-4554"><span class="linenos">4554</span></a><span class="sd"> new_name: The new name of the table</span> +</span><span id="rename_table-4555"><a href="#rename_table-4555"><span class="linenos">4555</span></a> +</span><span id="rename_table-4556"><a href="#rename_table-4556"><span class="linenos">4556</span></a><span class="sd"> Returns:</span> +</span><span id="rename_table-4557"><a href="#rename_table-4557"><span class="linenos">4557</span></a><span class="sd"> Alter table expression</span> +</span><span id="rename_table-4558"><a href="#rename_table-4558"><span class="linenos">4558</span></a><span class="sd"> """</span> +</span><span id="rename_table-4559"><a href="#rename_table-4559"><span class="linenos">4559</span></a> <span class="n">old_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">old_name</span><span class="p">)</span> +</span><span id="rename_table-4560"><a href="#rename_table-4560"><span class="linenos">4560</span></a> <span class="n">new_table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> +</span><span id="rename_table-4561"><a href="#rename_table-4561"><span class="linenos">4561</span></a> <span class="k">return</span> <span class="n">AlterTable</span><span class="p">(</span> +</span><span id="rename_table-4562"><a href="#rename_table-4562"><span class="linenos">4562</span></a> <span class="n">this</span><span class="o">=</span><span class="n">old_table</span><span class="p">,</span> +</span><span id="rename_table-4563"><a href="#rename_table-4563"><span class="linenos">4563</span></a> <span class="n">actions</span><span class="o">=</span><span class="p">[</span> +</span><span id="rename_table-4564"><a href="#rename_table-4564"><span class="linenos">4564</span></a> <span class="n">RenameTable</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">new_table</span><span class="p">),</span> +</span><span id="rename_table-4565"><a href="#rename_table-4565"><span class="linenos">4565</span></a> <span class="p">],</span> +</span><span id="rename_table-4566"><a href="#rename_table-4566"><span class="linenos">4566</span></a> <span class="p">)</span> </span></pre></div> @@ -40213,47 +41095,47 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#convert"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="convert-4511"><a href="#convert-4511"><span class="linenos">4511</span></a><span class="k">def</span> <span class="nf">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="convert-4512"><a href="#convert-4512"><span class="linenos">4512</span></a><span class="w"> </span><span class="sd">"""Convert a python value into an expression object.</span> -</span><span id="convert-4513"><a href="#convert-4513"><span class="linenos">4513</span></a> -</span><span id="convert-4514"><a href="#convert-4514"><span class="linenos">4514</span></a><span class="sd"> Raises an error if a conversion is not possible.</span> -</span><span id="convert-4515"><a href="#convert-4515"><span class="linenos">4515</span></a> -</span><span id="convert-4516"><a href="#convert-4516"><span class="linenos">4516</span></a><span class="sd"> Args:</span> -</span><span id="convert-4517"><a href="#convert-4517"><span class="linenos">4517</span></a><span class="sd"> value (Any): a python object</span> -</span><span id="convert-4518"><a href="#convert-4518"><span class="linenos">4518</span></a> -</span><span id="convert-4519"><a href="#convert-4519"><span class="linenos">4519</span></a><span class="sd"> Returns:</span> -</span><span id="convert-4520"><a href="#convert-4520"><span class="linenos">4520</span></a><span class="sd"> Expression: the equivalent expression object</span> -</span><span id="convert-4521"><a href="#convert-4521"><span class="linenos">4521</span></a><span class="sd"> """</span> -</span><span id="convert-4522"><a href="#convert-4522"><span class="linenos">4522</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="convert-4523"><a href="#convert-4523"><span class="linenos">4523</span></a> <span class="k">return</span> <span class="n">value</span> -</span><span id="convert-4524"><a href="#convert-4524"><span class="linenos">4524</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="convert-4525"><a href="#convert-4525"><span class="linenos">4525</span></a> <span class="k">return</span> <span class="n">NULL</span> -</span><span id="convert-4526"><a href="#convert-4526"><span class="linenos">4526</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> -</span><span id="convert-4527"><a href="#convert-4527"><span class="linenos">4527</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> -</span><span id="convert-4528"><a href="#convert-4528"><span class="linenos">4528</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="convert-4529"><a href="#convert-4529"><span class="linenos">4529</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="convert-4530"><a href="#convert-4530"><span class="linenos">4530</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> -</span><span id="convert-4531"><a href="#convert-4531"><span class="linenos">4531</span></a> <span class="k">return</span> <span class="n">NULL</span> -</span><span id="convert-4532"><a href="#convert-4532"><span class="linenos">4532</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">numbers</span><span class="o">.</span><span class="n">Number</span><span class="p">):</span> -</span><span id="convert-4533"><a href="#convert-4533"><span class="linenos">4533</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="convert-4534"><a href="#convert-4534"><span class="linenos">4534</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> -</span><span id="convert-4535"><a href="#convert-4535"><span class="linenos">4535</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> -</span><span id="convert-4536"><a href="#convert-4536"><span class="linenos">4536</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="convert-4537"><a href="#convert-4537"><span class="linenos">4537</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> -</span><span id="convert-4538"><a href="#convert-4538"><span class="linenos">4538</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="convert-4539"><a href="#convert-4539"><span class="linenos">4539</span></a> <span class="k">return</span> <span class="n">Map</span><span class="p">(</span> -</span><span id="convert-4540"><a href="#convert-4540"><span class="linenos">4540</span></a> <span class="n">keys</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="p">],</span> -</span><span id="convert-4541"><a href="#convert-4541"><span class="linenos">4541</span></a> <span class="n">values</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">()],</span> -</span><span id="convert-4542"><a href="#convert-4542"><span class="linenos">4542</span></a> <span class="p">)</span> -</span><span id="convert-4543"><a href="#convert-4543"><span class="linenos">4543</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">):</span> -</span><span id="convert-4544"><a href="#convert-4544"><span class="linenos">4544</span></a> <span class="n">datetime_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> -</span><span id="convert-4545"><a href="#convert-4545"><span class="linenos">4545</span></a> <span class="p">(</span><span class="n">value</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">tzinfo</span> <span class="k">else</span> <span class="n">value</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">utc</span><span class="p">))</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span> -</span><span id="convert-4546"><a href="#convert-4546"><span class="linenos">4546</span></a> <span class="p">)</span> -</span><span id="convert-4547"><a href="#convert-4547"><span class="linenos">4547</span></a> <span class="k">return</span> <span class="n">TimeStrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">datetime_literal</span><span class="p">)</span> -</span><span id="convert-4548"><a href="#convert-4548"><span class="linenos">4548</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">):</span> -</span><span id="convert-4549"><a href="#convert-4549"><span class="linenos">4549</span></a> <span class="n">date_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> -</span><span id="convert-4550"><a href="#convert-4550"><span class="linenos">4550</span></a> <span class="k">return</span> <span class="n">DateStrToDate</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">date_literal</span><span class="p">)</span> -</span><span id="convert-4551"><a href="#convert-4551"><span class="linenos">4551</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="convert-4569"><a href="#convert-4569"><span class="linenos">4569</span></a><span class="k">def</span> <span class="nf">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="convert-4570"><a href="#convert-4570"><span class="linenos">4570</span></a><span class="w"> </span><span class="sd">"""Convert a python value into an expression object.</span> +</span><span id="convert-4571"><a href="#convert-4571"><span class="linenos">4571</span></a> +</span><span id="convert-4572"><a href="#convert-4572"><span class="linenos">4572</span></a><span class="sd"> Raises an error if a conversion is not possible.</span> +</span><span id="convert-4573"><a href="#convert-4573"><span class="linenos">4573</span></a> +</span><span id="convert-4574"><a href="#convert-4574"><span class="linenos">4574</span></a><span class="sd"> Args:</span> +</span><span id="convert-4575"><a href="#convert-4575"><span class="linenos">4575</span></a><span class="sd"> value (Any): a python object</span> +</span><span id="convert-4576"><a href="#convert-4576"><span class="linenos">4576</span></a> +</span><span id="convert-4577"><a href="#convert-4577"><span class="linenos">4577</span></a><span class="sd"> Returns:</span> +</span><span id="convert-4578"><a href="#convert-4578"><span class="linenos">4578</span></a><span class="sd"> Expression: the equivalent expression object</span> +</span><span id="convert-4579"><a href="#convert-4579"><span class="linenos">4579</span></a><span class="sd"> """</span> +</span><span id="convert-4580"><a href="#convert-4580"><span class="linenos">4580</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="convert-4581"><a href="#convert-4581"><span class="linenos">4581</span></a> <span class="k">return</span> <span class="n">value</span> +</span><span id="convert-4582"><a href="#convert-4582"><span class="linenos">4582</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="convert-4583"><a href="#convert-4583"><span class="linenos">4583</span></a> <span class="k">return</span> <span class="n">NULL</span> +</span><span id="convert-4584"><a href="#convert-4584"><span class="linenos">4584</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bool</span><span class="p">):</span> +</span><span id="convert-4585"><a href="#convert-4585"><span class="linenos">4585</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">)</span> +</span><span id="convert-4586"><a href="#convert-4586"><span class="linenos">4586</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="convert-4587"><a href="#convert-4587"><span class="linenos">4587</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="convert-4588"><a href="#convert-4588"><span class="linenos">4588</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="ow">and</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">):</span> +</span><span id="convert-4589"><a href="#convert-4589"><span class="linenos">4589</span></a> <span class="k">return</span> <span class="n">NULL</span> +</span><span id="convert-4590"><a href="#convert-4590"><span class="linenos">4590</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">numbers</span><span class="o">.</span><span class="n">Number</span><span class="p">):</span> +</span><span id="convert-4591"><a href="#convert-4591"><span class="linenos">4591</span></a> <span class="k">return</span> <span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="convert-4592"><a href="#convert-4592"><span class="linenos">4592</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">):</span> +</span><span id="convert-4593"><a href="#convert-4593"><span class="linenos">4593</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> +</span><span id="convert-4594"><a href="#convert-4594"><span class="linenos">4594</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="convert-4595"><a href="#convert-4595"><span class="linenos">4595</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="p">])</span> +</span><span id="convert-4596"><a href="#convert-4596"><span class="linenos">4596</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="convert-4597"><a href="#convert-4597"><span class="linenos">4597</span></a> <span class="k">return</span> <span class="n">Map</span><span class="p">(</span> +</span><span id="convert-4598"><a href="#convert-4598"><span class="linenos">4598</span></a> <span class="n">keys</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">value</span><span class="p">],</span> +</span><span id="convert-4599"><a href="#convert-4599"><span class="linenos">4599</span></a> <span class="n">values</span><span class="o">=</span><span class="p">[</span><span class="n">convert</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">values</span><span class="p">()],</span> +</span><span id="convert-4600"><a href="#convert-4600"><span class="linenos">4600</span></a> <span class="p">)</span> +</span><span id="convert-4601"><a href="#convert-4601"><span class="linenos">4601</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="p">):</span> +</span><span id="convert-4602"><a href="#convert-4602"><span class="linenos">4602</span></a> <span class="n">datetime_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span> +</span><span id="convert-4603"><a href="#convert-4603"><span class="linenos">4603</span></a> <span class="p">(</span><span class="n">value</span> <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">tzinfo</span> <span class="k">else</span> <span class="n">value</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">tzinfo</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">utc</span><span class="p">))</span><span class="o">.</span><span class="n">isoformat</span><span class="p">()</span> +</span><span id="convert-4604"><a href="#convert-4604"><span class="linenos">4604</span></a> <span class="p">)</span> +</span><span id="convert-4605"><a href="#convert-4605"><span class="linenos">4605</span></a> <span class="k">return</span> <span class="n">TimeStrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">datetime_literal</span><span class="p">)</span> +</span><span id="convert-4606"><a href="#convert-4606"><span class="linenos">4606</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="p">):</span> +</span><span id="convert-4607"><a href="#convert-4607"><span class="linenos">4607</span></a> <span class="n">date_literal</span> <span class="o">=</span> <span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">"%Y-%m-</span><span class="si">%d</span><span class="s2">"</span><span class="p">))</span> +</span><span id="convert-4608"><a href="#convert-4608"><span class="linenos">4608</span></a> <span class="k">return</span> <span class="n">DateStrToDate</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">date_literal</span><span class="p">)</span> +</span><span id="convert-4609"><a href="#convert-4609"><span class="linenos">4609</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot convert </span><span class="si">{</span><span class="n">value</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span></pre></div> @@ -40287,26 +41169,26 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#replace_children"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="replace_children-4554"><a href="#replace_children-4554"><span class="linenos">4554</span></a><span class="k">def</span> <span class="nf">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">fun</span><span class="p">):</span> -</span><span id="replace_children-4555"><a href="#replace_children-4555"><span class="linenos">4555</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="replace_children-4556"><a href="#replace_children-4556"><span class="linenos">4556</span></a><span class="sd"> Replace children of an expression with the result of a lambda fun(child) -> exp.</span> -</span><span id="replace_children-4557"><a href="#replace_children-4557"><span class="linenos">4557</span></a><span class="sd"> """</span> -</span><span id="replace_children-4558"><a href="#replace_children-4558"><span class="linenos">4558</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="replace_children-4559"><a href="#replace_children-4559"><span class="linenos">4559</span></a> <span class="n">is_list_arg</span> <span class="o">=</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> -</span><span id="replace_children-4560"><a href="#replace_children-4560"><span class="linenos">4560</span></a> -</span><span id="replace_children-4561"><a href="#replace_children-4561"><span class="linenos">4561</span></a> <span class="n">child_nodes</span> <span class="o">=</span> <span class="n">v</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="p">[</span><span class="n">v</span><span class="p">]</span> -</span><span id="replace_children-4562"><a href="#replace_children-4562"><span class="linenos">4562</span></a> <span class="n">new_child_nodes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="replace_children-4563"><a href="#replace_children-4563"><span class="linenos">4563</span></a> -</span><span id="replace_children-4564"><a href="#replace_children-4564"><span class="linenos">4564</span></a> <span class="k">for</span> <span class="n">cn</span> <span class="ow">in</span> <span class="n">child_nodes</span><span class="p">:</span> -</span><span id="replace_children-4565"><a href="#replace_children-4565"><span class="linenos">4565</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="replace_children-4566"><a href="#replace_children-4566"><span class="linenos">4566</span></a> <span class="k">for</span> <span class="n">child_node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">fun</span><span class="p">(</span><span class="n">cn</span><span class="p">)):</span> -</span><span id="replace_children-4567"><a href="#replace_children-4567"><span class="linenos">4567</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child_node</span><span class="p">)</span> -</span><span id="replace_children-4568"><a href="#replace_children-4568"><span class="linenos">4568</span></a> <span class="n">child_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="replace_children-4569"><a href="#replace_children-4569"><span class="linenos">4569</span></a> <span class="n">child_node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">k</span> -</span><span id="replace_children-4570"><a href="#replace_children-4570"><span class="linenos">4570</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="replace_children-4571"><a href="#replace_children-4571"><span class="linenos">4571</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cn</span><span class="p">)</span> -</span><span id="replace_children-4572"><a href="#replace_children-4572"><span class="linenos">4572</span></a> -</span><span id="replace_children-4573"><a href="#replace_children-4573"><span class="linenos">4573</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_child_nodes</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">new_child_nodes</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="replace_children-4612"><a href="#replace_children-4612"><span class="linenos">4612</span></a><span class="k">def</span> <span class="nf">replace_children</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">fun</span><span class="p">):</span> +</span><span id="replace_children-4613"><a href="#replace_children-4613"><span class="linenos">4613</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="replace_children-4614"><a href="#replace_children-4614"><span class="linenos">4614</span></a><span class="sd"> Replace children of an expression with the result of a lambda fun(child) -> exp.</span> +</span><span id="replace_children-4615"><a href="#replace_children-4615"><span class="linenos">4615</span></a><span class="sd"> """</span> +</span><span id="replace_children-4616"><a href="#replace_children-4616"><span class="linenos">4616</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="replace_children-4617"><a href="#replace_children-4617"><span class="linenos">4617</span></a> <span class="n">is_list_arg</span> <span class="o">=</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> +</span><span id="replace_children-4618"><a href="#replace_children-4618"><span class="linenos">4618</span></a> +</span><span id="replace_children-4619"><a href="#replace_children-4619"><span class="linenos">4619</span></a> <span class="n">child_nodes</span> <span class="o">=</span> <span class="n">v</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="p">[</span><span class="n">v</span><span class="p">]</span> +</span><span id="replace_children-4620"><a href="#replace_children-4620"><span class="linenos">4620</span></a> <span class="n">new_child_nodes</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="replace_children-4621"><a href="#replace_children-4621"><span class="linenos">4621</span></a> +</span><span id="replace_children-4622"><a href="#replace_children-4622"><span class="linenos">4622</span></a> <span class="k">for</span> <span class="n">cn</span> <span class="ow">in</span> <span class="n">child_nodes</span><span class="p">:</span> +</span><span id="replace_children-4623"><a href="#replace_children-4623"><span class="linenos">4623</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">cn</span><span class="p">,</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="replace_children-4624"><a href="#replace_children-4624"><span class="linenos">4624</span></a> <span class="k">for</span> <span class="n">child_node</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">fun</span><span class="p">(</span><span class="n">cn</span><span class="p">)):</span> +</span><span id="replace_children-4625"><a href="#replace_children-4625"><span class="linenos">4625</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">child_node</span><span class="p">)</span> +</span><span id="replace_children-4626"><a href="#replace_children-4626"><span class="linenos">4626</span></a> <span class="n">child_node</span><span class="o">.</span><span class="n">parent</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="replace_children-4627"><a href="#replace_children-4627"><span class="linenos">4627</span></a> <span class="n">child_node</span><span class="o">.</span><span class="n">arg_key</span> <span class="o">=</span> <span class="n">k</span> +</span><span id="replace_children-4628"><a href="#replace_children-4628"><span class="linenos">4628</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="replace_children-4629"><a href="#replace_children-4629"><span class="linenos">4629</span></a> <span class="n">new_child_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cn</span><span class="p">)</span> +</span><span id="replace_children-4630"><a href="#replace_children-4630"><span class="linenos">4630</span></a> +</span><span id="replace_children-4631"><a href="#replace_children-4631"><span class="linenos">4631</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">new_child_nodes</span> <span class="k">if</span> <span class="n">is_list_arg</span> <span class="k">else</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">new_child_nodes</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> </span></pre></div> @@ -40326,22 +41208,22 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#column_table_names"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="column_table_names-4576"><a href="#column_table_names-4576"><span class="linenos">4576</span></a><span class="k">def</span> <span class="nf">column_table_names</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span> -</span><span id="column_table_names-4577"><a href="#column_table_names-4577"><span class="linenos">4577</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="column_table_names-4578"><a href="#column_table_names-4578"><span class="linenos">4578</span></a><span class="sd"> Return all table names referenced through columns in an expression.</span> -</span><span id="column_table_names-4579"><a href="#column_table_names-4579"><span class="linenos">4579</span></a> -</span><span id="column_table_names-4580"><a href="#column_table_names-4580"><span class="linenos">4580</span></a><span class="sd"> Example:</span> -</span><span id="column_table_names-4581"><a href="#column_table_names-4581"><span class="linenos">4581</span></a><span class="sd"> >>> import sqlglot</span> -</span><span id="column_table_names-4582"><a href="#column_table_names-4582"><span class="linenos">4582</span></a><span class="sd"> >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))</span> -</span><span id="column_table_names-4583"><a href="#column_table_names-4583"><span class="linenos">4583</span></a><span class="sd"> ['c', 'a']</span> -</span><span id="column_table_names-4584"><a href="#column_table_names-4584"><span class="linenos">4584</span></a> -</span><span id="column_table_names-4585"><a href="#column_table_names-4585"><span class="linenos">4585</span></a><span class="sd"> Args:</span> -</span><span id="column_table_names-4586"><a href="#column_table_names-4586"><span class="linenos">4586</span></a><span class="sd"> expression (sqlglot.Expression): expression to find table names</span> -</span><span id="column_table_names-4587"><a href="#column_table_names-4587"><span class="linenos">4587</span></a> -</span><span id="column_table_names-4588"><a href="#column_table_names-4588"><span class="linenos">4588</span></a><span class="sd"> Returns:</span> -</span><span id="column_table_names-4589"><a href="#column_table_names-4589"><span class="linenos">4589</span></a><span class="sd"> list: A list of unique names</span> -</span><span id="column_table_names-4590"><a href="#column_table_names-4590"><span class="linenos">4590</span></a><span class="sd"> """</span> -</span><span id="column_table_names-4591"><a href="#column_table_names-4591"><span class="linenos">4591</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Column</span><span class="p">)))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="column_table_names-4634"><a href="#column_table_names-4634"><span class="linenos">4634</span></a><span class="k">def</span> <span class="nf">column_table_names</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span> +</span><span id="column_table_names-4635"><a href="#column_table_names-4635"><span class="linenos">4635</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="column_table_names-4636"><a href="#column_table_names-4636"><span class="linenos">4636</span></a><span class="sd"> Return all table names referenced through columns in an expression.</span> +</span><span id="column_table_names-4637"><a href="#column_table_names-4637"><span class="linenos">4637</span></a> +</span><span id="column_table_names-4638"><a href="#column_table_names-4638"><span class="linenos">4638</span></a><span class="sd"> Example:</span> +</span><span id="column_table_names-4639"><a href="#column_table_names-4639"><span class="linenos">4639</span></a><span class="sd"> >>> import sqlglot</span> +</span><span id="column_table_names-4640"><a href="#column_table_names-4640"><span class="linenos">4640</span></a><span class="sd"> >>> column_table_names(sqlglot.parse_one("a.b AND c.d AND c.e"))</span> +</span><span id="column_table_names-4641"><a href="#column_table_names-4641"><span class="linenos">4641</span></a><span class="sd"> ['c', 'a']</span> +</span><span id="column_table_names-4642"><a href="#column_table_names-4642"><span class="linenos">4642</span></a> +</span><span id="column_table_names-4643"><a href="#column_table_names-4643"><span class="linenos">4643</span></a><span class="sd"> Args:</span> +</span><span id="column_table_names-4644"><a href="#column_table_names-4644"><span class="linenos">4644</span></a><span class="sd"> expression (sqlglot.Expression): expression to find table names</span> +</span><span id="column_table_names-4645"><a href="#column_table_names-4645"><span class="linenos">4645</span></a> +</span><span id="column_table_names-4646"><a href="#column_table_names-4646"><span class="linenos">4646</span></a><span class="sd"> Returns:</span> +</span><span id="column_table_names-4647"><a href="#column_table_names-4647"><span class="linenos">4647</span></a><span class="sd"> list: A list of unique names</span> +</span><span id="column_table_names-4648"><a href="#column_table_names-4648"><span class="linenos">4648</span></a><span class="sd"> """</span> +</span><span id="column_table_names-4649"><a href="#column_table_names-4649"><span class="linenos">4649</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">dict</span><span class="o">.</span><span class="n">fromkeys</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">table</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">Column</span><span class="p">)))</span> </span></pre></div> @@ -40384,35 +41266,35 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#table_name"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="table_name-4594"><a href="#table_name-4594"><span class="linenos">4594</span></a><span class="k">def</span> <span class="nf">table_name</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="table_name-4595"><a href="#table_name-4595"><span class="linenos">4595</span></a><span class="w"> </span><span class="sd">"""Get the full name of a table as a string.</span> -</span><span id="table_name-4596"><a href="#table_name-4596"><span class="linenos">4596</span></a> -</span><span id="table_name-4597"><a href="#table_name-4597"><span class="linenos">4597</span></a><span class="sd"> Args:</span> -</span><span id="table_name-4598"><a href="#table_name-4598"><span class="linenos">4598</span></a><span class="sd"> table (exp.Table | str): table expression node or string.</span> -</span><span id="table_name-4599"><a href="#table_name-4599"><span class="linenos">4599</span></a> -</span><span id="table_name-4600"><a href="#table_name-4600"><span class="linenos">4600</span></a><span class="sd"> Examples:</span> -</span><span id="table_name-4601"><a href="#table_name-4601"><span class="linenos">4601</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="table_name-4602"><a href="#table_name-4602"><span class="linenos">4602</span></a><span class="sd"> >>> table_name(parse_one("select * from a.b.c").find(exp.Table))</span> -</span><span id="table_name-4603"><a href="#table_name-4603"><span class="linenos">4603</span></a><span class="sd"> 'a.b.c'</span> -</span><span id="table_name-4604"><a href="#table_name-4604"><span class="linenos">4604</span></a> -</span><span id="table_name-4605"><a href="#table_name-4605"><span class="linenos">4605</span></a><span class="sd"> Returns:</span> -</span><span id="table_name-4606"><a href="#table_name-4606"><span class="linenos">4606</span></a><span class="sd"> The table name.</span> -</span><span id="table_name-4607"><a href="#table_name-4607"><span class="linenos">4607</span></a><span class="sd"> """</span> -</span><span id="table_name-4608"><a href="#table_name-4608"><span class="linenos">4608</span></a> -</span><span id="table_name-4609"><a href="#table_name-4609"><span class="linenos">4609</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">)</span> -</span><span id="table_name-4610"><a href="#table_name-4610"><span class="linenos">4610</span></a> -</span><span id="table_name-4611"><a href="#table_name-4611"><span class="linenos">4611</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> -</span><span id="table_name-4612"><a href="#table_name-4612"><span class="linenos">4612</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="table_name-4613"><a href="#table_name-4613"><span class="linenos">4613</span></a> -</span><span id="table_name-4614"><a href="#table_name-4614"><span class="linenos">4614</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="table_name-4615"><a href="#table_name-4615"><span class="linenos">4615</span></a> <span class="n">part</span> -</span><span id="table_name-4616"><a href="#table_name-4616"><span class="linenos">4616</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="table_name-4617"><a href="#table_name-4617"><span class="linenos">4617</span></a> <span class="n">table</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">),</span> -</span><span id="table_name-4618"><a href="#table_name-4618"><span class="linenos">4618</span></a> <span class="n">table</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> -</span><span id="table_name-4619"><a href="#table_name-4619"><span class="linenos">4619</span></a> <span class="n">table</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> -</span><span id="table_name-4620"><a href="#table_name-4620"><span class="linenos">4620</span></a> <span class="p">)</span> -</span><span id="table_name-4621"><a href="#table_name-4621"><span class="linenos">4621</span></a> <span class="k">if</span> <span class="n">part</span> -</span><span id="table_name-4622"><a href="#table_name-4622"><span class="linenos">4622</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="table_name-4652"><a href="#table_name-4652"><span class="linenos">4652</span></a><span class="k">def</span> <span class="nf">table_name</span><span class="p">(</span><span class="n">table</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="table_name-4653"><a href="#table_name-4653"><span class="linenos">4653</span></a><span class="w"> </span><span class="sd">"""Get the full name of a table as a string.</span> +</span><span id="table_name-4654"><a href="#table_name-4654"><span class="linenos">4654</span></a> +</span><span id="table_name-4655"><a href="#table_name-4655"><span class="linenos">4655</span></a><span class="sd"> Args:</span> +</span><span id="table_name-4656"><a href="#table_name-4656"><span class="linenos">4656</span></a><span class="sd"> table (exp.Table | str): table expression node or string.</span> +</span><span id="table_name-4657"><a href="#table_name-4657"><span class="linenos">4657</span></a> +</span><span id="table_name-4658"><a href="#table_name-4658"><span class="linenos">4658</span></a><span class="sd"> Examples:</span> +</span><span id="table_name-4659"><a href="#table_name-4659"><span class="linenos">4659</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="table_name-4660"><a href="#table_name-4660"><span class="linenos">4660</span></a><span class="sd"> >>> table_name(parse_one("select * from a.b.c").find(exp.Table))</span> +</span><span id="table_name-4661"><a href="#table_name-4661"><span class="linenos">4661</span></a><span class="sd"> 'a.b.c'</span> +</span><span id="table_name-4662"><a href="#table_name-4662"><span class="linenos">4662</span></a> +</span><span id="table_name-4663"><a href="#table_name-4663"><span class="linenos">4663</span></a><span class="sd"> Returns:</span> +</span><span id="table_name-4664"><a href="#table_name-4664"><span class="linenos">4664</span></a><span class="sd"> The table name.</span> +</span><span id="table_name-4665"><a href="#table_name-4665"><span class="linenos">4665</span></a><span class="sd"> """</span> +</span><span id="table_name-4666"><a href="#table_name-4666"><span class="linenos">4666</span></a> +</span><span id="table_name-4667"><a href="#table_name-4667"><span class="linenos">4667</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">table</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">Table</span><span class="p">)</span> +</span><span id="table_name-4668"><a href="#table_name-4668"><span class="linenos">4668</span></a> +</span><span id="table_name-4669"><a href="#table_name-4669"><span class="linenos">4669</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> +</span><span id="table_name-4670"><a href="#table_name-4670"><span class="linenos">4670</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Cannot parse </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="table_name-4671"><a href="#table_name-4671"><span class="linenos">4671</span></a> +</span><span id="table_name-4672"><a href="#table_name-4672"><span class="linenos">4672</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="table_name-4673"><a href="#table_name-4673"><span class="linenos">4673</span></a> <span class="n">part</span> +</span><span id="table_name-4674"><a href="#table_name-4674"><span class="linenos">4674</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="table_name-4675"><a href="#table_name-4675"><span class="linenos">4675</span></a> <span class="n">table</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">),</span> +</span><span id="table_name-4676"><a href="#table_name-4676"><span class="linenos">4676</span></a> <span class="n">table</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> +</span><span id="table_name-4677"><a href="#table_name-4677"><span class="linenos">4677</span></a> <span class="n">table</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> +</span><span id="table_name-4678"><a href="#table_name-4678"><span class="linenos">4678</span></a> <span class="p">)</span> +</span><span id="table_name-4679"><a href="#table_name-4679"><span class="linenos">4679</span></a> <span class="k">if</span> <span class="n">part</span> +</span><span id="table_name-4680"><a href="#table_name-4680"><span class="linenos">4680</span></a> <span class="p">)</span> </span></pre></div> @@ -40455,33 +41337,33 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#replace_tables"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="replace_tables-4625"><a href="#replace_tables-4625"><span class="linenos">4625</span></a><span class="k">def</span> <span class="nf">replace_tables</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">mapping</span><span class="p">):</span> -</span><span id="replace_tables-4626"><a href="#replace_tables-4626"><span class="linenos">4626</span></a><span class="w"> </span><span class="sd">"""Replace all tables in expression according to the mapping.</span> -</span><span id="replace_tables-4627"><a href="#replace_tables-4627"><span class="linenos">4627</span></a> -</span><span id="replace_tables-4628"><a href="#replace_tables-4628"><span class="linenos">4628</span></a><span class="sd"> Args:</span> -</span><span id="replace_tables-4629"><a href="#replace_tables-4629"><span class="linenos">4629</span></a><span class="sd"> expression (sqlglot.Expression): expression node to be transformed and replaced.</span> -</span><span id="replace_tables-4630"><a href="#replace_tables-4630"><span class="linenos">4630</span></a><span class="sd"> mapping (Dict[str, str]): mapping of table names.</span> -</span><span id="replace_tables-4631"><a href="#replace_tables-4631"><span class="linenos">4631</span></a> -</span><span id="replace_tables-4632"><a href="#replace_tables-4632"><span class="linenos">4632</span></a><span class="sd"> Examples:</span> -</span><span id="replace_tables-4633"><a href="#replace_tables-4633"><span class="linenos">4633</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="replace_tables-4634"><a href="#replace_tables-4634"><span class="linenos">4634</span></a><span class="sd"> >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()</span> -</span><span id="replace_tables-4635"><a href="#replace_tables-4635"><span class="linenos">4635</span></a><span class="sd"> 'SELECT * FROM c'</span> -</span><span id="replace_tables-4636"><a href="#replace_tables-4636"><span class="linenos">4636</span></a> -</span><span id="replace_tables-4637"><a href="#replace_tables-4637"><span class="linenos">4637</span></a><span class="sd"> Returns:</span> -</span><span id="replace_tables-4638"><a href="#replace_tables-4638"><span class="linenos">4638</span></a><span class="sd"> The mapped expression.</span> -</span><span id="replace_tables-4639"><a href="#replace_tables-4639"><span class="linenos">4639</span></a><span class="sd"> """</span> -</span><span id="replace_tables-4640"><a href="#replace_tables-4640"><span class="linenos">4640</span></a> -</span><span id="replace_tables-4641"><a href="#replace_tables-4641"><span class="linenos">4641</span></a> <span class="k">def</span> <span class="nf">_replace_tables</span><span class="p">(</span><span class="n">node</span><span class="p">):</span> -</span><span id="replace_tables-4642"><a href="#replace_tables-4642"><span class="linenos">4642</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="replace_tables-4643"><a href="#replace_tables-4643"><span class="linenos">4643</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table_name</span><span class="p">(</span><span class="n">node</span><span class="p">))</span> -</span><span id="replace_tables-4644"><a href="#replace_tables-4644"><span class="linenos">4644</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> -</span><span id="replace_tables-4645"><a href="#replace_tables-4645"><span class="linenos">4645</span></a> <span class="k">return</span> <span class="n">to_table</span><span class="p">(</span> -</span><span id="replace_tables-4646"><a href="#replace_tables-4646"><span class="linenos">4646</span></a> <span class="n">new_name</span><span class="p">,</span> -</span><span id="replace_tables-4647"><a href="#replace_tables-4647"><span class="linenos">4647</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">,</span> <span class="s2">"catalog"</span><span class="p">)},</span> -</span><span id="replace_tables-4648"><a href="#replace_tables-4648"><span class="linenos">4648</span></a> <span class="p">)</span> -</span><span id="replace_tables-4649"><a href="#replace_tables-4649"><span class="linenos">4649</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="replace_tables-4650"><a href="#replace_tables-4650"><span class="linenos">4650</span></a> -</span><span id="replace_tables-4651"><a href="#replace_tables-4651"><span class="linenos">4651</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="replace_tables-4683"><a href="#replace_tables-4683"><span class="linenos">4683</span></a><span class="k">def</span> <span class="nf">replace_tables</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">mapping</span><span class="p">):</span> +</span><span id="replace_tables-4684"><a href="#replace_tables-4684"><span class="linenos">4684</span></a><span class="w"> </span><span class="sd">"""Replace all tables in expression according to the mapping.</span> +</span><span id="replace_tables-4685"><a href="#replace_tables-4685"><span class="linenos">4685</span></a> +</span><span id="replace_tables-4686"><a href="#replace_tables-4686"><span class="linenos">4686</span></a><span class="sd"> Args:</span> +</span><span id="replace_tables-4687"><a href="#replace_tables-4687"><span class="linenos">4687</span></a><span class="sd"> expression (sqlglot.Expression): expression node to be transformed and replaced.</span> +</span><span id="replace_tables-4688"><a href="#replace_tables-4688"><span class="linenos">4688</span></a><span class="sd"> mapping (Dict[str, str]): mapping of table names.</span> +</span><span id="replace_tables-4689"><a href="#replace_tables-4689"><span class="linenos">4689</span></a> +</span><span id="replace_tables-4690"><a href="#replace_tables-4690"><span class="linenos">4690</span></a><span class="sd"> Examples:</span> +</span><span id="replace_tables-4691"><a href="#replace_tables-4691"><span class="linenos">4691</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="replace_tables-4692"><a href="#replace_tables-4692"><span class="linenos">4692</span></a><span class="sd"> >>> replace_tables(parse_one("select * from a.b"), {"a.b": "c"}).sql()</span> +</span><span id="replace_tables-4693"><a href="#replace_tables-4693"><span class="linenos">4693</span></a><span class="sd"> 'SELECT * FROM c'</span> +</span><span id="replace_tables-4694"><a href="#replace_tables-4694"><span class="linenos">4694</span></a> +</span><span id="replace_tables-4695"><a href="#replace_tables-4695"><span class="linenos">4695</span></a><span class="sd"> Returns:</span> +</span><span id="replace_tables-4696"><a href="#replace_tables-4696"><span class="linenos">4696</span></a><span class="sd"> The mapped expression.</span> +</span><span id="replace_tables-4697"><a href="#replace_tables-4697"><span class="linenos">4697</span></a><span class="sd"> """</span> +</span><span id="replace_tables-4698"><a href="#replace_tables-4698"><span class="linenos">4698</span></a> +</span><span id="replace_tables-4699"><a href="#replace_tables-4699"><span class="linenos">4699</span></a> <span class="k">def</span> <span class="nf">_replace_tables</span><span class="p">(</span><span class="n">node</span><span class="p">):</span> +</span><span id="replace_tables-4700"><a href="#replace_tables-4700"><span class="linenos">4700</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="replace_tables-4701"><a href="#replace_tables-4701"><span class="linenos">4701</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">mapping</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table_name</span><span class="p">(</span><span class="n">node</span><span class="p">))</span> +</span><span id="replace_tables-4702"><a href="#replace_tables-4702"><span class="linenos">4702</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> +</span><span id="replace_tables-4703"><a href="#replace_tables-4703"><span class="linenos">4703</span></a> <span class="k">return</span> <span class="n">to_table</span><span class="p">(</span> +</span><span id="replace_tables-4704"><a href="#replace_tables-4704"><span class="linenos">4704</span></a> <span class="n">new_name</span><span class="p">,</span> +</span><span id="replace_tables-4705"><a href="#replace_tables-4705"><span class="linenos">4705</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="s2">"db"</span><span class="p">,</span> <span class="s2">"catalog"</span><span class="p">)},</span> +</span><span id="replace_tables-4706"><a href="#replace_tables-4706"><span class="linenos">4706</span></a> <span class="p">)</span> +</span><span id="replace_tables-4707"><a href="#replace_tables-4707"><span class="linenos">4707</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="replace_tables-4708"><a href="#replace_tables-4708"><span class="linenos">4708</span></a> +</span><span id="replace_tables-4709"><a href="#replace_tables-4709"><span class="linenos">4709</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">)</span> </span></pre></div> @@ -40525,39 +41407,39 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#replace_placeholders"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="replace_placeholders-4654"><a href="#replace_placeholders-4654"><span class="linenos">4654</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> -</span><span id="replace_placeholders-4655"><a href="#replace_placeholders-4655"><span class="linenos">4655</span></a><span class="w"> </span><span class="sd">"""Replace placeholders in an expression.</span> -</span><span id="replace_placeholders-4656"><a href="#replace_placeholders-4656"><span class="linenos">4656</span></a> -</span><span id="replace_placeholders-4657"><a href="#replace_placeholders-4657"><span class="linenos">4657</span></a><span class="sd"> Args:</span> -</span><span id="replace_placeholders-4658"><a href="#replace_placeholders-4658"><span class="linenos">4658</span></a><span class="sd"> expression (sqlglot.Expression): expression node to be transformed and replaced.</span> -</span><span id="replace_placeholders-4659"><a href="#replace_placeholders-4659"><span class="linenos">4659</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span> -</span><span id="replace_placeholders-4660"><a href="#replace_placeholders-4660"><span class="linenos">4660</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span> -</span><span id="replace_placeholders-4661"><a href="#replace_placeholders-4661"><span class="linenos">4661</span></a> -</span><span id="replace_placeholders-4662"><a href="#replace_placeholders-4662"><span class="linenos">4662</span></a><span class="sd"> Examples:</span> -</span><span id="replace_placeholders-4663"><a href="#replace_placeholders-4663"><span class="linenos">4663</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> -</span><span id="replace_placeholders-4664"><a href="#replace_placeholders-4664"><span class="linenos">4664</span></a><span class="sd"> >>> replace_placeholders(</span> -</span><span id="replace_placeholders-4665"><a href="#replace_placeholders-4665"><span class="linenos">4665</span></a><span class="sd"> ... parse_one("select * from :tbl where ? = ?"), "a", "b", tbl="foo"</span> -</span><span id="replace_placeholders-4666"><a href="#replace_placeholders-4666"><span class="linenos">4666</span></a><span class="sd"> ... ).sql()</span> -</span><span id="replace_placeholders-4667"><a href="#replace_placeholders-4667"><span class="linenos">4667</span></a><span class="sd"> 'SELECT * FROM foo WHERE a = b'</span> -</span><span id="replace_placeholders-4668"><a href="#replace_placeholders-4668"><span class="linenos">4668</span></a> -</span><span id="replace_placeholders-4669"><a href="#replace_placeholders-4669"><span class="linenos">4669</span></a><span class="sd"> Returns:</span> -</span><span id="replace_placeholders-4670"><a href="#replace_placeholders-4670"><span class="linenos">4670</span></a><span class="sd"> The mapped expression.</span> -</span><span id="replace_placeholders-4671"><a href="#replace_placeholders-4671"><span class="linenos">4671</span></a><span class="sd"> """</span> -</span><span id="replace_placeholders-4672"><a href="#replace_placeholders-4672"><span class="linenos">4672</span></a> -</span><span id="replace_placeholders-4673"><a href="#replace_placeholders-4673"><span class="linenos">4673</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> -</span><span id="replace_placeholders-4674"><a href="#replace_placeholders-4674"><span class="linenos">4674</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Placeholder</span><span class="p">):</span> -</span><span id="replace_placeholders-4675"><a href="#replace_placeholders-4675"><span class="linenos">4675</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> -</span><span id="replace_placeholders-4676"><a href="#replace_placeholders-4676"><span class="linenos">4676</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="replace_placeholders-4677"><a href="#replace_placeholders-4677"><span class="linenos">4677</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> -</span><span id="replace_placeholders-4678"><a href="#replace_placeholders-4678"><span class="linenos">4678</span></a> <span class="k">return</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> -</span><span id="replace_placeholders-4679"><a href="#replace_placeholders-4679"><span class="linenos">4679</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="replace_placeholders-4680"><a href="#replace_placeholders-4680"><span class="linenos">4680</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="replace_placeholders-4681"><a href="#replace_placeholders-4681"><span class="linenos">4681</span></a> <span class="k">return</span> <span class="n">to_identifier</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span> -</span><span id="replace_placeholders-4682"><a href="#replace_placeholders-4682"><span class="linenos">4682</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> -</span><span id="replace_placeholders-4683"><a href="#replace_placeholders-4683"><span class="linenos">4683</span></a> <span class="k">pass</span> -</span><span id="replace_placeholders-4684"><a href="#replace_placeholders-4684"><span class="linenos">4684</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="replace_placeholders-4685"><a href="#replace_placeholders-4685"><span class="linenos">4685</span></a> -</span><span id="replace_placeholders-4686"><a href="#replace_placeholders-4686"><span class="linenos">4686</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="replace_placeholders-4712"><a href="#replace_placeholders-4712"><span class="linenos">4712</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +</span><span id="replace_placeholders-4713"><a href="#replace_placeholders-4713"><span class="linenos">4713</span></a><span class="w"> </span><span class="sd">"""Replace placeholders in an expression.</span> +</span><span id="replace_placeholders-4714"><a href="#replace_placeholders-4714"><span class="linenos">4714</span></a> +</span><span id="replace_placeholders-4715"><a href="#replace_placeholders-4715"><span class="linenos">4715</span></a><span class="sd"> Args:</span> +</span><span id="replace_placeholders-4716"><a href="#replace_placeholders-4716"><span class="linenos">4716</span></a><span class="sd"> expression (sqlglot.Expression): expression node to be transformed and replaced.</span> +</span><span id="replace_placeholders-4717"><a href="#replace_placeholders-4717"><span class="linenos">4717</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span> +</span><span id="replace_placeholders-4718"><a href="#replace_placeholders-4718"><span class="linenos">4718</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span> +</span><span id="replace_placeholders-4719"><a href="#replace_placeholders-4719"><span class="linenos">4719</span></a> +</span><span id="replace_placeholders-4720"><a href="#replace_placeholders-4720"><span class="linenos">4720</span></a><span class="sd"> Examples:</span> +</span><span id="replace_placeholders-4721"><a href="#replace_placeholders-4721"><span class="linenos">4721</span></a><span class="sd"> >>> from sqlglot import exp, parse_one</span> +</span><span id="replace_placeholders-4722"><a href="#replace_placeholders-4722"><span class="linenos">4722</span></a><span class="sd"> >>> replace_placeholders(</span> +</span><span id="replace_placeholders-4723"><a href="#replace_placeholders-4723"><span class="linenos">4723</span></a><span class="sd"> ... parse_one("select * from :tbl where ? = ?"), "a", "b", tbl="foo"</span> +</span><span id="replace_placeholders-4724"><a href="#replace_placeholders-4724"><span class="linenos">4724</span></a><span class="sd"> ... ).sql()</span> +</span><span id="replace_placeholders-4725"><a href="#replace_placeholders-4725"><span class="linenos">4725</span></a><span class="sd"> 'SELECT * FROM foo WHERE a = b'</span> +</span><span id="replace_placeholders-4726"><a href="#replace_placeholders-4726"><span class="linenos">4726</span></a> +</span><span id="replace_placeholders-4727"><a href="#replace_placeholders-4727"><span class="linenos">4727</span></a><span class="sd"> Returns:</span> +</span><span id="replace_placeholders-4728"><a href="#replace_placeholders-4728"><span class="linenos">4728</span></a><span class="sd"> The mapped expression.</span> +</span><span id="replace_placeholders-4729"><a href="#replace_placeholders-4729"><span class="linenos">4729</span></a><span class="sd"> """</span> +</span><span id="replace_placeholders-4730"><a href="#replace_placeholders-4730"><span class="linenos">4730</span></a> +</span><span id="replace_placeholders-4731"><a href="#replace_placeholders-4731"><span class="linenos">4731</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span> +</span><span id="replace_placeholders-4732"><a href="#replace_placeholders-4732"><span class="linenos">4732</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Placeholder</span><span class="p">):</span> +</span><span id="replace_placeholders-4733"><a href="#replace_placeholders-4733"><span class="linenos">4733</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> +</span><span id="replace_placeholders-4734"><a href="#replace_placeholders-4734"><span class="linenos">4734</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="replace_placeholders-4735"><a href="#replace_placeholders-4735"><span class="linenos">4735</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span> +</span><span id="replace_placeholders-4736"><a href="#replace_placeholders-4736"><span class="linenos">4736</span></a> <span class="k">return</span> <span class="n">to_identifier</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span> +</span><span id="replace_placeholders-4737"><a href="#replace_placeholders-4737"><span class="linenos">4737</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="replace_placeholders-4738"><a href="#replace_placeholders-4738"><span class="linenos">4738</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="replace_placeholders-4739"><a href="#replace_placeholders-4739"><span class="linenos">4739</span></a> <span class="k">return</span> <span class="n">to_identifier</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span> +</span><span id="replace_placeholders-4740"><a href="#replace_placeholders-4740"><span class="linenos">4740</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span> +</span><span id="replace_placeholders-4741"><a href="#replace_placeholders-4741"><span class="linenos">4741</span></a> <span class="k">pass</span> +</span><span id="replace_placeholders-4742"><a href="#replace_placeholders-4742"><span class="linenos">4742</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="replace_placeholders-4743"><a href="#replace_placeholders-4743"><span class="linenos">4743</span></a> +</span><span id="replace_placeholders-4744"><a href="#replace_placeholders-4744"><span class="linenos">4744</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span></pre></div> @@ -40604,34 +41486,34 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#expand"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="expand-4689"><a href="#expand-4689"><span class="linenos">4689</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Subqueryable</span><span class="p">],</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> -</span><span id="expand-4690"><a href="#expand-4690"><span class="linenos">4690</span></a><span class="w"> </span><span class="sd">"""Transforms an expression by expanding all referenced sources into subqueries.</span> -</span><span id="expand-4691"><a href="#expand-4691"><span class="linenos">4691</span></a> -</span><span id="expand-4692"><a href="#expand-4692"><span class="linenos">4692</span></a><span class="sd"> Examples:</span> -</span><span id="expand-4693"><a href="#expand-4693"><span class="linenos">4693</span></a><span class="sd"> >>> from sqlglot import parse_one</span> -</span><span id="expand-4694"><a href="#expand-4694"><span class="linenos">4694</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()</span> -</span><span id="expand-4695"><a href="#expand-4695"><span class="linenos">4695</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'</span> -</span><span id="expand-4696"><a href="#expand-4696"><span class="linenos">4696</span></a> -</span><span id="expand-4697"><a href="#expand-4697"><span class="linenos">4697</span></a><span class="sd"> Args:</span> -</span><span id="expand-4698"><a href="#expand-4698"><span class="linenos">4698</span></a><span class="sd"> expression: The expression to expand.</span> -</span><span id="expand-4699"><a href="#expand-4699"><span class="linenos">4699</span></a><span class="sd"> sources: A dictionary of name to Subqueryables.</span> -</span><span id="expand-4700"><a href="#expand-4700"><span class="linenos">4700</span></a><span class="sd"> copy: Whether or not to copy the expression during transformation. Defaults to True.</span> -</span><span id="expand-4701"><a href="#expand-4701"><span class="linenos">4701</span></a> -</span><span id="expand-4702"><a href="#expand-4702"><span class="linenos">4702</span></a><span class="sd"> Returns:</span> -</span><span id="expand-4703"><a href="#expand-4703"><span class="linenos">4703</span></a><span class="sd"> The transformed expression.</span> -</span><span id="expand-4704"><a href="#expand-4704"><span class="linenos">4704</span></a><span class="sd"> """</span> -</span><span id="expand-4705"><a href="#expand-4705"><span class="linenos">4705</span></a> -</span><span id="expand-4706"><a href="#expand-4706"><span class="linenos">4706</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span> -</span><span id="expand-4707"><a href="#expand-4707"><span class="linenos">4707</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> -</span><span id="expand-4708"><a href="#expand-4708"><span class="linenos">4708</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">table_name</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> -</span><span id="expand-4709"><a href="#expand-4709"><span class="linenos">4709</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> -</span><span id="expand-4710"><a href="#expand-4710"><span class="linenos">4710</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span> -</span><span id="expand-4711"><a href="#expand-4711"><span class="linenos">4711</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span> -</span><span id="expand-4712"><a href="#expand-4712"><span class="linenos">4712</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> -</span><span id="expand-4713"><a href="#expand-4713"><span class="linenos">4713</span></a> <span class="k">return</span> <span class="n">subquery</span> -</span><span id="expand-4714"><a href="#expand-4714"><span class="linenos">4714</span></a> <span class="k">return</span> <span class="n">node</span> -</span><span id="expand-4715"><a href="#expand-4715"><span class="linenos">4715</span></a> -</span><span id="expand-4716"><a href="#expand-4716"><span class="linenos">4716</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="expand-4747"><a href="#expand-4747"><span class="linenos">4747</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Subqueryable</span><span class="p">],</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="o">-></span> <span class="n">Expression</span><span class="p">:</span> +</span><span id="expand-4748"><a href="#expand-4748"><span class="linenos">4748</span></a><span class="w"> </span><span class="sd">"""Transforms an expression by expanding all referenced sources into subqueries.</span> +</span><span id="expand-4749"><a href="#expand-4749"><span class="linenos">4749</span></a> +</span><span id="expand-4750"><a href="#expand-4750"><span class="linenos">4750</span></a><span class="sd"> Examples:</span> +</span><span id="expand-4751"><a href="#expand-4751"><span class="linenos">4751</span></a><span class="sd"> >>> from sqlglot import parse_one</span> +</span><span id="expand-4752"><a href="#expand-4752"><span class="linenos">4752</span></a><span class="sd"> >>> expand(parse_one("select * from x AS z"), {"x": parse_one("select * from y")}).sql()</span> +</span><span id="expand-4753"><a href="#expand-4753"><span class="linenos">4753</span></a><span class="sd"> 'SELECT * FROM (SELECT * FROM y) AS z /* source: x */'</span> +</span><span id="expand-4754"><a href="#expand-4754"><span class="linenos">4754</span></a> +</span><span id="expand-4755"><a href="#expand-4755"><span class="linenos">4755</span></a><span class="sd"> Args:</span> +</span><span id="expand-4756"><a href="#expand-4756"><span class="linenos">4756</span></a><span class="sd"> expression: The expression to expand.</span> +</span><span id="expand-4757"><a href="#expand-4757"><span class="linenos">4757</span></a><span class="sd"> sources: A dictionary of name to Subqueryables.</span> +</span><span id="expand-4758"><a href="#expand-4758"><span class="linenos">4758</span></a><span class="sd"> copy: Whether or not to copy the expression during transformation. Defaults to True.</span> +</span><span id="expand-4759"><a href="#expand-4759"><span class="linenos">4759</span></a> +</span><span id="expand-4760"><a href="#expand-4760"><span class="linenos">4760</span></a><span class="sd"> Returns:</span> +</span><span id="expand-4761"><a href="#expand-4761"><span class="linenos">4761</span></a><span class="sd"> The transformed expression.</span> +</span><span id="expand-4762"><a href="#expand-4762"><span class="linenos">4762</span></a><span class="sd"> """</span> +</span><span id="expand-4763"><a href="#expand-4763"><span class="linenos">4763</span></a> +</span><span id="expand-4764"><a href="#expand-4764"><span class="linenos">4764</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span> +</span><span id="expand-4765"><a href="#expand-4765"><span class="linenos">4765</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">Table</span><span class="p">):</span> +</span><span id="expand-4766"><a href="#expand-4766"><span class="linenos">4766</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">table_name</span><span class="p">(</span><span class="n">node</span><span class="p">)</span> +</span><span id="expand-4767"><a href="#expand-4767"><span class="linenos">4767</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> +</span><span id="expand-4768"><a href="#expand-4768"><span class="linenos">4768</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span> +</span><span id="expand-4769"><a href="#expand-4769"><span class="linenos">4769</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span> +</span><span id="expand-4770"><a href="#expand-4770"><span class="linenos">4770</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">]</span> +</span><span id="expand-4771"><a href="#expand-4771"><span class="linenos">4771</span></a> <span class="k">return</span> <span class="n">subquery</span> +</span><span id="expand-4772"><a href="#expand-4772"><span class="linenos">4772</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="expand-4773"><a href="#expand-4773"><span class="linenos">4773</span></a> +</span><span id="expand-4774"><a href="#expand-4774"><span class="linenos">4774</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> </span></pre></div> @@ -40676,51 +41558,51 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#func"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="func-4719"><a href="#func-4719"><span class="linenos">4719</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Func</span><span class="p">:</span> -</span><span id="func-4720"><a href="#func-4720"><span class="linenos">4720</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="func-4721"><a href="#func-4721"><span class="linenos">4721</span></a><span class="sd"> Returns a Func expression.</span> -</span><span id="func-4722"><a href="#func-4722"><span class="linenos">4722</span></a> -</span><span id="func-4723"><a href="#func-4723"><span class="linenos">4723</span></a><span class="sd"> Examples:</span> -</span><span id="func-4724"><a href="#func-4724"><span class="linenos">4724</span></a><span class="sd"> >>> func("abs", 5).sql()</span> -</span><span id="func-4725"><a href="#func-4725"><span class="linenos">4725</span></a><span class="sd"> 'ABS(5)'</span> -</span><span id="func-4726"><a href="#func-4726"><span class="linenos">4726</span></a> -</span><span id="func-4727"><a href="#func-4727"><span class="linenos">4727</span></a><span class="sd"> >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()</span> -</span><span id="func-4728"><a href="#func-4728"><span class="linenos">4728</span></a><span class="sd"> 'CAST(5 AS DOUBLE)'</span> -</span><span id="func-4729"><a href="#func-4729"><span class="linenos">4729</span></a> -</span><span id="func-4730"><a href="#func-4730"><span class="linenos">4730</span></a><span class="sd"> Args:</span> -</span><span id="func-4731"><a href="#func-4731"><span class="linenos">4731</span></a><span class="sd"> name: the name of the function to build.</span> -</span><span id="func-4732"><a href="#func-4732"><span class="linenos">4732</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span> -</span><span id="func-4733"><a href="#func-4733"><span class="linenos">4733</span></a><span class="sd"> dialect: the source dialect.</span> -</span><span id="func-4734"><a href="#func-4734"><span class="linenos">4734</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> -</span><span id="func-4735"><a href="#func-4735"><span class="linenos">4735</span></a> -</span><span id="func-4736"><a href="#func-4736"><span class="linenos">4736</span></a><span class="sd"> Note:</span> -</span><span id="func-4737"><a href="#func-4737"><span class="linenos">4737</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span> -</span><span id="func-4738"><a href="#func-4738"><span class="linenos">4738</span></a> -</span><span id="func-4739"><a href="#func-4739"><span class="linenos">4739</span></a><span class="sd"> Returns:</span> -</span><span id="func-4740"><a href="#func-4740"><span class="linenos">4740</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn't</span> -</span><span id="func-4741"><a href="#func-4741"><span class="linenos">4741</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span> -</span><span id="func-4742"><a href="#func-4742"><span class="linenos">4742</span></a><span class="sd"> """</span> -</span><span id="func-4743"><a href="#func-4743"><span class="linenos">4743</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span> -</span><span id="func-4744"><a href="#func-4744"><span class="linenos">4744</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Can't use both args and kwargs to instantiate a function."</span><span class="p">)</span> -</span><span id="func-4745"><a href="#func-4745"><span class="linenos">4745</span></a> -</span><span id="func-4746"><a href="#func-4746"><span class="linenos">4746</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span> -</span><span id="func-4747"><a href="#func-4747"><span class="linenos">4747</span></a> -</span><span id="func-4748"><a href="#func-4748"><span class="linenos">4748</span></a> <span class="n">args</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">convert</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> -</span><span id="func-4749"><a href="#func-4749"><span class="linenos">4749</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> -</span><span id="func-4750"><a href="#func-4750"><span class="linenos">4750</span></a> -</span><span id="func-4751"><a href="#func-4751"><span class="linenos">4751</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">parser</span><span class="p">()</span> -</span><span id="func-4752"><a href="#func-4752"><span class="linenos">4752</span></a> <span class="n">from_args_list</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="func-4753"><a href="#func-4753"><span class="linenos">4753</span></a> -</span><span id="func-4754"><a href="#func-4754"><span class="linenos">4754</span></a> <span class="k">if</span> <span class="n">from_args_list</span><span class="p">:</span> -</span><span id="func-4755"><a href="#func-4755"><span class="linenos">4755</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">from_args_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="k">if</span> <span class="n">args</span> <span class="k">else</span> <span class="n">from_args_list</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="func-4756"><a href="#func-4756"><span class="linenos">4756</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="func-4757"><a href="#func-4757"><span class="linenos">4757</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="n">args</span><span class="p">}</span> -</span><span id="func-4758"><a href="#func-4758"><span class="linenos">4758</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="func-4759"><a href="#func-4759"><span class="linenos">4759</span></a> -</span><span id="func-4760"><a href="#func-4760"><span class="linenos">4760</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="func-4761"><a href="#func-4761"><span class="linenos">4761</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> -</span><span id="func-4762"><a href="#func-4762"><span class="linenos">4762</span></a> -</span><span id="func-4763"><a href="#func-4763"><span class="linenos">4763</span></a> <span class="k">return</span> <span class="n">function</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="func-4777"><a href="#func-4777"><span class="linenos">4777</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="n">Func</span><span class="p">:</span> +</span><span id="func-4778"><a href="#func-4778"><span class="linenos">4778</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="func-4779"><a href="#func-4779"><span class="linenos">4779</span></a><span class="sd"> Returns a Func expression.</span> +</span><span id="func-4780"><a href="#func-4780"><span class="linenos">4780</span></a> +</span><span id="func-4781"><a href="#func-4781"><span class="linenos">4781</span></a><span class="sd"> Examples:</span> +</span><span id="func-4782"><a href="#func-4782"><span class="linenos">4782</span></a><span class="sd"> >>> func("abs", 5).sql()</span> +</span><span id="func-4783"><a href="#func-4783"><span class="linenos">4783</span></a><span class="sd"> 'ABS(5)'</span> +</span><span id="func-4784"><a href="#func-4784"><span class="linenos">4784</span></a> +</span><span id="func-4785"><a href="#func-4785"><span class="linenos">4785</span></a><span class="sd"> >>> func("cast", this=5, to=DataType.build("DOUBLE")).sql()</span> +</span><span id="func-4786"><a href="#func-4786"><span class="linenos">4786</span></a><span class="sd"> 'CAST(5 AS DOUBLE)'</span> +</span><span id="func-4787"><a href="#func-4787"><span class="linenos">4787</span></a> +</span><span id="func-4788"><a href="#func-4788"><span class="linenos">4788</span></a><span class="sd"> Args:</span> +</span><span id="func-4789"><a href="#func-4789"><span class="linenos">4789</span></a><span class="sd"> name: the name of the function to build.</span> +</span><span id="func-4790"><a href="#func-4790"><span class="linenos">4790</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span> +</span><span id="func-4791"><a href="#func-4791"><span class="linenos">4791</span></a><span class="sd"> dialect: the source dialect.</span> +</span><span id="func-4792"><a href="#func-4792"><span class="linenos">4792</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span> +</span><span id="func-4793"><a href="#func-4793"><span class="linenos">4793</span></a> +</span><span id="func-4794"><a href="#func-4794"><span class="linenos">4794</span></a><span class="sd"> Note:</span> +</span><span id="func-4795"><a href="#func-4795"><span class="linenos">4795</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span> +</span><span id="func-4796"><a href="#func-4796"><span class="linenos">4796</span></a> +</span><span id="func-4797"><a href="#func-4797"><span class="linenos">4797</span></a><span class="sd"> Returns:</span> +</span><span id="func-4798"><a href="#func-4798"><span class="linenos">4798</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn't</span> +</span><span id="func-4799"><a href="#func-4799"><span class="linenos">4799</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span> +</span><span id="func-4800"><a href="#func-4800"><span class="linenos">4800</span></a><span class="sd"> """</span> +</span><span id="func-4801"><a href="#func-4801"><span class="linenos">4801</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span> +</span><span id="func-4802"><a href="#func-4802"><span class="linenos">4802</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Can't use both args and kwargs to instantiate a function."</span><span class="p">)</span> +</span><span id="func-4803"><a href="#func-4803"><span class="linenos">4803</span></a> +</span><span id="func-4804"><a href="#func-4804"><span class="linenos">4804</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span> +</span><span id="func-4805"><a href="#func-4805"><span class="linenos">4805</span></a> +</span><span id="func-4806"><a href="#func-4806"><span class="linenos">4806</span></a> <span class="n">args</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">convert</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> +</span><span id="func-4807"><a href="#func-4807"><span class="linenos">4807</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">convert</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span> +</span><span id="func-4808"><a href="#func-4808"><span class="linenos">4808</span></a> +</span><span id="func-4809"><a href="#func-4809"><span class="linenos">4809</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)()</span><span class="o">.</span><span class="n">parser</span><span class="p">()</span> +</span><span id="func-4810"><a href="#func-4810"><span class="linenos">4810</span></a> <span class="n">from_args_list</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="func-4811"><a href="#func-4811"><span class="linenos">4811</span></a> +</span><span id="func-4812"><a href="#func-4812"><span class="linenos">4812</span></a> <span class="k">if</span> <span class="n">from_args_list</span><span class="p">:</span> +</span><span id="func-4813"><a href="#func-4813"><span class="linenos">4813</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">from_args_list</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> <span class="k">if</span> <span class="n">args</span> <span class="k">else</span> <span class="n">from_args_list</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="func-4814"><a href="#func-4814"><span class="linenos">4814</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="func-4815"><a href="#func-4815"><span class="linenos">4815</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">"expressions"</span><span class="p">:</span> <span class="n">args</span><span class="p">}</span> +</span><span id="func-4816"><a href="#func-4816"><span class="linenos">4816</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="func-4817"><a href="#func-4817"><span class="linenos">4817</span></a> +</span><span id="func-4818"><a href="#func-4818"><span class="linenos">4818</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="func-4819"><a href="#func-4819"><span class="linenos">4819</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> +</span><span id="func-4820"><a href="#func-4820"><span class="linenos">4820</span></a> +</span><span id="func-4821"><a href="#func-4821"><span class="linenos">4821</span></a> <span class="k">return</span> <span class="n">function</span> </span></pre></div> @@ -40778,11 +41660,11 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#true"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="true-4766"><a href="#true-4766"><span class="linenos">4766</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">():</span> -</span><span id="true-4767"><a href="#true-4767"><span class="linenos">4767</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="true-4768"><a href="#true-4768"><span class="linenos">4768</span></a><span class="sd"> Returns a true Boolean expression.</span> -</span><span id="true-4769"><a href="#true-4769"><span class="linenos">4769</span></a><span class="sd"> """</span> -</span><span id="true-4770"><a href="#true-4770"><span class="linenos">4770</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="true-4824"><a href="#true-4824"><span class="linenos">4824</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">():</span> +</span><span id="true-4825"><a href="#true-4825"><span class="linenos">4825</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="true-4826"><a href="#true-4826"><span class="linenos">4826</span></a><span class="sd"> Returns a true Boolean expression.</span> +</span><span id="true-4827"><a href="#true-4827"><span class="linenos">4827</span></a><span class="sd"> """</span> +</span><span id="true-4828"><a href="#true-4828"><span class="linenos">4828</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span></pre></div> @@ -40802,11 +41684,11 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#false"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="false-4773"><a href="#false-4773"><span class="linenos">4773</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">():</span> -</span><span id="false-4774"><a href="#false-4774"><span class="linenos">4774</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="false-4775"><a href="#false-4775"><span class="linenos">4775</span></a><span class="sd"> Returns a false Boolean expression.</span> -</span><span id="false-4776"><a href="#false-4776"><span class="linenos">4776</span></a><span class="sd"> """</span> -</span><span id="false-4777"><a href="#false-4777"><span class="linenos">4777</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="false-4831"><a href="#false-4831"><span class="linenos">4831</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">():</span> +</span><span id="false-4832"><a href="#false-4832"><span class="linenos">4832</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="false-4833"><a href="#false-4833"><span class="linenos">4833</span></a><span class="sd"> Returns a false Boolean expression.</span> +</span><span id="false-4834"><a href="#false-4834"><span class="linenos">4834</span></a><span class="sd"> """</span> +</span><span id="false-4835"><a href="#false-4835"><span class="linenos">4835</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> </span></pre></div> @@ -40826,11 +41708,11 @@ in order to help with type inference.</li> </div> <a class="headerlink" href="#null"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="null-4780"><a href="#null-4780"><span class="linenos">4780</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">():</span> -</span><span id="null-4781"><a href="#null-4781"><span class="linenos">4781</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="null-4782"><a href="#null-4782"><span class="linenos">4782</span></a><span class="sd"> Returns a Null expression.</span> -</span><span id="null-4783"><a href="#null-4783"><span class="linenos">4783</span></a><span class="sd"> """</span> -</span><span id="null-4784"><a href="#null-4784"><span class="linenos">4784</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="null-4838"><a href="#null-4838"><span class="linenos">4838</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">():</span> +</span><span id="null-4839"><a href="#null-4839"><span class="linenos">4839</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="null-4840"><a href="#null-4840"><span class="linenos">4840</span></a><span class="sd"> Returns a Null expression.</span> +</span><span id="null-4841"><a href="#null-4841"><span class="linenos">4841</span></a><span class="sd"> """</span> +</span><span id="null-4842"><a href="#null-4842"><span class="linenos">4842</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span> </span></pre></div> @@ -40959,7 +41841,7 @@ in order to help with type inference.</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/generator.html b/docs/sqlglot/generator.html index 61481f5..055a3f1 100644 --- a/docs/sqlglot/generator.html +++ b/docs/sqlglot/generator.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.generator 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -91,6 +91,9 @@ <a class="function" href="#Generator.autoincrementcolumnconstraint_sql">autoincrementcolumnconstraint_sql</a> </li> <li> + <a class="function" href="#Generator.compresscolumnconstraint_sql">compresscolumnconstraint_sql</a> + </li> + <li> <a class="function" href="#Generator.generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a> </li> <li> @@ -217,6 +220,9 @@ <a class="function" href="#Generator.lockingproperty_sql">lockingproperty_sql</a> </li> <li> + <a class="function" href="#Generator.withdataproperty_sql">withdataproperty_sql</a> + </li> + <li> <a class="function" href="#Generator.insert_sql">insert_sql</a> </li> <li> @@ -743,1888 +749,1889 @@ </span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="s2">"TS_OR_DS_ADD"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="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">"unit"</span><span class="p">)</span> </span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="p">),</span> </span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</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">"MAP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">],</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]),</span> -</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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">"</span><span class="si">{</span><span class="s1">'DEFAULT '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s1">'default'</span><span class="p">]</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</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-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</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-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</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-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</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-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">e</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> -</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</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">"WITH JOURNAL TABLE=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</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">"</span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'no'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">LOG"</span><span class="p">,</span> -</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</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">"SQL SECURITY </span><span class="si">{</span><span class="s1">'DEFINER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'definer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'INVOKER'</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</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">"</span><span class="si">{</span><span class="s1">'NOT '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'not_'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">CASESPECIFIC"</span><span class="p">,</span> -</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</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">"CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</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">"UPPERCASE"</span><span class="p">,</span> -</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</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">"TITLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</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">"PATH </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</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">"CHECK (</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</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">"COMMENT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</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">"COLLATE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</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">"ENCODE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</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">"DEFAULT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <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 class="c1"># Whether 'CREATE ... TRANSIENT ... TABLE' is allowed</span> -</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">CREATE_TRANSIENT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> -</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="c1"># Whether or not null ordering is supported in order by</span> -</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="n">NULL_ORDERING_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</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 class="c1"># Whether or not locking reads (i.e. SELECT ... FOR UPDATE/SHARE) are supported</span> -</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> -</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="c1"># Always do union distinct or union all</span> -</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-100"><a href="#L-100"><span class="linenos"> 100</span></a> -</span><span id="L-101"><a href="#L-101"><span class="linenos"> 101</span></a> <span class="c1"># Wrap derived values in parens, usually standard but spark doesn't support it</span> -</span><span id="L-102"><a href="#L-102"><span class="linenos"> 102</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">True</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 class="c1"># Whether or not create function uses an AS before the RETURN</span> -</span><span id="L-105"><a href="#L-105"><span class="linenos"> 105</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-106"><a href="#L-106"><span class="linenos"> 106</span></a> -</span><span id="L-107"><a href="#L-107"><span class="linenos"> 107</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-108"><a href="#L-108"><span class="linenos"> 108</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">NCHAR</span><span class="p">:</span> <span class="s2">"CHAR"</span><span class="p">,</span> -</span><span id="L-109"><a href="#L-109"><span class="linenos"> 109</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> -</span><span id="L-110"><a href="#L-110"><span class="linenos"> 110</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="L-111"><a href="#L-111"><span class="linenos"> 111</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="L-112"><a href="#L-112"><span class="linenos"> 112</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">:</span> <span class="s2">"BLOB"</span><span class="p">,</span> -</span><span id="L-113"><a href="#L-113"><span class="linenos"> 113</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">:</span> <span class="s2">"BLOB"</span><span class="p">,</span> -</span><span id="L-114"><a href="#L-114"><span class="linenos"> 114</span></a> <span class="p">}</span> -</span><span id="L-115"><a href="#L-115"><span class="linenos"> 115</span></a> -</span><span id="L-116"><a href="#L-116"><span class="linenos"> 116</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-117"><a href="#L-117"><span class="linenos"> 117</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCEPT"</span><span class="p">,</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"REPLACE"</span><span class="p">,</span> -</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a> <span class="p">}</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a> -</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a> <span class="n">TOKEN_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">TokenType</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-122"><a href="#L-122"><span class="linenos"> 122</span></a> -</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"<"</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> -</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"@"</span> +</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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">"</span><span class="si">{</span><span class="s1">'DEFAULT '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'default'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</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-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</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="s2">"EXTERNAL"</span><span class="p">,</span> +</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</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-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</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-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</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">"</span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'no'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">LOG"</span><span class="p">,</span> +</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</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="s2">"MATERIALIZED"</span><span class="p">,</span> +</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</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="s2">"NO PRIMARY INDEX"</span><span class="p">,</span> +</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</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="s2">"ON COMMIT PRESERVE ROWS"</span><span class="p">,</span> +</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</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-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</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">"</span><span class="si">{</span><span class="s1">'MULTI'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'multi'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">SET"</span><span class="p">,</span> +</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</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">"SQL SECURITY </span><span class="si">{</span><span class="s1">'DEFINER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'definer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'INVOKER'</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</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">"</span><span class="si">{</span><span class="s1">'GLOBAL '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'global_'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">TEMPORARY"</span><span class="p">,</span> +</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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="s2">"TRANSIENT"</span><span class="p">,</span> +</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">e</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> +</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</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">"WITH JOURNAL TABLE=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</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">"</span><span class="si">{</span><span class="s1">'NOT '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'not_'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">CASESPECIFIC"</span><span class="p">,</span> +</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</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">"CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</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">"UPPERCASE"</span><span class="p">,</span> +</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</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">"TITLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</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">"PATH </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</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">"CHECK (</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</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">"COMMENT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</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">"COLLATE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</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">"ENCODE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</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">"DEFAULT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</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">"INLINE LENGTH </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="p">}</span> +</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> +</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="c1"># Whether or not null ordering is supported in order by</span> +</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="n">NULL_ORDERING_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a> +</span><span id="L-100"><a href="#L-100"><span class="linenos"> 100</span></a> <span class="c1"># Whether or not locking reads (i.e. SELECT ... FOR UPDATE/SHARE) are supported</span> +</span><span id="L-101"><a href="#L-101"><span class="linenos"> 101</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-102"><a href="#L-102"><span class="linenos"> 102</span></a> +</span><span id="L-103"><a href="#L-103"><span class="linenos"> 103</span></a> <span class="c1"># Always do union distinct or union all</span> +</span><span id="L-104"><a href="#L-104"><span class="linenos"> 104</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-105"><a href="#L-105"><span class="linenos"> 105</span></a> +</span><span id="L-106"><a href="#L-106"><span class="linenos"> 106</span></a> <span class="c1"># Wrap derived values in parens, usually standard but spark doesn't support it</span> +</span><span id="L-107"><a href="#L-107"><span class="linenos"> 107</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-108"><a href="#L-108"><span class="linenos"> 108</span></a> +</span><span id="L-109"><a href="#L-109"><span class="linenos"> 109</span></a> <span class="c1"># Whether or not create function uses an AS before the RETURN</span> +</span><span id="L-110"><a href="#L-110"><span class="linenos"> 110</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-111"><a href="#L-111"><span class="linenos"> 111</span></a> +</span><span id="L-112"><a href="#L-112"><span class="linenos"> 112</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-113"><a href="#L-113"><span class="linenos"> 113</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">NCHAR</span><span class="p">:</span> <span class="s2">"CHAR"</span><span class="p">,</span> +</span><span id="L-114"><a href="#L-114"><span class="linenos"> 114</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> +</span><span id="L-115"><a href="#L-115"><span class="linenos"> 115</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos"> 116</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="L-117"><a href="#L-117"><span class="linenos"> 117</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">:</span> <span class="s2">"BLOB"</span><span class="p">,</span> +</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">:</span> <span class="s2">"BLOB"</span><span class="p">,</span> +</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</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">INET</span><span class="p">:</span> <span class="s2">"INET"</span><span class="p">,</span> +</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a> <span class="p">}</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a> +</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCEPT"</span><span class="p">,</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"REPLACE"</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><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AfterJournalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</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">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">,</span> -</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-159"><a href="#L-159"><span class="linenos"> 159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> -</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="p">}</span> -</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> -</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="n">WITH_SEPARATED_COMMENTS</span> <span class="o">=</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">From</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Binary</span><span class="p">)</span> -</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="n">SENTINEL_LINE_BREAK</span> <span class="o">=</span> <span class="s2">"__SQLGLOT__LB__"</span> -</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> -</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="s2">"time_mapping"</span><span class="p">,</span> -</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="s2">"time_trie"</span><span class="p">,</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="s2">"pretty"</span><span class="p">,</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="s2">"quote_start"</span><span class="p">,</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> <span class="s2">"quote_end"</span><span class="p">,</span> -</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="s2">"identifier_start"</span><span class="p">,</span> -</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a> <span class="s2">"identifier_end"</span><span class="p">,</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="s2">"identify"</span><span class="p">,</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a> <span class="s2">"normalize"</span><span class="p">,</span> -</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a> <span class="s2">"string_escape"</span><span class="p">,</span> -</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a> <span class="s2">"identifier_escape"</span><span class="p">,</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a> <span class="s2">"pad"</span><span class="p">,</span> -</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> <span class="s2">"index_offset"</span><span class="p">,</span> -</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="s2">"unnest_column_only"</span><span class="p">,</span> -</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> <span class="s2">"alias_post_tablesample"</span><span class="p">,</span> -</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> <span class="s2">"normalize_functions"</span><span class="p">,</span> -</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> <span class="s2">"unsupported_level"</span><span class="p">,</span> -</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="s2">"unsupported_messages"</span><span class="p">,</span> -</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a> <span class="s2">"null_ordering"</span><span class="p">,</span> -</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> <span class="s2">"max_unsupported"</span><span class="p">,</span> -</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="s2">"_indent"</span><span class="p">,</span> -</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a> <span class="s2">"_escaped_quote_end"</span><span class="p">,</span> -</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> <span class="s2">"_escaped_identifier_end"</span><span class="p">,</span> -</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> <span class="s2">"_leading_comma"</span><span class="p">,</span> -</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="s2">"_max_text_width"</span><span class="p">,</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="s2">"_comments"</span><span class="p">,</span> -</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="p">)</span> -</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> -</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> <span class="n">time_mapping</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="n">time_trie</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="n">pretty</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="n">quote_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">quote_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="n">identifier_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> <span class="n">identifier_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="n">identify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="n">normalize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="n">string_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="n">identifier_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> -</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> -</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="n">index_offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> -</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> <span class="n">unnest_column_only</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">alias_post_tablesample</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"upper"</span><span class="p">,</span> -</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">unsupported_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">,</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="n">null_ordering</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">max_unsupported</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> -</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="n">leading_comma</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="n">max_text_width</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> -</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="n">comments</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="p">):</span> -</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> -</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> -</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span> <span class="o">=</span> <span class="n">time_mapping</span> <span class="ow">or</span> <span class="p">{}</span> -</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span> <span class="o">=</span> <span class="n">time_trie</span> -</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="n">pretty</span> <span class="k">if</span> <span class="n">pretty</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">pretty</span> -</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span> <span class="o">=</span> <span class="n">quote_start</span> <span class="ow">or</span> <span class="s2">"'"</span> -</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> <span class="o">=</span> <span class="n">quote_end</span> <span class="ow">or</span> <span class="s2">"'"</span> -</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span> <span class="o">=</span> <span class="n">identifier_start</span> <span class="ow">or</span> <span class="s1">'"'</span> -</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">or</span> <span class="s1">'"'</span> -</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">identify</span> -</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="o">=</span> <span class="n">normalize</span> -</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">=</span> <span class="n">string_escape</span> <span class="ow">or</span> <span class="s2">"'"</span> -</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">=</span> <span class="n">identifier_escape</span> <span class="ow">or</span> <span class="s1">'"'</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="o">=</span> <span class="n">pad</span> -</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> -</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> -</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">=</span> <span class="n">normalize_functions</span> -</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">=</span> <span class="n">unsupported_level</span> -</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</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="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span> <span class="o">=</span> <span class="n">max_unsupported</span> -</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> -</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_indent</span> <span class="o">=</span> <span class="n">indent</span> -</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> -</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> -</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span> <span class="o">=</span> <span class="n">leading_comma</span> -</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="o">=</span> <span class="n">max_text_width</span> -</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> -</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="k">def</span> <span class="nf">generate</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a><span class="sd"> Generates a SQL string by interpreting the given syntax tree.</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> -</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a><span class="sd"> Args</span> -</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a><span class="sd"> expression: the syntax tree.</span> -</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> -</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a><span class="sd"> Returns</span> -</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a><span class="sd"> the SQL string.</span> -</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a><span class="sd"> """</span> -</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> -</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> -</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> -</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> -</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> -</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> -</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span><span class="p">))</span> -</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> -</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> -</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="k">def</span> <span class="nf">unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> -</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> -</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> -</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> -</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="k">def</span> <span class="nf">sep</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="n">sep</span> -</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> -</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a> <span class="k">def</span> <span class="nf">seg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> -</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="k">def</span> <span class="nf">pad_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">comment</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> -</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="n">comment</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> -</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="k">return</span> <span class="n">comment</span> -</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> -</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="k">def</span> <span class="nf">maybe_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a> <span class="n">TOKEN_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">TokenType</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-128"><a href="#L-128"><span class="linenos"> 128</span></a> +</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"<"</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> +</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"@"</span> +</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="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AfterJournalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</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">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">,</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-159"><a href="#L-159"><span class="linenos"> 159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">,</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">,</span> +</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">,</span> +</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a> <span class="p">}</span> +</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a> +</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a> <span class="n">WITH_SEPARATED_COMMENTS</span> <span class="o">=</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">From</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Binary</span><span class="p">)</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a> <span class="n">SENTINEL_LINE_BREAK</span> <span class="o">=</span> <span class="s2">"__SQLGLOT__LB__"</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> +</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> <span class="s2">"time_mapping"</span><span class="p">,</span> +</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> <span class="s2">"time_trie"</span><span class="p">,</span> +</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> <span class="s2">"pretty"</span><span class="p">,</span> +</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="s2">"quote_start"</span><span class="p">,</span> +</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a> <span class="s2">"quote_end"</span><span class="p">,</span> +</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> <span class="s2">"identifier_start"</span><span class="p">,</span> +</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="s2">"identifier_end"</span><span class="p">,</span> +</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a> <span class="s2">"identify"</span><span class="p">,</span> +</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> <span class="s2">"normalize"</span><span class="p">,</span> +</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> <span class="s2">"string_escape"</span><span class="p">,</span> +</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="s2">"identifier_escape"</span><span class="p">,</span> +</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="s2">"pad"</span><span class="p">,</span> +</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="s2">"index_offset"</span><span class="p">,</span> +</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> <span class="s2">"unnest_column_only"</span><span class="p">,</span> +</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="s2">"alias_post_tablesample"</span><span class="p">,</span> +</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="s2">"normalize_functions"</span><span class="p">,</span> +</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> <span class="s2">"unsupported_level"</span><span class="p">,</span> +</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="s2">"unsupported_messages"</span><span class="p">,</span> +</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="s2">"null_ordering"</span><span class="p">,</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="s2">"max_unsupported"</span><span class="p">,</span> +</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="s2">"_indent"</span><span class="p">,</span> +</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="s2">"_escaped_quote_end"</span><span class="p">,</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> <span class="s2">"_escaped_identifier_end"</span><span class="p">,</span> +</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="s2">"_leading_comma"</span><span class="p">,</span> +</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="s2">"_max_text_width"</span><span class="p">,</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="s2">"_comments"</span><span class="p">,</span> +</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="p">)</span> +</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> +</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="bp">self</span><span class="p">,</span> +</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="kc">None</span><span class="p">,</span> +</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">time_trie</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">pretty</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">quote_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="n">quote_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">identifier_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="n">identifier_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="n">identify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="n">normalize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="n">string_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="n">identifier_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> +</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> +</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="n">index_offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> +</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="n">unnest_column_only</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">alias_post_tablesample</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"upper"</span><span class="p">,</span> +</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="n">unsupported_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">,</span> +</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="n">null_ordering</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="n">max_unsupported</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="n">leading_comma</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a> <span class="n">max_text_width</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> +</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> <span class="n">comments</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="p">):</span> +</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> +</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> +</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span> <span class="o">=</span> <span class="n">time_mapping</span> <span class="ow">or</span> <span class="p">{}</span> +</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span> <span class="o">=</span> <span class="n">time_trie</span> +</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="n">pretty</span> <span class="k">if</span> <span class="n">pretty</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">pretty</span> +</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span> <span class="o">=</span> <span class="n">quote_start</span> <span class="ow">or</span> <span class="s2">"'"</span> +</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> <span class="o">=</span> <span class="n">quote_end</span> <span class="ow">or</span> <span class="s2">"'"</span> +</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span> <span class="o">=</span> <span class="n">identifier_start</span> <span class="ow">or</span> <span class="s1">'"'</span> +</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">or</span> <span class="s1">'"'</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">identify</span> +</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="o">=</span> <span class="n">normalize</span> +</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">=</span> <span class="n">string_escape</span> <span class="ow">or</span> <span class="s2">"'"</span> +</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">=</span> <span class="n">identifier_escape</span> <span class="ow">or</span> <span class="s1">'"'</span> +</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="o">=</span> <span class="n">pad</span> +</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> +</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> +</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">=</span> <span class="n">normalize_functions</span> +</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">=</span> <span class="n">unsupported_level</span> +</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span> <span class="o">=</span> <span class="n">max_unsupported</span> +</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> +</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_indent</span> <span class="o">=</span> <span class="n">indent</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> +</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> +</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span> <span class="o">=</span> <span class="n">leading_comma</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="o">=</span> <span class="n">max_text_width</span> +</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> +</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="k">def</span> <span class="nf">generate</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a><span class="sd"> Generates a SQL string by interpreting the given syntax tree.</span> +</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> +</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a><span class="sd"> Args</span> +</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a><span class="sd"> expression: the syntax tree.</span> +</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> +</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a><span class="sd"> Returns</span> +</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a><span class="sd"> the SQL string.</span> +</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a><span class="sd"> """</span> +</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> +</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> +</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> +</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> +</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> +</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span><span class="p">))</span> +</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> +</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> +</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="k">def</span> <span class="nf">unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> +</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> +</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> </span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> -</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments</span><span class="p">:</span> -</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="k">def</span> <span class="nf">sep</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="n">sep</span> </span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> -</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="n">comments_sql</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="sa">f</span><span class="s2">"/*</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">pad_comment</span><span class="p">(</span><span class="n">comment</span><span class="p">)</span><span class="si">}</span><span class="s2">*/"</span> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">comments</span> <span class="k">if</span> <span class="n">comment</span> -</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="p">)</span> -</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> -</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments_sql</span><span class="p">:</span> -</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="k">def</span> <span class="nf">seg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> +</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="k">def</span> <span class="nf">pad_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">comment</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> +</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="n">comment</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> +</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="k">return</span> <span class="n">comment</span> </span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> -</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">WITH_SEPARATED_COMMENTS</span><span class="p">):</span> -</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="k">def</span> <span class="nf">maybe_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="k">else</span> <span class="kc">None</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="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> -</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="k">def</span> <span class="nf">wrap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span> -</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</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><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</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">Union</span><span class="p">))</span> -</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="k">else</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">"this"</span><span class="p">),</span> -</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="n">level</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> -</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> -</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="p">)</span> -</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> -</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="k">def</span> <span class="nf">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="n">original</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> -</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">original</span> -</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="k">return</span> <span class="n">result</span> -</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> -</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"upper"</span><span class="p">:</span> -</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"lower"</span><span class="p">:</span> -</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="k">return</span> <span class="n">name</span> +</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments</span><span class="p">:</span> +</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> <span class="k">return</span> <span class="n">sql</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="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="n">comments_sql</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="sa">f</span><span class="s2">"/*</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">pad_comment</span><span class="p">(</span><span class="n">comment</span><span class="p">)</span><span class="si">}</span><span class="s2">*/"</span> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">comments</span> <span class="k">if</span> <span class="n">comment</span> +</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="p">)</span> +</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> +</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments_sql</span><span class="p">:</span> +</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> +</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">WITH_SEPARATED_COMMENTS</span><span class="p">):</span> +</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> +</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> +</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="k">def</span> <span class="nf">wrap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span> +</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</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><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</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">Union</span><span class="p">))</span> +</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="k">else</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">"this"</span><span class="p">),</span> +</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="n">level</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> +</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> +</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="p">)</span> +</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> -</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="k">def</span> <span class="nf">indent</span><span class="p">(</span> -</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="n">pad</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="n">skip_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> <span class="n">skip_last</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> -</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="k">if</span> <span class="n">pad</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">pad</span> -</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="k">def</span> <span class="nf">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="n">original</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> +</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">original</span> +</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="k">return</span> <span class="n">result</span> +</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> +</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"upper"</span><span class="p">:</span> +</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"lower"</span><span class="p">:</span> +</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> +</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="k">return</span> <span class="n">name</span> </span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> -</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="n">line</span> -</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">skip_first</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">skip_last</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' '</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">level</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_indent</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">pad</span><span class="p">)</span><span class="si">}{</span><span class="n">line</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> -</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="p">)</span> -</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> -</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span> -</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> -</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="n">comment</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> -</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> -</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="k">if</span> <span class="n">key</span><span class="p">:</span> -</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> -</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> -</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="n">transform</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> -</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> -</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">transform</span><span class="p">):</span> -</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</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-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="k">elif</span> <span class="n">transform</span><span class="p">:</span> -</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</span> -</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="n">exp_handler_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">_sql"</span> -</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> -</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">):</span> -</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">)(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">):</span> -</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">property_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected an Expression. Received </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> -</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">comment</span> <span class="k">else</span> <span class="n">sql</span> -</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> -</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="k">def</span> <span class="nf">uncache_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">Uncache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> -</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNCACHE TABLE</span><span class="si">{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> -</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="k">def</span> <span class="nf">cache_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">Cache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="s2">" LAZY"</span> <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">"lazy"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> -</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="n">options</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">"options"</span><span class="p">)</span> -</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OPTIONS(</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">options</span><span class="p">[</span><span class="mi">0</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">options</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CACHE</span><span class="si">{</span><span class="n">lazy</span><span class="si">}</span><span class="s2"> TABLE </span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">options</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> -</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="k">def</span> <span class="nf">characterset_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">CharacterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</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">Cast</span><span class="p">):</span> -</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHAR CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> <span class="n">default</span> <span class="o">=</span> <span class="s2">"DEFAULT "</span> <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">"default"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> -</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="k">def</span> <span class="nf">column_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">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> -</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <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">"catalog"</span><span class="p">),</span> -</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <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">"db"</span><span class="p">),</span> -</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <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">"table"</span><span class="p">),</span> -</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> <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">"this"</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="k">if</span> <span class="n">part</span> -</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="p">)</span> -</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> -</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="k">def</span> <span class="nf">columndef_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">ColumnDef</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> <span class="n">column</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">"this"</span><span class="p">)</span> -</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"constraints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">"IF NOT EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">constraints</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> -</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">column</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> -</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="k">def</span> <span class="nf">columnconstraint_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">ColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</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">"this"</span><span class="p">)</span> -</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="n">kind_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">)</span> -</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">kind_sql</span> -</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> -</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="k">def</span> <span class="nf">autoincrementcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">token_sql</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">)</span> -</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> -</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> -</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</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">GeneratedAsIdentityColumnConstraint</span> -</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">" ALWAYS "</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">" BY DEFAULT "</span> -</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> -</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"START WITH </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> -</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT BY </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="n">minvalue</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">"minvalue"</span><span class="p">)</span> -</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="n">minvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MINVALUE </span><span class="si">{</span><span class="n">minvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">minvalue</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="n">maxvalue</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">"maxvalue"</span><span class="p">)</span> -</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="n">maxvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAXVALUE </span><span class="si">{</span><span class="n">maxvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">maxvalue</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="n">cycle</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">"cycle"</span><span class="p">)</span> -</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="k">if</span> <span class="n">cycle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' NO'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">cycle</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> CYCLE"</span> -</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="n">cycle_sql</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">increment</span> <span class="k">else</span> <span class="n">cycle_sql</span> -</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">or</span> <span class="n">increment</span> <span class="ow">or</span> <span class="n">cycle_sql</span><span class="p">:</span> -</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}{</span><span class="n">minvalue</span><span class="si">}{</span><span class="n">maxvalue</span><span class="si">}{</span><span class="n">cycle_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">sequence_opts</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"GENERATED</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">AS IDENTITY</span><span class="si">{</span><span class="n">sequence_opts</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> -</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="k">def</span> <span class="nf">notnullcolumnconstraint_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">NotNullColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'allow_null'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'NOT '</span><span class="si">}</span><span class="s2">NULL"</span> -</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> -</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="k">def</span> <span class="nf">primarykeycolumnconstraint_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">PrimaryKeyColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> -</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="k">if</span> <span class="n">desc</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY</span><span class="si">{</span><span class="s1">' DESC'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">desc</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ASC'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY"</span> -</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> -</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="k">def</span> <span class="nf">uniquecolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="k">return</span> <span class="s2">"UNIQUE"</span> -</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> -</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="n">properties</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">"properties"</span><span class="p">)</span> -</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="n">properties_exp</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="n">properties_locs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">locate_properties</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="p">{}</span> -</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">)</span> <span class="ow">or</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> -</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span> -</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="p">):</span> -</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="n">properties_exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="s2">"properties"</span><span class="p">,</span> -</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> -</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">],</span> -</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">],</span> -</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="p">]</span> -</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="p">),</span> -</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="p">)</span> -</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">"TABLE"</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">):</span> -</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]),</span> -</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="p">)</span> -</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this_name</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">this_properties</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</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">"this"</span><span class="p">)</span> -</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">properties_exp</span><span class="p">,</span> <span class="s2">"properties"</span><span class="p">)</span> -</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="s2">" BEGIN"</span> <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">"begin"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="k">if</span> <span class="n">expression_sql</span><span class="p">:</span> -</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">begin</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> -</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">):</span> -</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">):</span> -</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="n">postalias_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> -</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span> -</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> <span class="p">),</span> -</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="p">)</span> -</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">postalias_props_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> -</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="n">transient</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="s2">" TRANSIENT"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CREATE_TRANSIENT</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"transient"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="p">)</span> -</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="n">external</span> <span class="o">=</span> <span class="s2">" EXTERNAL"</span> <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">"external"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="s2">" OR REPLACE"</span> <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">"replace"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF NOT EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="s2">" MATERIALIZED"</span> <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">"materialized"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="n">set_</span> <span class="o">=</span> <span class="s2">" SET"</span> <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">"set"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="n">multiset</span> <span class="o">=</span> <span class="s2">" MULTISET"</span> <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">"multiset"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="n">global_temporary</span> <span class="o">=</span> <span class="s2">" GLOBAL TEMPORARY"</span> <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">"global_temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="n">volatile</span> <span class="o">=</span> <span class="s2">" VOLATILE"</span> <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">"volatile"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="n">data</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">"data"</span><span class="p">)</span> -</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="n">data</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="k">elif</span> <span class="n">data</span><span class="p">:</span> -</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="n">data</span> <span class="o">=</span> <span class="s2">" WITH DATA"</span> -</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="n">data</span> <span class="o">=</span> <span class="s2">" WITH NO DATA"</span> -</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="n">statistics</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">"statistics"</span><span class="p">)</span> -</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="k">if</span> <span class="n">statistics</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="k">elif</span> <span class="n">statistics</span><span class="p">:</span> -</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="s2">" AND STATISTICS"</span> -</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="s2">" AND NO STATISTICS"</span> -</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="n">no_primary_index</span> <span class="o">=</span> <span class="s2">" NO PRIMARY INDEX"</span> <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">"no_primary_index"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</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">indexes</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">"indexes"</span><span class="p">)</span> -</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="k">if</span> <span class="n">indexes</span><span class="p">:</span> -</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="n">indexes_sql</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="n">indexes</span><span class="p">:</span> -</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="n">ind_unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <span class="k">if</span> <span class="n">index</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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="n">ind_primary</span> <span class="o">=</span> <span class="s2">" PRIMARY"</span> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="n">ind_amp</span> <span class="o">=</span> <span class="s2">" AMP"</span> <span class="k">if</span> <span class="n">index</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">"amp"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="n">ind_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">index</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">index</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="sa">f</span><span class="s1">' (</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">index</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="o">=</span><span class="s2">"columns"</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="s1">)'</span> -</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="k">if</span> <span class="n">index</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">"columns"</span><span class="p">)</span> -</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <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">index</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">"primary"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> -</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span> -</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="p">):</span> -</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="n">postindex_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> -</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span> -</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="p">),</span> -</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="p">)</span> -</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">postindex_props_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> -</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="n">indexes_sql</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_unique</span><span class="si">}{</span><span class="n">ind_primary</span><span class="si">}{</span><span class="n">ind_amp</span><span class="si">}</span><span class="s2"> INDEX</span><span class="si">{</span><span class="n">ind_name</span><span class="si">}{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="p">)</span> -</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">indexes_sql</span><span class="p">)</span> -</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> -</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">):</span> -</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]),</span> -</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> -</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> -</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="p">)</span> -</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> -</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="n">modifiers</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="p">(</span> -</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="n">replace</span><span class="p">,</span> -</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="n">temporary</span><span class="p">,</span> -</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="n">transient</span><span class="p">,</span> -</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="n">external</span><span class="p">,</span> -</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="n">unique</span><span class="p">,</span> -</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="n">materialized</span><span class="p">,</span> -</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="n">set_</span><span class="p">,</span> -</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="n">multiset</span><span class="p">,</span> -</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="n">global_temporary</span><span class="p">,</span> -</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="n">volatile</span><span class="p">,</span> -</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="n">postcreate_props_sql</span><span class="p">,</span> -</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="p">)</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="n">no_schema_binding</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="s2">" WITH NO SCHEMA BINDING"</span> <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">"no_schema_binding"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="p">)</span> -</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> -</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> <span class="n">post_expression_modifiers</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">data</span><span class="p">,</span> <span class="n">statistics</span><span class="p">,</span> <span class="n">no_primary_index</span><span class="p">))</span> -</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> -</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREATE</span><span class="si">{</span><span class="n">modifiers</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">properties_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">post_expression_modifiers</span><span class="si">}{</span><span class="n">index_sql</span><span class="si">}{</span><span class="n">no_schema_binding</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_sql</span><span class="p">)</span> -</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> -</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> -</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="k">def</span> <span class="nf">prepend_ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="n">with_</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">"with"</span><span class="p">)</span> -</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> -</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">with_</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> -</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="k">def</span> <span class="nf">with_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">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="s2">"RECURSIVE "</span> <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">"recursive"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> -</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH </span><span class="si">{</span><span class="n">recursive</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> -</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="k">def</span> <span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> -</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="k">def</span> <span class="nf">tablealias_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">TableAlias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> -</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="k">def</span> <span class="nf">bitstring_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">BitString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> -</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="k">def</span> <span class="nf">hexstring_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">HexString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> -</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="n">type_value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_value</span><span class="p">,</span> <span class="n">type_value</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="n">interior</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="n">values</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="k">if</span> <span class="n">interior</span><span class="p">:</span> -</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</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">"nested"</span><span class="p">):</span> -</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="n">interior</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</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">"values"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="s2">"]"</span><span class="p">)</span> <span class="k">if</span> <span class="n">type_value</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">ARRAY</span> <span class="k">else</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> -</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'values'</span><span class="p">)</span><span class="si">}{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="p">)</span> -</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">interior</span><span class="si">}</span><span class="s2">)"</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="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}{</span><span class="n">nested</span><span class="si">}{</span><span class="n">values</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> -</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="k">def</span> <span class="nf">directory_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">Directory</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="n">row_format</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">"row_format"</span><span class="p">)</span> -</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="n">row_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">row_format</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">local</span><span class="si">}</span><span class="s2">DIRECTORY </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> -</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</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">"this"</span><span class="p">)</span> -</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="n">using_sql</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'using'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">', USING '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</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">"using"</span><span class="p">)</span> -</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="p">)</span> -</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"DELETE</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">using_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> -</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="k">def</span> <span class="nf">drop_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">Drop</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</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">"this"</span><span class="p">)</span> -</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</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">"kind"</span><span class="p">]</span> -</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="s2">" MATERIALIZED"</span> <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">"materialized"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="n">cascade</span> <span class="o">=</span> <span class="s2">" CASCADE"</span> <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">"cascade"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">temporary</span><span class="si">}{</span><span class="n">materialized</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">cascade</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> -</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="k">def</span> <span class="nf">except_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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> -</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> -</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="p">)</span> -</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> -</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="k">def</span> <span class="nf">indent</span><span class="p">(</span> +</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="n">pad</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="n">skip_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="n">skip_last</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> +</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="k">if</span> <span class="n">pad</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">pad</span> +</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> +</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="n">line</span> +</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">skip_first</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">skip_last</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' '</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">level</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_indent</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">pad</span><span class="p">)</span><span class="si">}{</span><span class="n">line</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">lines</span><span class="p">)</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><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span> +</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> +</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="n">comment</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> +</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> +</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="k">if</span> <span class="n">key</span><span class="p">:</span> +</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> +</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> +</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="n">transform</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> +</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> +</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">transform</span><span class="p">):</span> +</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</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-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="k">elif</span> <span class="n">transform</span><span class="p">:</span> +</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</span> +</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="n">exp_handler_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">_sql"</span> +</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> +</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">):</span> +</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">)(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">):</span> +</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">property_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected an Expression. Received </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> +</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">comment</span> <span class="k">else</span> <span class="n">sql</span> +</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> +</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="k">def</span> <span class="nf">uncache_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">Uncache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> +</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNCACHE TABLE</span><span class="si">{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> +</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="k">def</span> <span class="nf">cache_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">Cache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="s2">" LAZY"</span> <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">"lazy"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> +</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="n">options</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">"options"</span><span class="p">)</span> +</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OPTIONS(</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">options</span><span class="p">[</span><span class="mi">0</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">options</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CACHE</span><span class="si">{</span><span class="n">lazy</span><span class="si">}</span><span class="s2"> TABLE </span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">options</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> +</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="k">def</span> <span class="nf">characterset_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">CharacterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</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">Cast</span><span class="p">):</span> +</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHAR CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> <span class="n">default</span> <span class="o">=</span> <span class="s2">"DEFAULT "</span> <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">"default"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> +</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> <span class="k">def</span> <span class="nf">column_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">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> +</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <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">"catalog"</span><span class="p">),</span> +</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <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">"db"</span><span class="p">),</span> +</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <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">"table"</span><span class="p">),</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <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">"this"</span><span class="p">),</span> +</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="p">)</span> +</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="k">if</span> <span class="n">part</span> +</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="p">)</span> +</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> +</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="k">def</span> <span class="nf">columndef_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">ColumnDef</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="n">column</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">"this"</span><span class="p">)</span> +</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"constraints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">"IF NOT EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">constraints</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> +</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">column</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> +</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="k">def</span> <span class="nf">columnconstraint_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">ColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</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">"this"</span><span class="p">)</span> +</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="n">kind_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">)</span> +</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">kind_sql</span> +</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> +</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="k">def</span> <span class="nf">autoincrementcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">token_sql</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">)</span> +</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> +</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="k">def</span> <span class="nf">compresscolumnconstraint_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">CompressColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</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="nb">list</span><span class="p">):</span> +</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</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">"this"</span><span class="p">)</span> +</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> +</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COMPRESS </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> +</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> +</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</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">GeneratedAsIdentityColumnConstraint</span> +</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">" ALWAYS "</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">" BY DEFAULT "</span> +</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> +</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"START WITH </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> +</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT BY </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="n">minvalue</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">"minvalue"</span><span class="p">)</span> +</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="n">minvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MINVALUE </span><span class="si">{</span><span class="n">minvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">minvalue</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="n">maxvalue</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">"maxvalue"</span><span class="p">)</span> +</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="n">maxvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAXVALUE </span><span class="si">{</span><span class="n">maxvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">maxvalue</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="n">cycle</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">"cycle"</span><span class="p">)</span> +</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="k">if</span> <span class="n">cycle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' NO'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">cycle</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> CYCLE"</span> +</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="n">cycle_sql</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">increment</span> <span class="k">else</span> <span class="n">cycle_sql</span> +</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">or</span> <span class="n">increment</span> <span class="ow">or</span> <span class="n">cycle_sql</span><span class="p">:</span> +</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}{</span><span class="n">minvalue</span><span class="si">}{</span><span class="n">maxvalue</span><span class="si">}{</span><span class="n">cycle_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">sequence_opts</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"GENERATED</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">AS IDENTITY</span><span class="si">{</span><span class="n">sequence_opts</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> +</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="k">def</span> <span class="nf">notnullcolumnconstraint_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">NotNullColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'allow_null'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'NOT '</span><span class="si">}</span><span class="s2">NULL"</span> +</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> +</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="k">def</span> <span class="nf">primarykeycolumnconstraint_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">PrimaryKeyColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> +</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="k">if</span> <span class="n">desc</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY</span><span class="si">{</span><span class="s1">' DESC'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">desc</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ASC'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY"</span> +</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> +</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="k">def</span> <span class="nf">uniquecolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="k">return</span> <span class="s2">"UNIQUE"</span> +</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> +</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="n">properties</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">"properties"</span><span class="p">)</span> +</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="n">properties_exp</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="n">properties_locs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">locate_properties</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="p">{}</span> +</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">)</span> <span class="ow">or</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> +</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span> +</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="p">):</span> +</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="n">properties_exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="s2">"properties"</span><span class="p">,</span> +</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">],</span> +</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">],</span> +</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="p">]</span> +</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="p">),</span> +</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="p">)</span> +</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">"TABLE"</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">):</span> +</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]),</span> +</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="p">)</span> +</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this_name</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">this_properties</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</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">"this"</span><span class="p">)</span> +</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">properties_exp</span><span class="p">,</span> <span class="s2">"properties"</span><span class="p">)</span> +</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="s2">" BEGIN"</span> <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">"begin"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="k">if</span> <span class="n">expression_sql</span><span class="p">:</span> +</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">begin</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</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="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">):</span> +</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">):</span> +</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="n">postalias_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span> +</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="p">),</span> +</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="p">)</span> +</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">postalias_props_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> +</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="s2">" OR REPLACE"</span> <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">"replace"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF NOT EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> +</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="n">indexes</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">"indexes"</span><span class="p">)</span> +</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="k">if</span> <span class="n">indexes</span><span class="p">:</span> +</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="n">indexes_sql</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="n">indexes</span><span class="p">:</span> +</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="n">ind_unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <span class="k">if</span> <span class="n">index</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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="n">ind_primary</span> <span class="o">=</span> <span class="s2">" PRIMARY"</span> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="n">ind_amp</span> <span class="o">=</span> <span class="s2">" AMP"</span> <span class="k">if</span> <span class="n">index</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">"amp"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="n">ind_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">index</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">index</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="sa">f</span><span class="s1">' (</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">index</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="o">=</span><span class="s2">"columns"</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="s1">)'</span> +</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="k">if</span> <span class="n">index</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">"columns"</span><span class="p">)</span> +</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="p">)</span> +</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> +</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span> +</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="p">):</span> +</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="n">postindex_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span> +</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="p">),</span> +</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="p">)</span> +</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">postindex_props_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> +</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="n">indexes_sql</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_unique</span><span class="si">}{</span><span class="n">ind_primary</span><span class="si">}{</span><span class="n">ind_amp</span><span class="si">}</span><span class="s2"> INDEX</span><span class="si">{</span><span class="n">ind_name</span><span class="si">}{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="p">)</span> +</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">indexes_sql</span><span class="p">)</span> +</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> +</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">):</span> +</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]),</span> +</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="p">)</span> +</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> +</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="n">modifiers</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">replace</span><span class="p">,</span> <span class="n">unique</span><span class="p">,</span> <span class="n">postcreate_props_sql</span><span class="p">))</span> +</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> +</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="n">postexpression_props_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">):</span> +</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="n">postexpression_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">]</span> +</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="p">),</span> +</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <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="n">no_schema_binding</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="s2">" WITH NO SCHEMA BINDING"</span> <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">"no_schema_binding"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="p">)</span> +</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> +</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREATE</span><span class="si">{</span><span class="n">modifiers</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">properties_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">postexpression_props_sql</span><span class="si">}{</span><span class="n">index_sql</span><span class="si">}{</span><span class="n">no_schema_binding</span><span class="si">}</span><span class="s2">"</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">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_sql</span><span class="p">)</span> +</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> +</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> +</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="k">def</span> <span class="nf">prepend_ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="n">with_</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">"with"</span><span class="p">)</span> +</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> +</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">with_</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> +</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="k">def</span> <span class="nf">with_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">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="s2">"RECURSIVE "</span> <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">"recursive"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> +</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH </span><span class="si">{</span><span class="n">recursive</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> +</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="k">def</span> <span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</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">tablealias_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">TableAlias</span><span class="p">)</span> <span class="o">-></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="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> +</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="k">def</span> <span class="nf">bitstring_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">BitString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> +</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="k">def</span> <span class="nf">hexstring_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">HexString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> +</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="n">type_value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_value</span><span class="p">,</span> <span class="n">type_value</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="n">interior</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="n">values</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="k">if</span> <span class="n">interior</span><span class="p">:</span> +</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</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">"nested"</span><span class="p">):</span> +</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="n">interior</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</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">"values"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="s2">"]"</span><span class="p">)</span> <span class="k">if</span> <span class="n">type_value</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">ARRAY</span> <span class="k">else</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> +</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'values'</span><span class="p">)</span><span class="si">}{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="p">)</span> +</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">interior</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> +</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}{</span><span class="n">nested</span><span class="si">}{</span><span class="n">values</span><span class="si">}</span><span class="s2">"</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">def</span> <span class="nf">directory_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">Directory</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="n">row_format</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">"row_format"</span><span class="p">)</span> +</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="n">row_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">row_format</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">local</span><span class="si">}</span><span class="s2">DIRECTORY </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a> +</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="k">def</span> <span class="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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</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">"this"</span><span class="p">)</span> +</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="n">using_sql</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'using'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">', USING '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</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">"using"</span><span class="p">)</span> +</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="p">)</span> +</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"DELETE</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">using_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> +</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="k">def</span> <span class="nf">drop_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">Drop</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</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">"this"</span><span class="p">)</span> +</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</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">"kind"</span><span class="p">]</span> +</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="s2">" MATERIALIZED"</span> <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">"materialized"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="n">cascade</span> <span class="o">=</span> <span class="s2">" CASCADE"</span> <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">"cascade"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">temporary</span><span class="si">}{</span><span class="n">materialized</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">cascade</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> +</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="k">def</span> <span class="nf">except_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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> +</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> +</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="p">)</span> +</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> +</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> +</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="k">def</span> <span class="nf">fetch_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">Fetch</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="n">direction</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">"direction"</span><span class="p">)</span> +</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">direction</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="n">count</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">"count"</span><span class="p">)</span> +</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="n">count</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">count</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">count</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FETCH'</span><span class="p">)</span><span class="si">}{</span><span class="n">direction</span><span class="si">}{</span><span class="n">count</span><span class="si">}</span><span class="s2"> ROWS ONLY"</span> </span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> -</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="k">def</span> <span class="nf">fetch_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">Fetch</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="n">direction</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">"direction"</span><span class="p">)</span> -</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">direction</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="n">count</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">"count"</span><span class="p">)</span> -</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> <span class="n">count</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">count</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">count</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FETCH'</span><span class="p">)</span><span class="si">}{</span><span class="n">direction</span><span class="si">}{</span><span class="n">count</span><span class="si">}</span><span class="s2"> ROWS ONLY"</span> -</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> -</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="k">def</span> <span class="nf">filter_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">Filter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</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">"this"</span><span class="p">)</span> -</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="n">where</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">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># where has a leading space</span> -</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FILTER(</span><span class="si">{</span><span class="n">where</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> -</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="k">def</span> <span class="nf">hint_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">Hint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="k">if</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">"this"</span><span class="p">):</span> -</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Hints are not supported"</span><span class="p">)</span> -</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> -</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="k">def</span> <span class="nf">index_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">Index</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</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">"this"</span><span class="p">)</span> -</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="n">table</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">"table"</span><span class="p">)</span> -</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="n">columns</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">"columns"</span><span class="p">)</span> -</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> -</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="k">def</span> <span class="nf">identifier_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">Identifier</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">else</span> <span class="n">text</span> -</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span><span class="p">)</span> -</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</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">"quoted"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span><span class="p">:</span> -</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> <span class="k">return</span> <span class="n">text</span> -</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> -</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> <span class="k">def</span> <span class="nf">national_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">National</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"N</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="k">def</span> <span class="nf">filter_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">Filter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</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">"this"</span><span class="p">)</span> +</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> <span class="n">where</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">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># where has a leading space</span> +</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FILTER(</span><span class="si">{</span><span class="n">where</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> +</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="k">def</span> <span class="nf">hint_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">Hint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="k">if</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">"this"</span><span class="p">):</span> +</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Hints are not supported"</span><span class="p">)</span> +</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> +</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="k">def</span> <span class="nf">index_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">Index</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</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">"this"</span><span class="p">)</span> +</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="n">table</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">"table"</span><span class="p">)</span> +</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="n">columns</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">"columns"</span><span class="p">)</span> +</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> +</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="k">def</span> <span class="nf">identifier_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">Identifier</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">else</span> <span class="n">text</span> +</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span><span class="p">)</span> +</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</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">"quoted"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span><span class="p">:</span> +</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> +</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="k">def</span> <span class="nf">national_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">National</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"N</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> +</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="k">def</span> <span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> +</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="k">def</span> <span class="nf">properties_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">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> <span class="n">root_properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="n">with_properties</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> -</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="k">def</span> <span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> -</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="k">def</span> <span class="nf">properties_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">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="n">root_properties</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="n">with_properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="k">for</span> <span class="n">p</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-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> +</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> +</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="n">with_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> +</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="n">root_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> </span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> -</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="k">for</span> <span class="n">p</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-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> -</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> -</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="n">with_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> -</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="n">root_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> -</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">root_properties</span><span class="p">(</span> -</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">root_properties</span><span class="p">)</span> -</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_properties</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">with_properties</span><span class="p">))</span> -</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> -</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="k">def</span> <span class="nf">root_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> -</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="k">def</span> <span class="nf">properties</span><span class="p">(</span> -</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> -</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> -</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="n">suffix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="k">if</span> <span class="n">wrapped</span> <span class="k">else</span> <span class="n">expressions</span> -</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="s1">' '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">suffix</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> -</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="k">def</span> <span class="nf">with_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">))</span> +</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">root_properties</span><span class="p">(</span> +</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">root_properties</span><span class="p">)</span> +</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_properties</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">with_properties</span><span class="p">))</span> +</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> +</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="k">def</span> <span class="nf">root_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> +</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="k">def</span> <span class="nf">properties</span><span class="p">(</span> +</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> +</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> +</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="n">suffix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="k">if</span> <span class="n">wrapped</span> <span class="k">else</span> <span class="n">expressions</span> +</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="s1">' '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">suffix</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> +</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="k">def</span> <span class="nf">with_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">))</span> +</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> +</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="k">def</span> <span class="nf">locate_properties</span><span class="p">(</span> +</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span> +</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</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="p">,</span> <span class="nb">list</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-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="n">properties_locs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="p">,</span> <span class="nb">list</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="n">key</span><span class="p">:</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</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><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="p">}</span> </span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> -</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="k">def</span> <span class="nf">locate_properties</span><span class="p">(</span> -</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span> -</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</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="p">,</span> <span class="nb">list</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-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="n">properties_locs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="p">,</span> <span class="nb">list</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="n">key</span><span class="p">:</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</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><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="p">}</span> -</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> -</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> -</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">:</span> -</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">:</span> -</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> -</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> -</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">:</span> -</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">:</span> -</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</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-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">p</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> -</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="k">return</span> <span class="n">properties_locs</span> +</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> +</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">:</span> +</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">:</span> +</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> +</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> +</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">:</span> +</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">:</span> +</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">:</span> +</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</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-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">p</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> +</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="k">return</span> <span class="n">properties_locs</span> +</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> +</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="k">def</span> <span class="nf">property_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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span> +</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="k">if</span> <span class="n">property_cls</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> +</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> -</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="k">def</span> <span class="nf">property_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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span> -</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="k">if</span> <span class="n">property_cls</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> -</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> -</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">property_cls</span><span class="p">)</span> -</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> -</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> -</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">property_cls</span><span class="p">)</span> +</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> +</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> +</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> +</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="k">def</span> <span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="n">options</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <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-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LIKE </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> -</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="k">def</span> <span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="n">options</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <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-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LIKE </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="k">def</span> <span class="nf">fallbackproperty_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">FallbackProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="n">protection</span> <span class="o">=</span> <span class="s2">" PROTECTION"</span> <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">"protection"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}</span><span class="s2">FALLBACK</span><span class="si">{</span><span class="n">protection</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> -</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="k">def</span> <span class="nf">fallbackproperty_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">FallbackProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="k">def</span> <span class="nf">journalproperty_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">JournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> </span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="n">protection</span> <span class="o">=</span> <span class="s2">" PROTECTION"</span> <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">"protection"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}</span><span class="s2">FALLBACK</span><span class="si">{</span><span class="n">protection</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> -</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="k">def</span> <span class="nf">journalproperty_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">JournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="n">before</span> <span class="o">=</span> <span class="s2">"BEFORE "</span> <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">"before"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">before</span><span class="si">}</span><span class="s2">JOURNAL"</span> +</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="n">before</span> <span class="o">=</span> <span class="s2">"BEFORE "</span> <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">"before"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">before</span><span class="si">}</span><span class="s2">JOURNAL"</span> +</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> +</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="k">def</span> <span class="nf">freespaceproperty_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">FreespaceProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="n">freespace</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">"this"</span><span class="p">)</span> +</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FREESPACE=</span><span class="si">{</span><span class="n">freespace</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> -</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="k">def</span> <span class="nf">freespaceproperty_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">FreespaceProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="n">freespace</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">"this"</span><span class="p">)</span> -</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FREESPACE=</span><span class="si">{</span><span class="n">freespace</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> -</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="k">def</span> <span class="nf">afterjournalproperty_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">AfterJournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</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">"local"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"NOT LOCAL "</span> -</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">local</span><span class="si">}</span><span class="s2">AFTER JOURNAL"</span> -</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> -</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="k">def</span> <span class="nf">checksumproperty_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">ChecksumProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</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">"default"</span><span class="p">):</span> -</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> -</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="k">elif</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">"on"</span><span class="p">):</span> -</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ON"</span> -</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"OFF"</span> -</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECKSUM=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> -</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="k">def</span> <span class="nf">mergeblockratioproperty_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">MergeBlockRatioProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</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">"no"</span><span class="p">):</span> -</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="k">return</span> <span class="s2">"NO MERGEBLOCKRATIO"</span> -</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</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">"default"</span><span class="p">):</span> -</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="k">return</span> <span class="s2">"DEFAULT MERGEBLOCKRATIO"</span> -</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> -</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGEBLOCKRATIO=</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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> -</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> <span class="k">def</span> <span class="nf">datablocksizeproperty_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">DataBlocksizeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="nb">min</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">"min"</span><span class="p">)</span> -</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">min</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> -</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="k">elif</span> <span class="nb">min</span><span class="p">:</span> -</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MINIMUM"</span> -</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MAXIMUM"</span> -</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2"> DATABLOCKSIZE"</span> -</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="n">units</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">"units"</span><span class="p">)</span> -</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="n">units</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">units</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATABLOCKSIZE=</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">'size'</span><span class="p">)</span><span class="si">}{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> -</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="k">def</span> <span class="nf">blockcompressionproperty_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">BlockCompressionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="n">autotemp</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">"autotemp"</span><span class="p">)</span> -</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="n">always</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">"always"</span><span class="p">)</span> -</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="n">manual</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">"manual"</span><span class="p">)</span> -</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="n">never</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">"never"</span><span class="p">)</span> -</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> -</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="k">if</span> <span class="n">autotemp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"AUTOTEMP(</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">autotemp</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> <span class="k">elif</span> <span class="n">always</span><span class="p">:</span> -</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ALWAYS"</span> -</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="k">elif</span> <span class="n">default</span><span class="p">:</span> -</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> -</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> <span class="k">elif</span> <span class="n">manual</span><span class="p">:</span> -</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MANUAL"</span> -</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="k">elif</span> <span class="n">never</span><span class="p">:</span> -</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"NEVER"</span> -</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"BLOCKCOMPRESSION=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> -</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="k">def</span> <span class="nf">isolatedloadingproperty_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">IsolatedLoadingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="n">no</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">"no"</span><span class="p">)</span> -</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">" NO"</span> <span class="k">if</span> <span class="n">no</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="n">concurrent</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">"concurrent"</span><span class="p">)</span> -</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="s2">" CONCURRENT"</span> <span class="k">if</span> <span class="n">concurrent</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> -</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</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">"for_all"</span><span class="p">):</span> -</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR ALL"</span> -</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="k">elif</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">"for_insert"</span><span class="p">):</span> -</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR INSERT"</span> -</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="k">elif</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">"for_none"</span><span class="p">):</span> -</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR NONE"</span> -</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">concurrent</span><span class="si">}</span><span class="s2"> ISOLATED LOADING</span><span class="si">{</span><span class="n">for_</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> -</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="k">def</span> <span class="nf">lockingproperty_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">LockingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</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="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> -</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="n">for_or_in</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">"for_or_in"</span><span class="p">)</span> -</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="n">lock_type</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">"lock_type"</span><span class="p">)</span> -</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="n">override</span> <span class="o">=</span> <span class="s2">" OVERRIDE"</span> <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">"override"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOCKING </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">for_or_in</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}{</span><span class="n">override</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> -</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="k">def</span> <span class="nf">insert_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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="n">overwrite</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">"overwrite"</span><span class="p">)</span> +</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="k">def</span> <span class="nf">afterjournalproperty_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">AfterJournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</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">"local"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"NOT LOCAL "</span> +</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">local</span><span class="si">}</span><span class="s2">AFTER JOURNAL"</span> +</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> +</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="k">def</span> <span class="nf">checksumproperty_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">ChecksumProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</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">"default"</span><span class="p">):</span> +</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> +</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="k">elif</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">"on"</span><span class="p">):</span> +</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ON"</span> +</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"OFF"</span> +</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECKSUM=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> +</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="k">def</span> <span class="nf">mergeblockratioproperty_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">MergeBlockRatioProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</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">"no"</span><span class="p">):</span> +</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="k">return</span> <span class="s2">"NO MERGEBLOCKRATIO"</span> +</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</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">"default"</span><span class="p">):</span> +</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="k">return</span> <span class="s2">"DEFAULT MERGEBLOCKRATIO"</span> +</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> +</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGEBLOCKRATIO=</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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> +</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="k">def</span> <span class="nf">datablocksizeproperty_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">DataBlocksizeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="nb">min</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">"min"</span><span class="p">)</span> +</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">min</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> +</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="k">elif</span> <span class="nb">min</span><span class="p">:</span> +</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MINIMUM"</span> +</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MAXIMUM"</span> +</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2"> DATABLOCKSIZE"</span> +</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="n">units</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">"units"</span><span class="p">)</span> +</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="n">units</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">units</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATABLOCKSIZE=</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">'size'</span><span class="p">)</span><span class="si">}{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> +</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="k">def</span> <span class="nf">blockcompressionproperty_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">BlockCompressionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="n">autotemp</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">"autotemp"</span><span class="p">)</span> +</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="n">always</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">"always"</span><span class="p">)</span> +</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="n">manual</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">"manual"</span><span class="p">)</span> +</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="n">never</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">"never"</span><span class="p">)</span> +</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> +</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="k">if</span> <span class="n">autotemp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"AUTOTEMP(</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">autotemp</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="k">elif</span> <span class="n">always</span><span class="p">:</span> +</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ALWAYS"</span> +</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="k">elif</span> <span class="n">default</span><span class="p">:</span> +</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> +</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="k">elif</span> <span class="n">manual</span><span class="p">:</span> +</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MANUAL"</span> +</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="k">elif</span> <span class="n">never</span><span class="p">:</span> +</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"NEVER"</span> +</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"BLOCKCOMPRESSION=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> +</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="k">def</span> <span class="nf">isolatedloadingproperty_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">IsolatedLoadingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="n">no</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">"no"</span><span class="p">)</span> +</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">" NO"</span> <span class="k">if</span> <span class="n">no</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="n">concurrent</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">"concurrent"</span><span class="p">)</span> +</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="s2">" CONCURRENT"</span> <span class="k">if</span> <span class="n">concurrent</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> +</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</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">"for_all"</span><span class="p">):</span> +</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR ALL"</span> +</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="k">elif</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">"for_insert"</span><span class="p">):</span> +</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR INSERT"</span> +</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="k">elif</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">"for_none"</span><span class="p">):</span> +</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR NONE"</span> +</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">concurrent</span><span class="si">}</span><span class="s2"> ISOLATED LOADING</span><span class="si">{</span><span class="n">for_</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> +</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="k">def</span> <span class="nf">lockingproperty_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">LockingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</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="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> +</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="n">for_or_in</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">"for_or_in"</span><span class="p">)</span> +</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="n">lock_type</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">"lock_type"</span><span class="p">)</span> +</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="n">override</span> <span class="o">=</span> <span class="s2">" OVERRIDE"</span> <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">"override"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOCKING </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">for_or_in</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}{</span><span class="n">override</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> +</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="k">def</span> <span class="nf">withdataproperty_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">WithDataProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="n">data_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"WITH </span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'no'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">DATA"</span> +</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="n">statistics</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">"statistics"</span><span class="p">)</span> +</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="n">statistics_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="k">if</span> <span class="n">statistics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="n">statistics_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AND </span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">statistics</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">STATISTICS"</span> +</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">data_sql</span><span class="si">}{</span><span class="n">statistics_sql</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> -</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</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">Directory</span><span class="p">):</span> -</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> -</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE TABLE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> -</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> -</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="n">alternative</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">"alternative"</span><span class="p">)</span> -</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OR </span><span class="si">{</span><span class="n">alternative</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">alternative</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> -</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</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">"partition"</span><span class="p">)</span> <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">"partition"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="p">)</span> -</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="k">if</span> <span class="n">partition_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT</span><span class="si">{</span><span class="n">alternative</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">exists</span><span class="si">}{</span><span class="n">partition_sql</span><span class="si">}{</span><span class="n">sep</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> -</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="k">def</span> <span class="nf">intersect_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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> -</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> -</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="p">)</span> -</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> -</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="k">def</span> <span class="nf">insert_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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="n">overwrite</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">"overwrite"</span><span class="p">)</span> +</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> +</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</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">Directory</span><span class="p">):</span> +</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> +</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE TABLE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> +</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> +</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> <span class="n">alternative</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">"alternative"</span><span class="p">)</span> +</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OR </span><span class="si">{</span><span class="n">alternative</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">alternative</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> +</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</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">"partition"</span><span class="p">)</span> <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">"partition"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="p">)</span> +</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="k">if</span> <span class="n">partition_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT</span><span class="si">{</span><span class="n">alternative</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">exists</span><span class="si">}{</span><span class="n">partition_sql</span><span class="si">}{</span><span class="n">sep</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> +</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="k">def</span> <span class="nf">intersect_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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> +</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> +</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="p">)</span> </span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> -</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="k">def</span> <span class="nf">introducer_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">Introducer</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> -</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="k">def</span> <span class="nf">pseudotype_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">PseudoType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="k">def</span> <span class="nf">introducer_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">Introducer</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> -</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="k">def</span> <span class="nf">rowformatdelimitedproperty_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">RowFormatDelimitedProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="n">fields</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">"fields"</span><span class="p">)</span> -</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="n">fields</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FIELDS TERMINATED BY </span><span class="si">{</span><span class="n">fields</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">fields</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="n">escaped</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">"escaped"</span><span class="p">)</span> -</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="n">escaped</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ESCAPED BY </span><span class="si">{</span><span class="n">escaped</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">escaped</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="n">items</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">"collection_items"</span><span class="p">)</span> -</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="n">items</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLECTION ITEMS TERMINATED BY </span><span class="si">{</span><span class="n">items</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">items</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_keys"</span><span class="p">)</span> -</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAP KEYS TERMINATED BY </span><span class="si">{</span><span class="n">keys</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="n">lines</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">"lines"</span><span class="p">)</span> -</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" LINES TERMINATED BY </span><span class="si">{</span><span class="n">lines</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">lines</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="n">null</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">"null"</span><span class="p">)</span> -</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="n">null</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" NULL DEFINED AS </span><span class="si">{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">null</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROW FORMAT DELIMITED</span><span class="si">{</span><span class="n">fields</span><span class="si">}{</span><span class="n">escaped</span><span class="si">}{</span><span class="n">items</span><span class="si">}{</span><span class="n">keys</span><span class="si">}{</span><span class="n">lines</span><span class="si">}{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> -</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="k">def</span> <span class="nf">table_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">Table</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" AS "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="n">table</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="n">part</span> -</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">[</span> -</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</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">"catalog"</span><span class="p">),</span> -</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</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">"db"</span><span class="p">),</span> -</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</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">"this"</span><span class="p">),</span> -</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="p">]</span> -</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="k">if</span> <span class="n">part</span> -</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="p">)</span> -</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> -</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"hints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">", "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">hints</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">hints</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> <span class="n">laterals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="n">pivots</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="n">system_time</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">"system_time"</span><span class="p">)</span> -</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="n">system_time</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'system_time'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">system_time</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> -</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">pivots</span><span class="p">:</span> -</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="n">pivots</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">pivots</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> -</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">system_time</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">hints</span><span class="si">}{</span><span class="n">laterals</span><span class="si">}{</span><span class="n">joins</span><span class="si">}{</span><span class="n">pivots</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> -</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> <span class="k">def</span> <span class="nf">tablesample_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">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> -</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</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="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="s1">'alias'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</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">"this"</span><span class="p">)</span> -</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="n">method</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">"method"</span><span class="p">)</span> -</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="n">method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">method</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">method</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="n">numerator</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">"bucket_numerator"</span><span class="p">)</span> -</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="n">denominator</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">"bucket_denominator"</span><span class="p">)</span> -</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="n">field</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">"bucket_field"</span><span class="p">)</span> -</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="n">field</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">field</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="n">bucket</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"BUCKET </span><span class="si">{</span><span class="n">numerator</span><span class="si">}</span><span class="s2"> OUT OF </span><span class="si">{</span><span class="n">denominator</span><span class="si">}{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">numerator</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="n">percent</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">"percent"</span><span class="p">)</span> -</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">percent</span><span class="si">}</span><span class="s2"> PERCENT"</span> <span class="k">if</span> <span class="n">percent</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> -</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">rows</span><span class="si">}</span><span class="s2"> ROWS"</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="n">size</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">"size"</span><span class="p">)</span> -</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="n">seed</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">"seed"</span><span class="p">)</span> -</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SEED (</span><span class="si">{</span><span class="n">seed</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">seed</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TABLESAMPLE</span><span class="si">{</span><span class="n">method</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">bucket</span><span class="si">}{</span><span class="n">percent</span><span class="si">}{</span><span class="n">rows</span><span class="si">}{</span><span class="n">size</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">seed</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> -</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="k">def</span> <span class="nf">pivot_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">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</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">"this"</span><span class="p">)</span> -</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="n">unpivot</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">"unpivot"</span><span class="p">)</span> -</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="s2">"UNPIVOT"</span> <span class="k">if</span> <span class="n">unpivot</span> <span class="k">else</span> <span class="s2">"PIVOT"</span> -</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> -</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> -</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">direction</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2"> FOR </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> -</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="k">def</span> <span class="nf">tuple_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">Tuple</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> -</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</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">"this"</span><span class="p">)</span> -</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> -</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> -</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="n">values</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"VALUES</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">args</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WRAP_DERIVED_VALUES</span> <span class="ow">and</span> <span class="p">(</span><span class="n">alias</span> <span class="ow">or</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">From</span><span class="p">))</span> -</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="k">else</span> <span class="n">values</span> -</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="p">)</span> -</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">values</span> -</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> -</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> <span class="k">def</span> <span class="nf">var_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">Var</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> -</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="k">def</span> <span class="nf">into_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">Into</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="s2">" UNLOGGED"</span> <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">"unlogged"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'INTO'</span><span class="p">)</span><span class="si">}{</span><span class="n">temporary</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">unlogged</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> -</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="k">def</span> <span class="nf">from_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">From</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FROM'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> -</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="k">def</span> <span class="nf">group_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">Group</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"GROUP BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"grouping_sets"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'GROUPING SETS'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">grouping_sets</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="p">)</span> -</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> -</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="n">cube</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">"cube"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">cube</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"cube"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">cube_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">cube_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> -</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="n">rollup</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">"rollup"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">rollup</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"rollup"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">rollup_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">rollup_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> -</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="n">groupings</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">,</span> <span class="n">cube_sql</span><span class="p">,</span> <span class="n">rollup_sql</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">","</span><span class="p">)</span> -</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> -</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</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">"expressions"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">groupings</span><span class="p">:</span> -</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}</span><span class="s2">,"</span> -</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> -</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="n">groupings</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> -</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="k">def</span> <span class="nf">having_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">Having</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> -</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'HAVING'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> -</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="k">def</span> <span class="nf">join_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">Join</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span> -</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="n">op</span> -</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="k">for</span> <span class="n">op</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="s2">"NATURAL"</span> <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">"natural"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">side</span><span class="p">,</span> -</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="s2">"JOIN"</span><span class="p">,</span> -</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="p">)</span> -</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="k">if</span> <span class="n">op</span> -</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="p">)</span> -</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="p">)</span> -</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">)</span> -</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> -</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> -</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">on_sql</span> <span class="ow">and</span> <span class="n">using</span><span class="p">:</span> -</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="o">*</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">column</span><span class="p">)</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">using</span><span class="p">))</span> -</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> -</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> <span class="k">if</span> <span class="n">on_sql</span><span class="p">:</span> -</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">on_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="n">space</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> -</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">USING (</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">ON </span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> -</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">op_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_sql</span><span class="si">}{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> -</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="k">def</span> <span class="nf">lambda_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">Lambda</span><span class="p">,</span> <span class="n">arrow_sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"->"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="n">args</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">))</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">args</span> -</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">arrow_sep</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> -</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> <span class="k">def</span> <span class="nf">lateral_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">Lateral</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</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">"this"</span><span class="p">)</span> -</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> -</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</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">Subquery</span><span class="p">):</span> -</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> -</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</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">"view"</span><span class="p">):</span> -</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</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="p">[</span><span class="s2">"alias"</span><span class="p">]</span> -</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="n">table</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">alias</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"LATERAL VIEW</span><span class="si">{</span><span class="s1">' OUTER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'outer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">table</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> -</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> -</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="k">def</span> <span class="nf">limit_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">Limit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</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">"this"</span><span class="p">)</span> -</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'LIMIT'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> -</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> <span class="k">def</span> <span class="nf">offset_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">Offset</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</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">"this"</span><span class="p">)</span> -</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'OFFSET'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> -</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> <span class="k">def</span> <span class="nf">lock_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">Lock</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">LOCKING_READS_SUPPORTED</span><span class="p">:</span> -</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"UPDATE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"update"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">"SHARE"</span> -</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"FOR </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> -</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Locking reads using 'FOR UPDATE/SHARE' are not supported"</span><span class="p">)</span> -</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> -</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> <span class="k">def</span> <span class="nf">literal_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">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span><span class="p">)</span> -</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">)</span> -</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> <span class="k">return</span> <span class="n">text</span> -</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> -</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="k">def</span> <span class="nf">loaddata_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">LoadData</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">" LOCAL"</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPATH </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">'inpath'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="s2">" OVERWRITE"</span> <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">"overwrite"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO TABLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="n">partition</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">"partition"</span><span class="p">)</span> -</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="n">input_format</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">"input_format"</span><span class="p">)</span> -</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPUTFORMAT </span><span class="si">{</span><span class="n">input_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">input_format</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="n">serde</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">"serde"</span><span class="p">)</span> -</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="n">serde</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SERDE </span><span class="si">{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">serde</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOAD DATA</span><span class="si">{</span><span class="n">local</span><span class="si">}{</span><span class="n">inpath</span><span class="si">}{</span><span class="n">overwrite</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">partition</span><span class="si">}{</span><span class="n">input_format</span><span class="si">}{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> -</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> <span class="k">def</span> <span class="nf">null_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> -</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> -</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="k">def</span> <span class="nf">boolean_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">Boolean</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="k">return</span> <span class="s2">"TRUE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">"FALSE"</span> -</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> -</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="k">def</span> <span class="nf">order_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">Order</span><span class="p">,</span> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</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">"this"</span><span class="p">)</span> -</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">this</span> -</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">ORDER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">this</span> <span class="ow">or</span> <span class="n">flat</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> -</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> <span class="k">def</span> <span class="nf">cluster_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">Cluster</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> -</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> <span class="k">def</span> <span class="nf">distribute_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">Distribute</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"DISTRIBUTE BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> -</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="k">def</span> <span class="nf">sort_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">Sort</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"SORT BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> -</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> <span class="k">def</span> <span class="nf">ordered_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">Ordered</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> -</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> -</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> -</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> <span class="n">nulls_first</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">"nulls_first"</span><span class="p">)</span> -</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="n">nulls_last</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">nulls_first</span> -</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> <span class="n">nulls_are_large</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_large"</span> -</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> <span class="n">nulls_are_small</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span> -</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a> <span class="n">nulls_are_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_last"</span> -</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a> -</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a> <span class="n">sort_order</span> <span class="o">=</span> <span class="s2">" DESC"</span> <span class="k">if</span> <span class="n">desc</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> <span class="k">if</span> <span class="n">nulls_first</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="n">nulls_are_last</span> -</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a> <span class="p">):</span> -</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS FIRST"</span> -</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a> <span class="k">elif</span> <span class="p">(</span> -</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a> <span class="n">nulls_last</span> -</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="ow">and</span> <span class="p">((</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">))</span> -</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">nulls_are_last</span> -</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="p">):</span> -</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS LAST"</span> -</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> -</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> <span class="k">if</span> <span class="n">nulls_sort_change</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">NULL_ORDERING_SUPPORTED</span><span class="p">:</span> -</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span> -</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="s2">"Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"</span> -</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="p">)</span> -</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> -</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">sort_order</span><span class="si">}{</span><span class="n">nulls_sort_change</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> -</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> <span class="k">def</span> <span class="nf">matchrecognize_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">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> -</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> <span class="n">measures</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">"measures"</span><span class="p">)</span> -</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"MEASURES </span><span class="si">{</span><span class="n">measures</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">measures</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> -</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">rows</span><span class="p">)</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> <span class="n">after</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">"after"</span><span class="p">)</span> -</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a> <span class="n">after</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">after</span><span class="p">)</span> <span class="k">if</span> <span class="n">after</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a> <span class="n">pattern</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">"pattern"</span><span class="p">)</span> -</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"PATTERN (</span><span class="si">{</span><span class="n">pattern</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> <span class="k">if</span> <span class="n">pattern</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a> <span class="n">define</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">"define"</span><span class="p">)</span> -</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a> <span class="n">define</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"DEFINE </span><span class="si">{</span><span class="n">define</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">define</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a> <span class="n">body</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a> <span class="p">(</span> -</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> <span class="n">partition</span><span class="p">,</span> -</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> <span class="n">order</span><span class="p">,</span> -</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a> <span class="n">measures</span><span class="p">,</span> -</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> <span class="n">rows</span><span class="p">,</span> -</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> <span class="n">after</span><span class="p">,</span> -</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="n">pattern</span><span class="p">,</span> -</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="n">define</span><span class="p">,</span> -</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> <span class="p">)</span> -</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="p">)</span> -</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'MATCH_RECOGNIZE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">body</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> -</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a> <span class="k">def</span> <span class="nf">query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">sqls</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> <span class="k">return</span> <span class="n">csv</span><span class="p">(</span> -</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a> <span class="o">*</span><span class="n">sqls</span><span class="p">,</span> -</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> -</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</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">"match"</span><span class="p">),</span> -</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"laterals"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> -</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</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">"where"</span><span class="p">),</span> -</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</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">"group"</span><span class="p">),</span> -</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</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">"having"</span><span class="p">),</span> -</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</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">"qualify"</span><span class="p">),</span> -</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WINDOW "</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"windows"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</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">"windows"</span><span class="p">)</span> -</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</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">"distribute"</span><span class="p">),</span> -</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</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">"sort"</span><span class="p">),</span> -</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</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">"cluster"</span><span class="p">),</span> -</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</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">"order"</span><span class="p">),</span> -</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</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">"limit"</span><span class="p">),</span> -</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</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">"offset"</span><span class="p">),</span> -</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</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">"lock"</span><span class="p">),</span> -</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> -</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> <span class="p">)</span> -</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> -</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> <span class="n">hint</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">"hint"</span><span class="p">)</span> -</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="n">distinct</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">"distinct"</span><span class="p">)</span> -</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">distinct</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="n">expressions</span> -</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> -</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="sa">f</span><span class="s2">"SELECT</span><span class="si">{</span><span class="n">hint</span><span class="si">}{</span><span class="n">distinct</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</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">"into"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</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">"from"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="p">)</span> -</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> -</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</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">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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</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">"this"</span><span class="p">)</span> -</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> -</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> <span class="k">def</span> <span class="nf">star_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">Star</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"except"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'except'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">except_</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">except_</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"replace"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'replace'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">replace</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"*</span><span class="si">{</span><span class="n">except_</span><span class="si">}{</span><span class="n">replace</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> -</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> <span class="k">def</span> <span class="nf">structkwarg_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">StructKwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> -</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> <span class="k">def</span> <span class="nf">parameter_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">Parameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</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">"this"</span><span class="p">)</span> -</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">PARAMETER_TOKEN</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> -</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="k">def</span> <span class="nf">sessionparameter_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">SessionParameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</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">"this"</span><span class="p">)</span> -</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> -</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">."</span> -</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"@@</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> -</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">":</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">"?"</span> -</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> -</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> <span class="k">def</span> <span class="nf">subquery_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">Subquery</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a> -</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> -</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> -</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">),</span> -</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a> <span class="p">)</span> -</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a> -</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a> -</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a> <span class="k">def</span> <span class="nf">qualify_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">Qualify</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> -</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'QUALIFY'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> -</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a> <span class="k">def</span> <span class="nf">union_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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> -</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">union_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> -</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="p">)</span> -</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> -</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> <span class="k">def</span> <span class="nf">union_op</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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">" DISTINCT"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPLICIT_UNION</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">kind</span> <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">"distinct"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" ALL"</span> -</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNION</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a> -</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> <span class="k">def</span> <span class="nf">unnest_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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</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">"alias"</span><span class="p">)</span> -</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> -</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> -</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">alias</span> -</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="s2">" WITH ORDINALITY"</span> <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">"ordinality"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> -</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH OFFSET AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNNEST(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">ordinality</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a> -</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a> <span class="k">def</span> <span class="nf">where_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">Where</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> -</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WHERE'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a> -</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a> <span class="k">def</span> <span class="nf">window_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">Window</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</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">"this"</span><span class="p">)</span> -</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a> -</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a> -</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> -</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a> <span class="n">order_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">order_sql</span><span class="p">(</span><span class="n">order</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="n">order</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a> -</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="n">partition</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">partition</span> <span class="ow">and</span> <span class="n">order</span> <span class="k">else</span> <span class="n">partition</span> -</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a> -</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> <span class="n">spec</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">"spec"</span><span class="p">)</span> -</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> <span class="n">spec_sql</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">window_spec_sql</span><span class="p">(</span><span class="n">spec</span><span class="p">)</span> <span class="k">if</span> <span class="n">spec</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> -</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">'AS'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">arg_key</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'windows'</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'OVER'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a> -</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">partition</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">order</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">spec</span> <span class="ow">and</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> -</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a> <span class="n">window_args</span> <span class="o">=</span> <span class="n">alias</span> <span class="o">+</span> <span class="n">partition_sql</span> <span class="o">+</span> <span class="n">order_sql</span> <span class="o">+</span> <span class="n">spec_sql</span> -</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a> -</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">window_args</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a> -</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a> <span class="k">def</span> <span class="nf">partition_by_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">Window</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"partition_by"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a> -</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a> <span class="k">def</span> <span class="nf">window_spec_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">WindowSpec</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a> <span class="n">end</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="ow">or</span> <span class="s2">"CURRENT ROW"</span> -</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a> <span class="p">)</span> -</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a> -</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a> <span class="k">def</span> <span class="nf">withingroup_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">WithinGroup</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</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">"this"</span><span class="p">)</span> -</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># order has a leading space</span> -</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> WITHIN GROUP (</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a> -</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a> <span class="k">def</span> <span class="nf">between_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">Between</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</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">"this"</span><span class="p">)</span> -</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a> <span class="n">low</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">"low"</span><span class="p">)</span> -</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> <span class="n">high</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">"high"</span><span class="p">)</span> -</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">low</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">high</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a> -</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> -</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a> -</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> -</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a> <span class="k">def</span> <span class="nf">all_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">All</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALL </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> -</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> <span class="k">def</span> <span class="nf">any_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">Any</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</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">"this"</span><span class="p">)</span> -</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</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">Subqueryable</span><span class="p">):</span> -</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ANY </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> -</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> <span class="k">def</span> <span class="nf">exists_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">Exists</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXISTS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a> -</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a> <span class="k">def</span> <span class="nf">case_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">Case</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</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">"this"</span><span class="p">)</span> -</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a> <span class="n">statements</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"CASE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"CASE"</span><span class="p">]</span> -</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a> -</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</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">args</span><span class="p">[</span><span class="s2">"ifs"</span><span class="p">]:</span> -</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WHEN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"THEN </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">'true'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a> -</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a> -</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ELSE </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a> -</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> -</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a> -</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> -</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">),</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a> -</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a> <span class="k">return</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> -</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a> -</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> <span class="k">def</span> <span class="nf">constraint_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">Constraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</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">"this"</span><span class="p">)</span> -</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a> -</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a> <span class="k">def</span> <span class="nf">extract_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">Extract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</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">"this"</span><span class="p">)</span> -</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXTRACT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a> -</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a> <span class="k">def</span> <span class="nf">trim_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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> -</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> <span class="k">if</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"LEADING"</span><span class="p">:</span> -</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</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">"LTRIM"</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-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="k">elif</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"TRAILING"</span><span class="p">:</span> -</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</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">"RTRIM"</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-1484"><a href="#L-1484"><span class="linenos">1484</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</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">"TRIM"</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><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> -</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="k">def</span> <span class="nf">concat_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">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="k">if</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 class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</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-1491"><a href="#L-1491"><span class="linenos">1491</span></a> -</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="k">def</span> <span class="nf">check_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">Check</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</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="n">key</span><span class="o">=</span><span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECK (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> -</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> <span class="k">def</span> <span class="nf">foreignkey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="n">reference</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">"reference"</span><span class="p">)</span> -</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">reference</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">reference</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="n">delete</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">"delete"</span><span class="p">)</span> -</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="n">delete</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON DELETE </span><span class="si">{</span><span class="n">delete</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">delete</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a> <span class="n">update</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">"update"</span><span class="p">)</span> -</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="n">update</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON UPDATE </span><span class="si">{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">update</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FOREIGN KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">reference</span><span class="si">}{</span><span class="n">delete</span><span class="si">}{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> -</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="k">def</span> <span class="nf">primarykey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> -</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="k">def</span> <span class="nf">unique_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">Unique</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> -</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNIQUE (</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> -</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a> <span class="k">def</span> <span class="nf">if_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">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sql</span><span class="p">(</span> -</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()],</span> <span class="n">default</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">"false"</span><span class="p">))</span> -</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a> <span class="p">)</span> -</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> -</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a> <span class="k">def</span> <span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> <span class="n">query</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">"query"</span><span class="p">)</span> -</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a> <span class="n">unnest</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">"unnest"</span><span class="p">)</span> -</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> -</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> <span class="n">is_global</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"is_global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> -</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> -</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">query</span><span class="p">)</span> -</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a> <span class="k">elif</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_unnest_op</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> -</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a> <span class="k">elif</span> <span class="n">field</span><span class="p">:</span> -</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> -</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> -</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">is_global</span><span class="si">}</span><span class="s2"> IN </span><span class="si">{</span><span class="n">in_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a> -</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(SELECT </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">unnest</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a> -</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a> <span class="n">this</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">"this"</span><span class="p">)</span> -</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> -</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> <span class="p">)</span> -</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> -</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">unit</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERVAL</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> -</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> <span class="k">def</span> <span class="nf">return_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">Return</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RETURN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> -</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> <span class="k">def</span> <span class="nf">reference_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">Reference</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</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">"this"</span><span class="p">)</span> -</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"REFERENCES </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a> -</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> <span class="k">def</span> <span class="nf">anonymous_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">Anonymous</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</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="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</span></a> -</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> <span class="k">def</span> <span class="nf">paren_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">Paren</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</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">unnest</span><span class="p">(),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> -</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a> -</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a> -</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> <span class="k">def</span> <span class="nf">neg_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">Neg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a> <span class="c1"># This makes sure we don't convert "- - 5" to "--5", which is a comment</span> -</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">this_sql</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"-"</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"-</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a> -</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a> <span class="k">def</span> <span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"NOT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a> -</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> <span class="k">def</span> <span class="nf">alias_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">Alias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">to_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> -</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> <span class="k">def</span> <span class="nf">aliases_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">Aliases</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a> -</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a> <span class="k">def</span> <span class="nf">attimezone_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">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</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">"this"</span><span class="p">)</span> -</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a> <span class="n">zone</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">"zone"</span><span class="p">)</span> -</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a> -</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a> <span class="k">def</span> <span class="nf">add_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">Add</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> -</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a> -</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a> <span class="k">def</span> <span class="nf">and_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">And</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">)</span> -</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a> -</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a> <span class="k">def</span> <span class="nf">connector_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">Connector</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">op</span><span class="p">)</span> -</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a> -</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> <span class="n">sqls</span> <span class="o">=</span> <span class="nb">tuple</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="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">flatten</span><span class="p">(</span><span class="n">unnest</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> -</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> -</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="k">def</span> <span class="nf">bitwiseand_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">BitwiseAnd</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"&"</span><span class="p">)</span> -</span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a> -</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a> <span class="k">def</span> <span class="nf">bitwiseleftshift_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">BitwiseLeftShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<<"</span><span class="p">)</span> -</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a> -</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a> <span class="k">def</span> <span class="nf">bitwisenot_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">BitwiseNot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"~</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a> -</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a> <span class="k">def</span> <span class="nf">bitwiseor_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">BitwiseOr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"|"</span><span class="p">)</span> -</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a> -</span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a> <span class="k">def</span> <span class="nf">bitwiserightshift_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">BitwiseRightShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">>"</span><span class="p">)</span> -</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a> -</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a> <span class="k">def</span> <span class="nf">bitwisexor_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">BitwiseXor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">)</span> -</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a> -</span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a> -</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a> <span class="k">def</span> <span class="nf">currentdate_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">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a> <span class="n">zone</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">"this"</span><span class="p">)</span> -</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE(</span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> -</span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a> -</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a> <span class="k">def</span> <span class="nf">collate_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">Collate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"COLLATE"</span><span class="p">)</span> -</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a> -</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a> <span class="k">def</span> <span class="nf">command_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">Command</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s1">'expression'</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a> -</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a> <span class="k">return</span> <span class="s2">"BEGIN"</span> -</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a> -</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a> <span class="k">def</span> <span class="nf">commit_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">Commit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a> <span class="n">chain</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">"chain"</span><span class="p">)</span> -</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a> <span class="k">if</span> <span class="n">chain</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="s2">" AND CHAIN"</span> <span class="k">if</span> <span class="n">chain</span> <span class="k">else</span> <span class="s2">" AND NO CHAIN"</span> -</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> -</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COMMIT</span><span class="si">{</span><span class="n">chain</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a> -</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> <span class="k">def</span> <span class="nf">rollback_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">Rollback</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="n">savepoint</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">"savepoint"</span><span class="p">)</span> -</span><span id="L-1657"><a href="#L-1657"><span class="linenos">1657</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" TO </span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">savepoint</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROLLBACK</span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a> -</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> <span class="k">def</span> <span class="nf">altercolumn_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">AlterColumn</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</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">"this"</span><span class="p">)</span> -</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</span></a> -</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> <span class="n">dtype</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">"dtype"</span><span class="p">)</span> -</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="p">:</span> -</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> -</span><span id="L-1666"><a href="#L-1666"><span class="linenos">1666</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> -</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">using</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1669"><a href="#L-1669"><span class="linenos">1669</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TYPE </span><span class="si">{</span><span class="n">dtype</span><span class="si">}{</span><span class="n">collate</span><span class="si">}{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1670"><a href="#L-1670"><span class="linenos">1670</span></a> -</span><span id="L-1671"><a href="#L-1671"><span class="linenos">1671</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="L-1672"><a href="#L-1672"><span class="linenos">1672</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="L-1673"><a href="#L-1673"><span class="linenos">1673</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET DEFAULT </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1674"><a href="#L-1674"><span class="linenos">1674</span></a> -</span><span id="L-1675"><a href="#L-1675"><span class="linenos">1675</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">"drop"</span><span class="p">):</span> -</span><span id="L-1676"><a href="#L-1676"><span class="linenos">1676</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported ALTER COLUMN syntax"</span><span class="p">)</span> -</span><span id="L-1677"><a href="#L-1677"><span class="linenos">1677</span></a> -</span><span id="L-1678"><a href="#L-1678"><span class="linenos">1678</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> DROP DEFAULT"</span> -</span><span id="L-1679"><a href="#L-1679"><span class="linenos">1679</span></a> -</span><span id="L-1680"><a href="#L-1680"><span class="linenos">1680</span></a> <span class="k">def</span> <span class="nf">renametable_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">RenameTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1681"><a href="#L-1681"><span class="linenos">1681</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">"this"</span><span class="p">)</span> -</span><span id="L-1682"><a href="#L-1682"><span class="linenos">1682</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RENAME TO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1683"><a href="#L-1683"><span class="linenos">1683</span></a> -</span><span id="L-1684"><a href="#L-1684"><span class="linenos">1684</span></a> <span class="k">def</span> <span class="nf">altertable_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">AlterTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1685"><a href="#L-1685"><span class="linenos">1685</span></a> <span class="n">actions</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">"actions"</span><span class="p">]</span> -</span><span id="L-1686"><a href="#L-1686"><span class="linenos">1686</span></a> -</span><span id="L-1687"><a href="#L-1687"><span class="linenos">1687</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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-1688"><a href="#L-1688"><span class="linenos">1688</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMN "</span><span class="p">)</span> -</span><span id="L-1689"><a href="#L-1689"><span class="linenos">1689</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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-1690"><a href="#L-1690"><span class="linenos">1690</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMNS "</span><span class="p">)</span> -</span><span id="L-1691"><a href="#L-1691"><span class="linenos">1691</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">):</span> -</span><span id="L-1692"><a href="#L-1692"><span class="linenos">1692</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1693"><a href="#L-1693"><span class="linenos">1693</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1694"><a href="#L-1694"><span class="linenos">1694</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">)</span> -</span><span id="L-1695"><a href="#L-1695"><span class="linenos">1695</span></a> -</span><span id="L-1696"><a href="#L-1696"><span class="linenos">1696</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1697"><a href="#L-1697"><span class="linenos">1697</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER TABLE</span><span class="si">{</span><span class="n">exists</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">actions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1698"><a href="#L-1698"><span class="linenos">1698</span></a> -</span><span id="L-1699"><a href="#L-1699"><span class="linenos">1699</span></a> <span class="k">def</span> <span class="nf">droppartition_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">DropPartition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1700"><a href="#L-1700"><span class="linenos">1700</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1701"><a href="#L-1701"><span class="linenos">1701</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="L-1702"><a href="#L-1702"><span class="linenos">1702</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1703"><a href="#L-1703"><span class="linenos">1703</span></a> -</span><span id="L-1704"><a href="#L-1704"><span class="linenos">1704</span></a> <span class="k">def</span> <span class="nf">addconstraint_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">AddConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1705"><a href="#L-1705"><span class="linenos">1705</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">"this"</span><span class="p">)</span> -</span><span id="L-1706"><a href="#L-1706"><span class="linenos">1706</span></a> <span class="n">expression_</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">"expression"</span><span class="p">)</span> -</span><span id="L-1707"><a href="#L-1707"><span class="linenos">1707</span></a> <span class="n">add_constraint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ADD CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"ADD"</span> -</span><span id="L-1708"><a href="#L-1708"><span class="linenos">1708</span></a> -</span><span id="L-1709"><a href="#L-1709"><span class="linenos">1709</span></a> <span class="n">enforced</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">"enforced"</span><span class="p">)</span> -</span><span id="L-1710"><a href="#L-1710"><span class="linenos">1710</span></a> <span class="k">if</span> <span class="n">enforced</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1711"><a href="#L-1711"><span class="linenos">1711</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> CHECK (</span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="s1">' ENFORCED'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">enforced</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1712"><a href="#L-1712"><span class="linenos">1712</span></a> -</span><span id="L-1713"><a href="#L-1713"><span class="linenos">1713</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1714"><a href="#L-1714"><span class="linenos">1714</span></a> -</span><span id="L-1715"><a href="#L-1715"><span class="linenos">1715</span></a> <span class="k">def</span> <span class="nf">distinct_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">Distinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1716"><a href="#L-1716"><span class="linenos">1716</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1717"><a href="#L-1717"><span class="linenos">1717</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1718"><a href="#L-1718"><span class="linenos">1718</span></a> -</span><span id="L-1719"><a href="#L-1719"><span class="linenos">1719</span></a> <span class="n">on</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">"on"</span><span class="p">)</span> -</span><span id="L-1720"><a href="#L-1720"><span class="linenos">1720</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">on</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1721"><a href="#L-1721"><span class="linenos">1721</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DISTINCT</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1722"><a href="#L-1722"><span class="linenos">1722</span></a> -</span><span id="L-1723"><a href="#L-1723"><span class="linenos">1723</span></a> <span class="k">def</span> <span class="nf">ignorenulls_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">IgnoreNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1724"><a href="#L-1724"><span class="linenos">1724</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> IGNORE NULLS"</span> -</span><span id="L-1725"><a href="#L-1725"><span class="linenos">1725</span></a> -</span><span id="L-1726"><a href="#L-1726"><span class="linenos">1726</span></a> <span class="k">def</span> <span class="nf">respectnulls_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">RespectNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1727"><a href="#L-1727"><span class="linenos">1727</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> RESPECT NULLS"</span> -</span><span id="L-1728"><a href="#L-1728"><span class="linenos">1728</span></a> -</span><span id="L-1729"><a href="#L-1729"><span class="linenos">1729</span></a> <span class="k">def</span> <span class="nf">intdiv_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">IntDiv</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1730"><a href="#L-1730"><span class="linenos">1730</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-1731"><a href="#L-1731"><span class="linenos">1731</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">(</span> -</span><span id="L-1732"><a href="#L-1732"><span class="linenos">1732</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">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="o">.</span><span class="n">expression</span><span class="p">),</span> -</span><span id="L-1733"><a href="#L-1733"><span class="linenos">1733</span></a> <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="p">(</span><span class="n">this</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">INT</span><span class="p">),</span> -</span><span id="L-1734"><a href="#L-1734"><span class="linenos">1734</span></a> <span class="p">)</span> -</span><span id="L-1735"><a href="#L-1735"><span class="linenos">1735</span></a> <span class="p">)</span> -</span><span id="L-1736"><a href="#L-1736"><span class="linenos">1736</span></a> -</span><span id="L-1737"><a href="#L-1737"><span class="linenos">1737</span></a> <span class="k">def</span> <span class="nf">dpipe_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">DPipe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1738"><a href="#L-1738"><span class="linenos">1738</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span> -</span><span id="L-1739"><a href="#L-1739"><span class="linenos">1739</span></a> -</span><span id="L-1740"><a href="#L-1740"><span class="linenos">1740</span></a> <span class="k">def</span> <span class="nf">div_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">Div</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1741"><a href="#L-1741"><span class="linenos">1741</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span> -</span><span id="L-1742"><a href="#L-1742"><span class="linenos">1742</span></a> -</span><span id="L-1743"><a href="#L-1743"><span class="linenos">1743</span></a> <span class="k">def</span> <span class="nf">distance_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">Distance</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1744"><a href="#L-1744"><span class="linenos">1744</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<->"</span><span class="p">)</span> -</span><span id="L-1745"><a href="#L-1745"><span class="linenos">1745</span></a> -</span><span id="L-1746"><a href="#L-1746"><span class="linenos">1746</span></a> <span class="k">def</span> <span class="nf">dot_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">Dot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1747"><a href="#L-1747"><span class="linenos">1747</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1748"><a href="#L-1748"><span class="linenos">1748</span></a> -</span><span id="L-1749"><a href="#L-1749"><span class="linenos">1749</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1750"><a href="#L-1750"><span class="linenos">1750</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> -</span><span id="L-1751"><a href="#L-1751"><span class="linenos">1751</span></a> -</span><span id="L-1752"><a href="#L-1752"><span class="linenos">1752</span></a> <span class="k">def</span> <span class="nf">escape_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">Escape</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1753"><a href="#L-1753"><span class="linenos">1753</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ESCAPE"</span><span class="p">)</span> -</span><span id="L-1754"><a href="#L-1754"><span class="linenos">1754</span></a> -</span><span id="L-1755"><a href="#L-1755"><span class="linenos">1755</span></a> <span class="k">def</span> <span class="nf">glob_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">Glob</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1756"><a href="#L-1756"><span class="linenos">1756</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"GLOB"</span><span class="p">)</span> -</span><span id="L-1757"><a href="#L-1757"><span class="linenos">1757</span></a> -</span><span id="L-1758"><a href="#L-1758"><span class="linenos">1758</span></a> <span class="k">def</span> <span class="nf">gt_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">GT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1759"><a href="#L-1759"><span class="linenos">1759</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> -</span><span id="L-1760"><a href="#L-1760"><span class="linenos">1760</span></a> -</span><span id="L-1761"><a href="#L-1761"><span class="linenos">1761</span></a> <span class="k">def</span> <span class="nf">gte_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">GTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1762"><a href="#L-1762"><span class="linenos">1762</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">="</span><span class="p">)</span> -</span><span id="L-1763"><a href="#L-1763"><span class="linenos">1763</span></a> -</span><span id="L-1764"><a href="#L-1764"><span class="linenos">1764</span></a> <span class="k">def</span> <span class="nf">ilike_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">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1765"><a href="#L-1765"><span class="linenos">1765</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE"</span><span class="p">)</span> -</span><span id="L-1766"><a href="#L-1766"><span class="linenos">1766</span></a> -</span><span id="L-1767"><a href="#L-1767"><span class="linenos">1767</span></a> <span class="k">def</span> <span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1768"><a href="#L-1768"><span class="linenos">1768</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS"</span><span class="p">)</span> -</span><span id="L-1769"><a href="#L-1769"><span class="linenos">1769</span></a> -</span><span id="L-1770"><a href="#L-1770"><span class="linenos">1770</span></a> <span class="k">def</span> <span class="nf">like_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">Like</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1771"><a href="#L-1771"><span class="linenos">1771</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">)</span> -</span><span id="L-1772"><a href="#L-1772"><span class="linenos">1772</span></a> -</span><span id="L-1773"><a href="#L-1773"><span class="linenos">1773</span></a> <span class="k">def</span> <span class="nf">similarto_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">SimilarTo</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1774"><a href="#L-1774"><span class="linenos">1774</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"SIMILAR TO"</span><span class="p">)</span> -</span><span id="L-1775"><a href="#L-1775"><span class="linenos">1775</span></a> -</span><span id="L-1776"><a href="#L-1776"><span class="linenos">1776</span></a> <span class="k">def</span> <span class="nf">lt_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">LT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1777"><a href="#L-1777"><span class="linenos">1777</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<"</span><span class="p">)</span> -</span><span id="L-1778"><a href="#L-1778"><span class="linenos">1778</span></a> -</span><span id="L-1779"><a href="#L-1779"><span class="linenos">1779</span></a> <span class="k">def</span> <span class="nf">lte_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">LTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1780"><a href="#L-1780"><span class="linenos">1780</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<="</span><span class="p">)</span> -</span><span id="L-1781"><a href="#L-1781"><span class="linenos">1781</span></a> -</span><span id="L-1782"><a href="#L-1782"><span class="linenos">1782</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1783"><a href="#L-1783"><span class="linenos">1783</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"%"</span><span class="p">)</span> -</span><span id="L-1784"><a href="#L-1784"><span class="linenos">1784</span></a> -</span><span id="L-1785"><a href="#L-1785"><span class="linenos">1785</span></a> <span class="k">def</span> <span class="nf">mul_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">Mul</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1786"><a href="#L-1786"><span class="linenos">1786</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">)</span> -</span><span id="L-1787"><a href="#L-1787"><span class="linenos">1787</span></a> -</span><span id="L-1788"><a href="#L-1788"><span class="linenos">1788</span></a> <span class="k">def</span> <span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1789"><a href="#L-1789"><span class="linenos">1789</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<>"</span><span class="p">)</span> -</span><span id="L-1790"><a href="#L-1790"><span class="linenos">1790</span></a> -</span><span id="L-1791"><a href="#L-1791"><span class="linenos">1791</span></a> <span class="k">def</span> <span class="nf">nullsafeeq_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">NullSafeEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1792"><a href="#L-1792"><span class="linenos">1792</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS NOT DISTINCT FROM"</span><span class="p">)</span> -</span><span id="L-1793"><a href="#L-1793"><span class="linenos">1793</span></a> -</span><span id="L-1794"><a href="#L-1794"><span class="linenos">1794</span></a> <span class="k">def</span> <span class="nf">nullsafeneq_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">NullSafeNEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1795"><a href="#L-1795"><span class="linenos">1795</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS DISTINCT FROM"</span><span class="p">)</span> -</span><span id="L-1796"><a href="#L-1796"><span class="linenos">1796</span></a> -</span><span id="L-1797"><a href="#L-1797"><span class="linenos">1797</span></a> <span class="k">def</span> <span class="nf">or_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">Or</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1798"><a href="#L-1798"><span class="linenos">1798</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"OR"</span><span class="p">)</span> -</span><span id="L-1799"><a href="#L-1799"><span class="linenos">1799</span></a> -</span><span id="L-1800"><a href="#L-1800"><span class="linenos">1800</span></a> <span class="k">def</span> <span class="nf">slice_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">Slice</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1801"><a href="#L-1801"><span class="linenos">1801</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">":"</span><span class="p">)</span> -</span><span id="L-1802"><a href="#L-1802"><span class="linenos">1802</span></a> -</span><span id="L-1803"><a href="#L-1803"><span class="linenos">1803</span></a> <span class="k">def</span> <span class="nf">sub_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">Sub</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1804"><a href="#L-1804"><span class="linenos">1804</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> -</span><span id="L-1805"><a href="#L-1805"><span class="linenos">1805</span></a> -</span><span id="L-1806"><a href="#L-1806"><span class="linenos">1806</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1807"><a href="#L-1807"><span class="linenos">1807</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRY_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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1808"><a href="#L-1808"><span class="linenos">1808</span></a> -</span><span id="L-1809"><a href="#L-1809"><span class="linenos">1809</span></a> <span class="k">def</span> <span class="nf">use_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">Use</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1810"><a href="#L-1810"><span class="linenos">1810</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="L-1811"><a href="#L-1811"><span class="linenos">1811</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1812"><a href="#L-1812"><span class="linenos">1812</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">"this"</span><span class="p">)</span> -</span><span id="L-1813"><a href="#L-1813"><span class="linenos">1813</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1814"><a href="#L-1814"><span class="linenos">1814</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"USE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1815"><a href="#L-1815"><span class="linenos">1815</span></a> -</span><span id="L-1816"><a href="#L-1816"><span class="linenos">1816</span></a> <span class="k">def</span> <span class="nf">binary</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">Binary</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1817"><a href="#L-1817"><span class="linenos">1817</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1818"><a href="#L-1818"><span class="linenos">1818</span></a> -</span><span id="L-1819"><a href="#L-1819"><span class="linenos">1819</span></a> <span class="k">def</span> <span class="nf">function_fallback_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">Func</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1820"><a href="#L-1820"><span class="linenos">1820</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1821"><a href="#L-1821"><span class="linenos">1821</span></a> <span class="k">for</span> <span class="n">arg_value</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> -</span><span id="L-1822"><a href="#L-1822"><span class="linenos">1822</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg_value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="L-1823"><a href="#L-1823"><span class="linenos">1823</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">arg_value</span><span class="p">:</span> -</span><span id="L-1824"><a href="#L-1824"><span class="linenos">1824</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-1825"><a href="#L-1825"><span class="linenos">1825</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1826"><a href="#L-1826"><span class="linenos">1826</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arg_value</span><span class="p">)</span> -</span><span id="L-1827"><a href="#L-1827"><span class="linenos">1827</span></a> -</span><span id="L-1828"><a href="#L-1828"><span class="linenos">1828</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="n">expression</span><span class="o">.</span><span class="n">sql_name</span><span class="p">(),</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-1829"><a href="#L-1829"><span class="linenos">1829</span></a> -</span><span id="L-1830"><a href="#L-1830"><span class="linenos">1830</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1831"><a href="#L-1831"><span class="linenos">1831</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="n">name</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_args</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1832"><a href="#L-1832"><span class="linenos">1832</span></a> -</span><span id="L-1833"><a href="#L-1833"><span class="linenos">1833</span></a> <span class="k">def</span> <span class="nf">format_args</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1834"><a href="#L-1834"><span class="linenos">1834</span></a> <span class="n">arg_sqls</span> <span class="o">=</span> <span class="nb">tuple</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">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span> <span class="k">if</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-1835"><a href="#L-1835"><span class="linenos">1835</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> -</span><span id="L-1836"><a href="#L-1836"><span class="linenos">1836</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="sa">f</span><span class="s2">",</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1837"><a href="#L-1837"><span class="linenos">1837</span></a> <span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> -</span><span id="L-1838"><a href="#L-1838"><span class="linenos">1838</span></a> -</span><span id="L-1839"><a href="#L-1839"><span class="linenos">1839</span></a> <span class="k">def</span> <span class="nf">text_width</span><span class="p">(</span><span class="bp">self</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">Iterable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="L-1840"><a href="#L-1840"><span class="linenos">1840</span></a> <span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> -</span><span id="L-1841"><a href="#L-1841"><span class="linenos">1841</span></a> -</span><span id="L-1842"><a href="#L-1842"><span class="linenos">1842</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> -</span><span id="L-1843"><a href="#L-1843"><span class="linenos">1843</span></a> <span class="k">return</span> <span class="n">format_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span><span class="p">)</span> -</span><span id="L-1844"><a href="#L-1844"><span class="linenos">1844</span></a> -</span><span id="L-1845"><a href="#L-1845"><span class="linenos">1845</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span> -</span><span id="L-1846"><a href="#L-1846"><span class="linenos">1846</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1847"><a href="#L-1847"><span class="linenos">1847</span></a> <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><span id="L-1848"><a href="#L-1848"><span class="linenos">1848</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-1849"><a href="#L-1849"><span class="linenos">1849</span></a> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-1850"><a href="#L-1850"><span class="linenos">1850</span></a> <span class="n">indent</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-1851"><a href="#L-1851"><span class="linenos">1851</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> -</span><span id="L-1852"><a href="#L-1852"><span class="linenos">1852</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="L-1853"><a href="#L-1853"><span class="linenos">1853</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1854"><a href="#L-1854"><span class="linenos">1854</span></a> <span class="n">expressions</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="n">key</span> <span class="ow">or</span> <span class="s2">"expressions"</span><span class="p">)</span> -</span><span id="L-1855"><a href="#L-1855"><span class="linenos">1855</span></a> -</span><span id="L-1856"><a href="#L-1856"><span class="linenos">1856</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-1857"><a href="#L-1857"><span class="linenos">1857</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-1858"><a href="#L-1858"><span class="linenos">1858</span></a> -</span><span id="L-1859"><a href="#L-1859"><span class="linenos">1859</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> -</span><span id="L-1860"><a href="#L-1860"><span class="linenos">1860</span></a> <span class="k">return</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1861"><a href="#L-1861"><span class="linenos">1861</span></a> -</span><span id="L-1862"><a href="#L-1862"><span class="linenos">1862</span></a> <span class="n">num_sqls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1863"><a href="#L-1863"><span class="linenos">1863</span></a> -</span><span id="L-1864"><a href="#L-1864"><span class="linenos">1864</span></a> <span class="c1"># These are calculated once in case we have the leading_comma / pretty option set, correspondingly</span> -</span><span id="L-1865"><a href="#L-1865"><span class="linenos">1865</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> -</span><span id="L-1866"><a href="#L-1866"><span class="linenos">1866</span></a> <span class="n">stripped_sep</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="L-1867"><a href="#L-1867"><span class="linenos">1867</span></a> -</span><span id="L-1868"><a href="#L-1868"><span class="linenos">1868</span></a> <span class="n">result_sqls</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1869"><a href="#L-1869"><span class="linenos">1869</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> -</span><span id="L-1870"><a href="#L-1870"><span class="linenos">1870</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1871"><a href="#L-1871"><span class="linenos">1871</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> <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">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="L-1872"><a href="#L-1872"><span class="linenos">1872</span></a> -</span><span id="L-1873"><a href="#L-1873"><span class="linenos">1873</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="L-1874"><a href="#L-1874"><span class="linenos">1874</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span><span class="p">:</span> -</span><span id="L-1875"><a href="#L-1875"><span class="linenos">1875</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="n">pad</span><span class="si">}{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1876"><a href="#L-1876"><span class="linenos">1876</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1877"><a href="#L-1877"><span class="linenos">1877</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-1878"><a href="#L-1878"><span class="linenos">1878</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">stripped_sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1879"><a href="#L-1879"><span class="linenos">1879</span></a> <span class="p">)</span> -</span><span id="L-1880"><a href="#L-1880"><span class="linenos">1880</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1881"><a href="#L-1881"><span class="linenos">1881</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1882"><a href="#L-1882"><span class="linenos">1882</span></a> -</span><span id="L-1883"><a href="#L-1883"><span class="linenos">1883</span></a> <span class="n">result_sql</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> -</span><span id="L-1884"><a href="#L-1884"><span class="linenos">1884</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">result_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">if</span> <span class="n">indent</span> <span class="k">else</span> <span class="n">result_sql</span> -</span><span id="L-1885"><a href="#L-1885"><span class="linenos">1885</span></a> -</span><span id="L-1886"><a href="#L-1886"><span class="linenos">1886</span></a> <span class="k">def</span> <span class="nf">op_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</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">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1887"><a href="#L-1887"><span class="linenos">1887</span></a> <span class="n">flat</span> <span class="o">=</span> <span class="n">flat</span> <span class="ow">or</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">Properties</span><span class="p">)</span> -</span><span id="L-1888"><a href="#L-1888"><span class="linenos">1888</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">flat</span><span class="p">)</span> -</span><span id="L-1889"><a href="#L-1889"><span class="linenos">1889</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> -</span><span id="L-1890"><a href="#L-1890"><span class="linenos">1890</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1891"><a href="#L-1891"><span class="linenos">1891</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expressions_sql</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1892"><a href="#L-1892"><span class="linenos">1892</span></a> -</span><span id="L-1893"><a href="#L-1893"><span class="linenos">1893</span></a> <span class="k">def</span> <span class="nf">naked_property</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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1894"><a href="#L-1894"><span class="linenos">1894</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> -</span><span id="L-1895"><a href="#L-1895"><span class="linenos">1895</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> -</span><span id="L-1896"><a href="#L-1896"><span class="linenos">1896</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1897"><a href="#L-1897"><span class="linenos">1897</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1898"><a href="#L-1898"><span class="linenos">1898</span></a> -</span><span id="L-1899"><a href="#L-1899"><span class="linenos">1899</span></a> <span class="k">def</span> <span class="nf">set_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1900"><a href="#L-1900"><span class="linenos">1900</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">"this"</span><span class="p">)</span> -</span><span id="L-1901"><a href="#L-1901"><span class="linenos">1901</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span> -</span><span id="L-1902"><a href="#L-1902"><span class="linenos">1902</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> -</span><span id="L-1903"><a href="#L-1903"><span class="linenos">1903</span></a> <span class="n">expression</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1904"><a href="#L-1904"><span class="linenos">1904</span></a> <span class="p">)</span> -</span><span id="L-1905"><a href="#L-1905"><span class="linenos">1905</span></a> -</span><span id="L-1906"><a href="#L-1906"><span class="linenos">1906</span></a> <span class="k">def</span> <span class="nf">tag_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">Tag</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1907"><a href="#L-1907"><span class="linenos">1907</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</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="s1">'prefix'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}{</span><span class="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="s1">'postfix'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1908"><a href="#L-1908"><span class="linenos">1908</span></a> -</span><span id="L-1909"><a href="#L-1909"><span class="linenos">1909</span></a> <span class="k">def</span> <span class="nf">token_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1910"><a href="#L-1910"><span class="linenos">1910</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">TOKEN_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">token_type</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-1911"><a href="#L-1911"><span class="linenos">1911</span></a> -</span><span id="L-1912"><a href="#L-1912"><span class="linenos">1912</span></a> <span class="k">def</span> <span class="nf">userdefinedfunction_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">UserDefinedFunction</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1913"><a href="#L-1913"><span class="linenos">1913</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">"this"</span><span class="p">)</span> -</span><span id="L-1914"><a href="#L-1914"><span class="linenos">1914</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-1915"><a href="#L-1915"><span class="linenos">1915</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-1916"><a href="#L-1916"><span class="linenos">1916</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1917"><a href="#L-1917"><span class="linenos">1917</span></a> <span class="p">)</span> -</span><span id="L-1918"><a href="#L-1918"><span class="linenos">1918</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1919"><a href="#L-1919"><span class="linenos">1919</span></a> -</span><span id="L-1920"><a href="#L-1920"><span class="linenos">1920</span></a> <span class="k">def</span> <span class="nf">joinhint_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">JoinHint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1921"><a href="#L-1921"><span class="linenos">1921</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">"this"</span><span class="p">)</span> -</span><span id="L-1922"><a href="#L-1922"><span class="linenos">1922</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1923"><a href="#L-1923"><span class="linenos">1923</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="L-1924"><a href="#L-1924"><span class="linenos">1924</span></a> -</span><span id="L-1925"><a href="#L-1925"><span class="linenos">1925</span></a> <span class="k">def</span> <span class="nf">kwarg_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">Kwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1926"><a href="#L-1926"><span class="linenos">1926</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> -</span><span id="L-1927"><a href="#L-1927"><span class="linenos">1927</span></a> -</span><span id="L-1928"><a href="#L-1928"><span class="linenos">1928</span></a> <span class="k">def</span> <span class="nf">when_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">When</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1929"><a href="#L-1929"><span class="linenos">1929</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">"this"</span><span class="p">)</span> -</span><span id="L-1930"><a href="#L-1930"><span class="linenos">1930</span></a> <span class="n">then_expression</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">"then"</span><span class="p">)</span> -</span><span id="L-1931"><a href="#L-1931"><span class="linenos">1931</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">):</span> -</span><span id="L-1932"><a href="#L-1932"><span class="linenos">1932</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1933"><a href="#L-1933"><span class="linenos">1933</span></a> <span class="k">if</span> <span class="s2">"expression"</span> <span class="ow">in</span> <span class="n">then_expression</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> -</span><span id="L-1934"><a href="#L-1934"><span class="linenos">1934</span></a> <span class="n">then</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" VALUES </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1935"><a href="#L-1935"><span class="linenos">1935</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> -</span><span id="L-1936"><a href="#L-1936"><span class="linenos">1936</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_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">"expressions"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> -</span><span id="L-1937"><a href="#L-1937"><span class="linenos">1937</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expressions'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1938"><a href="#L-1938"><span class="linenos">1938</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1939"><a href="#L-1939"><span class="linenos">1939</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE SET </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1940"><a href="#L-1940"><span class="linenos">1940</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1941"><a href="#L-1941"><span class="linenos">1941</span></a> <span class="n">then</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">then_expression</span><span class="p">)</span> -</span><span id="L-1942"><a href="#L-1942"><span class="linenos">1942</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WHEN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> THEN </span><span class="si">{</span><span class="n">then</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1943"><a href="#L-1943"><span class="linenos">1943</span></a> -</span><span id="L-1944"><a href="#L-1944"><span class="linenos">1944</span></a> <span class="k">def</span> <span class="nf">merge_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">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1945"><a href="#L-1945"><span class="linenos">1945</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">"this"</span><span class="p">)</span> -</span><span id="L-1946"><a href="#L-1946"><span class="linenos">1946</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"USING </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">'using'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1947"><a href="#L-1947"><span class="linenos">1947</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ON </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">'on'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1948"><a href="#L-1948"><span class="linenos">1948</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGE INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">on</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">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">' '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="k">def</span> <span class="nf">pseudotype_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">PseudoType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> +</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="k">def</span> <span class="nf">rowformatdelimitedproperty_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">RowFormatDelimitedProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="n">fields</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">"fields"</span><span class="p">)</span> +</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="n">fields</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FIELDS TERMINATED BY </span><span class="si">{</span><span class="n">fields</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">fields</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="n">escaped</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">"escaped"</span><span class="p">)</span> +</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="n">escaped</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ESCAPED BY </span><span class="si">{</span><span class="n">escaped</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">escaped</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="n">items</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">"collection_items"</span><span class="p">)</span> +</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="n">items</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLECTION ITEMS TERMINATED BY </span><span class="si">{</span><span class="n">items</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">items</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_keys"</span><span class="p">)</span> +</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAP KEYS TERMINATED BY </span><span class="si">{</span><span class="n">keys</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="n">lines</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">"lines"</span><span class="p">)</span> +</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" LINES TERMINATED BY </span><span class="si">{</span><span class="n">lines</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">lines</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="n">null</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">"null"</span><span class="p">)</span> +</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="n">null</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" NULL DEFINED AS </span><span class="si">{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">null</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROW FORMAT DELIMITED</span><span class="si">{</span><span class="n">fields</span><span class="si">}{</span><span class="n">escaped</span><span class="si">}{</span><span class="n">items</span><span class="si">}{</span><span class="n">keys</span><span class="si">}{</span><span class="n">lines</span><span class="si">}{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> +</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> <span class="k">def</span> <span class="nf">table_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">Table</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" AS "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="n">table</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="n">part</span> +</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">[</span> +</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</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">"catalog"</span><span class="p">),</span> +</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</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">"db"</span><span class="p">),</span> +</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</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">"this"</span><span class="p">),</span> +</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="p">]</span> +</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="k">if</span> <span class="n">part</span> +</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="p">)</span> +</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> +</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"hints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">", "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">hints</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">hints</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="n">laterals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="n">pivots</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="n">system_time</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">"system_time"</span><span class="p">)</span> +</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="n">system_time</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'system_time'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">system_time</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> +</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">system_time</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">hints</span><span class="si">}{</span><span class="n">laterals</span><span class="si">}{</span><span class="n">joins</span><span class="si">}{</span><span class="n">pivots</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> +</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="k">def</span> <span class="nf">tablesample_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">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> +</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</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="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="s1">'alias'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</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">"this"</span><span class="p">)</span> +</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="n">method</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">"method"</span><span class="p">)</span> +</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="n">method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">method</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">method</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="n">numerator</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">"bucket_numerator"</span><span class="p">)</span> +</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="n">denominator</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">"bucket_denominator"</span><span class="p">)</span> +</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="n">field</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">"bucket_field"</span><span class="p">)</span> +</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="n">field</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">field</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="n">bucket</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"BUCKET </span><span class="si">{</span><span class="n">numerator</span><span class="si">}</span><span class="s2"> OUT OF </span><span class="si">{</span><span class="n">denominator</span><span class="si">}{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">numerator</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="n">percent</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">"percent"</span><span class="p">)</span> +</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">percent</span><span class="si">}</span><span class="s2"> PERCENT"</span> <span class="k">if</span> <span class="n">percent</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> +</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">rows</span><span class="si">}</span><span class="s2"> ROWS"</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="n">size</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">"size"</span><span class="p">)</span> +</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="n">seed</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">"seed"</span><span class="p">)</span> +</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SEED (</span><span class="si">{</span><span class="n">seed</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">seed</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TABLESAMPLE</span><span class="si">{</span><span class="n">method</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">bucket</span><span class="si">}{</span><span class="n">percent</span><span class="si">}{</span><span class="n">rows</span><span class="si">}{</span><span class="n">size</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">seed</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> +</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="k">def</span> <span class="nf">pivot_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">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</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">"this"</span><span class="p">)</span> +</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="n">unpivot</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">"unpivot"</span><span class="p">)</span> +</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="s2">"UNPIVOT"</span> <span class="k">if</span> <span class="n">unpivot</span> <span class="k">else</span> <span class="s2">"PIVOT"</span> +</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> +</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> +</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">direction</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2"> FOR </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> +</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="k">def</span> <span class="nf">tuple_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">Tuple</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> +</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</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">"this"</span><span class="p">)</span> +</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> +</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> +</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="n">values</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"VALUES</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">args</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WRAP_DERIVED_VALUES</span> <span class="ow">and</span> <span class="p">(</span><span class="n">alias</span> <span class="ow">or</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">From</span><span class="p">))</span> +</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="k">else</span> <span class="n">values</span> +</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="p">)</span> +</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">values</span> +</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> +</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="k">def</span> <span class="nf">var_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">Var</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> +</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="k">def</span> <span class="nf">into_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">Into</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="s2">" UNLOGGED"</span> <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">"unlogged"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'INTO'</span><span class="p">)</span><span class="si">}{</span><span class="n">temporary</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">unlogged</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> +</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="k">def</span> <span class="nf">from_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">From</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FROM'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> +</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="k">def</span> <span class="nf">group_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">Group</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"GROUP BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"grouping_sets"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'GROUPING SETS'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">grouping_sets</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="p">)</span> +</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> +</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="n">cube</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">"cube"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">cube</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"cube"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">cube_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">cube_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> +</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="n">rollup</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">"rollup"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">rollup</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"rollup"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">rollup_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">rollup_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> +</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="n">groupings</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">,</span> <span class="n">cube_sql</span><span class="p">,</span> <span class="n">rollup_sql</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">","</span><span class="p">)</span> +</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> +</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</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">"expressions"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">groupings</span><span class="p">:</span> +</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}</span><span class="s2">,"</span> +</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> +</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="n">groupings</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> +</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="k">def</span> <span class="nf">having_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">Having</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> +</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'HAVING'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> +</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="k">def</span> <span class="nf">join_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">Join</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span> +</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="n">op</span> +</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="k">for</span> <span class="n">op</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="s2">"NATURAL"</span> <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">"natural"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">side</span><span class="p">,</span> +</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="s2">"JOIN"</span><span class="p">,</span> +</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="p">)</span> +</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="k">if</span> <span class="n">op</span> +</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="p">)</span> +</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="p">)</span> +</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">)</span> +</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> +</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> +</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">on_sql</span> <span class="ow">and</span> <span class="n">using</span><span class="p">:</span> +</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="o">*</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">column</span><span class="p">)</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">using</span><span class="p">))</span> +</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> +</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> <span class="k">if</span> <span class="n">on_sql</span><span class="p">:</span> +</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">on_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="n">space</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> +</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">USING (</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">ON </span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> +</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">op_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_sql</span><span class="si">}{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> +</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> <span class="k">def</span> <span class="nf">lambda_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">Lambda</span><span class="p">,</span> <span class="n">arrow_sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"->"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> <span class="n">args</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">))</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">args</span> +</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">arrow_sep</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> +</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="k">def</span> <span class="nf">lateral_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">Lateral</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</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">"this"</span><span class="p">)</span> +</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> +</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> <span class="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">Subquery</span><span class="p">):</span> +</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> +</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</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">"view"</span><span class="p">):</span> +</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</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="p">[</span><span class="s2">"alias"</span><span class="p">]</span> +</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> <span class="n">table</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">alias</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"LATERAL VIEW</span><span class="si">{</span><span class="s1">' OUTER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'outer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">table</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> +</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> +</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> <span class="k">def</span> <span class="nf">limit_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">Limit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</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">"this"</span><span class="p">)</span> +</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'LIMIT'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> +</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> <span class="k">def</span> <span class="nf">offset_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">Offset</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</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">"this"</span><span class="p">)</span> +</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'OFFSET'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> +</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="k">def</span> <span class="nf">lock_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">Lock</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">LOCKING_READS_SUPPORTED</span><span class="p">:</span> +</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"UPDATE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"update"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">"SHARE"</span> +</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"FOR </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> +</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Locking reads using 'FOR UPDATE/SHARE' are not supported"</span><span class="p">)</span> +</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> +</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="k">def</span> <span class="nf">literal_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">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span><span class="p">)</span> +</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">)</span> +</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> +</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="k">def</span> <span class="nf">loaddata_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">LoadData</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">" LOCAL"</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPATH </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">'inpath'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="s2">" OVERWRITE"</span> <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">"overwrite"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO TABLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="n">partition</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">"partition"</span><span class="p">)</span> +</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="n">input_format</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">"input_format"</span><span class="p">)</span> +</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPUTFORMAT </span><span class="si">{</span><span class="n">input_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">input_format</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="n">serde</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">"serde"</span><span class="p">)</span> +</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="n">serde</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SERDE </span><span class="si">{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">serde</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOAD DATA</span><span class="si">{</span><span class="n">local</span><span class="si">}{</span><span class="n">inpath</span><span class="si">}{</span><span class="n">overwrite</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">partition</span><span class="si">}{</span><span class="n">input_format</span><span class="si">}{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> +</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> <span class="k">def</span> <span class="nf">null_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> +</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> +</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="k">def</span> <span class="nf">boolean_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">Boolean</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> <span class="k">return</span> <span class="s2">"TRUE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">"FALSE"</span> +</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> +</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> <span class="k">def</span> <span class="nf">order_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">Order</span><span class="p">,</span> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</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">"this"</span><span class="p">)</span> +</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">ORDER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">this</span> <span class="ow">or</span> <span class="n">flat</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> +</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="k">def</span> <span class="nf">cluster_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">Cluster</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> +</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> <span class="k">def</span> <span class="nf">distribute_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">Distribute</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"DISTRIBUTE BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> +</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> <span class="k">def</span> <span class="nf">sort_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">Sort</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"SORT BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> +</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> <span class="k">def</span> <span class="nf">ordered_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">Ordered</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> +</span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> +</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> +</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="n">nulls_first</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">"nulls_first"</span><span class="p">)</span> +</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> <span class="n">nulls_last</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">nulls_first</span> +</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> <span class="n">nulls_are_large</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_large"</span> +</span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a> <span class="n">nulls_are_small</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span> +</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a> <span class="n">nulls_are_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_last"</span> +</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a> +</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a> <span class="n">sort_order</span> <span class="o">=</span> <span class="s2">" DESC"</span> <span class="k">if</span> <span class="n">desc</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> <span class="k">if</span> <span class="n">nulls_first</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="n">nulls_are_last</span> +</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="p">):</span> +</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS FIRST"</span> +</span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a> <span class="k">elif</span> <span class="p">(</span> +</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="n">nulls_last</span> +</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> <span class="ow">and</span> <span class="p">((</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">))</span> +</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">nulls_are_last</span> +</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="p">):</span> +</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS LAST"</span> +</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> +</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> <span class="k">if</span> <span class="n">nulls_sort_change</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">NULL_ORDERING_SUPPORTED</span><span class="p">:</span> +</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span> +</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="s2">"Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"</span> +</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="p">)</span> +</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> +</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">sort_order</span><span class="si">}{</span><span class="n">nulls_sort_change</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> +</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="k">def</span> <span class="nf">matchrecognize_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">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> +</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> <span class="n">measures</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">"measures"</span><span class="p">)</span> +</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"MEASURES </span><span class="si">{</span><span class="n">measures</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">measures</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> +</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">rows</span><span class="p">)</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a> <span class="n">after</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">"after"</span><span class="p">)</span> +</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a> <span class="n">after</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">after</span><span class="p">)</span> <span class="k">if</span> <span class="n">after</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a> <span class="n">pattern</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">"pattern"</span><span class="p">)</span> +</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"PATTERN (</span><span class="si">{</span><span class="n">pattern</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> <span class="k">if</span> <span class="n">pattern</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a> <span class="n">define</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">"define"</span><span class="p">)</span> +</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a> <span class="n">define</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"DEFINE </span><span class="si">{</span><span class="n">define</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">define</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a> <span class="n">body</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> <span class="p">(</span> +</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> <span class="n">partition</span><span class="p">,</span> +</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a> <span class="n">order</span><span class="p">,</span> +</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> <span class="n">measures</span><span class="p">,</span> +</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> <span class="n">rows</span><span class="p">,</span> +</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="n">after</span><span class="p">,</span> +</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="n">pattern</span><span class="p">,</span> +</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> <span class="n">define</span><span class="p">,</span> +</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="p">)</span> +</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a> <span class="p">)</span> +</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'MATCH_RECOGNIZE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">body</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a> +</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> <span class="k">def</span> <span class="nf">query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">sqls</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a> <span class="k">return</span> <span class="n">csv</span><span class="p">(</span> +</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a> <span class="o">*</span><span class="n">sqls</span><span class="p">,</span> +</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> +</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</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">"match"</span><span class="p">),</span> +</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"laterals"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> +</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</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">"where"</span><span class="p">),</span> +</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</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">"group"</span><span class="p">),</span> +</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</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">"having"</span><span class="p">),</span> +</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</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">"qualify"</span><span class="p">),</span> +</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WINDOW "</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"windows"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</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">"windows"</span><span class="p">)</span> +</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</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">"distribute"</span><span class="p">),</span> +</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</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">"sort"</span><span class="p">),</span> +</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</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">"cluster"</span><span class="p">),</span> +</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</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">"order"</span><span class="p">),</span> +</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</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">"limit"</span><span class="p">),</span> +</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</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">"offset"</span><span class="p">),</span> +</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</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">"lock"</span><span class="p">),</span> +</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> +</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="p">)</span> +</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> +</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="n">hint</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">"hint"</span><span class="p">)</span> +</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> <span class="n">distinct</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">"distinct"</span><span class="p">)</span> +</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">distinct</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="n">expressions</span> +</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> +</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> <span class="sa">f</span><span class="s2">"SELECT</span><span class="si">{</span><span class="n">hint</span><span class="si">}{</span><span class="n">distinct</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</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">"into"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</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">"from"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> <span class="p">)</span> +</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> +</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</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">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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</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">"this"</span><span class="p">)</span> +</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> +</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> <span class="k">def</span> <span class="nf">star_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">Star</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"except"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'except'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">except_</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">except_</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"replace"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'replace'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">replace</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"*</span><span class="si">{</span><span class="n">except_</span><span class="si">}{</span><span class="n">replace</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> +</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="k">def</span> <span class="nf">structkwarg_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">StructKwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> +</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a> <span class="k">def</span> <span class="nf">parameter_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">Parameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</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">"this"</span><span class="p">)</span> +</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">PARAMETER_TOKEN</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> +</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a> <span class="k">def</span> <span class="nf">sessionparameter_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">SessionParameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</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">"this"</span><span class="p">)</span> +</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> +</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">."</span> +</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"@@</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> +</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">":</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">"?"</span> +</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> +</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> <span class="k">def</span> <span class="nf">subquery_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">Subquery</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> +</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> +</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> +</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">),</span> +</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a> <span class="p">)</span> +</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a> +</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a> +</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> <span class="k">def</span> <span class="nf">qualify_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">Qualify</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> +</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'QUALIFY'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a> +</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a> <span class="k">def</span> <span class="nf">union_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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> +</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">union_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> +</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> <span class="p">)</span> +</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> +</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="k">def</span> <span class="nf">union_op</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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">" DISTINCT"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPLICIT_UNION</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">kind</span> <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">"distinct"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" ALL"</span> +</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNION</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> +</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a> <span class="k">def</span> <span class="nf">unnest_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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> +</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> +</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">alias</span> +</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="s2">" WITH ORDINALITY"</span> <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">"ordinality"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> +</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH OFFSET AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNNEST(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">ordinality</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a> +</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a> <span class="k">def</span> <span class="nf">where_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">Where</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> +</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WHERE'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a> +</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a> <span class="k">def</span> <span class="nf">window_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">Window</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</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">"this"</span><span class="p">)</span> +</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a> +</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a> +</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> +</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a> <span class="n">order_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">order_sql</span><span class="p">(</span><span class="n">order</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="n">order</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a> +</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="n">partition</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">partition</span> <span class="ow">and</span> <span class="n">order</span> <span class="k">else</span> <span class="n">partition</span> +</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> +</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> <span class="n">spec</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">"spec"</span><span class="p">)</span> +</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> <span class="n">spec_sql</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">window_spec_sql</span><span class="p">(</span><span class="n">spec</span><span class="p">)</span> <span class="k">if</span> <span class="n">spec</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> +</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">'AS'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">arg_key</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'windows'</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'OVER'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a> +</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">partition</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">order</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">spec</span> <span class="ow">and</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a> +</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a> <span class="n">window_args</span> <span class="o">=</span> <span class="n">alias</span> <span class="o">+</span> <span class="n">partition_sql</span> <span class="o">+</span> <span class="n">order_sql</span> <span class="o">+</span> <span class="n">spec_sql</span> +</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a> +</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">window_args</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a> +</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a> <span class="k">def</span> <span class="nf">partition_by_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">Window</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"partition_by"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a> +</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a> <span class="k">def</span> <span class="nf">window_spec_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">WindowSpec</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="n">end</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a> <span class="ow">or</span> <span class="s2">"CURRENT ROW"</span> +</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a> <span class="p">)</span> +</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a> +</span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a> <span class="k">def</span> <span class="nf">withingroup_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">WithinGroup</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</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">"this"</span><span class="p">)</span> +</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># order has a leading space</span> +</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> WITHIN GROUP (</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a> +</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a> <span class="k">def</span> <span class="nf">between_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">Between</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</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">"this"</span><span class="p">)</span> +</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> <span class="n">low</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">"low"</span><span class="p">)</span> +</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> <span class="n">high</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">"high"</span><span class="p">)</span> +</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">low</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">high</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> +</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> +</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> +</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a> +</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a> <span class="k">def</span> <span class="nf">all_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">All</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALL </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> +</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> <span class="k">def</span> <span class="nf">any_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">Any</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</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">"this"</span><span class="p">)</span> +</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</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">Subqueryable</span><span class="p">):</span> +</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ANY </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> +</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> <span class="k">def</span> <span class="nf">exists_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">Exists</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXISTS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a> +</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a> <span class="k">def</span> <span class="nf">case_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">Case</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</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">"this"</span><span class="p">)</span> +</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a> <span class="n">statements</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"CASE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"CASE"</span><span class="p">]</span> +</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a> +</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</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">args</span><span class="p">[</span><span class="s2">"ifs"</span><span class="p">]:</span> +</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WHEN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"THEN </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">'true'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a> +</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a> +</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ELSE </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a> +</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> +</span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a> +</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> +</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">),</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a> +</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a> <span class="k">return</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> +</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> +</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a> <span class="k">def</span> <span class="nf">constraint_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">Constraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</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">"this"</span><span class="p">)</span> +</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a> +</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a> <span class="k">def</span> <span class="nf">extract_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">Extract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</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">"this"</span><span class="p">)</span> +</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXTRACT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a> +</span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a> <span class="k">def</span> <span class="nf">trim_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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> +</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> <span class="k">if</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"LEADING"</span><span class="p">:</span> +</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</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">"LTRIM"</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-1483"><a href="#L-1483"><span class="linenos">1483</span></a> <span class="k">elif</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"TRAILING"</span><span class="p">:</span> +</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</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">"RTRIM"</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-1485"><a href="#L-1485"><span class="linenos">1485</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</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">"TRIM"</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><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> +</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="k">def</span> <span class="nf">concat_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">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="k">if</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 class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</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-1492"><a href="#L-1492"><span class="linenos">1492</span></a> +</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> <span class="k">def</span> <span class="nf">check_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">Check</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</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="n">key</span><span class="o">=</span><span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECK (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> +</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> <span class="k">def</span> <span class="nf">foreignkey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a> <span class="n">reference</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">"reference"</span><span class="p">)</span> +</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">reference</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">reference</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="n">delete</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">"delete"</span><span class="p">)</span> +</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a> <span class="n">delete</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON DELETE </span><span class="si">{</span><span class="n">delete</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">delete</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="n">update</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">"update"</span><span class="p">)</span> +</span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a> <span class="n">update</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON UPDATE </span><span class="si">{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">update</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FOREIGN KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">reference</span><span class="si">}{</span><span class="n">delete</span><span class="si">}{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> +</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="k">def</span> <span class="nf">primarykey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> +</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="k">def</span> <span class="nf">unique_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">Unique</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> +</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNIQUE (</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a> +</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> <span class="k">def</span> <span class="nf">if_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">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sql</span><span class="p">(</span> +</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()],</span> <span class="n">default</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">"false"</span><span class="p">))</span> +</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> <span class="p">)</span> +</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a> +</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> <span class="k">def</span> <span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a> <span class="n">query</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">"query"</span><span class="p">)</span> +</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a> <span class="n">unnest</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">"unnest"</span><span class="p">)</span> +</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> +</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> <span class="n">is_global</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"is_global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a> +</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> +</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">query</span><span class="p">)</span> +</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> <span class="k">elif</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_unnest_op</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> +</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> <span class="k">elif</span> <span class="n">field</span><span class="p">:</span> +</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> +</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> +</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">is_global</span><span class="si">}</span><span class="s2"> IN </span><span class="si">{</span><span class="n">in_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> +</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(SELECT </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">unnest</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a> +</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="n">this</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">"this"</span><span class="p">)</span> +</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> +</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a> <span class="p">)</span> +</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> +</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">unit</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERVAL</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> +</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a> <span class="k">def</span> <span class="nf">return_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">Return</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RETURN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> +</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a> <span class="k">def</span> <span class="nf">reference_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">Reference</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</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">"this"</span><span class="p">)</span> +</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"REFERENCES </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> +</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a> <span class="k">def</span> <span class="nf">anonymous_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">Anonymous</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</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="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> +</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a> <span class="k">def</span> <span class="nf">paren_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">Paren</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</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">unnest</span><span class="p">(),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a> +</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> +</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a> <span class="k">def</span> <span class="nf">neg_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">Neg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a> <span class="c1"># This makes sure we don't convert "- - 5" to "--5", which is a comment</span> +</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">this_sql</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"-"</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"-</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a> +</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a> <span class="k">def</span> <span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"NOT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> +</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="k">def</span> <span class="nf">alias_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">Alias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">to_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> +</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a> <span class="k">def</span> <span class="nf">aliases_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">Aliases</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a> +</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</span></a> <span class="k">def</span> <span class="nf">attimezone_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">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</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">"this"</span><span class="p">)</span> +</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a> <span class="n">zone</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">"zone"</span><span class="p">)</span> +</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a> +</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a> <span class="k">def</span> <span class="nf">add_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">Add</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> +</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a> +</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a> <span class="k">def</span> <span class="nf">and_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">And</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">)</span> +</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a> +</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a> <span class="k">def</span> <span class="nf">connector_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">Connector</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">op</span><span class="p">)</span> +</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> +</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> <span class="n">sqls</span> <span class="o">=</span> <span class="nb">tuple</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="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">flatten</span><span class="p">(</span><span class="n">unnest</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> +</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> +</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> <span class="k">def</span> <span class="nf">bitwiseand_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">BitwiseAnd</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"&"</span><span class="p">)</span> +</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a> +</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a> <span class="k">def</span> <span class="nf">bitwiseleftshift_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">BitwiseLeftShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<<"</span><span class="p">)</span> +</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a> +</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a> <span class="k">def</span> <span class="nf">bitwisenot_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">BitwiseNot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"~</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a> +</span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a> <span class="k">def</span> <span class="nf">bitwiseor_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">BitwiseOr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"|"</span><span class="p">)</span> +</span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a> +</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a> <span class="k">def</span> <span class="nf">bitwiserightshift_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">BitwiseRightShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">>"</span><span class="p">)</span> +</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a> +</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a> <span class="k">def</span> <span class="nf">bitwisexor_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">BitwiseXor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">)</span> +</span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a> +</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a> +</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a> <span class="k">def</span> <span class="nf">currentdate_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">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a> <span class="n">zone</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">"this"</span><span class="p">)</span> +</span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE(</span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> +</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a> +</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a> <span class="k">def</span> <span class="nf">collate_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">Collate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"COLLATE"</span><span class="p">)</span> +</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a> +</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="k">def</span> <span class="nf">command_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">Command</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s1">'expression'</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a> +</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a> <span class="k">return</span> <span class="s2">"BEGIN"</span> +</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a> +</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a> <span class="k">def</span> <span class="nf">commit_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">Commit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a> <span class="n">chain</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">"chain"</span><span class="p">)</span> +</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> <span class="k">if</span> <span class="n">chain</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="s2">" AND CHAIN"</span> <span class="k">if</span> <span class="n">chain</span> <span class="k">else</span> <span class="s2">" AND NO CHAIN"</span> +</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> +</span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COMMIT</span><span class="si">{</span><span class="n">chain</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> +</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="k">def</span> <span class="nf">rollback_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">Rollback</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1657"><a href="#L-1657"><span class="linenos">1657</span></a> <span class="n">savepoint</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">"savepoint"</span><span class="p">)</span> +</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" TO </span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">savepoint</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROLLBACK</span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> +</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a> <span class="k">def</span> <span class="nf">altercolumn_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">AlterColumn</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</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">"this"</span><span class="p">)</span> +</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> +</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> <span class="n">dtype</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">"dtype"</span><span class="p">)</span> +</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="p">:</span> +</span><span id="L-1666"><a href="#L-1666"><span class="linenos">1666</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> +</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> +</span><span id="L-1669"><a href="#L-1669"><span class="linenos">1669</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">using</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1670"><a href="#L-1670"><span class="linenos">1670</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TYPE </span><span class="si">{</span><span class="n">dtype</span><span class="si">}{</span><span class="n">collate</span><span class="si">}{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1671"><a href="#L-1671"><span class="linenos">1671</span></a> +</span><span id="L-1672"><a href="#L-1672"><span class="linenos">1672</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="L-1673"><a href="#L-1673"><span class="linenos">1673</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="L-1674"><a href="#L-1674"><span class="linenos">1674</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET DEFAULT </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1675"><a href="#L-1675"><span class="linenos">1675</span></a> +</span><span id="L-1676"><a href="#L-1676"><span class="linenos">1676</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">"drop"</span><span class="p">):</span> +</span><span id="L-1677"><a href="#L-1677"><span class="linenos">1677</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported ALTER COLUMN syntax"</span><span class="p">)</span> +</span><span id="L-1678"><a href="#L-1678"><span class="linenos">1678</span></a> +</span><span id="L-1679"><a href="#L-1679"><span class="linenos">1679</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> DROP DEFAULT"</span> +</span><span id="L-1680"><a href="#L-1680"><span class="linenos">1680</span></a> +</span><span id="L-1681"><a href="#L-1681"><span class="linenos">1681</span></a> <span class="k">def</span> <span class="nf">renametable_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">RenameTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1682"><a href="#L-1682"><span class="linenos">1682</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">"this"</span><span class="p">)</span> +</span><span id="L-1683"><a href="#L-1683"><span class="linenos">1683</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RENAME TO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1684"><a href="#L-1684"><span class="linenos">1684</span></a> +</span><span id="L-1685"><a href="#L-1685"><span class="linenos">1685</span></a> <span class="k">def</span> <span class="nf">altertable_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">AlterTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1686"><a href="#L-1686"><span class="linenos">1686</span></a> <span class="n">actions</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">"actions"</span><span class="p">]</span> +</span><span id="L-1687"><a href="#L-1687"><span class="linenos">1687</span></a> +</span><span id="L-1688"><a href="#L-1688"><span class="linenos">1688</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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-1689"><a href="#L-1689"><span class="linenos">1689</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMN "</span><span class="p">)</span> +</span><span id="L-1690"><a href="#L-1690"><span class="linenos">1690</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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-1691"><a href="#L-1691"><span class="linenos">1691</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMNS "</span><span class="p">)</span> +</span><span id="L-1692"><a href="#L-1692"><span class="linenos">1692</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">):</span> +</span><span id="L-1693"><a href="#L-1693"><span class="linenos">1693</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1694"><a href="#L-1694"><span class="linenos">1694</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1695"><a href="#L-1695"><span class="linenos">1695</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">)</span> +</span><span id="L-1696"><a href="#L-1696"><span class="linenos">1696</span></a> +</span><span id="L-1697"><a href="#L-1697"><span class="linenos">1697</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1698"><a href="#L-1698"><span class="linenos">1698</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER TABLE</span><span class="si">{</span><span class="n">exists</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">actions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1699"><a href="#L-1699"><span class="linenos">1699</span></a> +</span><span id="L-1700"><a href="#L-1700"><span class="linenos">1700</span></a> <span class="k">def</span> <span class="nf">droppartition_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">DropPartition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1701"><a href="#L-1701"><span class="linenos">1701</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1702"><a href="#L-1702"><span class="linenos">1702</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="L-1703"><a href="#L-1703"><span class="linenos">1703</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1704"><a href="#L-1704"><span class="linenos">1704</span></a> +</span><span id="L-1705"><a href="#L-1705"><span class="linenos">1705</span></a> <span class="k">def</span> <span class="nf">addconstraint_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">AddConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1706"><a href="#L-1706"><span class="linenos">1706</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">"this"</span><span class="p">)</span> +</span><span id="L-1707"><a href="#L-1707"><span class="linenos">1707</span></a> <span class="n">expression_</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">"expression"</span><span class="p">)</span> +</span><span id="L-1708"><a href="#L-1708"><span class="linenos">1708</span></a> <span class="n">add_constraint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ADD CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"ADD"</span> +</span><span id="L-1709"><a href="#L-1709"><span class="linenos">1709</span></a> +</span><span id="L-1710"><a href="#L-1710"><span class="linenos">1710</span></a> <span class="n">enforced</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">"enforced"</span><span class="p">)</span> +</span><span id="L-1711"><a href="#L-1711"><span class="linenos">1711</span></a> <span class="k">if</span> <span class="n">enforced</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1712"><a href="#L-1712"><span class="linenos">1712</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> CHECK (</span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="s1">' ENFORCED'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">enforced</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1713"><a href="#L-1713"><span class="linenos">1713</span></a> +</span><span id="L-1714"><a href="#L-1714"><span class="linenos">1714</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1715"><a href="#L-1715"><span class="linenos">1715</span></a> +</span><span id="L-1716"><a href="#L-1716"><span class="linenos">1716</span></a> <span class="k">def</span> <span class="nf">distinct_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">Distinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1717"><a href="#L-1717"><span class="linenos">1717</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1718"><a href="#L-1718"><span class="linenos">1718</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1719"><a href="#L-1719"><span class="linenos">1719</span></a> +</span><span id="L-1720"><a href="#L-1720"><span class="linenos">1720</span></a> <span class="n">on</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">"on"</span><span class="p">)</span> +</span><span id="L-1721"><a href="#L-1721"><span class="linenos">1721</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">on</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1722"><a href="#L-1722"><span class="linenos">1722</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DISTINCT</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1723"><a href="#L-1723"><span class="linenos">1723</span></a> +</span><span id="L-1724"><a href="#L-1724"><span class="linenos">1724</span></a> <span class="k">def</span> <span class="nf">ignorenulls_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">IgnoreNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1725"><a href="#L-1725"><span class="linenos">1725</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> IGNORE NULLS"</span> +</span><span id="L-1726"><a href="#L-1726"><span class="linenos">1726</span></a> +</span><span id="L-1727"><a href="#L-1727"><span class="linenos">1727</span></a> <span class="k">def</span> <span class="nf">respectnulls_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">RespectNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1728"><a href="#L-1728"><span class="linenos">1728</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> RESPECT NULLS"</span> +</span><span id="L-1729"><a href="#L-1729"><span class="linenos">1729</span></a> +</span><span id="L-1730"><a href="#L-1730"><span class="linenos">1730</span></a> <span class="k">def</span> <span class="nf">intdiv_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">IntDiv</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1731"><a href="#L-1731"><span class="linenos">1731</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-1732"><a href="#L-1732"><span class="linenos">1732</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">(</span> +</span><span id="L-1733"><a href="#L-1733"><span class="linenos">1733</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">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="o">.</span><span class="n">expression</span><span class="p">),</span> +</span><span id="L-1734"><a href="#L-1734"><span class="linenos">1734</span></a> <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="p">(</span><span class="n">this</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">INT</span><span class="p">),</span> +</span><span id="L-1735"><a href="#L-1735"><span class="linenos">1735</span></a> <span class="p">)</span> +</span><span id="L-1736"><a href="#L-1736"><span class="linenos">1736</span></a> <span class="p">)</span> +</span><span id="L-1737"><a href="#L-1737"><span class="linenos">1737</span></a> +</span><span id="L-1738"><a href="#L-1738"><span class="linenos">1738</span></a> <span class="k">def</span> <span class="nf">dpipe_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">DPipe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1739"><a href="#L-1739"><span class="linenos">1739</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span> +</span><span id="L-1740"><a href="#L-1740"><span class="linenos">1740</span></a> +</span><span id="L-1741"><a href="#L-1741"><span class="linenos">1741</span></a> <span class="k">def</span> <span class="nf">div_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">Div</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1742"><a href="#L-1742"><span class="linenos">1742</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span> +</span><span id="L-1743"><a href="#L-1743"><span class="linenos">1743</span></a> +</span><span id="L-1744"><a href="#L-1744"><span class="linenos">1744</span></a> <span class="k">def</span> <span class="nf">distance_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">Distance</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1745"><a href="#L-1745"><span class="linenos">1745</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<->"</span><span class="p">)</span> +</span><span id="L-1746"><a href="#L-1746"><span class="linenos">1746</span></a> +</span><span id="L-1747"><a href="#L-1747"><span class="linenos">1747</span></a> <span class="k">def</span> <span class="nf">dot_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">Dot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1748"><a href="#L-1748"><span class="linenos">1748</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1749"><a href="#L-1749"><span class="linenos">1749</span></a> +</span><span id="L-1750"><a href="#L-1750"><span class="linenos">1750</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1751"><a href="#L-1751"><span class="linenos">1751</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> +</span><span id="L-1752"><a href="#L-1752"><span class="linenos">1752</span></a> +</span><span id="L-1753"><a href="#L-1753"><span class="linenos">1753</span></a> <span class="k">def</span> <span class="nf">escape_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">Escape</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1754"><a href="#L-1754"><span class="linenos">1754</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ESCAPE"</span><span class="p">)</span> +</span><span id="L-1755"><a href="#L-1755"><span class="linenos">1755</span></a> +</span><span id="L-1756"><a href="#L-1756"><span class="linenos">1756</span></a> <span class="k">def</span> <span class="nf">glob_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">Glob</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1757"><a href="#L-1757"><span class="linenos">1757</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"GLOB"</span><span class="p">)</span> +</span><span id="L-1758"><a href="#L-1758"><span class="linenos">1758</span></a> +</span><span id="L-1759"><a href="#L-1759"><span class="linenos">1759</span></a> <span class="k">def</span> <span class="nf">gt_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">GT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1760"><a href="#L-1760"><span class="linenos">1760</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> +</span><span id="L-1761"><a href="#L-1761"><span class="linenos">1761</span></a> +</span><span id="L-1762"><a href="#L-1762"><span class="linenos">1762</span></a> <span class="k">def</span> <span class="nf">gte_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">GTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1763"><a href="#L-1763"><span class="linenos">1763</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">="</span><span class="p">)</span> +</span><span id="L-1764"><a href="#L-1764"><span class="linenos">1764</span></a> +</span><span id="L-1765"><a href="#L-1765"><span class="linenos">1765</span></a> <span class="k">def</span> <span class="nf">ilike_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">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1766"><a href="#L-1766"><span class="linenos">1766</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE"</span><span class="p">)</span> +</span><span id="L-1767"><a href="#L-1767"><span class="linenos">1767</span></a> +</span><span id="L-1768"><a href="#L-1768"><span class="linenos">1768</span></a> <span class="k">def</span> <span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1769"><a href="#L-1769"><span class="linenos">1769</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS"</span><span class="p">)</span> +</span><span id="L-1770"><a href="#L-1770"><span class="linenos">1770</span></a> +</span><span id="L-1771"><a href="#L-1771"><span class="linenos">1771</span></a> <span class="k">def</span> <span class="nf">like_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">Like</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1772"><a href="#L-1772"><span class="linenos">1772</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">)</span> +</span><span id="L-1773"><a href="#L-1773"><span class="linenos">1773</span></a> +</span><span id="L-1774"><a href="#L-1774"><span class="linenos">1774</span></a> <span class="k">def</span> <span class="nf">similarto_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">SimilarTo</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1775"><a href="#L-1775"><span class="linenos">1775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"SIMILAR TO"</span><span class="p">)</span> +</span><span id="L-1776"><a href="#L-1776"><span class="linenos">1776</span></a> +</span><span id="L-1777"><a href="#L-1777"><span class="linenos">1777</span></a> <span class="k">def</span> <span class="nf">lt_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">LT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1778"><a href="#L-1778"><span class="linenos">1778</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<"</span><span class="p">)</span> +</span><span id="L-1779"><a href="#L-1779"><span class="linenos">1779</span></a> +</span><span id="L-1780"><a href="#L-1780"><span class="linenos">1780</span></a> <span class="k">def</span> <span class="nf">lte_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">LTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1781"><a href="#L-1781"><span class="linenos">1781</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<="</span><span class="p">)</span> +</span><span id="L-1782"><a href="#L-1782"><span class="linenos">1782</span></a> +</span><span id="L-1783"><a href="#L-1783"><span class="linenos">1783</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1784"><a href="#L-1784"><span class="linenos">1784</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"%"</span><span class="p">)</span> +</span><span id="L-1785"><a href="#L-1785"><span class="linenos">1785</span></a> +</span><span id="L-1786"><a href="#L-1786"><span class="linenos">1786</span></a> <span class="k">def</span> <span class="nf">mul_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">Mul</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1787"><a href="#L-1787"><span class="linenos">1787</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">)</span> +</span><span id="L-1788"><a href="#L-1788"><span class="linenos">1788</span></a> +</span><span id="L-1789"><a href="#L-1789"><span class="linenos">1789</span></a> <span class="k">def</span> <span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1790"><a href="#L-1790"><span class="linenos">1790</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<>"</span><span class="p">)</span> +</span><span id="L-1791"><a href="#L-1791"><span class="linenos">1791</span></a> +</span><span id="L-1792"><a href="#L-1792"><span class="linenos">1792</span></a> <span class="k">def</span> <span class="nf">nullsafeeq_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">NullSafeEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1793"><a href="#L-1793"><span class="linenos">1793</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS NOT DISTINCT FROM"</span><span class="p">)</span> +</span><span id="L-1794"><a href="#L-1794"><span class="linenos">1794</span></a> +</span><span id="L-1795"><a href="#L-1795"><span class="linenos">1795</span></a> <span class="k">def</span> <span class="nf">nullsafeneq_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">NullSafeNEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1796"><a href="#L-1796"><span class="linenos">1796</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS DISTINCT FROM"</span><span class="p">)</span> +</span><span id="L-1797"><a href="#L-1797"><span class="linenos">1797</span></a> +</span><span id="L-1798"><a href="#L-1798"><span class="linenos">1798</span></a> <span class="k">def</span> <span class="nf">or_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">Or</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1799"><a href="#L-1799"><span class="linenos">1799</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"OR"</span><span class="p">)</span> +</span><span id="L-1800"><a href="#L-1800"><span class="linenos">1800</span></a> +</span><span id="L-1801"><a href="#L-1801"><span class="linenos">1801</span></a> <span class="k">def</span> <span class="nf">slice_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">Slice</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1802"><a href="#L-1802"><span class="linenos">1802</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">":"</span><span class="p">)</span> +</span><span id="L-1803"><a href="#L-1803"><span class="linenos">1803</span></a> +</span><span id="L-1804"><a href="#L-1804"><span class="linenos">1804</span></a> <span class="k">def</span> <span class="nf">sub_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">Sub</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1805"><a href="#L-1805"><span class="linenos">1805</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> +</span><span id="L-1806"><a href="#L-1806"><span class="linenos">1806</span></a> +</span><span id="L-1807"><a href="#L-1807"><span class="linenos">1807</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1808"><a href="#L-1808"><span class="linenos">1808</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRY_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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1809"><a href="#L-1809"><span class="linenos">1809</span></a> +</span><span id="L-1810"><a href="#L-1810"><span class="linenos">1810</span></a> <span class="k">def</span> <span class="nf">use_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">Use</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1811"><a href="#L-1811"><span class="linenos">1811</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="L-1812"><a href="#L-1812"><span class="linenos">1812</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1813"><a href="#L-1813"><span class="linenos">1813</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">"this"</span><span class="p">)</span> +</span><span id="L-1814"><a href="#L-1814"><span class="linenos">1814</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1815"><a href="#L-1815"><span class="linenos">1815</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"USE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1816"><a href="#L-1816"><span class="linenos">1816</span></a> +</span><span id="L-1817"><a href="#L-1817"><span class="linenos">1817</span></a> <span class="k">def</span> <span class="nf">binary</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">Binary</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1818"><a href="#L-1818"><span class="linenos">1818</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1819"><a href="#L-1819"><span class="linenos">1819</span></a> +</span><span id="L-1820"><a href="#L-1820"><span class="linenos">1820</span></a> <span class="k">def</span> <span class="nf">function_fallback_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">Func</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1821"><a href="#L-1821"><span class="linenos">1821</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1822"><a href="#L-1822"><span class="linenos">1822</span></a> <span class="k">for</span> <span class="n">arg_value</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> +</span><span id="L-1823"><a href="#L-1823"><span class="linenos">1823</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg_value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="L-1824"><a href="#L-1824"><span class="linenos">1824</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">arg_value</span><span class="p">:</span> +</span><span id="L-1825"><a href="#L-1825"><span class="linenos">1825</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-1826"><a href="#L-1826"><span class="linenos">1826</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1827"><a href="#L-1827"><span class="linenos">1827</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arg_value</span><span class="p">)</span> +</span><span id="L-1828"><a href="#L-1828"><span class="linenos">1828</span></a> +</span><span id="L-1829"><a href="#L-1829"><span class="linenos">1829</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="n">expression</span><span class="o">.</span><span class="n">sql_name</span><span class="p">(),</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-1830"><a href="#L-1830"><span class="linenos">1830</span></a> +</span><span id="L-1831"><a href="#L-1831"><span class="linenos">1831</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1832"><a href="#L-1832"><span class="linenos">1832</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="n">name</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_args</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1833"><a href="#L-1833"><span class="linenos">1833</span></a> +</span><span id="L-1834"><a href="#L-1834"><span class="linenos">1834</span></a> <span class="k">def</span> <span class="nf">format_args</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1835"><a href="#L-1835"><span class="linenos">1835</span></a> <span class="n">arg_sqls</span> <span class="o">=</span> <span class="nb">tuple</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">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span> <span class="k">if</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-1836"><a href="#L-1836"><span class="linenos">1836</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> +</span><span id="L-1837"><a href="#L-1837"><span class="linenos">1837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="sa">f</span><span class="s2">",</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1838"><a href="#L-1838"><span class="linenos">1838</span></a> <span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> +</span><span id="L-1839"><a href="#L-1839"><span class="linenos">1839</span></a> +</span><span id="L-1840"><a href="#L-1840"><span class="linenos">1840</span></a> <span class="k">def</span> <span class="nf">text_width</span><span class="p">(</span><span class="bp">self</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">Iterable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="L-1841"><a href="#L-1841"><span class="linenos">1841</span></a> <span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-1842"><a href="#L-1842"><span class="linenos">1842</span></a> +</span><span id="L-1843"><a href="#L-1843"><span class="linenos">1843</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> +</span><span id="L-1844"><a href="#L-1844"><span class="linenos">1844</span></a> <span class="k">return</span> <span class="n">format_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span><span class="p">)</span> +</span><span id="L-1845"><a href="#L-1845"><span class="linenos">1845</span></a> +</span><span id="L-1846"><a href="#L-1846"><span class="linenos">1846</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span> +</span><span id="L-1847"><a href="#L-1847"><span class="linenos">1847</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1848"><a href="#L-1848"><span class="linenos">1848</span></a> <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><span id="L-1849"><a href="#L-1849"><span class="linenos">1849</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-1850"><a href="#L-1850"><span class="linenos">1850</span></a> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-1851"><a href="#L-1851"><span class="linenos">1851</span></a> <span class="n">indent</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-1852"><a href="#L-1852"><span class="linenos">1852</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> +</span><span id="L-1853"><a href="#L-1853"><span class="linenos">1853</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="L-1854"><a href="#L-1854"><span class="linenos">1854</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1855"><a href="#L-1855"><span class="linenos">1855</span></a> <span class="n">expressions</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="n">key</span> <span class="ow">or</span> <span class="s2">"expressions"</span><span class="p">)</span> +</span><span id="L-1856"><a href="#L-1856"><span class="linenos">1856</span></a> +</span><span id="L-1857"><a href="#L-1857"><span class="linenos">1857</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-1858"><a href="#L-1858"><span class="linenos">1858</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-1859"><a href="#L-1859"><span class="linenos">1859</span></a> +</span><span id="L-1860"><a href="#L-1860"><span class="linenos">1860</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> +</span><span id="L-1861"><a href="#L-1861"><span class="linenos">1861</span></a> <span class="k">return</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1862"><a href="#L-1862"><span class="linenos">1862</span></a> +</span><span id="L-1863"><a href="#L-1863"><span class="linenos">1863</span></a> <span class="n">num_sqls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1864"><a href="#L-1864"><span class="linenos">1864</span></a> +</span><span id="L-1865"><a href="#L-1865"><span class="linenos">1865</span></a> <span class="c1"># These are calculated once in case we have the leading_comma / pretty option set, correspondingly</span> +</span><span id="L-1866"><a href="#L-1866"><span class="linenos">1866</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> +</span><span id="L-1867"><a href="#L-1867"><span class="linenos">1867</span></a> <span class="n">stripped_sep</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="L-1868"><a href="#L-1868"><span class="linenos">1868</span></a> +</span><span id="L-1869"><a href="#L-1869"><span class="linenos">1869</span></a> <span class="n">result_sqls</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1870"><a href="#L-1870"><span class="linenos">1870</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> +</span><span id="L-1871"><a href="#L-1871"><span class="linenos">1871</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1872"><a href="#L-1872"><span class="linenos">1872</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> <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">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="L-1873"><a href="#L-1873"><span class="linenos">1873</span></a> +</span><span id="L-1874"><a href="#L-1874"><span class="linenos">1874</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="L-1875"><a href="#L-1875"><span class="linenos">1875</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span><span class="p">:</span> +</span><span id="L-1876"><a href="#L-1876"><span class="linenos">1876</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="n">pad</span><span class="si">}{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1877"><a href="#L-1877"><span class="linenos">1877</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1878"><a href="#L-1878"><span class="linenos">1878</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-1879"><a href="#L-1879"><span class="linenos">1879</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">stripped_sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1880"><a href="#L-1880"><span class="linenos">1880</span></a> <span class="p">)</span> +</span><span id="L-1881"><a href="#L-1881"><span class="linenos">1881</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1882"><a href="#L-1882"><span class="linenos">1882</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1883"><a href="#L-1883"><span class="linenos">1883</span></a> +</span><span id="L-1884"><a href="#L-1884"><span class="linenos">1884</span></a> <span class="n">result_sql</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> +</span><span id="L-1885"><a href="#L-1885"><span class="linenos">1885</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">result_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">if</span> <span class="n">indent</span> <span class="k">else</span> <span class="n">result_sql</span> +</span><span id="L-1886"><a href="#L-1886"><span class="linenos">1886</span></a> +</span><span id="L-1887"><a href="#L-1887"><span class="linenos">1887</span></a> <span class="k">def</span> <span class="nf">op_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</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">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1888"><a href="#L-1888"><span class="linenos">1888</span></a> <span class="n">flat</span> <span class="o">=</span> <span class="n">flat</span> <span class="ow">or</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">Properties</span><span class="p">)</span> +</span><span id="L-1889"><a href="#L-1889"><span class="linenos">1889</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">flat</span><span class="p">)</span> +</span><span id="L-1890"><a href="#L-1890"><span class="linenos">1890</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> +</span><span id="L-1891"><a href="#L-1891"><span class="linenos">1891</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1892"><a href="#L-1892"><span class="linenos">1892</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expressions_sql</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1893"><a href="#L-1893"><span class="linenos">1893</span></a> +</span><span id="L-1894"><a href="#L-1894"><span class="linenos">1894</span></a> <span class="k">def</span> <span class="nf">naked_property</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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1895"><a href="#L-1895"><span class="linenos">1895</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> +</span><span id="L-1896"><a href="#L-1896"><span class="linenos">1896</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> +</span><span id="L-1897"><a href="#L-1897"><span class="linenos">1897</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1898"><a href="#L-1898"><span class="linenos">1898</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1899"><a href="#L-1899"><span class="linenos">1899</span></a> +</span><span id="L-1900"><a href="#L-1900"><span class="linenos">1900</span></a> <span class="k">def</span> <span class="nf">set_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1901"><a href="#L-1901"><span class="linenos">1901</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">"this"</span><span class="p">)</span> +</span><span id="L-1902"><a href="#L-1902"><span class="linenos">1902</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span> +</span><span id="L-1903"><a href="#L-1903"><span class="linenos">1903</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> +</span><span id="L-1904"><a href="#L-1904"><span class="linenos">1904</span></a> <span class="n">expression</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1905"><a href="#L-1905"><span class="linenos">1905</span></a> <span class="p">)</span> +</span><span id="L-1906"><a href="#L-1906"><span class="linenos">1906</span></a> +</span><span id="L-1907"><a href="#L-1907"><span class="linenos">1907</span></a> <span class="k">def</span> <span class="nf">tag_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">Tag</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1908"><a href="#L-1908"><span class="linenos">1908</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</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="s1">'prefix'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}{</span><span class="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="s1">'postfix'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1909"><a href="#L-1909"><span class="linenos">1909</span></a> +</span><span id="L-1910"><a href="#L-1910"><span class="linenos">1910</span></a> <span class="k">def</span> <span class="nf">token_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1911"><a href="#L-1911"><span class="linenos">1911</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">TOKEN_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">token_type</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-1912"><a href="#L-1912"><span class="linenos">1912</span></a> +</span><span id="L-1913"><a href="#L-1913"><span class="linenos">1913</span></a> <span class="k">def</span> <span class="nf">userdefinedfunction_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">UserDefinedFunction</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1914"><a href="#L-1914"><span class="linenos">1914</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">"this"</span><span class="p">)</span> +</span><span id="L-1915"><a href="#L-1915"><span class="linenos">1915</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-1916"><a href="#L-1916"><span class="linenos">1916</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-1917"><a href="#L-1917"><span class="linenos">1917</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1918"><a href="#L-1918"><span class="linenos">1918</span></a> <span class="p">)</span> +</span><span id="L-1919"><a href="#L-1919"><span class="linenos">1919</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1920"><a href="#L-1920"><span class="linenos">1920</span></a> +</span><span id="L-1921"><a href="#L-1921"><span class="linenos">1921</span></a> <span class="k">def</span> <span class="nf">joinhint_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">JoinHint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1922"><a href="#L-1922"><span class="linenos">1922</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">"this"</span><span class="p">)</span> +</span><span id="L-1923"><a href="#L-1923"><span class="linenos">1923</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1924"><a href="#L-1924"><span class="linenos">1924</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="L-1925"><a href="#L-1925"><span class="linenos">1925</span></a> +</span><span id="L-1926"><a href="#L-1926"><span class="linenos">1926</span></a> <span class="k">def</span> <span class="nf">kwarg_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">Kwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1927"><a href="#L-1927"><span class="linenos">1927</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> +</span><span id="L-1928"><a href="#L-1928"><span class="linenos">1928</span></a> +</span><span id="L-1929"><a href="#L-1929"><span class="linenos">1929</span></a> <span class="k">def</span> <span class="nf">when_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">When</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1930"><a href="#L-1930"><span class="linenos">1930</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">"this"</span><span class="p">)</span> +</span><span id="L-1931"><a href="#L-1931"><span class="linenos">1931</span></a> <span class="n">then_expression</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">"then"</span><span class="p">)</span> +</span><span id="L-1932"><a href="#L-1932"><span class="linenos">1932</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">):</span> +</span><span id="L-1933"><a href="#L-1933"><span class="linenos">1933</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1934"><a href="#L-1934"><span class="linenos">1934</span></a> <span class="k">if</span> <span class="s2">"expression"</span> <span class="ow">in</span> <span class="n">then_expression</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> +</span><span id="L-1935"><a href="#L-1935"><span class="linenos">1935</span></a> <span class="n">then</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" VALUES </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1936"><a href="#L-1936"><span class="linenos">1936</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> +</span><span id="L-1937"><a href="#L-1937"><span class="linenos">1937</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_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">"expressions"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> +</span><span id="L-1938"><a href="#L-1938"><span class="linenos">1938</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expressions'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1939"><a href="#L-1939"><span class="linenos">1939</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1940"><a href="#L-1940"><span class="linenos">1940</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE SET </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1941"><a href="#L-1941"><span class="linenos">1941</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1942"><a href="#L-1942"><span class="linenos">1942</span></a> <span class="n">then</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">then_expression</span><span class="p">)</span> +</span><span id="L-1943"><a href="#L-1943"><span class="linenos">1943</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WHEN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> THEN </span><span class="si">{</span><span class="n">then</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1944"><a href="#L-1944"><span class="linenos">1944</span></a> +</span><span id="L-1945"><a href="#L-1945"><span class="linenos">1945</span></a> <span class="k">def</span> <span class="nf">merge_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">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1946"><a href="#L-1946"><span class="linenos">1946</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">"this"</span><span class="p">)</span> +</span><span id="L-1947"><a href="#L-1947"><span class="linenos">1947</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"USING </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">'using'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1948"><a href="#L-1948"><span class="linenos">1948</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ON </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">'on'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1949"><a href="#L-1949"><span class="linenos">1949</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGE INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">on</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">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">' '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -2692,1888 +2699,1889 @@ </span><span id="Generator-65"><a href="#Generator-65"><span class="linenos"> 65</span></a> <span class="s2">"TS_OR_DS_ADD"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="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">"unit"</span><span class="p">)</span> </span><span id="Generator-66"><a href="#Generator-66"><span class="linenos"> 66</span></a> <span class="p">),</span> </span><span id="Generator-67"><a href="#Generator-67"><span class="linenos"> 67</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VarMap</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">"MAP"</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"keys"</span><span class="p">],</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"values"</span><span class="p">]),</span> -</span><span id="Generator-68"><a href="#Generator-68"><span class="linenos"> 68</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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">"</span><span class="si">{</span><span class="s1">'DEFAULT '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s1">'default'</span><span class="p">]</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-69"><a href="#Generator-69"><span class="linenos"> 69</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</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="Generator-70"><a href="#Generator-70"><span class="linenos"> 70</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</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="Generator-71"><a href="#Generator-71"><span class="linenos"> 71</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</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="Generator-72"><a href="#Generator-72"><span class="linenos"> 72</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</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="Generator-73"><a href="#Generator-73"><span class="linenos"> 73</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">e</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> -</span><span id="Generator-74"><a href="#Generator-74"><span class="linenos"> 74</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</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">"WITH JOURNAL TABLE=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-75"><a href="#Generator-75"><span class="linenos"> 75</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</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">"</span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'no'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">LOG"</span><span class="p">,</span> -</span><span id="Generator-76"><a href="#Generator-76"><span class="linenos"> 76</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</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">"SQL SECURITY </span><span class="si">{</span><span class="s1">'DEFINER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'definer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'INVOKER'</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-77"><a href="#Generator-77"><span class="linenos"> 77</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</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">"</span><span class="si">{</span><span class="s1">'NOT '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'not_'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">CASESPECIFIC"</span><span class="p">,</span> -</span><span id="Generator-78"><a href="#Generator-78"><span class="linenos"> 78</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</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">"CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-79"><a href="#Generator-79"><span class="linenos"> 79</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-80"><a href="#Generator-80"><span class="linenos"> 80</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</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">"UPPERCASE"</span><span class="p">,</span> -</span><span id="Generator-81"><a href="#Generator-81"><span class="linenos"> 81</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</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">"TITLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-82"><a href="#Generator-82"><span class="linenos"> 82</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</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">"PATH </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-83"><a href="#Generator-83"><span class="linenos"> 83</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</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">"CHECK (</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> -</span><span id="Generator-84"><a href="#Generator-84"><span class="linenos"> 84</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</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">"COMMENT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-85"><a href="#Generator-85"><span class="linenos"> 85</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</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">"COLLATE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-86"><a href="#Generator-86"><span class="linenos"> 86</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</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">"ENCODE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-87"><a href="#Generator-87"><span class="linenos"> 87</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</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">"DEFAULT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-88"><a href="#Generator-88"><span class="linenos"> 88</span></a> <span class="p">}</span> -</span><span id="Generator-89"><a href="#Generator-89"><span class="linenos"> 89</span></a> -</span><span id="Generator-90"><a href="#Generator-90"><span class="linenos"> 90</span></a> <span class="c1"># Whether 'CREATE ... TRANSIENT ... TABLE' is allowed</span> -</span><span id="Generator-91"><a href="#Generator-91"><span class="linenos"> 91</span></a> <span class="n">CREATE_TRANSIENT</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Generator-92"><a href="#Generator-92"><span class="linenos"> 92</span></a> -</span><span id="Generator-93"><a href="#Generator-93"><span class="linenos"> 93</span></a> <span class="c1"># Whether or not null ordering is supported in order by</span> -</span><span id="Generator-94"><a href="#Generator-94"><span class="linenos"> 94</span></a> <span class="n">NULL_ORDERING_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Generator-95"><a href="#Generator-95"><span class="linenos"> 95</span></a> -</span><span id="Generator-96"><a href="#Generator-96"><span class="linenos"> 96</span></a> <span class="c1"># Whether or not locking reads (i.e. SELECT ... FOR UPDATE/SHARE) are supported</span> -</span><span id="Generator-97"><a href="#Generator-97"><span class="linenos"> 97</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Generator-98"><a href="#Generator-98"><span class="linenos"> 98</span></a> -</span><span id="Generator-99"><a href="#Generator-99"><span class="linenos"> 99</span></a> <span class="c1"># Always do union distinct or union all</span> -</span><span id="Generator-100"><a href="#Generator-100"><span class="linenos"> 100</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Generator-101"><a href="#Generator-101"><span class="linenos"> 101</span></a> -</span><span id="Generator-102"><a href="#Generator-102"><span class="linenos"> 102</span></a> <span class="c1"># Wrap derived values in parens, usually standard but spark doesn't support it</span> -</span><span id="Generator-103"><a href="#Generator-103"><span class="linenos"> 103</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Generator-104"><a href="#Generator-104"><span class="linenos"> 104</span></a> -</span><span id="Generator-105"><a href="#Generator-105"><span class="linenos"> 105</span></a> <span class="c1"># Whether or not create function uses an AS before the RETURN</span> -</span><span id="Generator-106"><a href="#Generator-106"><span class="linenos"> 106</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Generator-107"><a href="#Generator-107"><span class="linenos"> 107</span></a> -</span><span id="Generator-108"><a href="#Generator-108"><span class="linenos"> 108</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Generator-109"><a href="#Generator-109"><span class="linenos"> 109</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">NCHAR</span><span class="p">:</span> <span class="s2">"CHAR"</span><span class="p">,</span> -</span><span id="Generator-110"><a href="#Generator-110"><span class="linenos"> 110</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> -</span><span id="Generator-111"><a href="#Generator-111"><span class="linenos"> 111</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="Generator-112"><a href="#Generator-112"><span class="linenos"> 112</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> -</span><span id="Generator-113"><a href="#Generator-113"><span class="linenos"> 113</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">:</span> <span class="s2">"BLOB"</span><span class="p">,</span> -</span><span id="Generator-114"><a href="#Generator-114"><span class="linenos"> 114</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">:</span> <span class="s2">"BLOB"</span><span class="p">,</span> -</span><span id="Generator-115"><a href="#Generator-115"><span class="linenos"> 115</span></a> <span class="p">}</span> -</span><span id="Generator-116"><a href="#Generator-116"><span class="linenos"> 116</span></a> -</span><span id="Generator-117"><a href="#Generator-117"><span class="linenos"> 117</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Generator-118"><a href="#Generator-118"><span class="linenos"> 118</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCEPT"</span><span class="p">,</span> -</span><span id="Generator-119"><a href="#Generator-119"><span class="linenos"> 119</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"REPLACE"</span><span class="p">,</span> -</span><span id="Generator-120"><a href="#Generator-120"><span class="linenos"> 120</span></a> <span class="p">}</span> -</span><span id="Generator-121"><a href="#Generator-121"><span class="linenos"> 121</span></a> -</span><span id="Generator-122"><a href="#Generator-122"><span class="linenos"> 122</span></a> <span class="n">TOKEN_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">TokenType</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="Generator-123"><a href="#Generator-123"><span class="linenos"> 123</span></a> -</span><span id="Generator-124"><a href="#Generator-124"><span class="linenos"> 124</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"<"</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> -</span><span id="Generator-125"><a href="#Generator-125"><span class="linenos"> 125</span></a> -</span><span id="Generator-126"><a href="#Generator-126"><span class="linenos"> 126</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"@"</span> +</span><span id="Generator-68"><a href="#Generator-68"><span class="linenos"> 68</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</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">"</span><span class="si">{</span><span class="s1">'DEFAULT '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'default'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-69"><a href="#Generator-69"><span class="linenos"> 69</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</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="Generator-70"><a href="#Generator-70"><span class="linenos"> 70</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</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="s2">"EXTERNAL"</span><span class="p">,</span> +</span><span id="Generator-71"><a href="#Generator-71"><span class="linenos"> 71</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</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="Generator-72"><a href="#Generator-72"><span class="linenos"> 72</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</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="Generator-73"><a href="#Generator-73"><span class="linenos"> 73</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</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">"</span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'no'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">LOG"</span><span class="p">,</span> +</span><span id="Generator-74"><a href="#Generator-74"><span class="linenos"> 74</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</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="s2">"MATERIALIZED"</span><span class="p">,</span> +</span><span id="Generator-75"><a href="#Generator-75"><span class="linenos"> 75</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</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="s2">"NO PRIMARY INDEX"</span><span class="p">,</span> +</span><span id="Generator-76"><a href="#Generator-76"><span class="linenos"> 76</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</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="s2">"ON COMMIT PRESERVE ROWS"</span><span class="p">,</span> +</span><span id="Generator-77"><a href="#Generator-77"><span class="linenos"> 77</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</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="Generator-78"><a href="#Generator-78"><span class="linenos"> 78</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</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">"</span><span class="si">{</span><span class="s1">'MULTI'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'multi'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">SET"</span><span class="p">,</span> +</span><span id="Generator-79"><a href="#Generator-79"><span class="linenos"> 79</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</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">"SQL SECURITY </span><span class="si">{</span><span class="s1">'DEFINER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'definer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'INVOKER'</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-80"><a href="#Generator-80"><span class="linenos"> 80</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</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">"</span><span class="si">{</span><span class="s1">'GLOBAL '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'global_'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">TEMPORARY"</span><span class="p">,</span> +</span><span id="Generator-81"><a href="#Generator-81"><span class="linenos"> 81</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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="s2">"TRANSIENT"</span><span class="p">,</span> +</span><span id="Generator-82"><a href="#Generator-82"><span class="linenos"> 82</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</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">e</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> +</span><span id="Generator-83"><a href="#Generator-83"><span class="linenos"> 83</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</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">"WITH JOURNAL TABLE=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-84"><a href="#Generator-84"><span class="linenos"> 84</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</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">"</span><span class="si">{</span><span class="s1">'NOT '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">'not_'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">CASESPECIFIC"</span><span class="p">,</span> +</span><span id="Generator-85"><a href="#Generator-85"><span class="linenos"> 85</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</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">"CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-86"><a href="#Generator-86"><span class="linenos"> 86</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</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">"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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-87"><a href="#Generator-87"><span class="linenos"> 87</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</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">"UPPERCASE"</span><span class="p">,</span> +</span><span id="Generator-88"><a href="#Generator-88"><span class="linenos"> 88</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</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">"TITLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-89"><a href="#Generator-89"><span class="linenos"> 89</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</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">"PATH </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-90"><a href="#Generator-90"><span class="linenos"> 90</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</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">"CHECK (</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span><span class="p">,</span> +</span><span id="Generator-91"><a href="#Generator-91"><span class="linenos"> 91</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</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">"COMMENT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-92"><a href="#Generator-92"><span class="linenos"> 92</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</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">"COLLATE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-93"><a href="#Generator-93"><span class="linenos"> 93</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</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">"ENCODE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-94"><a href="#Generator-94"><span class="linenos"> 94</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</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">"DEFAULT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-95"><a href="#Generator-95"><span class="linenos"> 95</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</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">"INLINE LENGTH </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-96"><a href="#Generator-96"><span class="linenos"> 96</span></a> <span class="p">}</span> +</span><span id="Generator-97"><a href="#Generator-97"><span class="linenos"> 97</span></a> +</span><span id="Generator-98"><a href="#Generator-98"><span class="linenos"> 98</span></a> <span class="c1"># Whether or not null ordering is supported in order by</span> +</span><span id="Generator-99"><a href="#Generator-99"><span class="linenos"> 99</span></a> <span class="n">NULL_ORDERING_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Generator-100"><a href="#Generator-100"><span class="linenos"> 100</span></a> +</span><span id="Generator-101"><a href="#Generator-101"><span class="linenos"> 101</span></a> <span class="c1"># Whether or not locking reads (i.e. SELECT ... FOR UPDATE/SHARE) are supported</span> +</span><span id="Generator-102"><a href="#Generator-102"><span class="linenos"> 102</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Generator-103"><a href="#Generator-103"><span class="linenos"> 103</span></a> +</span><span id="Generator-104"><a href="#Generator-104"><span class="linenos"> 104</span></a> <span class="c1"># Always do union distinct or union all</span> +</span><span id="Generator-105"><a href="#Generator-105"><span class="linenos"> 105</span></a> <span class="n">EXPLICIT_UNION</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Generator-106"><a href="#Generator-106"><span class="linenos"> 106</span></a> +</span><span id="Generator-107"><a href="#Generator-107"><span class="linenos"> 107</span></a> <span class="c1"># Wrap derived values in parens, usually standard but spark doesn't support it</span> +</span><span id="Generator-108"><a href="#Generator-108"><span class="linenos"> 108</span></a> <span class="n">WRAP_DERIVED_VALUES</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Generator-109"><a href="#Generator-109"><span class="linenos"> 109</span></a> +</span><span id="Generator-110"><a href="#Generator-110"><span class="linenos"> 110</span></a> <span class="c1"># Whether or not create function uses an AS before the RETURN</span> +</span><span id="Generator-111"><a href="#Generator-111"><span class="linenos"> 111</span></a> <span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Generator-112"><a href="#Generator-112"><span class="linenos"> 112</span></a> +</span><span id="Generator-113"><a href="#Generator-113"><span class="linenos"> 113</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Generator-114"><a href="#Generator-114"><span class="linenos"> 114</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">NCHAR</span><span class="p">:</span> <span class="s2">"CHAR"</span><span class="p">,</span> +</span><span id="Generator-115"><a href="#Generator-115"><span class="linenos"> 115</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">NVARCHAR</span><span class="p">:</span> <span class="s2">"VARCHAR"</span><span class="p">,</span> +</span><span id="Generator-116"><a href="#Generator-116"><span class="linenos"> 116</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMTEXT</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="Generator-117"><a href="#Generator-117"><span class="linenos"> 117</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGTEXT</span><span class="p">:</span> <span class="s2">"TEXT"</span><span class="p">,</span> +</span><span id="Generator-118"><a href="#Generator-118"><span class="linenos"> 118</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">MEDIUMBLOB</span><span class="p">:</span> <span class="s2">"BLOB"</span><span class="p">,</span> +</span><span id="Generator-119"><a href="#Generator-119"><span class="linenos"> 119</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">LONGBLOB</span><span class="p">:</span> <span class="s2">"BLOB"</span><span class="p">,</span> +</span><span id="Generator-120"><a href="#Generator-120"><span class="linenos"> 120</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">INET</span><span class="p">:</span> <span class="s2">"INET"</span><span class="p">,</span> +</span><span id="Generator-121"><a href="#Generator-121"><span class="linenos"> 121</span></a> <span class="p">}</span> +</span><span id="Generator-122"><a href="#Generator-122"><span class="linenos"> 122</span></a> +</span><span id="Generator-123"><a href="#Generator-123"><span class="linenos"> 123</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Generator-124"><a href="#Generator-124"><span class="linenos"> 124</span></a> <span class="s2">"except"</span><span class="p">:</span> <span class="s2">"EXCEPT"</span><span class="p">,</span> +</span><span id="Generator-125"><a href="#Generator-125"><span class="linenos"> 125</span></a> <span class="s2">"replace"</span><span class="p">:</span> <span class="s2">"REPLACE"</span><span class="p">,</span> +</span><span id="Generator-126"><a href="#Generator-126"><span class="linenos"> 126</span></a> <span class="p">}</span> </span><span id="Generator-127"><a href="#Generator-127"><span class="linenos"> 127</span></a> -</span><span id="Generator-128"><a href="#Generator-128"><span class="linenos"> 128</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Generator-129"><a href="#Generator-129"><span class="linenos"> 129</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AfterJournalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-130"><a href="#Generator-130"><span class="linenos"> 130</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> -</span><span id="Generator-131"><a href="#Generator-131"><span class="linenos"> 131</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-132"><a href="#Generator-132"><span class="linenos"> 132</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-133"><a href="#Generator-133"><span class="linenos"> 133</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-134"><a href="#Generator-134"><span class="linenos"> 134</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-135"><a href="#Generator-135"><span class="linenos"> 135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-136"><a href="#Generator-136"><span class="linenos"> 136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-137"><a href="#Generator-137"><span class="linenos"> 137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-138"><a href="#Generator-138"><span class="linenos"> 138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> -</span><span id="Generator-139"><a href="#Generator-139"><span class="linenos"> 139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-140"><a href="#Generator-140"><span class="linenos"> 140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-141"><a href="#Generator-141"><span class="linenos"> 141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-142"><a href="#Generator-142"><span class="linenos"> 142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-143"><a href="#Generator-143"><span class="linenos"> 143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-144"><a href="#Generator-144"><span class="linenos"> 144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> -</span><span id="Generator-145"><a href="#Generator-145"><span class="linenos"> 145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-146"><a href="#Generator-146"><span class="linenos"> 146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-147"><a href="#Generator-147"><span class="linenos"> 147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-148"><a href="#Generator-148"><span class="linenos"> 148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-149"><a href="#Generator-149"><span class="linenos"> 149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-150"><a href="#Generator-150"><span class="linenos"> 150</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">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-151"><a href="#Generator-151"><span class="linenos"> 151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">,</span> -</span><span id="Generator-152"><a href="#Generator-152"><span class="linenos"> 152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-153"><a href="#Generator-153"><span class="linenos"> 153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-154"><a href="#Generator-154"><span class="linenos"> 154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> -</span><span id="Generator-155"><a href="#Generator-155"><span class="linenos"> 155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> -</span><span id="Generator-156"><a href="#Generator-156"><span class="linenos"> 156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-157"><a href="#Generator-157"><span class="linenos"> 157</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-158"><a href="#Generator-158"><span class="linenos"> 158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-159"><a href="#Generator-159"><span class="linenos"> 159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-160"><a href="#Generator-160"><span class="linenos"> 160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-161"><a href="#Generator-161"><span class="linenos"> 161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-162"><a href="#Generator-162"><span class="linenos"> 162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> -</span><span id="Generator-163"><a href="#Generator-163"><span class="linenos"> 163</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> -</span><span id="Generator-164"><a href="#Generator-164"><span class="linenos"> 164</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> -</span><span id="Generator-165"><a href="#Generator-165"><span class="linenos"> 165</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> -</span><span id="Generator-166"><a href="#Generator-166"><span class="linenos"> 166</span></a> <span class="p">}</span> -</span><span id="Generator-167"><a href="#Generator-167"><span class="linenos"> 167</span></a> -</span><span id="Generator-168"><a href="#Generator-168"><span class="linenos"> 168</span></a> <span class="n">WITH_SEPARATED_COMMENTS</span> <span class="o">=</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">From</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Binary</span><span class="p">)</span> -</span><span id="Generator-169"><a href="#Generator-169"><span class="linenos"> 169</span></a> <span class="n">SENTINEL_LINE_BREAK</span> <span class="o">=</span> <span class="s2">"__SQLGLOT__LB__"</span> -</span><span id="Generator-170"><a href="#Generator-170"><span class="linenos"> 170</span></a> -</span><span id="Generator-171"><a href="#Generator-171"><span class="linenos"> 171</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-172"><a href="#Generator-172"><span class="linenos"> 172</span></a> <span class="s2">"time_mapping"</span><span class="p">,</span> -</span><span id="Generator-173"><a href="#Generator-173"><span class="linenos"> 173</span></a> <span class="s2">"time_trie"</span><span class="p">,</span> -</span><span id="Generator-174"><a href="#Generator-174"><span class="linenos"> 174</span></a> <span class="s2">"pretty"</span><span class="p">,</span> -</span><span id="Generator-175"><a href="#Generator-175"><span class="linenos"> 175</span></a> <span class="s2">"quote_start"</span><span class="p">,</span> -</span><span id="Generator-176"><a href="#Generator-176"><span class="linenos"> 176</span></a> <span class="s2">"quote_end"</span><span class="p">,</span> -</span><span id="Generator-177"><a href="#Generator-177"><span class="linenos"> 177</span></a> <span class="s2">"identifier_start"</span><span class="p">,</span> -</span><span id="Generator-178"><a href="#Generator-178"><span class="linenos"> 178</span></a> <span class="s2">"identifier_end"</span><span class="p">,</span> -</span><span id="Generator-179"><a href="#Generator-179"><span class="linenos"> 179</span></a> <span class="s2">"identify"</span><span class="p">,</span> -</span><span id="Generator-180"><a href="#Generator-180"><span class="linenos"> 180</span></a> <span class="s2">"normalize"</span><span class="p">,</span> -</span><span id="Generator-181"><a href="#Generator-181"><span class="linenos"> 181</span></a> <span class="s2">"string_escape"</span><span class="p">,</span> -</span><span id="Generator-182"><a href="#Generator-182"><span class="linenos"> 182</span></a> <span class="s2">"identifier_escape"</span><span class="p">,</span> -</span><span id="Generator-183"><a href="#Generator-183"><span class="linenos"> 183</span></a> <span class="s2">"pad"</span><span class="p">,</span> -</span><span id="Generator-184"><a href="#Generator-184"><span class="linenos"> 184</span></a> <span class="s2">"index_offset"</span><span class="p">,</span> -</span><span id="Generator-185"><a href="#Generator-185"><span class="linenos"> 185</span></a> <span class="s2">"unnest_column_only"</span><span class="p">,</span> -</span><span id="Generator-186"><a href="#Generator-186"><span class="linenos"> 186</span></a> <span class="s2">"alias_post_tablesample"</span><span class="p">,</span> -</span><span id="Generator-187"><a href="#Generator-187"><span class="linenos"> 187</span></a> <span class="s2">"normalize_functions"</span><span class="p">,</span> -</span><span id="Generator-188"><a href="#Generator-188"><span class="linenos"> 188</span></a> <span class="s2">"unsupported_level"</span><span class="p">,</span> -</span><span id="Generator-189"><a href="#Generator-189"><span class="linenos"> 189</span></a> <span class="s2">"unsupported_messages"</span><span class="p">,</span> -</span><span id="Generator-190"><a href="#Generator-190"><span class="linenos"> 190</span></a> <span class="s2">"null_ordering"</span><span class="p">,</span> -</span><span id="Generator-191"><a href="#Generator-191"><span class="linenos"> 191</span></a> <span class="s2">"max_unsupported"</span><span class="p">,</span> -</span><span id="Generator-192"><a href="#Generator-192"><span class="linenos"> 192</span></a> <span class="s2">"_indent"</span><span class="p">,</span> -</span><span id="Generator-193"><a href="#Generator-193"><span class="linenos"> 193</span></a> <span class="s2">"_escaped_quote_end"</span><span class="p">,</span> -</span><span id="Generator-194"><a href="#Generator-194"><span class="linenos"> 194</span></a> <span class="s2">"_escaped_identifier_end"</span><span class="p">,</span> -</span><span id="Generator-195"><a href="#Generator-195"><span class="linenos"> 195</span></a> <span class="s2">"_leading_comma"</span><span class="p">,</span> -</span><span id="Generator-196"><a href="#Generator-196"><span class="linenos"> 196</span></a> <span class="s2">"_max_text_width"</span><span class="p">,</span> -</span><span id="Generator-197"><a href="#Generator-197"><span class="linenos"> 197</span></a> <span class="s2">"_comments"</span><span class="p">,</span> -</span><span id="Generator-198"><a href="#Generator-198"><span class="linenos"> 198</span></a> <span class="p">)</span> -</span><span id="Generator-199"><a href="#Generator-199"><span class="linenos"> 199</span></a> -</span><span id="Generator-200"><a href="#Generator-200"><span class="linenos"> 200</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Generator-201"><a href="#Generator-201"><span class="linenos"> 201</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator-202"><a href="#Generator-202"><span class="linenos"> 202</span></a> <span class="n">time_mapping</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-203"><a href="#Generator-203"><span class="linenos"> 203</span></a> <span class="n">time_trie</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-204"><a href="#Generator-204"><span class="linenos"> 204</span></a> <span class="n">pretty</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-205"><a href="#Generator-205"><span class="linenos"> 205</span></a> <span class="n">quote_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-206"><a href="#Generator-206"><span class="linenos"> 206</span></a> <span class="n">quote_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-207"><a href="#Generator-207"><span class="linenos"> 207</span></a> <span class="n">identifier_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-208"><a href="#Generator-208"><span class="linenos"> 208</span></a> <span class="n">identifier_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-209"><a href="#Generator-209"><span class="linenos"> 209</span></a> <span class="n">identify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-210"><a href="#Generator-210"><span class="linenos"> 210</span></a> <span class="n">normalize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-211"><a href="#Generator-211"><span class="linenos"> 211</span></a> <span class="n">string_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-212"><a href="#Generator-212"><span class="linenos"> 212</span></a> <span class="n">identifier_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-213"><a href="#Generator-213"><span class="linenos"> 213</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> -</span><span id="Generator-214"><a href="#Generator-214"><span class="linenos"> 214</span></a> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> -</span><span id="Generator-215"><a href="#Generator-215"><span class="linenos"> 215</span></a> <span class="n">index_offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> -</span><span id="Generator-216"><a href="#Generator-216"><span class="linenos"> 216</span></a> <span class="n">unnest_column_only</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-217"><a href="#Generator-217"><span class="linenos"> 217</span></a> <span class="n">alias_post_tablesample</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-218"><a href="#Generator-218"><span class="linenos"> 218</span></a> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"upper"</span><span class="p">,</span> -</span><span id="Generator-219"><a href="#Generator-219"><span class="linenos"> 219</span></a> <span class="n">unsupported_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">,</span> -</span><span id="Generator-220"><a href="#Generator-220"><span class="linenos"> 220</span></a> <span class="n">null_ordering</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-221"><a href="#Generator-221"><span class="linenos"> 221</span></a> <span class="n">max_unsupported</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> -</span><span id="Generator-222"><a href="#Generator-222"><span class="linenos"> 222</span></a> <span class="n">leading_comma</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-223"><a href="#Generator-223"><span class="linenos"> 223</span></a> <span class="n">max_text_width</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> -</span><span id="Generator-224"><a href="#Generator-224"><span class="linenos"> 224</span></a> <span class="n">comments</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Generator-225"><a href="#Generator-225"><span class="linenos"> 225</span></a> <span class="p">):</span> -</span><span id="Generator-226"><a href="#Generator-226"><span class="linenos"> 226</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> -</span><span id="Generator-227"><a href="#Generator-227"><span class="linenos"> 227</span></a> -</span><span id="Generator-228"><a href="#Generator-228"><span class="linenos"> 228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span> <span class="o">=</span> <span class="n">time_mapping</span> <span class="ow">or</span> <span class="p">{}</span> -</span><span id="Generator-229"><a href="#Generator-229"><span class="linenos"> 229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span> <span class="o">=</span> <span class="n">time_trie</span> -</span><span id="Generator-230"><a href="#Generator-230"><span class="linenos"> 230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="n">pretty</span> <span class="k">if</span> <span class="n">pretty</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">pretty</span> -</span><span id="Generator-231"><a href="#Generator-231"><span class="linenos"> 231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span> <span class="o">=</span> <span class="n">quote_start</span> <span class="ow">or</span> <span class="s2">"'"</span> -</span><span id="Generator-232"><a href="#Generator-232"><span class="linenos"> 232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> <span class="o">=</span> <span class="n">quote_end</span> <span class="ow">or</span> <span class="s2">"'"</span> -</span><span id="Generator-233"><a href="#Generator-233"><span class="linenos"> 233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span> <span class="o">=</span> <span class="n">identifier_start</span> <span class="ow">or</span> <span class="s1">'"'</span> -</span><span id="Generator-234"><a href="#Generator-234"><span class="linenos"> 234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">or</span> <span class="s1">'"'</span> -</span><span id="Generator-235"><a href="#Generator-235"><span class="linenos"> 235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">identify</span> -</span><span id="Generator-236"><a href="#Generator-236"><span class="linenos"> 236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="o">=</span> <span class="n">normalize</span> -</span><span id="Generator-237"><a href="#Generator-237"><span class="linenos"> 237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">=</span> <span class="n">string_escape</span> <span class="ow">or</span> <span class="s2">"'"</span> -</span><span id="Generator-238"><a href="#Generator-238"><span class="linenos"> 238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">=</span> <span class="n">identifier_escape</span> <span class="ow">or</span> <span class="s1">'"'</span> -</span><span id="Generator-239"><a href="#Generator-239"><span class="linenos"> 239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="o">=</span> <span class="n">pad</span> -</span><span id="Generator-240"><a href="#Generator-240"><span class="linenos"> 240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> -</span><span id="Generator-241"><a href="#Generator-241"><span class="linenos"> 241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> -</span><span id="Generator-242"><a href="#Generator-242"><span class="linenos"> 242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> -</span><span id="Generator-243"><a href="#Generator-243"><span class="linenos"> 243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">=</span> <span class="n">normalize_functions</span> -</span><span id="Generator-244"><a href="#Generator-244"><span class="linenos"> 244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">=</span> <span class="n">unsupported_level</span> -</span><span id="Generator-245"><a href="#Generator-245"><span class="linenos"> 245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator-246"><a href="#Generator-246"><span class="linenos"> 246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span> <span class="o">=</span> <span class="n">max_unsupported</span> -</span><span id="Generator-247"><a href="#Generator-247"><span class="linenos"> 247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> -</span><span id="Generator-248"><a href="#Generator-248"><span class="linenos"> 248</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_indent</span> <span class="o">=</span> <span class="n">indent</span> -</span><span id="Generator-249"><a href="#Generator-249"><span class="linenos"> 249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> -</span><span id="Generator-250"><a href="#Generator-250"><span class="linenos"> 250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> -</span><span id="Generator-251"><a href="#Generator-251"><span class="linenos"> 251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span> <span class="o">=</span> <span class="n">leading_comma</span> -</span><span id="Generator-252"><a href="#Generator-252"><span class="linenos"> 252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="o">=</span> <span class="n">max_text_width</span> -</span><span id="Generator-253"><a href="#Generator-253"><span class="linenos"> 253</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="Generator-254"><a href="#Generator-254"><span class="linenos"> 254</span></a> -</span><span id="Generator-255"><a href="#Generator-255"><span class="linenos"> 255</span></a> <span class="k">def</span> <span class="nf">generate</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-256"><a href="#Generator-256"><span class="linenos"> 256</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Generator-257"><a href="#Generator-257"><span class="linenos"> 257</span></a><span class="sd"> Generates a SQL string by interpreting the given syntax tree.</span> -</span><span id="Generator-258"><a href="#Generator-258"><span class="linenos"> 258</span></a> -</span><span id="Generator-259"><a href="#Generator-259"><span class="linenos"> 259</span></a><span class="sd"> Args</span> -</span><span id="Generator-260"><a href="#Generator-260"><span class="linenos"> 260</span></a><span class="sd"> expression: the syntax tree.</span> -</span><span id="Generator-261"><a href="#Generator-261"><span class="linenos"> 261</span></a> -</span><span id="Generator-262"><a href="#Generator-262"><span class="linenos"> 262</span></a><span class="sd"> Returns</span> -</span><span id="Generator-263"><a href="#Generator-263"><span class="linenos"> 263</span></a><span class="sd"> the SQL string.</span> -</span><span id="Generator-264"><a href="#Generator-264"><span class="linenos"> 264</span></a><span class="sd"> """</span> -</span><span id="Generator-265"><a href="#Generator-265"><span class="linenos"> 265</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator-266"><a href="#Generator-266"><span class="linenos"> 266</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="Generator-267"><a href="#Generator-267"><span class="linenos"> 267</span></a> -</span><span id="Generator-268"><a href="#Generator-268"><span class="linenos"> 268</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> -</span><span id="Generator-269"><a href="#Generator-269"><span class="linenos"> 269</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="Generator-270"><a href="#Generator-270"><span class="linenos"> 270</span></a> -</span><span id="Generator-271"><a href="#Generator-271"><span class="linenos"> 271</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> -</span><span id="Generator-272"><a href="#Generator-272"><span class="linenos"> 272</span></a> <span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> -</span><span id="Generator-273"><a href="#Generator-273"><span class="linenos"> 273</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> -</span><span id="Generator-274"><a href="#Generator-274"><span class="linenos"> 274</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> -</span><span id="Generator-275"><a href="#Generator-275"><span class="linenos"> 275</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span><span class="p">))</span> -</span><span id="Generator-276"><a href="#Generator-276"><span class="linenos"> 276</span></a> -</span><span id="Generator-277"><a href="#Generator-277"><span class="linenos"> 277</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator-278"><a href="#Generator-278"><span class="linenos"> 278</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-279"><a href="#Generator-279"><span class="linenos"> 279</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="Generator-280"><a href="#Generator-280"><span class="linenos"> 280</span></a> -</span><span id="Generator-281"><a href="#Generator-281"><span class="linenos"> 281</span></a> <span class="k">def</span> <span class="nf">unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-282"><a href="#Generator-282"><span class="linenos"> 282</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> -</span><span id="Generator-283"><a href="#Generator-283"><span class="linenos"> 283</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> -</span><span id="Generator-284"><a href="#Generator-284"><span class="linenos"> 284</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> -</span><span id="Generator-285"><a href="#Generator-285"><span class="linenos"> 285</span></a> -</span><span id="Generator-286"><a href="#Generator-286"><span class="linenos"> 286</span></a> <span class="k">def</span> <span class="nf">sep</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-287"><a href="#Generator-287"><span class="linenos"> 287</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="n">sep</span> -</span><span id="Generator-288"><a href="#Generator-288"><span class="linenos"> 288</span></a> -</span><span id="Generator-289"><a href="#Generator-289"><span class="linenos"> 289</span></a> <span class="k">def</span> <span class="nf">seg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-290"><a href="#Generator-290"><span class="linenos"> 290</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-291"><a href="#Generator-291"><span class="linenos"> 291</span></a> -</span><span id="Generator-292"><a href="#Generator-292"><span class="linenos"> 292</span></a> <span class="k">def</span> <span class="nf">pad_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-293"><a href="#Generator-293"><span class="linenos"> 293</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">comment</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> -</span><span id="Generator-294"><a href="#Generator-294"><span class="linenos"> 294</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="n">comment</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> -</span><span id="Generator-295"><a href="#Generator-295"><span class="linenos"> 295</span></a> <span class="k">return</span> <span class="n">comment</span> -</span><span id="Generator-296"><a href="#Generator-296"><span class="linenos"> 296</span></a> -</span><span id="Generator-297"><a href="#Generator-297"><span class="linenos"> 297</span></a> <span class="k">def</span> <span class="nf">maybe_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-298"><a href="#Generator-298"><span class="linenos"> 298</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Generator-128"><a href="#Generator-128"><span class="linenos"> 128</span></a> <span class="n">TOKEN_MAPPING</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">TokenType</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="Generator-129"><a href="#Generator-129"><span class="linenos"> 129</span></a> +</span><span id="Generator-130"><a href="#Generator-130"><span class="linenos"> 130</span></a> <span class="n">STRUCT_DELIMITER</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"<"</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> +</span><span id="Generator-131"><a href="#Generator-131"><span class="linenos"> 131</span></a> +</span><span id="Generator-132"><a href="#Generator-132"><span class="linenos"> 132</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">"@"</span> +</span><span id="Generator-133"><a href="#Generator-133"><span class="linenos"> 133</span></a> +</span><span id="Generator-134"><a href="#Generator-134"><span class="linenos"> 134</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Generator-135"><a href="#Generator-135"><span class="linenos"> 135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AfterJournalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-136"><a href="#Generator-136"><span class="linenos"> 136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Generator-137"><a href="#Generator-137"><span class="linenos"> 137</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-138"><a href="#Generator-138"><span class="linenos"> 138</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-139"><a href="#Generator-139"><span class="linenos"> 139</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-140"><a href="#Generator-140"><span class="linenos"> 140</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-141"><a href="#Generator-141"><span class="linenos"> 141</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-142"><a href="#Generator-142"><span class="linenos"> 142</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-143"><a href="#Generator-143"><span class="linenos"> 143</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-144"><a href="#Generator-144"><span class="linenos"> 144</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Generator-145"><a href="#Generator-145"><span class="linenos"> 145</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-146"><a href="#Generator-146"><span class="linenos"> 146</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-147"><a href="#Generator-147"><span class="linenos"> 147</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">EngineProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-148"><a href="#Generator-148"><span class="linenos"> 148</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-149"><a href="#Generator-149"><span class="linenos"> 149</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Generator-150"><a href="#Generator-150"><span class="linenos"> 150</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-151"><a href="#Generator-151"><span class="linenos"> 151</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> +</span><span id="Generator-152"><a href="#Generator-152"><span class="linenos"> 152</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-153"><a href="#Generator-153"><span class="linenos"> 153</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-154"><a href="#Generator-154"><span class="linenos"> 154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-155"><a href="#Generator-155"><span class="linenos"> 155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-156"><a href="#Generator-156"><span class="linenos"> 156</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-157"><a href="#Generator-157"><span class="linenos"> 157</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">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-158"><a href="#Generator-158"><span class="linenos"> 158</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">,</span> +</span><span id="Generator-159"><a href="#Generator-159"><span class="linenos"> 159</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-160"><a href="#Generator-160"><span class="linenos"> 160</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Generator-161"><a href="#Generator-161"><span class="linenos"> 161</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-162"><a href="#Generator-162"><span class="linenos"> 162</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">,</span> +</span><span id="Generator-163"><a href="#Generator-163"><span class="linenos"> 163</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">,</span> +</span><span id="Generator-164"><a href="#Generator-164"><span class="linenos"> 164</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> +</span><span id="Generator-165"><a href="#Generator-165"><span class="linenos"> 165</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> +</span><span id="Generator-166"><a href="#Generator-166"><span class="linenos"> 166</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-167"><a href="#Generator-167"><span class="linenos"> 167</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-168"><a href="#Generator-168"><span class="linenos"> 168</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-169"><a href="#Generator-169"><span class="linenos"> 169</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-170"><a href="#Generator-170"><span class="linenos"> 170</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SerdeProperties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-171"><a href="#Generator-171"><span class="linenos"> 171</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Generator-172"><a href="#Generator-172"><span class="linenos"> 172</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-173"><a href="#Generator-173"><span class="linenos"> 173</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Generator-174"><a href="#Generator-174"><span class="linenos"> 174</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">,</span> +</span><span id="Generator-175"><a href="#Generator-175"><span class="linenos"> 175</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Generator-176"><a href="#Generator-176"><span class="linenos"> 176</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">,</span> +</span><span id="Generator-177"><a href="#Generator-177"><span class="linenos"> 177</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">,</span> +</span><span id="Generator-178"><a href="#Generator-178"><span class="linenos"> 178</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">,</span> +</span><span id="Generator-179"><a href="#Generator-179"><span class="linenos"> 179</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">,</span> +</span><span id="Generator-180"><a href="#Generator-180"><span class="linenos"> 180</span></a> <span class="p">}</span> +</span><span id="Generator-181"><a href="#Generator-181"><span class="linenos"> 181</span></a> +</span><span id="Generator-182"><a href="#Generator-182"><span class="linenos"> 182</span></a> <span class="n">WITH_SEPARATED_COMMENTS</span> <span class="o">=</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">From</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Binary</span><span class="p">)</span> +</span><span id="Generator-183"><a href="#Generator-183"><span class="linenos"> 183</span></a> <span class="n">SENTINEL_LINE_BREAK</span> <span class="o">=</span> <span class="s2">"__SQLGLOT__LB__"</span> +</span><span id="Generator-184"><a href="#Generator-184"><span class="linenos"> 184</span></a> +</span><span id="Generator-185"><a href="#Generator-185"><span class="linenos"> 185</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-186"><a href="#Generator-186"><span class="linenos"> 186</span></a> <span class="s2">"time_mapping"</span><span class="p">,</span> +</span><span id="Generator-187"><a href="#Generator-187"><span class="linenos"> 187</span></a> <span class="s2">"time_trie"</span><span class="p">,</span> +</span><span id="Generator-188"><a href="#Generator-188"><span class="linenos"> 188</span></a> <span class="s2">"pretty"</span><span class="p">,</span> +</span><span id="Generator-189"><a href="#Generator-189"><span class="linenos"> 189</span></a> <span class="s2">"quote_start"</span><span class="p">,</span> +</span><span id="Generator-190"><a href="#Generator-190"><span class="linenos"> 190</span></a> <span class="s2">"quote_end"</span><span class="p">,</span> +</span><span id="Generator-191"><a href="#Generator-191"><span class="linenos"> 191</span></a> <span class="s2">"identifier_start"</span><span class="p">,</span> +</span><span id="Generator-192"><a href="#Generator-192"><span class="linenos"> 192</span></a> <span class="s2">"identifier_end"</span><span class="p">,</span> +</span><span id="Generator-193"><a href="#Generator-193"><span class="linenos"> 193</span></a> <span class="s2">"identify"</span><span class="p">,</span> +</span><span id="Generator-194"><a href="#Generator-194"><span class="linenos"> 194</span></a> <span class="s2">"normalize"</span><span class="p">,</span> +</span><span id="Generator-195"><a href="#Generator-195"><span class="linenos"> 195</span></a> <span class="s2">"string_escape"</span><span class="p">,</span> +</span><span id="Generator-196"><a href="#Generator-196"><span class="linenos"> 196</span></a> <span class="s2">"identifier_escape"</span><span class="p">,</span> +</span><span id="Generator-197"><a href="#Generator-197"><span class="linenos"> 197</span></a> <span class="s2">"pad"</span><span class="p">,</span> +</span><span id="Generator-198"><a href="#Generator-198"><span class="linenos"> 198</span></a> <span class="s2">"index_offset"</span><span class="p">,</span> +</span><span id="Generator-199"><a href="#Generator-199"><span class="linenos"> 199</span></a> <span class="s2">"unnest_column_only"</span><span class="p">,</span> +</span><span id="Generator-200"><a href="#Generator-200"><span class="linenos"> 200</span></a> <span class="s2">"alias_post_tablesample"</span><span class="p">,</span> +</span><span id="Generator-201"><a href="#Generator-201"><span class="linenos"> 201</span></a> <span class="s2">"normalize_functions"</span><span class="p">,</span> +</span><span id="Generator-202"><a href="#Generator-202"><span class="linenos"> 202</span></a> <span class="s2">"unsupported_level"</span><span class="p">,</span> +</span><span id="Generator-203"><a href="#Generator-203"><span class="linenos"> 203</span></a> <span class="s2">"unsupported_messages"</span><span class="p">,</span> +</span><span id="Generator-204"><a href="#Generator-204"><span class="linenos"> 204</span></a> <span class="s2">"null_ordering"</span><span class="p">,</span> +</span><span id="Generator-205"><a href="#Generator-205"><span class="linenos"> 205</span></a> <span class="s2">"max_unsupported"</span><span class="p">,</span> +</span><span id="Generator-206"><a href="#Generator-206"><span class="linenos"> 206</span></a> <span class="s2">"_indent"</span><span class="p">,</span> +</span><span id="Generator-207"><a href="#Generator-207"><span class="linenos"> 207</span></a> <span class="s2">"_escaped_quote_end"</span><span class="p">,</span> +</span><span id="Generator-208"><a href="#Generator-208"><span class="linenos"> 208</span></a> <span class="s2">"_escaped_identifier_end"</span><span class="p">,</span> +</span><span id="Generator-209"><a href="#Generator-209"><span class="linenos"> 209</span></a> <span class="s2">"_leading_comma"</span><span class="p">,</span> +</span><span id="Generator-210"><a href="#Generator-210"><span class="linenos"> 210</span></a> <span class="s2">"_max_text_width"</span><span class="p">,</span> +</span><span id="Generator-211"><a href="#Generator-211"><span class="linenos"> 211</span></a> <span class="s2">"_comments"</span><span class="p">,</span> +</span><span id="Generator-212"><a href="#Generator-212"><span class="linenos"> 212</span></a> <span class="p">)</span> +</span><span id="Generator-213"><a href="#Generator-213"><span class="linenos"> 213</span></a> +</span><span id="Generator-214"><a href="#Generator-214"><span class="linenos"> 214</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Generator-215"><a href="#Generator-215"><span class="linenos"> 215</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator-216"><a href="#Generator-216"><span class="linenos"> 216</span></a> <span class="n">time_mapping</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-217"><a href="#Generator-217"><span class="linenos"> 217</span></a> <span class="n">time_trie</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-218"><a href="#Generator-218"><span class="linenos"> 218</span></a> <span class="n">pretty</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-219"><a href="#Generator-219"><span class="linenos"> 219</span></a> <span class="n">quote_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-220"><a href="#Generator-220"><span class="linenos"> 220</span></a> <span class="n">quote_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-221"><a href="#Generator-221"><span class="linenos"> 221</span></a> <span class="n">identifier_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-222"><a href="#Generator-222"><span class="linenos"> 222</span></a> <span class="n">identifier_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-223"><a href="#Generator-223"><span class="linenos"> 223</span></a> <span class="n">identify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-224"><a href="#Generator-224"><span class="linenos"> 224</span></a> <span class="n">normalize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-225"><a href="#Generator-225"><span class="linenos"> 225</span></a> <span class="n">string_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-226"><a href="#Generator-226"><span class="linenos"> 226</span></a> <span class="n">identifier_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-227"><a href="#Generator-227"><span class="linenos"> 227</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> +</span><span id="Generator-228"><a href="#Generator-228"><span class="linenos"> 228</span></a> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> +</span><span id="Generator-229"><a href="#Generator-229"><span class="linenos"> 229</span></a> <span class="n">index_offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> +</span><span id="Generator-230"><a href="#Generator-230"><span class="linenos"> 230</span></a> <span class="n">unnest_column_only</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-231"><a href="#Generator-231"><span class="linenos"> 231</span></a> <span class="n">alias_post_tablesample</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-232"><a href="#Generator-232"><span class="linenos"> 232</span></a> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"upper"</span><span class="p">,</span> +</span><span id="Generator-233"><a href="#Generator-233"><span class="linenos"> 233</span></a> <span class="n">unsupported_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">,</span> +</span><span id="Generator-234"><a href="#Generator-234"><span class="linenos"> 234</span></a> <span class="n">null_ordering</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-235"><a href="#Generator-235"><span class="linenos"> 235</span></a> <span class="n">max_unsupported</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> +</span><span id="Generator-236"><a href="#Generator-236"><span class="linenos"> 236</span></a> <span class="n">leading_comma</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-237"><a href="#Generator-237"><span class="linenos"> 237</span></a> <span class="n">max_text_width</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> +</span><span id="Generator-238"><a href="#Generator-238"><span class="linenos"> 238</span></a> <span class="n">comments</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Generator-239"><a href="#Generator-239"><span class="linenos"> 239</span></a> <span class="p">):</span> +</span><span id="Generator-240"><a href="#Generator-240"><span class="linenos"> 240</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> +</span><span id="Generator-241"><a href="#Generator-241"><span class="linenos"> 241</span></a> +</span><span id="Generator-242"><a href="#Generator-242"><span class="linenos"> 242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span> <span class="o">=</span> <span class="n">time_mapping</span> <span class="ow">or</span> <span class="p">{}</span> +</span><span id="Generator-243"><a href="#Generator-243"><span class="linenos"> 243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span> <span class="o">=</span> <span class="n">time_trie</span> +</span><span id="Generator-244"><a href="#Generator-244"><span class="linenos"> 244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="n">pretty</span> <span class="k">if</span> <span class="n">pretty</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">pretty</span> +</span><span id="Generator-245"><a href="#Generator-245"><span class="linenos"> 245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span> <span class="o">=</span> <span class="n">quote_start</span> <span class="ow">or</span> <span class="s2">"'"</span> +</span><span id="Generator-246"><a href="#Generator-246"><span class="linenos"> 246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> <span class="o">=</span> <span class="n">quote_end</span> <span class="ow">or</span> <span class="s2">"'"</span> +</span><span id="Generator-247"><a href="#Generator-247"><span class="linenos"> 247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span> <span class="o">=</span> <span class="n">identifier_start</span> <span class="ow">or</span> <span class="s1">'"'</span> +</span><span id="Generator-248"><a href="#Generator-248"><span class="linenos"> 248</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">or</span> <span class="s1">'"'</span> +</span><span id="Generator-249"><a href="#Generator-249"><span class="linenos"> 249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">identify</span> +</span><span id="Generator-250"><a href="#Generator-250"><span class="linenos"> 250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="o">=</span> <span class="n">normalize</span> +</span><span id="Generator-251"><a href="#Generator-251"><span class="linenos"> 251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">=</span> <span class="n">string_escape</span> <span class="ow">or</span> <span class="s2">"'"</span> +</span><span id="Generator-252"><a href="#Generator-252"><span class="linenos"> 252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">=</span> <span class="n">identifier_escape</span> <span class="ow">or</span> <span class="s1">'"'</span> +</span><span id="Generator-253"><a href="#Generator-253"><span class="linenos"> 253</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="o">=</span> <span class="n">pad</span> +</span><span id="Generator-254"><a href="#Generator-254"><span class="linenos"> 254</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> +</span><span id="Generator-255"><a href="#Generator-255"><span class="linenos"> 255</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> +</span><span id="Generator-256"><a href="#Generator-256"><span class="linenos"> 256</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> +</span><span id="Generator-257"><a href="#Generator-257"><span class="linenos"> 257</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">=</span> <span class="n">normalize_functions</span> +</span><span id="Generator-258"><a href="#Generator-258"><span class="linenos"> 258</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">=</span> <span class="n">unsupported_level</span> +</span><span id="Generator-259"><a href="#Generator-259"><span class="linenos"> 259</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator-260"><a href="#Generator-260"><span class="linenos"> 260</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span> <span class="o">=</span> <span class="n">max_unsupported</span> +</span><span id="Generator-261"><a href="#Generator-261"><span class="linenos"> 261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> +</span><span id="Generator-262"><a href="#Generator-262"><span class="linenos"> 262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_indent</span> <span class="o">=</span> <span class="n">indent</span> +</span><span id="Generator-263"><a href="#Generator-263"><span class="linenos"> 263</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> +</span><span id="Generator-264"><a href="#Generator-264"><span class="linenos"> 264</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> +</span><span id="Generator-265"><a href="#Generator-265"><span class="linenos"> 265</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span> <span class="o">=</span> <span class="n">leading_comma</span> +</span><span id="Generator-266"><a href="#Generator-266"><span class="linenos"> 266</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="o">=</span> <span class="n">max_text_width</span> +</span><span id="Generator-267"><a href="#Generator-267"><span class="linenos"> 267</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="Generator-268"><a href="#Generator-268"><span class="linenos"> 268</span></a> +</span><span id="Generator-269"><a href="#Generator-269"><span class="linenos"> 269</span></a> <span class="k">def</span> <span class="nf">generate</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-270"><a href="#Generator-270"><span class="linenos"> 270</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Generator-271"><a href="#Generator-271"><span class="linenos"> 271</span></a><span class="sd"> Generates a SQL string by interpreting the given syntax tree.</span> +</span><span id="Generator-272"><a href="#Generator-272"><span class="linenos"> 272</span></a> +</span><span id="Generator-273"><a href="#Generator-273"><span class="linenos"> 273</span></a><span class="sd"> Args</span> +</span><span id="Generator-274"><a href="#Generator-274"><span class="linenos"> 274</span></a><span class="sd"> expression: the syntax tree.</span> +</span><span id="Generator-275"><a href="#Generator-275"><span class="linenos"> 275</span></a> +</span><span id="Generator-276"><a href="#Generator-276"><span class="linenos"> 276</span></a><span class="sd"> Returns</span> +</span><span id="Generator-277"><a href="#Generator-277"><span class="linenos"> 277</span></a><span class="sd"> the SQL string.</span> +</span><span id="Generator-278"><a href="#Generator-278"><span class="linenos"> 278</span></a><span class="sd"> """</span> +</span><span id="Generator-279"><a href="#Generator-279"><span class="linenos"> 279</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator-280"><a href="#Generator-280"><span class="linenos"> 280</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="Generator-281"><a href="#Generator-281"><span class="linenos"> 281</span></a> +</span><span id="Generator-282"><a href="#Generator-282"><span class="linenos"> 282</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> +</span><span id="Generator-283"><a href="#Generator-283"><span class="linenos"> 283</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator-284"><a href="#Generator-284"><span class="linenos"> 284</span></a> +</span><span id="Generator-285"><a href="#Generator-285"><span class="linenos"> 285</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> +</span><span id="Generator-286"><a href="#Generator-286"><span class="linenos"> 286</span></a> <span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> +</span><span id="Generator-287"><a href="#Generator-287"><span class="linenos"> 287</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> +</span><span id="Generator-288"><a href="#Generator-288"><span class="linenos"> 288</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> +</span><span id="Generator-289"><a href="#Generator-289"><span class="linenos"> 289</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span><span class="p">))</span> +</span><span id="Generator-290"><a href="#Generator-290"><span class="linenos"> 290</span></a> +</span><span id="Generator-291"><a href="#Generator-291"><span class="linenos"> 291</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator-292"><a href="#Generator-292"><span class="linenos"> 292</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-293"><a href="#Generator-293"><span class="linenos"> 293</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator-294"><a href="#Generator-294"><span class="linenos"> 294</span></a> +</span><span id="Generator-295"><a href="#Generator-295"><span class="linenos"> 295</span></a> <span class="k">def</span> <span class="nf">unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-296"><a href="#Generator-296"><span class="linenos"> 296</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> +</span><span id="Generator-297"><a href="#Generator-297"><span class="linenos"> 297</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> +</span><span id="Generator-298"><a href="#Generator-298"><span class="linenos"> 298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> </span><span id="Generator-299"><a href="#Generator-299"><span class="linenos"> 299</span></a> -</span><span id="Generator-300"><a href="#Generator-300"><span class="linenos"> 300</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments</span><span class="p">:</span> -</span><span id="Generator-301"><a href="#Generator-301"><span class="linenos"> 301</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator-300"><a href="#Generator-300"><span class="linenos"> 300</span></a> <span class="k">def</span> <span class="nf">sep</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-301"><a href="#Generator-301"><span class="linenos"> 301</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="n">sep</span> </span><span id="Generator-302"><a href="#Generator-302"><span class="linenos"> 302</span></a> -</span><span id="Generator-303"><a href="#Generator-303"><span class="linenos"> 303</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator-304"><a href="#Generator-304"><span class="linenos"> 304</span></a> <span class="n">comments_sql</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator-305"><a href="#Generator-305"><span class="linenos"> 305</span></a> <span class="sa">f</span><span class="s2">"/*</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">pad_comment</span><span class="p">(</span><span class="n">comment</span><span class="p">)</span><span class="si">}</span><span class="s2">*/"</span> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">comments</span> <span class="k">if</span> <span class="n">comment</span> -</span><span id="Generator-306"><a href="#Generator-306"><span class="linenos"> 306</span></a> <span class="p">)</span> -</span><span id="Generator-307"><a href="#Generator-307"><span class="linenos"> 307</span></a> -</span><span id="Generator-308"><a href="#Generator-308"><span class="linenos"> 308</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments_sql</span><span class="p">:</span> -</span><span id="Generator-309"><a href="#Generator-309"><span class="linenos"> 309</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator-303"><a href="#Generator-303"><span class="linenos"> 303</span></a> <span class="k">def</span> <span class="nf">seg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-304"><a href="#Generator-304"><span class="linenos"> 304</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-305"><a href="#Generator-305"><span class="linenos"> 305</span></a> +</span><span id="Generator-306"><a href="#Generator-306"><span class="linenos"> 306</span></a> <span class="k">def</span> <span class="nf">pad_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-307"><a href="#Generator-307"><span class="linenos"> 307</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">comment</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> +</span><span id="Generator-308"><a href="#Generator-308"><span class="linenos"> 308</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="n">comment</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> +</span><span id="Generator-309"><a href="#Generator-309"><span class="linenos"> 309</span></a> <span class="k">return</span> <span class="n">comment</span> </span><span id="Generator-310"><a href="#Generator-310"><span class="linenos"> 310</span></a> -</span><span id="Generator-311"><a href="#Generator-311"><span class="linenos"> 311</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">WITH_SEPARATED_COMMENTS</span><span class="p">):</span> -</span><span id="Generator-312"><a href="#Generator-312"><span class="linenos"> 312</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-311"><a href="#Generator-311"><span class="linenos"> 311</span></a> <span class="k">def</span> <span class="nf">maybe_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-312"><a href="#Generator-312"><span class="linenos"> 312</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="k">else</span> <span class="kc">None</span> </span><span id="Generator-313"><a href="#Generator-313"><span class="linenos"> 313</span></a> -</span><span id="Generator-314"><a href="#Generator-314"><span class="linenos"> 314</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-315"><a href="#Generator-315"><span class="linenos"> 315</span></a> -</span><span id="Generator-316"><a href="#Generator-316"><span class="linenos"> 316</span></a> <span class="k">def</span> <span class="nf">wrap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-317"><a href="#Generator-317"><span class="linenos"> 317</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span> -</span><span id="Generator-318"><a href="#Generator-318"><span class="linenos"> 318</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><span id="Generator-319"><a href="#Generator-319"><span class="linenos"> 319</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</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">Union</span><span class="p">))</span> -</span><span id="Generator-320"><a href="#Generator-320"><span class="linenos"> 320</span></a> <span class="k">else</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">"this"</span><span class="p">),</span> -</span><span id="Generator-321"><a href="#Generator-321"><span class="linenos"> 321</span></a> <span class="n">level</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> -</span><span id="Generator-322"><a href="#Generator-322"><span class="linenos"> 322</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> -</span><span id="Generator-323"><a href="#Generator-323"><span class="linenos"> 323</span></a> <span class="p">)</span> -</span><span id="Generator-324"><a href="#Generator-324"><span class="linenos"> 324</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-325"><a href="#Generator-325"><span class="linenos"> 325</span></a> -</span><span id="Generator-326"><a href="#Generator-326"><span class="linenos"> 326</span></a> <span class="k">def</span> <span class="nf">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-327"><a href="#Generator-327"><span class="linenos"> 327</span></a> <span class="n">original</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> -</span><span id="Generator-328"><a href="#Generator-328"><span class="linenos"> 328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Generator-329"><a href="#Generator-329"><span class="linenos"> 329</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="Generator-330"><a href="#Generator-330"><span class="linenos"> 330</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">original</span> -</span><span id="Generator-331"><a href="#Generator-331"><span class="linenos"> 331</span></a> <span class="k">return</span> <span class="n">result</span> -</span><span id="Generator-332"><a href="#Generator-332"><span class="linenos"> 332</span></a> -</span><span id="Generator-333"><a href="#Generator-333"><span class="linenos"> 333</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-334"><a href="#Generator-334"><span class="linenos"> 334</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"upper"</span><span class="p">:</span> -</span><span id="Generator-335"><a href="#Generator-335"><span class="linenos"> 335</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Generator-336"><a href="#Generator-336"><span class="linenos"> 336</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"lower"</span><span class="p">:</span> -</span><span id="Generator-337"><a href="#Generator-337"><span class="linenos"> 337</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="Generator-338"><a href="#Generator-338"><span class="linenos"> 338</span></a> <span class="k">return</span> <span class="n">name</span> +</span><span id="Generator-314"><a href="#Generator-314"><span class="linenos"> 314</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments</span><span class="p">:</span> +</span><span id="Generator-315"><a href="#Generator-315"><span class="linenos"> 315</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator-316"><a href="#Generator-316"><span class="linenos"> 316</span></a> +</span><span id="Generator-317"><a href="#Generator-317"><span class="linenos"> 317</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator-318"><a href="#Generator-318"><span class="linenos"> 318</span></a> <span class="n">comments_sql</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator-319"><a href="#Generator-319"><span class="linenos"> 319</span></a> <span class="sa">f</span><span class="s2">"/*</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">pad_comment</span><span class="p">(</span><span class="n">comment</span><span class="p">)</span><span class="si">}</span><span class="s2">*/"</span> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">comments</span> <span class="k">if</span> <span class="n">comment</span> +</span><span id="Generator-320"><a href="#Generator-320"><span class="linenos"> 320</span></a> <span class="p">)</span> +</span><span id="Generator-321"><a href="#Generator-321"><span class="linenos"> 321</span></a> +</span><span id="Generator-322"><a href="#Generator-322"><span class="linenos"> 322</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments_sql</span><span class="p">:</span> +</span><span id="Generator-323"><a href="#Generator-323"><span class="linenos"> 323</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator-324"><a href="#Generator-324"><span class="linenos"> 324</span></a> +</span><span id="Generator-325"><a href="#Generator-325"><span class="linenos"> 325</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">WITH_SEPARATED_COMMENTS</span><span class="p">):</span> +</span><span id="Generator-326"><a href="#Generator-326"><span class="linenos"> 326</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-327"><a href="#Generator-327"><span class="linenos"> 327</span></a> +</span><span id="Generator-328"><a href="#Generator-328"><span class="linenos"> 328</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-329"><a href="#Generator-329"><span class="linenos"> 329</span></a> +</span><span id="Generator-330"><a href="#Generator-330"><span class="linenos"> 330</span></a> <span class="k">def</span> <span class="nf">wrap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-331"><a href="#Generator-331"><span class="linenos"> 331</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span> +</span><span id="Generator-332"><a href="#Generator-332"><span class="linenos"> 332</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><span id="Generator-333"><a href="#Generator-333"><span class="linenos"> 333</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</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">Union</span><span class="p">))</span> +</span><span id="Generator-334"><a href="#Generator-334"><span class="linenos"> 334</span></a> <span class="k">else</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">"this"</span><span class="p">),</span> +</span><span id="Generator-335"><a href="#Generator-335"><span class="linenos"> 335</span></a> <span class="n">level</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> +</span><span id="Generator-336"><a href="#Generator-336"><span class="linenos"> 336</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> +</span><span id="Generator-337"><a href="#Generator-337"><span class="linenos"> 337</span></a> <span class="p">)</span> +</span><span id="Generator-338"><a href="#Generator-338"><span class="linenos"> 338</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span><span id="Generator-339"><a href="#Generator-339"><span class="linenos"> 339</span></a> -</span><span id="Generator-340"><a href="#Generator-340"><span class="linenos"> 340</span></a> <span class="k">def</span> <span class="nf">indent</span><span class="p">(</span> -</span><span id="Generator-341"><a href="#Generator-341"><span class="linenos"> 341</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator-342"><a href="#Generator-342"><span class="linenos"> 342</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="Generator-343"><a href="#Generator-343"><span class="linenos"> 343</span></a> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="Generator-344"><a href="#Generator-344"><span class="linenos"> 344</span></a> <span class="n">pad</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-345"><a href="#Generator-345"><span class="linenos"> 345</span></a> <span class="n">skip_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-346"><a href="#Generator-346"><span class="linenos"> 346</span></a> <span class="n">skip_last</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-347"><a href="#Generator-347"><span class="linenos"> 347</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-348"><a href="#Generator-348"><span class="linenos"> 348</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator-349"><a href="#Generator-349"><span class="linenos"> 349</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="Generator-350"><a href="#Generator-350"><span class="linenos"> 350</span></a> -</span><span id="Generator-351"><a href="#Generator-351"><span class="linenos"> 351</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="k">if</span> <span class="n">pad</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">pad</span> -</span><span id="Generator-352"><a href="#Generator-352"><span class="linenos"> 352</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-340"><a href="#Generator-340"><span class="linenos"> 340</span></a> <span class="k">def</span> <span class="nf">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-341"><a href="#Generator-341"><span class="linenos"> 341</span></a> <span class="n">original</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> +</span><span id="Generator-342"><a href="#Generator-342"><span class="linenos"> 342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Generator-343"><a href="#Generator-343"><span class="linenos"> 343</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Generator-344"><a href="#Generator-344"><span class="linenos"> 344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">original</span> +</span><span id="Generator-345"><a href="#Generator-345"><span class="linenos"> 345</span></a> <span class="k">return</span> <span class="n">result</span> +</span><span id="Generator-346"><a href="#Generator-346"><span class="linenos"> 346</span></a> +</span><span id="Generator-347"><a href="#Generator-347"><span class="linenos"> 347</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-348"><a href="#Generator-348"><span class="linenos"> 348</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"upper"</span><span class="p">:</span> +</span><span id="Generator-349"><a href="#Generator-349"><span class="linenos"> 349</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Generator-350"><a href="#Generator-350"><span class="linenos"> 350</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"lower"</span><span class="p">:</span> +</span><span id="Generator-351"><a href="#Generator-351"><span class="linenos"> 351</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> +</span><span id="Generator-352"><a href="#Generator-352"><span class="linenos"> 352</span></a> <span class="k">return</span> <span class="n">name</span> </span><span id="Generator-353"><a href="#Generator-353"><span class="linenos"> 353</span></a> -</span><span id="Generator-354"><a href="#Generator-354"><span class="linenos"> 354</span></a> <span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator-355"><a href="#Generator-355"><span class="linenos"> 355</span></a> <span class="n">line</span> -</span><span id="Generator-356"><a href="#Generator-356"><span class="linenos"> 356</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">skip_first</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">skip_last</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Generator-357"><a href="#Generator-357"><span class="linenos"> 357</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' '</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">level</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_indent</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">pad</span><span class="p">)</span><span class="si">}{</span><span class="n">line</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-358"><a href="#Generator-358"><span class="linenos"> 358</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> -</span><span id="Generator-359"><a href="#Generator-359"><span class="linenos"> 359</span></a> <span class="p">)</span> -</span><span id="Generator-360"><a href="#Generator-360"><span class="linenos"> 360</span></a> -</span><span id="Generator-361"><a href="#Generator-361"><span class="linenos"> 361</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span> -</span><span id="Generator-362"><a href="#Generator-362"><span class="linenos"> 362</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator-363"><a href="#Generator-363"><span class="linenos"> 363</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> -</span><span id="Generator-364"><a href="#Generator-364"><span class="linenos"> 364</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-365"><a href="#Generator-365"><span class="linenos"> 365</span></a> <span class="n">comment</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Generator-366"><a href="#Generator-366"><span class="linenos"> 366</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-367"><a href="#Generator-367"><span class="linenos"> 367</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Generator-368"><a href="#Generator-368"><span class="linenos"> 368</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Generator-369"><a href="#Generator-369"><span class="linenos"> 369</span></a> -</span><span id="Generator-370"><a href="#Generator-370"><span class="linenos"> 370</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="Generator-371"><a href="#Generator-371"><span class="linenos"> 371</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Generator-372"><a href="#Generator-372"><span class="linenos"> 372</span></a> -</span><span id="Generator-373"><a href="#Generator-373"><span class="linenos"> 373</span></a> <span class="k">if</span> <span class="n">key</span><span class="p">:</span> -</span><span id="Generator-374"><a href="#Generator-374"><span class="linenos"> 374</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> -</span><span id="Generator-375"><a href="#Generator-375"><span class="linenos"> 375</span></a> -</span><span id="Generator-376"><a href="#Generator-376"><span class="linenos"> 376</span></a> <span class="n">transform</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> -</span><span id="Generator-377"><a href="#Generator-377"><span class="linenos"> 377</span></a> -</span><span id="Generator-378"><a href="#Generator-378"><span class="linenos"> 378</span></a> <span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">transform</span><span class="p">):</span> -</span><span id="Generator-379"><a href="#Generator-379"><span class="linenos"> 379</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</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="Generator-380"><a href="#Generator-380"><span class="linenos"> 380</span></a> <span class="k">elif</span> <span class="n">transform</span><span class="p">:</span> -</span><span id="Generator-381"><a href="#Generator-381"><span class="linenos"> 381</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</span> -</span><span id="Generator-382"><a href="#Generator-382"><span class="linenos"> 382</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Generator-383"><a href="#Generator-383"><span class="linenos"> 383</span></a> <span class="n">exp_handler_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">_sql"</span> -</span><span id="Generator-384"><a href="#Generator-384"><span class="linenos"> 384</span></a> -</span><span id="Generator-385"><a href="#Generator-385"><span class="linenos"> 385</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">):</span> -</span><span id="Generator-386"><a href="#Generator-386"><span class="linenos"> 386</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">)(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-387"><a href="#Generator-387"><span class="linenos"> 387</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Generator-388"><a href="#Generator-388"><span class="linenos"> 388</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-389"><a href="#Generator-389"><span class="linenos"> 389</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">):</span> -</span><span id="Generator-390"><a href="#Generator-390"><span class="linenos"> 390</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">property_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-391"><a href="#Generator-391"><span class="linenos"> 391</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-392"><a href="#Generator-392"><span class="linenos"> 392</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-393"><a href="#Generator-393"><span class="linenos"> 393</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-394"><a href="#Generator-394"><span class="linenos"> 394</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected an Expression. Received </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-395"><a href="#Generator-395"><span class="linenos"> 395</span></a> -</span><span id="Generator-396"><a href="#Generator-396"><span class="linenos"> 396</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">comment</span> <span class="k">else</span> <span class="n">sql</span> -</span><span id="Generator-397"><a href="#Generator-397"><span class="linenos"> 397</span></a> -</span><span id="Generator-398"><a href="#Generator-398"><span class="linenos"> 398</span></a> <span class="k">def</span> <span class="nf">uncache_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">Uncache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-399"><a href="#Generator-399"><span class="linenos"> 399</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> -</span><span id="Generator-400"><a href="#Generator-400"><span class="linenos"> 400</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-401"><a href="#Generator-401"><span class="linenos"> 401</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNCACHE TABLE</span><span class="si">{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-402"><a href="#Generator-402"><span class="linenos"> 402</span></a> -</span><span id="Generator-403"><a href="#Generator-403"><span class="linenos"> 403</span></a> <span class="k">def</span> <span class="nf">cache_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">Cache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-404"><a href="#Generator-404"><span class="linenos"> 404</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="s2">" LAZY"</span> <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">"lazy"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-405"><a href="#Generator-405"><span class="linenos"> 405</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> -</span><span id="Generator-406"><a href="#Generator-406"><span class="linenos"> 406</span></a> <span class="n">options</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">"options"</span><span class="p">)</span> -</span><span id="Generator-407"><a href="#Generator-407"><span class="linenos"> 407</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OPTIONS(</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">options</span><span class="p">[</span><span class="mi">0</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">options</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-408"><a href="#Generator-408"><span class="linenos"> 408</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator-409"><a href="#Generator-409"><span class="linenos"> 409</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-410"><a href="#Generator-410"><span class="linenos"> 410</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CACHE</span><span class="si">{</span><span class="n">lazy</span><span class="si">}</span><span class="s2"> TABLE </span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">options</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-411"><a href="#Generator-411"><span class="linenos"> 411</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Generator-412"><a href="#Generator-412"><span class="linenos"> 412</span></a> -</span><span id="Generator-413"><a href="#Generator-413"><span class="linenos"> 413</span></a> <span class="k">def</span> <span class="nf">characterset_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">CharacterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-414"><a href="#Generator-414"><span class="linenos"> 414</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">Cast</span><span class="p">):</span> -</span><span id="Generator-415"><a href="#Generator-415"><span class="linenos"> 415</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHAR CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-416"><a href="#Generator-416"><span class="linenos"> 416</span></a> <span class="n">default</span> <span class="o">=</span> <span class="s2">"DEFAULT "</span> <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">"default"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-417"><a href="#Generator-417"><span class="linenos"> 417</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-418"><a href="#Generator-418"><span class="linenos"> 418</span></a> -</span><span id="Generator-419"><a href="#Generator-419"><span class="linenos"> 419</span></a> <span class="k">def</span> <span class="nf">column_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">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-420"><a href="#Generator-420"><span class="linenos"> 420</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator-421"><a href="#Generator-421"><span class="linenos"> 421</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> -</span><span id="Generator-422"><a href="#Generator-422"><span class="linenos"> 422</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="Generator-423"><a href="#Generator-423"><span class="linenos"> 423</span></a> <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">"catalog"</span><span class="p">),</span> -</span><span id="Generator-424"><a href="#Generator-424"><span class="linenos"> 424</span></a> <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">"db"</span><span class="p">),</span> -</span><span id="Generator-425"><a href="#Generator-425"><span class="linenos"> 425</span></a> <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">"table"</span><span class="p">),</span> -</span><span id="Generator-426"><a href="#Generator-426"><span class="linenos"> 426</span></a> <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">"this"</span><span class="p">),</span> -</span><span id="Generator-427"><a href="#Generator-427"><span class="linenos"> 427</span></a> <span class="p">)</span> -</span><span id="Generator-428"><a href="#Generator-428"><span class="linenos"> 428</span></a> <span class="k">if</span> <span class="n">part</span> -</span><span id="Generator-429"><a href="#Generator-429"><span class="linenos"> 429</span></a> <span class="p">)</span> -</span><span id="Generator-430"><a href="#Generator-430"><span class="linenos"> 430</span></a> -</span><span id="Generator-431"><a href="#Generator-431"><span class="linenos"> 431</span></a> <span class="k">def</span> <span class="nf">columndef_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">ColumnDef</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-432"><a href="#Generator-432"><span class="linenos"> 432</span></a> <span class="n">column</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">"this"</span><span class="p">)</span> -</span><span id="Generator-433"><a href="#Generator-433"><span class="linenos"> 433</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="Generator-434"><a href="#Generator-434"><span class="linenos"> 434</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"constraints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-435"><a href="#Generator-435"><span class="linenos"> 435</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">"IF NOT EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-436"><a href="#Generator-436"><span class="linenos"> 436</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-437"><a href="#Generator-437"><span class="linenos"> 437</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">constraints</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-438"><a href="#Generator-438"><span class="linenos"> 438</span></a> -</span><span id="Generator-439"><a href="#Generator-439"><span class="linenos"> 439</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">column</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-440"><a href="#Generator-440"><span class="linenos"> 440</span></a> -</span><span id="Generator-441"><a href="#Generator-441"><span class="linenos"> 441</span></a> <span class="k">def</span> <span class="nf">columnconstraint_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">ColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-442"><a href="#Generator-442"><span class="linenos"> 442</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">"this"</span><span class="p">)</span> -</span><span id="Generator-443"><a href="#Generator-443"><span class="linenos"> 443</span></a> <span class="n">kind_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">)</span> -</span><span id="Generator-444"><a href="#Generator-444"><span class="linenos"> 444</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">kind_sql</span> -</span><span id="Generator-445"><a href="#Generator-445"><span class="linenos"> 445</span></a> -</span><span id="Generator-446"><a href="#Generator-446"><span class="linenos"> 446</span></a> <span class="k">def</span> <span class="nf">autoincrementcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-447"><a href="#Generator-447"><span class="linenos"> 447</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">token_sql</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">)</span> -</span><span id="Generator-448"><a href="#Generator-448"><span class="linenos"> 448</span></a> -</span><span id="Generator-449"><a href="#Generator-449"><span class="linenos"> 449</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> -</span><span id="Generator-450"><a href="#Generator-450"><span class="linenos"> 450</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">GeneratedAsIdentityColumnConstraint</span> -</span><span id="Generator-451"><a href="#Generator-451"><span class="linenos"> 451</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-452"><a href="#Generator-452"><span class="linenos"> 452</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-453"><a href="#Generator-453"><span class="linenos"> 453</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-454"><a href="#Generator-454"><span class="linenos"> 454</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">" ALWAYS "</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">" BY DEFAULT "</span> -</span><span id="Generator-455"><a href="#Generator-455"><span class="linenos"> 455</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> -</span><span id="Generator-456"><a href="#Generator-456"><span class="linenos"> 456</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"START WITH </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-457"><a href="#Generator-457"><span class="linenos"> 457</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> -</span><span id="Generator-458"><a href="#Generator-458"><span class="linenos"> 458</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT BY </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-459"><a href="#Generator-459"><span class="linenos"> 459</span></a> <span class="n">minvalue</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">"minvalue"</span><span class="p">)</span> -</span><span id="Generator-460"><a href="#Generator-460"><span class="linenos"> 460</span></a> <span class="n">minvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MINVALUE </span><span class="si">{</span><span class="n">minvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">minvalue</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-461"><a href="#Generator-461"><span class="linenos"> 461</span></a> <span class="n">maxvalue</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">"maxvalue"</span><span class="p">)</span> -</span><span id="Generator-462"><a href="#Generator-462"><span class="linenos"> 462</span></a> <span class="n">maxvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAXVALUE </span><span class="si">{</span><span class="n">maxvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">maxvalue</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-463"><a href="#Generator-463"><span class="linenos"> 463</span></a> <span class="n">cycle</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">"cycle"</span><span class="p">)</span> -</span><span id="Generator-464"><a href="#Generator-464"><span class="linenos"> 464</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-465"><a href="#Generator-465"><span class="linenos"> 465</span></a> <span class="k">if</span> <span class="n">cycle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-466"><a href="#Generator-466"><span class="linenos"> 466</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' NO'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">cycle</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> CYCLE"</span> -</span><span id="Generator-467"><a href="#Generator-467"><span class="linenos"> 467</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="n">cycle_sql</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">increment</span> <span class="k">else</span> <span class="n">cycle_sql</span> -</span><span id="Generator-468"><a href="#Generator-468"><span class="linenos"> 468</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-469"><a href="#Generator-469"><span class="linenos"> 469</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">or</span> <span class="n">increment</span> <span class="ow">or</span> <span class="n">cycle_sql</span><span class="p">:</span> -</span><span id="Generator-470"><a href="#Generator-470"><span class="linenos"> 470</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}{</span><span class="n">minvalue</span><span class="si">}{</span><span class="n">maxvalue</span><span class="si">}{</span><span class="n">cycle_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-471"><a href="#Generator-471"><span class="linenos"> 471</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">sequence_opts</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-472"><a href="#Generator-472"><span class="linenos"> 472</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"GENERATED</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">AS IDENTITY</span><span class="si">{</span><span class="n">sequence_opts</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-473"><a href="#Generator-473"><span class="linenos"> 473</span></a> -</span><span id="Generator-474"><a href="#Generator-474"><span class="linenos"> 474</span></a> <span class="k">def</span> <span class="nf">notnullcolumnconstraint_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">NotNullColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-475"><a href="#Generator-475"><span class="linenos"> 475</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'allow_null'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'NOT '</span><span class="si">}</span><span class="s2">NULL"</span> -</span><span id="Generator-476"><a href="#Generator-476"><span class="linenos"> 476</span></a> -</span><span id="Generator-477"><a href="#Generator-477"><span class="linenos"> 477</span></a> <span class="k">def</span> <span class="nf">primarykeycolumnconstraint_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">PrimaryKeyColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-478"><a href="#Generator-478"><span class="linenos"> 478</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> -</span><span id="Generator-479"><a href="#Generator-479"><span class="linenos"> 479</span></a> <span class="k">if</span> <span class="n">desc</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-480"><a href="#Generator-480"><span class="linenos"> 480</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY</span><span class="si">{</span><span class="s1">' DESC'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">desc</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ASC'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-481"><a href="#Generator-481"><span class="linenos"> 481</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY"</span> -</span><span id="Generator-482"><a href="#Generator-482"><span class="linenos"> 482</span></a> -</span><span id="Generator-483"><a href="#Generator-483"><span class="linenos"> 483</span></a> <span class="k">def</span> <span class="nf">uniquecolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-484"><a href="#Generator-484"><span class="linenos"> 484</span></a> <span class="k">return</span> <span class="s2">"UNIQUE"</span> -</span><span id="Generator-485"><a href="#Generator-485"><span class="linenos"> 485</span></a> -</span><span id="Generator-486"><a href="#Generator-486"><span class="linenos"> 486</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-487"><a href="#Generator-487"><span class="linenos"> 487</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Generator-488"><a href="#Generator-488"><span class="linenos"> 488</span></a> <span class="n">properties</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">"properties"</span><span class="p">)</span> -</span><span id="Generator-489"><a href="#Generator-489"><span class="linenos"> 489</span></a> <span class="n">properties_exp</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="Generator-490"><a href="#Generator-490"><span class="linenos"> 490</span></a> <span class="n">properties_locs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">locate_properties</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="p">{}</span> -</span><span id="Generator-491"><a href="#Generator-491"><span class="linenos"> 491</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">)</span> <span class="ow">or</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> -</span><span id="Generator-492"><a href="#Generator-492"><span class="linenos"> 492</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span> -</span><span id="Generator-493"><a href="#Generator-493"><span class="linenos"> 493</span></a> <span class="p">):</span> -</span><span id="Generator-494"><a href="#Generator-494"><span class="linenos"> 494</span></a> <span class="n">properties_exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="Generator-495"><a href="#Generator-495"><span class="linenos"> 495</span></a> <span class="s2">"properties"</span><span class="p">,</span> -</span><span id="Generator-496"><a href="#Generator-496"><span class="linenos"> 496</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> -</span><span id="Generator-497"><a href="#Generator-497"><span class="linenos"> 497</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="Generator-498"><a href="#Generator-498"><span class="linenos"> 498</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">],</span> -</span><span id="Generator-499"><a href="#Generator-499"><span class="linenos"> 499</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">],</span> -</span><span id="Generator-500"><a href="#Generator-500"><span class="linenos"> 500</span></a> <span class="p">]</span> -</span><span id="Generator-501"><a href="#Generator-501"><span class="linenos"> 501</span></a> <span class="p">),</span> -</span><span id="Generator-502"><a href="#Generator-502"><span class="linenos"> 502</span></a> <span class="p">)</span> -</span><span id="Generator-503"><a href="#Generator-503"><span class="linenos"> 503</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">"TABLE"</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">):</span> -</span><span id="Generator-504"><a href="#Generator-504"><span class="linenos"> 504</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator-505"><a href="#Generator-505"><span class="linenos"> 505</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="Generator-506"><a href="#Generator-506"><span class="linenos"> 506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]),</span> -</span><span id="Generator-507"><a href="#Generator-507"><span class="linenos"> 507</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-508"><a href="#Generator-508"><span class="linenos"> 508</span></a> <span class="p">)</span> -</span><span id="Generator-509"><a href="#Generator-509"><span class="linenos"> 509</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-510"><a href="#Generator-510"><span class="linenos"> 510</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this_name</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">this_properties</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-511"><a href="#Generator-511"><span class="linenos"> 511</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-512"><a href="#Generator-512"><span class="linenos"> 512</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-513"><a href="#Generator-513"><span class="linenos"> 513</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">"this"</span><span class="p">)</span> -</span><span id="Generator-514"><a href="#Generator-514"><span class="linenos"> 514</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">properties_exp</span><span class="p">,</span> <span class="s2">"properties"</span><span class="p">)</span> -</span><span id="Generator-515"><a href="#Generator-515"><span class="linenos"> 515</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="s2">" BEGIN"</span> <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">"begin"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-516"><a href="#Generator-516"><span class="linenos"> 516</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator-517"><a href="#Generator-517"><span class="linenos"> 517</span></a> <span class="k">if</span> <span class="n">expression_sql</span><span class="p">:</span> -</span><span id="Generator-518"><a href="#Generator-518"><span class="linenos"> 518</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">begin</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-519"><a href="#Generator-519"><span class="linenos"> 519</span></a> -</span><span id="Generator-520"><a href="#Generator-520"><span class="linenos"> 520</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">):</span> -</span><span id="Generator-521"><a href="#Generator-521"><span class="linenos"> 521</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">):</span> -</span><span id="Generator-522"><a href="#Generator-522"><span class="linenos"> 522</span></a> <span class="n">postalias_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="Generator-523"><a href="#Generator-523"><span class="linenos"> 523</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> -</span><span id="Generator-524"><a href="#Generator-524"><span class="linenos"> 524</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span> -</span><span id="Generator-525"><a href="#Generator-525"><span class="linenos"> 525</span></a> <span class="p">),</span> -</span><span id="Generator-526"><a href="#Generator-526"><span class="linenos"> 526</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-527"><a href="#Generator-527"><span class="linenos"> 527</span></a> <span class="p">)</span> -</span><span id="Generator-528"><a href="#Generator-528"><span class="linenos"> 528</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">postalias_props_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-529"><a href="#Generator-529"><span class="linenos"> 529</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-530"><a href="#Generator-530"><span class="linenos"> 530</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-531"><a href="#Generator-531"><span class="linenos"> 531</span></a> -</span><span id="Generator-532"><a href="#Generator-532"><span class="linenos"> 532</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-533"><a href="#Generator-533"><span class="linenos"> 533</span></a> <span class="n">transient</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-534"><a href="#Generator-534"><span class="linenos"> 534</span></a> <span class="s2">" TRANSIENT"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CREATE_TRANSIENT</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"transient"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-535"><a href="#Generator-535"><span class="linenos"> 535</span></a> <span class="p">)</span> -</span><span id="Generator-536"><a href="#Generator-536"><span class="linenos"> 536</span></a> <span class="n">external</span> <span class="o">=</span> <span class="s2">" EXTERNAL"</span> <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">"external"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-537"><a href="#Generator-537"><span class="linenos"> 537</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="s2">" OR REPLACE"</span> <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">"replace"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-538"><a href="#Generator-538"><span class="linenos"> 538</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF NOT EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-539"><a href="#Generator-539"><span class="linenos"> 539</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-540"><a href="#Generator-540"><span class="linenos"> 540</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="s2">" MATERIALIZED"</span> <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">"materialized"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-541"><a href="#Generator-541"><span class="linenos"> 541</span></a> <span class="n">set_</span> <span class="o">=</span> <span class="s2">" SET"</span> <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">"set"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-542"><a href="#Generator-542"><span class="linenos"> 542</span></a> <span class="n">multiset</span> <span class="o">=</span> <span class="s2">" MULTISET"</span> <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">"multiset"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-543"><a href="#Generator-543"><span class="linenos"> 543</span></a> <span class="n">global_temporary</span> <span class="o">=</span> <span class="s2">" GLOBAL TEMPORARY"</span> <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">"global_temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-544"><a href="#Generator-544"><span class="linenos"> 544</span></a> <span class="n">volatile</span> <span class="o">=</span> <span class="s2">" VOLATILE"</span> <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">"volatile"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-545"><a href="#Generator-545"><span class="linenos"> 545</span></a> <span class="n">data</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">"data"</span><span class="p">)</span> -</span><span id="Generator-546"><a href="#Generator-546"><span class="linenos"> 546</span></a> <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-547"><a href="#Generator-547"><span class="linenos"> 547</span></a> <span class="n">data</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-548"><a href="#Generator-548"><span class="linenos"> 548</span></a> <span class="k">elif</span> <span class="n">data</span><span class="p">:</span> -</span><span id="Generator-549"><a href="#Generator-549"><span class="linenos"> 549</span></a> <span class="n">data</span> <span class="o">=</span> <span class="s2">" WITH DATA"</span> -</span><span id="Generator-550"><a href="#Generator-550"><span class="linenos"> 550</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-551"><a href="#Generator-551"><span class="linenos"> 551</span></a> <span class="n">data</span> <span class="o">=</span> <span class="s2">" WITH NO DATA"</span> -</span><span id="Generator-552"><a href="#Generator-552"><span class="linenos"> 552</span></a> <span class="n">statistics</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">"statistics"</span><span class="p">)</span> -</span><span id="Generator-553"><a href="#Generator-553"><span class="linenos"> 553</span></a> <span class="k">if</span> <span class="n">statistics</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-554"><a href="#Generator-554"><span class="linenos"> 554</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-555"><a href="#Generator-555"><span class="linenos"> 555</span></a> <span class="k">elif</span> <span class="n">statistics</span><span class="p">:</span> -</span><span id="Generator-556"><a href="#Generator-556"><span class="linenos"> 556</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="s2">" AND STATISTICS"</span> -</span><span id="Generator-557"><a href="#Generator-557"><span class="linenos"> 557</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-558"><a href="#Generator-558"><span class="linenos"> 558</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="s2">" AND NO STATISTICS"</span> -</span><span id="Generator-559"><a href="#Generator-559"><span class="linenos"> 559</span></a> <span class="n">no_primary_index</span> <span class="o">=</span> <span class="s2">" NO PRIMARY INDEX"</span> <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">"no_primary_index"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-560"><a href="#Generator-560"><span class="linenos"> 560</span></a> -</span><span id="Generator-561"><a href="#Generator-561"><span class="linenos"> 561</span></a> <span class="n">indexes</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">"indexes"</span><span class="p">)</span> -</span><span id="Generator-562"><a href="#Generator-562"><span class="linenos"> 562</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-563"><a href="#Generator-563"><span class="linenos"> 563</span></a> <span class="k">if</span> <span class="n">indexes</span><span class="p">:</span> -</span><span id="Generator-564"><a href="#Generator-564"><span class="linenos"> 564</span></a> <span class="n">indexes_sql</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator-565"><a href="#Generator-565"><span class="linenos"> 565</span></a> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="n">indexes</span><span class="p">:</span> -</span><span id="Generator-566"><a href="#Generator-566"><span class="linenos"> 566</span></a> <span class="n">ind_unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <span class="k">if</span> <span class="n">index</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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-567"><a href="#Generator-567"><span class="linenos"> 567</span></a> <span class="n">ind_primary</span> <span class="o">=</span> <span class="s2">" PRIMARY"</span> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-568"><a href="#Generator-568"><span class="linenos"> 568</span></a> <span class="n">ind_amp</span> <span class="o">=</span> <span class="s2">" AMP"</span> <span class="k">if</span> <span class="n">index</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">"amp"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-569"><a href="#Generator-569"><span class="linenos"> 569</span></a> <span class="n">ind_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">index</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">index</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-570"><a href="#Generator-570"><span class="linenos"> 570</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-571"><a href="#Generator-571"><span class="linenos"> 571</span></a> <span class="sa">f</span><span class="s1">' (</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">index</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="o">=</span><span class="s2">"columns"</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="s1">)'</span> -</span><span id="Generator-572"><a href="#Generator-572"><span class="linenos"> 572</span></a> <span class="k">if</span> <span class="n">index</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">"columns"</span><span class="p">)</span> -</span><span id="Generator-573"><a href="#Generator-573"><span class="linenos"> 573</span></a> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-574"><a href="#Generator-574"><span class="linenos"> 574</span></a> <span class="p">)</span> -</span><span id="Generator-575"><a href="#Generator-575"><span class="linenos"> 575</span></a> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> -</span><span id="Generator-576"><a href="#Generator-576"><span class="linenos"> 576</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span> -</span><span id="Generator-577"><a href="#Generator-577"><span class="linenos"> 577</span></a> <span class="p">):</span> -</span><span id="Generator-578"><a href="#Generator-578"><span class="linenos"> 578</span></a> <span class="n">postindex_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="Generator-579"><a href="#Generator-579"><span class="linenos"> 579</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> -</span><span id="Generator-580"><a href="#Generator-580"><span class="linenos"> 580</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span> -</span><span id="Generator-581"><a href="#Generator-581"><span class="linenos"> 581</span></a> <span class="p">),</span> -</span><span id="Generator-582"><a href="#Generator-582"><span class="linenos"> 582</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-583"><a href="#Generator-583"><span class="linenos"> 583</span></a> <span class="p">)</span> -</span><span id="Generator-584"><a href="#Generator-584"><span class="linenos"> 584</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">postindex_props_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-585"><a href="#Generator-585"><span class="linenos"> 585</span></a> -</span><span id="Generator-586"><a href="#Generator-586"><span class="linenos"> 586</span></a> <span class="n">indexes_sql</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Generator-587"><a href="#Generator-587"><span class="linenos"> 587</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_unique</span><span class="si">}{</span><span class="n">ind_primary</span><span class="si">}{</span><span class="n">ind_amp</span><span class="si">}</span><span class="s2"> INDEX</span><span class="si">{</span><span class="n">ind_name</span><span class="si">}{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-588"><a href="#Generator-588"><span class="linenos"> 588</span></a> <span class="p">)</span> -</span><span id="Generator-589"><a href="#Generator-589"><span class="linenos"> 589</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">indexes_sql</span><span class="p">)</span> -</span><span id="Generator-590"><a href="#Generator-590"><span class="linenos"> 590</span></a> -</span><span id="Generator-591"><a href="#Generator-591"><span class="linenos"> 591</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-592"><a href="#Generator-592"><span class="linenos"> 592</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">):</span> -</span><span id="Generator-593"><a href="#Generator-593"><span class="linenos"> 593</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="Generator-594"><a href="#Generator-594"><span class="linenos"> 594</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]),</span> -</span><span id="Generator-595"><a href="#Generator-595"><span class="linenos"> 595</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> -</span><span id="Generator-596"><a href="#Generator-596"><span class="linenos"> 596</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> -</span><span id="Generator-597"><a href="#Generator-597"><span class="linenos"> 597</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-598"><a href="#Generator-598"><span class="linenos"> 598</span></a> <span class="p">)</span> -</span><span id="Generator-599"><a href="#Generator-599"><span class="linenos"> 599</span></a> -</span><span id="Generator-600"><a href="#Generator-600"><span class="linenos"> 600</span></a> <span class="n">modifiers</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator-601"><a href="#Generator-601"><span class="linenos"> 601</span></a> <span class="p">(</span> -</span><span id="Generator-602"><a href="#Generator-602"><span class="linenos"> 602</span></a> <span class="n">replace</span><span class="p">,</span> -</span><span id="Generator-603"><a href="#Generator-603"><span class="linenos"> 603</span></a> <span class="n">temporary</span><span class="p">,</span> -</span><span id="Generator-604"><a href="#Generator-604"><span class="linenos"> 604</span></a> <span class="n">transient</span><span class="p">,</span> -</span><span id="Generator-605"><a href="#Generator-605"><span class="linenos"> 605</span></a> <span class="n">external</span><span class="p">,</span> -</span><span id="Generator-606"><a href="#Generator-606"><span class="linenos"> 606</span></a> <span class="n">unique</span><span class="p">,</span> -</span><span id="Generator-607"><a href="#Generator-607"><span class="linenos"> 607</span></a> <span class="n">materialized</span><span class="p">,</span> -</span><span id="Generator-608"><a href="#Generator-608"><span class="linenos"> 608</span></a> <span class="n">set_</span><span class="p">,</span> -</span><span id="Generator-609"><a href="#Generator-609"><span class="linenos"> 609</span></a> <span class="n">multiset</span><span class="p">,</span> -</span><span id="Generator-610"><a href="#Generator-610"><span class="linenos"> 610</span></a> <span class="n">global_temporary</span><span class="p">,</span> -</span><span id="Generator-611"><a href="#Generator-611"><span class="linenos"> 611</span></a> <span class="n">volatile</span><span class="p">,</span> -</span><span id="Generator-612"><a href="#Generator-612"><span class="linenos"> 612</span></a> <span class="n">postcreate_props_sql</span><span class="p">,</span> -</span><span id="Generator-613"><a href="#Generator-613"><span class="linenos"> 613</span></a> <span class="p">)</span> -</span><span id="Generator-614"><a href="#Generator-614"><span class="linenos"> 614</span></a> <span class="p">)</span> -</span><span id="Generator-615"><a href="#Generator-615"><span class="linenos"> 615</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-616"><a href="#Generator-616"><span class="linenos"> 616</span></a> <span class="s2">" WITH NO SCHEMA BINDING"</span> <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">"no_schema_binding"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-617"><a href="#Generator-617"><span class="linenos"> 617</span></a> <span class="p">)</span> -</span><span id="Generator-618"><a href="#Generator-618"><span class="linenos"> 618</span></a> -</span><span id="Generator-619"><a href="#Generator-619"><span class="linenos"> 619</span></a> <span class="n">post_expression_modifiers</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">data</span><span class="p">,</span> <span class="n">statistics</span><span class="p">,</span> <span class="n">no_primary_index</span><span class="p">))</span> -</span><span id="Generator-620"><a href="#Generator-620"><span class="linenos"> 620</span></a> -</span><span id="Generator-621"><a href="#Generator-621"><span class="linenos"> 621</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREATE</span><span class="si">{</span><span class="n">modifiers</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">properties_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">post_expression_modifiers</span><span class="si">}{</span><span class="n">index_sql</span><span class="si">}{</span><span class="n">no_schema_binding</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-622"><a href="#Generator-622"><span class="linenos"> 622</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_sql</span><span class="p">)</span> -</span><span id="Generator-623"><a href="#Generator-623"><span class="linenos"> 623</span></a> -</span><span id="Generator-624"><a href="#Generator-624"><span class="linenos"> 624</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-625"><a href="#Generator-625"><span class="linenos"> 625</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-626"><a href="#Generator-626"><span class="linenos"> 626</span></a> -</span><span id="Generator-627"><a href="#Generator-627"><span class="linenos"> 627</span></a> <span class="k">def</span> <span class="nf">prepend_ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-628"><a href="#Generator-628"><span class="linenos"> 628</span></a> <span class="n">with_</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">"with"</span><span class="p">)</span> -</span><span id="Generator-629"><a href="#Generator-629"><span class="linenos"> 629</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> -</span><span id="Generator-630"><a href="#Generator-630"><span class="linenos"> 630</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">with_</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-631"><a href="#Generator-631"><span class="linenos"> 631</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="Generator-632"><a href="#Generator-632"><span class="linenos"> 632</span></a> -</span><span id="Generator-633"><a href="#Generator-633"><span class="linenos"> 633</span></a> <span class="k">def</span> <span class="nf">with_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">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-634"><a href="#Generator-634"><span class="linenos"> 634</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-635"><a href="#Generator-635"><span class="linenos"> 635</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="s2">"RECURSIVE "</span> <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">"recursive"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-636"><a href="#Generator-636"><span class="linenos"> 636</span></a> -</span><span id="Generator-637"><a href="#Generator-637"><span class="linenos"> 637</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH </span><span class="si">{</span><span class="n">recursive</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-638"><a href="#Generator-638"><span class="linenos"> 638</span></a> -</span><span id="Generator-639"><a href="#Generator-639"><span class="linenos"> 639</span></a> <span class="k">def</span> <span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-640"><a href="#Generator-640"><span class="linenos"> 640</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator-641"><a href="#Generator-641"><span class="linenos"> 641</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-642"><a href="#Generator-642"><span class="linenos"> 642</span></a> -</span><span id="Generator-643"><a href="#Generator-643"><span class="linenos"> 643</span></a> <span class="k">def</span> <span class="nf">tablealias_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">TableAlias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-644"><a href="#Generator-644"><span class="linenos"> 644</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator-645"><a href="#Generator-645"><span class="linenos"> 645</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-646"><a href="#Generator-646"><span class="linenos"> 646</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-647"><a href="#Generator-647"><span class="linenos"> 647</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-648"><a href="#Generator-648"><span class="linenos"> 648</span></a> -</span><span id="Generator-649"><a href="#Generator-649"><span class="linenos"> 649</span></a> <span class="k">def</span> <span class="nf">bitstring_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">BitString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-650"><a href="#Generator-650"><span class="linenos"> 650</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator-651"><a href="#Generator-651"><span class="linenos"> 651</span></a> -</span><span id="Generator-652"><a href="#Generator-652"><span class="linenos"> 652</span></a> <span class="k">def</span> <span class="nf">hexstring_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">HexString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-653"><a href="#Generator-653"><span class="linenos"> 653</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator-654"><a href="#Generator-654"><span class="linenos"> 654</span></a> -</span><span id="Generator-655"><a href="#Generator-655"><span class="linenos"> 655</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-656"><a href="#Generator-656"><span class="linenos"> 656</span></a> <span class="n">type_value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="Generator-657"><a href="#Generator-657"><span class="linenos"> 657</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_value</span><span class="p">,</span> <span class="n">type_value</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> -</span><span id="Generator-658"><a href="#Generator-658"><span class="linenos"> 658</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-659"><a href="#Generator-659"><span class="linenos"> 659</span></a> <span class="n">interior</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-660"><a href="#Generator-660"><span class="linenos"> 660</span></a> <span class="n">values</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-661"><a href="#Generator-661"><span class="linenos"> 661</span></a> <span class="k">if</span> <span class="n">interior</span><span class="p">:</span> -</span><span id="Generator-662"><a href="#Generator-662"><span class="linenos"> 662</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">"nested"</span><span class="p">):</span> -</span><span id="Generator-663"><a href="#Generator-663"><span class="linenos"> 663</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="n">interior</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-664"><a href="#Generator-664"><span class="linenos"> 664</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">"values"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-665"><a href="#Generator-665"><span class="linenos"> 665</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="s2">"]"</span><span class="p">)</span> <span class="k">if</span> <span class="n">type_value</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">ARRAY</span> <span class="k">else</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> -</span><span id="Generator-666"><a href="#Generator-666"><span class="linenos"> 666</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-667"><a href="#Generator-667"><span class="linenos"> 667</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'values'</span><span class="p">)</span><span class="si">}{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-668"><a href="#Generator-668"><span class="linenos"> 668</span></a> <span class="p">)</span> -</span><span id="Generator-669"><a href="#Generator-669"><span class="linenos"> 669</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-670"><a href="#Generator-670"><span class="linenos"> 670</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">interior</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-671"><a href="#Generator-671"><span class="linenos"> 671</span></a> -</span><span id="Generator-672"><a href="#Generator-672"><span class="linenos"> 672</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}{</span><span class="n">nested</span><span class="si">}{</span><span class="n">values</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-673"><a href="#Generator-673"><span class="linenos"> 673</span></a> -</span><span id="Generator-674"><a href="#Generator-674"><span class="linenos"> 674</span></a> <span class="k">def</span> <span class="nf">directory_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">Directory</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-675"><a href="#Generator-675"><span class="linenos"> 675</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-676"><a href="#Generator-676"><span class="linenos"> 676</span></a> <span class="n">row_format</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">"row_format"</span><span class="p">)</span> -</span><span id="Generator-677"><a href="#Generator-677"><span class="linenos"> 677</span></a> <span class="n">row_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">row_format</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-678"><a href="#Generator-678"><span class="linenos"> 678</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">local</span><span class="si">}</span><span class="s2">DIRECTORY </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-679"><a href="#Generator-679"><span class="linenos"> 679</span></a> -</span><span id="Generator-680"><a href="#Generator-680"><span class="linenos"> 680</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-681"><a href="#Generator-681"><span class="linenos"> 681</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">"this"</span><span class="p">)</span> -</span><span id="Generator-682"><a href="#Generator-682"><span class="linenos"> 682</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-683"><a href="#Generator-683"><span class="linenos"> 683</span></a> <span class="n">using_sql</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-684"><a href="#Generator-684"><span class="linenos"> 684</span></a> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'using'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">', USING '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-685"><a href="#Generator-685"><span class="linenos"> 685</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">"using"</span><span class="p">)</span> -</span><span id="Generator-686"><a href="#Generator-686"><span class="linenos"> 686</span></a> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-687"><a href="#Generator-687"><span class="linenos"> 687</span></a> <span class="p">)</span> -</span><span id="Generator-688"><a href="#Generator-688"><span class="linenos"> 688</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="Generator-689"><a href="#Generator-689"><span class="linenos"> 689</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"DELETE</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">using_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-690"><a href="#Generator-690"><span class="linenos"> 690</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Generator-691"><a href="#Generator-691"><span class="linenos"> 691</span></a> -</span><span id="Generator-692"><a href="#Generator-692"><span class="linenos"> 692</span></a> <span class="k">def</span> <span class="nf">drop_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">Drop</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-693"><a href="#Generator-693"><span class="linenos"> 693</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">"this"</span><span class="p">)</span> -</span><span id="Generator-694"><a href="#Generator-694"><span class="linenos"> 694</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">"kind"</span><span class="p">]</span> -</span><span id="Generator-695"><a href="#Generator-695"><span class="linenos"> 695</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator-696"><a href="#Generator-696"><span class="linenos"> 696</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-697"><a href="#Generator-697"><span class="linenos"> 697</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="s2">" MATERIALIZED"</span> <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">"materialized"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-698"><a href="#Generator-698"><span class="linenos"> 698</span></a> <span class="n">cascade</span> <span class="o">=</span> <span class="s2">" CASCADE"</span> <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">"cascade"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-699"><a href="#Generator-699"><span class="linenos"> 699</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">temporary</span><span class="si">}{</span><span class="n">materialized</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">cascade</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-700"><a href="#Generator-700"><span class="linenos"> 700</span></a> -</span><span id="Generator-701"><a href="#Generator-701"><span class="linenos"> 701</span></a> <span class="k">def</span> <span class="nf">except_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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-702"><a href="#Generator-702"><span class="linenos"> 702</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> -</span><span id="Generator-703"><a href="#Generator-703"><span class="linenos"> 703</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator-704"><a href="#Generator-704"><span class="linenos"> 704</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> -</span><span id="Generator-705"><a href="#Generator-705"><span class="linenos"> 705</span></a> <span class="p">)</span> -</span><span id="Generator-706"><a href="#Generator-706"><span class="linenos"> 706</span></a> -</span><span id="Generator-707"><a href="#Generator-707"><span class="linenos"> 707</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-708"><a href="#Generator-708"><span class="linenos"> 708</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-354"><a href="#Generator-354"><span class="linenos"> 354</span></a> <span class="k">def</span> <span class="nf">indent</span><span class="p">(</span> +</span><span id="Generator-355"><a href="#Generator-355"><span class="linenos"> 355</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator-356"><a href="#Generator-356"><span class="linenos"> 356</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="Generator-357"><a href="#Generator-357"><span class="linenos"> 357</span></a> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="Generator-358"><a href="#Generator-358"><span class="linenos"> 358</span></a> <span class="n">pad</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-359"><a href="#Generator-359"><span class="linenos"> 359</span></a> <span class="n">skip_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-360"><a href="#Generator-360"><span class="linenos"> 360</span></a> <span class="n">skip_last</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-361"><a href="#Generator-361"><span class="linenos"> 361</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-362"><a href="#Generator-362"><span class="linenos"> 362</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator-363"><a href="#Generator-363"><span class="linenos"> 363</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator-364"><a href="#Generator-364"><span class="linenos"> 364</span></a> +</span><span id="Generator-365"><a href="#Generator-365"><span class="linenos"> 365</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="k">if</span> <span class="n">pad</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">pad</span> +</span><span id="Generator-366"><a href="#Generator-366"><span class="linenos"> 366</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-367"><a href="#Generator-367"><span class="linenos"> 367</span></a> +</span><span id="Generator-368"><a href="#Generator-368"><span class="linenos"> 368</span></a> <span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator-369"><a href="#Generator-369"><span class="linenos"> 369</span></a> <span class="n">line</span> +</span><span id="Generator-370"><a href="#Generator-370"><span class="linenos"> 370</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">skip_first</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">skip_last</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Generator-371"><a href="#Generator-371"><span class="linenos"> 371</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' '</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">level</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_indent</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">pad</span><span class="p">)</span><span class="si">}{</span><span class="n">line</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-372"><a href="#Generator-372"><span class="linenos"> 372</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> +</span><span id="Generator-373"><a href="#Generator-373"><span class="linenos"> 373</span></a> <span class="p">)</span> +</span><span id="Generator-374"><a href="#Generator-374"><span class="linenos"> 374</span></a> +</span><span id="Generator-375"><a href="#Generator-375"><span class="linenos"> 375</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span> +</span><span id="Generator-376"><a href="#Generator-376"><span class="linenos"> 376</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator-377"><a href="#Generator-377"><span class="linenos"> 377</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> +</span><span id="Generator-378"><a href="#Generator-378"><span class="linenos"> 378</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-379"><a href="#Generator-379"><span class="linenos"> 379</span></a> <span class="n">comment</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Generator-380"><a href="#Generator-380"><span class="linenos"> 380</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-381"><a href="#Generator-381"><span class="linenos"> 381</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Generator-382"><a href="#Generator-382"><span class="linenos"> 382</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Generator-383"><a href="#Generator-383"><span class="linenos"> 383</span></a> +</span><span id="Generator-384"><a href="#Generator-384"><span class="linenos"> 384</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="Generator-385"><a href="#Generator-385"><span class="linenos"> 385</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Generator-386"><a href="#Generator-386"><span class="linenos"> 386</span></a> +</span><span id="Generator-387"><a href="#Generator-387"><span class="linenos"> 387</span></a> <span class="k">if</span> <span class="n">key</span><span class="p">:</span> +</span><span id="Generator-388"><a href="#Generator-388"><span class="linenos"> 388</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> +</span><span id="Generator-389"><a href="#Generator-389"><span class="linenos"> 389</span></a> +</span><span id="Generator-390"><a href="#Generator-390"><span class="linenos"> 390</span></a> <span class="n">transform</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> +</span><span id="Generator-391"><a href="#Generator-391"><span class="linenos"> 391</span></a> +</span><span id="Generator-392"><a href="#Generator-392"><span class="linenos"> 392</span></a> <span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">transform</span><span class="p">):</span> +</span><span id="Generator-393"><a href="#Generator-393"><span class="linenos"> 393</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</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="Generator-394"><a href="#Generator-394"><span class="linenos"> 394</span></a> <span class="k">elif</span> <span class="n">transform</span><span class="p">:</span> +</span><span id="Generator-395"><a href="#Generator-395"><span class="linenos"> 395</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</span> +</span><span id="Generator-396"><a href="#Generator-396"><span class="linenos"> 396</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Generator-397"><a href="#Generator-397"><span class="linenos"> 397</span></a> <span class="n">exp_handler_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">_sql"</span> +</span><span id="Generator-398"><a href="#Generator-398"><span class="linenos"> 398</span></a> +</span><span id="Generator-399"><a href="#Generator-399"><span class="linenos"> 399</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">):</span> +</span><span id="Generator-400"><a href="#Generator-400"><span class="linenos"> 400</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">)(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-401"><a href="#Generator-401"><span class="linenos"> 401</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Generator-402"><a href="#Generator-402"><span class="linenos"> 402</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-403"><a href="#Generator-403"><span class="linenos"> 403</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">):</span> +</span><span id="Generator-404"><a href="#Generator-404"><span class="linenos"> 404</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">property_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-405"><a href="#Generator-405"><span class="linenos"> 405</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-406"><a href="#Generator-406"><span class="linenos"> 406</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-407"><a href="#Generator-407"><span class="linenos"> 407</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-408"><a href="#Generator-408"><span class="linenos"> 408</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected an Expression. Received </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-409"><a href="#Generator-409"><span class="linenos"> 409</span></a> +</span><span id="Generator-410"><a href="#Generator-410"><span class="linenos"> 410</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">comment</span> <span class="k">else</span> <span class="n">sql</span> +</span><span id="Generator-411"><a href="#Generator-411"><span class="linenos"> 411</span></a> +</span><span id="Generator-412"><a href="#Generator-412"><span class="linenos"> 412</span></a> <span class="k">def</span> <span class="nf">uncache_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">Uncache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-413"><a href="#Generator-413"><span class="linenos"> 413</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> +</span><span id="Generator-414"><a href="#Generator-414"><span class="linenos"> 414</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-415"><a href="#Generator-415"><span class="linenos"> 415</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNCACHE TABLE</span><span class="si">{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-416"><a href="#Generator-416"><span class="linenos"> 416</span></a> +</span><span id="Generator-417"><a href="#Generator-417"><span class="linenos"> 417</span></a> <span class="k">def</span> <span class="nf">cache_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">Cache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-418"><a href="#Generator-418"><span class="linenos"> 418</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="s2">" LAZY"</span> <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">"lazy"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-419"><a href="#Generator-419"><span class="linenos"> 419</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> +</span><span id="Generator-420"><a href="#Generator-420"><span class="linenos"> 420</span></a> <span class="n">options</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">"options"</span><span class="p">)</span> +</span><span id="Generator-421"><a href="#Generator-421"><span class="linenos"> 421</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OPTIONS(</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">options</span><span class="p">[</span><span class="mi">0</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">options</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-422"><a href="#Generator-422"><span class="linenos"> 422</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator-423"><a href="#Generator-423"><span class="linenos"> 423</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-424"><a href="#Generator-424"><span class="linenos"> 424</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CACHE</span><span class="si">{</span><span class="n">lazy</span><span class="si">}</span><span class="s2"> TABLE </span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">options</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-425"><a href="#Generator-425"><span class="linenos"> 425</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Generator-426"><a href="#Generator-426"><span class="linenos"> 426</span></a> +</span><span id="Generator-427"><a href="#Generator-427"><span class="linenos"> 427</span></a> <span class="k">def</span> <span class="nf">characterset_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">CharacterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-428"><a href="#Generator-428"><span class="linenos"> 428</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">Cast</span><span class="p">):</span> +</span><span id="Generator-429"><a href="#Generator-429"><span class="linenos"> 429</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHAR CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-430"><a href="#Generator-430"><span class="linenos"> 430</span></a> <span class="n">default</span> <span class="o">=</span> <span class="s2">"DEFAULT "</span> <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">"default"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-431"><a href="#Generator-431"><span class="linenos"> 431</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-432"><a href="#Generator-432"><span class="linenos"> 432</span></a> +</span><span id="Generator-433"><a href="#Generator-433"><span class="linenos"> 433</span></a> <span class="k">def</span> <span class="nf">column_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">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-434"><a href="#Generator-434"><span class="linenos"> 434</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator-435"><a href="#Generator-435"><span class="linenos"> 435</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> +</span><span id="Generator-436"><a href="#Generator-436"><span class="linenos"> 436</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="Generator-437"><a href="#Generator-437"><span class="linenos"> 437</span></a> <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">"catalog"</span><span class="p">),</span> +</span><span id="Generator-438"><a href="#Generator-438"><span class="linenos"> 438</span></a> <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">"db"</span><span class="p">),</span> +</span><span id="Generator-439"><a href="#Generator-439"><span class="linenos"> 439</span></a> <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">"table"</span><span class="p">),</span> +</span><span id="Generator-440"><a href="#Generator-440"><span class="linenos"> 440</span></a> <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">"this"</span><span class="p">),</span> +</span><span id="Generator-441"><a href="#Generator-441"><span class="linenos"> 441</span></a> <span class="p">)</span> +</span><span id="Generator-442"><a href="#Generator-442"><span class="linenos"> 442</span></a> <span class="k">if</span> <span class="n">part</span> +</span><span id="Generator-443"><a href="#Generator-443"><span class="linenos"> 443</span></a> <span class="p">)</span> +</span><span id="Generator-444"><a href="#Generator-444"><span class="linenos"> 444</span></a> +</span><span id="Generator-445"><a href="#Generator-445"><span class="linenos"> 445</span></a> <span class="k">def</span> <span class="nf">columndef_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">ColumnDef</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-446"><a href="#Generator-446"><span class="linenos"> 446</span></a> <span class="n">column</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">"this"</span><span class="p">)</span> +</span><span id="Generator-447"><a href="#Generator-447"><span class="linenos"> 447</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="Generator-448"><a href="#Generator-448"><span class="linenos"> 448</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"constraints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-449"><a href="#Generator-449"><span class="linenos"> 449</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">"IF NOT EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-450"><a href="#Generator-450"><span class="linenos"> 450</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-451"><a href="#Generator-451"><span class="linenos"> 451</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">constraints</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-452"><a href="#Generator-452"><span class="linenos"> 452</span></a> +</span><span id="Generator-453"><a href="#Generator-453"><span class="linenos"> 453</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">column</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-454"><a href="#Generator-454"><span class="linenos"> 454</span></a> +</span><span id="Generator-455"><a href="#Generator-455"><span class="linenos"> 455</span></a> <span class="k">def</span> <span class="nf">columnconstraint_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">ColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-456"><a href="#Generator-456"><span class="linenos"> 456</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">"this"</span><span class="p">)</span> +</span><span id="Generator-457"><a href="#Generator-457"><span class="linenos"> 457</span></a> <span class="n">kind_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">)</span> +</span><span id="Generator-458"><a href="#Generator-458"><span class="linenos"> 458</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">kind_sql</span> +</span><span id="Generator-459"><a href="#Generator-459"><span class="linenos"> 459</span></a> +</span><span id="Generator-460"><a href="#Generator-460"><span class="linenos"> 460</span></a> <span class="k">def</span> <span class="nf">autoincrementcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-461"><a href="#Generator-461"><span class="linenos"> 461</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">token_sql</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">)</span> +</span><span id="Generator-462"><a href="#Generator-462"><span class="linenos"> 462</span></a> +</span><span id="Generator-463"><a href="#Generator-463"><span class="linenos"> 463</span></a> <span class="k">def</span> <span class="nf">compresscolumnconstraint_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">CompressColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-464"><a href="#Generator-464"><span class="linenos"> 464</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="nb">list</span><span class="p">):</span> +</span><span id="Generator-465"><a href="#Generator-465"><span class="linenos"> 465</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Generator-466"><a href="#Generator-466"><span class="linenos"> 466</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-467"><a href="#Generator-467"><span class="linenos"> 467</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">"this"</span><span class="p">)</span> +</span><span id="Generator-468"><a href="#Generator-468"><span class="linenos"> 468</span></a> +</span><span id="Generator-469"><a href="#Generator-469"><span class="linenos"> 469</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COMPRESS </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-470"><a href="#Generator-470"><span class="linenos"> 470</span></a> +</span><span id="Generator-471"><a href="#Generator-471"><span class="linenos"> 471</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> +</span><span id="Generator-472"><a href="#Generator-472"><span class="linenos"> 472</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">GeneratedAsIdentityColumnConstraint</span> +</span><span id="Generator-473"><a href="#Generator-473"><span class="linenos"> 473</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-474"><a href="#Generator-474"><span class="linenos"> 474</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-475"><a href="#Generator-475"><span class="linenos"> 475</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-476"><a href="#Generator-476"><span class="linenos"> 476</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">" ALWAYS "</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">" BY DEFAULT "</span> +</span><span id="Generator-477"><a href="#Generator-477"><span class="linenos"> 477</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> +</span><span id="Generator-478"><a href="#Generator-478"><span class="linenos"> 478</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"START WITH </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-479"><a href="#Generator-479"><span class="linenos"> 479</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> +</span><span id="Generator-480"><a href="#Generator-480"><span class="linenos"> 480</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT BY </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-481"><a href="#Generator-481"><span class="linenos"> 481</span></a> <span class="n">minvalue</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">"minvalue"</span><span class="p">)</span> +</span><span id="Generator-482"><a href="#Generator-482"><span class="linenos"> 482</span></a> <span class="n">minvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MINVALUE </span><span class="si">{</span><span class="n">minvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">minvalue</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-483"><a href="#Generator-483"><span class="linenos"> 483</span></a> <span class="n">maxvalue</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">"maxvalue"</span><span class="p">)</span> +</span><span id="Generator-484"><a href="#Generator-484"><span class="linenos"> 484</span></a> <span class="n">maxvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAXVALUE </span><span class="si">{</span><span class="n">maxvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">maxvalue</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-485"><a href="#Generator-485"><span class="linenos"> 485</span></a> <span class="n">cycle</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">"cycle"</span><span class="p">)</span> +</span><span id="Generator-486"><a href="#Generator-486"><span class="linenos"> 486</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-487"><a href="#Generator-487"><span class="linenos"> 487</span></a> <span class="k">if</span> <span class="n">cycle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-488"><a href="#Generator-488"><span class="linenos"> 488</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' NO'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">cycle</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> CYCLE"</span> +</span><span id="Generator-489"><a href="#Generator-489"><span class="linenos"> 489</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="n">cycle_sql</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">increment</span> <span class="k">else</span> <span class="n">cycle_sql</span> +</span><span id="Generator-490"><a href="#Generator-490"><span class="linenos"> 490</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-491"><a href="#Generator-491"><span class="linenos"> 491</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">or</span> <span class="n">increment</span> <span class="ow">or</span> <span class="n">cycle_sql</span><span class="p">:</span> +</span><span id="Generator-492"><a href="#Generator-492"><span class="linenos"> 492</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}{</span><span class="n">minvalue</span><span class="si">}{</span><span class="n">maxvalue</span><span class="si">}{</span><span class="n">cycle_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-493"><a href="#Generator-493"><span class="linenos"> 493</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">sequence_opts</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-494"><a href="#Generator-494"><span class="linenos"> 494</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"GENERATED</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">AS IDENTITY</span><span class="si">{</span><span class="n">sequence_opts</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-495"><a href="#Generator-495"><span class="linenos"> 495</span></a> +</span><span id="Generator-496"><a href="#Generator-496"><span class="linenos"> 496</span></a> <span class="k">def</span> <span class="nf">notnullcolumnconstraint_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">NotNullColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-497"><a href="#Generator-497"><span class="linenos"> 497</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'allow_null'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'NOT '</span><span class="si">}</span><span class="s2">NULL"</span> +</span><span id="Generator-498"><a href="#Generator-498"><span class="linenos"> 498</span></a> +</span><span id="Generator-499"><a href="#Generator-499"><span class="linenos"> 499</span></a> <span class="k">def</span> <span class="nf">primarykeycolumnconstraint_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">PrimaryKeyColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-500"><a href="#Generator-500"><span class="linenos"> 500</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> +</span><span id="Generator-501"><a href="#Generator-501"><span class="linenos"> 501</span></a> <span class="k">if</span> <span class="n">desc</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-502"><a href="#Generator-502"><span class="linenos"> 502</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY</span><span class="si">{</span><span class="s1">' DESC'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">desc</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ASC'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-503"><a href="#Generator-503"><span class="linenos"> 503</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY"</span> +</span><span id="Generator-504"><a href="#Generator-504"><span class="linenos"> 504</span></a> +</span><span id="Generator-505"><a href="#Generator-505"><span class="linenos"> 505</span></a> <span class="k">def</span> <span class="nf">uniquecolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-506"><a href="#Generator-506"><span class="linenos"> 506</span></a> <span class="k">return</span> <span class="s2">"UNIQUE"</span> +</span><span id="Generator-507"><a href="#Generator-507"><span class="linenos"> 507</span></a> +</span><span id="Generator-508"><a href="#Generator-508"><span class="linenos"> 508</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-509"><a href="#Generator-509"><span class="linenos"> 509</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Generator-510"><a href="#Generator-510"><span class="linenos"> 510</span></a> <span class="n">properties</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">"properties"</span><span class="p">)</span> +</span><span id="Generator-511"><a href="#Generator-511"><span class="linenos"> 511</span></a> <span class="n">properties_exp</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="Generator-512"><a href="#Generator-512"><span class="linenos"> 512</span></a> <span class="n">properties_locs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">locate_properties</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="p">{}</span> +</span><span id="Generator-513"><a href="#Generator-513"><span class="linenos"> 513</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">)</span> <span class="ow">or</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> +</span><span id="Generator-514"><a href="#Generator-514"><span class="linenos"> 514</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span> +</span><span id="Generator-515"><a href="#Generator-515"><span class="linenos"> 515</span></a> <span class="p">):</span> +</span><span id="Generator-516"><a href="#Generator-516"><span class="linenos"> 516</span></a> <span class="n">properties_exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="Generator-517"><a href="#Generator-517"><span class="linenos"> 517</span></a> <span class="s2">"properties"</span><span class="p">,</span> +</span><span id="Generator-518"><a href="#Generator-518"><span class="linenos"> 518</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="Generator-519"><a href="#Generator-519"><span class="linenos"> 519</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="Generator-520"><a href="#Generator-520"><span class="linenos"> 520</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">],</span> +</span><span id="Generator-521"><a href="#Generator-521"><span class="linenos"> 521</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">],</span> +</span><span id="Generator-522"><a href="#Generator-522"><span class="linenos"> 522</span></a> <span class="p">]</span> +</span><span id="Generator-523"><a href="#Generator-523"><span class="linenos"> 523</span></a> <span class="p">),</span> +</span><span id="Generator-524"><a href="#Generator-524"><span class="linenos"> 524</span></a> <span class="p">)</span> +</span><span id="Generator-525"><a href="#Generator-525"><span class="linenos"> 525</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">"TABLE"</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">):</span> +</span><span id="Generator-526"><a href="#Generator-526"><span class="linenos"> 526</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator-527"><a href="#Generator-527"><span class="linenos"> 527</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator-528"><a href="#Generator-528"><span class="linenos"> 528</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]),</span> +</span><span id="Generator-529"><a href="#Generator-529"><span class="linenos"> 529</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-530"><a href="#Generator-530"><span class="linenos"> 530</span></a> <span class="p">)</span> +</span><span id="Generator-531"><a href="#Generator-531"><span class="linenos"> 531</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-532"><a href="#Generator-532"><span class="linenos"> 532</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this_name</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">this_properties</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-533"><a href="#Generator-533"><span class="linenos"> 533</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-534"><a href="#Generator-534"><span class="linenos"> 534</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-535"><a href="#Generator-535"><span class="linenos"> 535</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">"this"</span><span class="p">)</span> +</span><span id="Generator-536"><a href="#Generator-536"><span class="linenos"> 536</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">properties_exp</span><span class="p">,</span> <span class="s2">"properties"</span><span class="p">)</span> +</span><span id="Generator-537"><a href="#Generator-537"><span class="linenos"> 537</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="s2">" BEGIN"</span> <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">"begin"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-538"><a href="#Generator-538"><span class="linenos"> 538</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator-539"><a href="#Generator-539"><span class="linenos"> 539</span></a> <span class="k">if</span> <span class="n">expression_sql</span><span class="p">:</span> +</span><span id="Generator-540"><a href="#Generator-540"><span class="linenos"> 540</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">begin</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-541"><a href="#Generator-541"><span class="linenos"> 541</span></a> +</span><span id="Generator-542"><a href="#Generator-542"><span class="linenos"> 542</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">):</span> +</span><span id="Generator-543"><a href="#Generator-543"><span class="linenos"> 543</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">):</span> +</span><span id="Generator-544"><a href="#Generator-544"><span class="linenos"> 544</span></a> <span class="n">postalias_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator-545"><a href="#Generator-545"><span class="linenos"> 545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="Generator-546"><a href="#Generator-546"><span class="linenos"> 546</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span> +</span><span id="Generator-547"><a href="#Generator-547"><span class="linenos"> 547</span></a> <span class="p">),</span> +</span><span id="Generator-548"><a href="#Generator-548"><span class="linenos"> 548</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-549"><a href="#Generator-549"><span class="linenos"> 549</span></a> <span class="p">)</span> +</span><span id="Generator-550"><a href="#Generator-550"><span class="linenos"> 550</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">postalias_props_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-551"><a href="#Generator-551"><span class="linenos"> 551</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-552"><a href="#Generator-552"><span class="linenos"> 552</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-553"><a href="#Generator-553"><span class="linenos"> 553</span></a> +</span><span id="Generator-554"><a href="#Generator-554"><span class="linenos"> 554</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="s2">" OR REPLACE"</span> <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">"replace"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-555"><a href="#Generator-555"><span class="linenos"> 555</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-556"><a href="#Generator-556"><span class="linenos"> 556</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF NOT EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-557"><a href="#Generator-557"><span class="linenos"> 557</span></a> +</span><span id="Generator-558"><a href="#Generator-558"><span class="linenos"> 558</span></a> <span class="n">indexes</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">"indexes"</span><span class="p">)</span> +</span><span id="Generator-559"><a href="#Generator-559"><span class="linenos"> 559</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-560"><a href="#Generator-560"><span class="linenos"> 560</span></a> <span class="k">if</span> <span class="n">indexes</span><span class="p">:</span> +</span><span id="Generator-561"><a href="#Generator-561"><span class="linenos"> 561</span></a> <span class="n">indexes_sql</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator-562"><a href="#Generator-562"><span class="linenos"> 562</span></a> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="n">indexes</span><span class="p">:</span> +</span><span id="Generator-563"><a href="#Generator-563"><span class="linenos"> 563</span></a> <span class="n">ind_unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <span class="k">if</span> <span class="n">index</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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-564"><a href="#Generator-564"><span class="linenos"> 564</span></a> <span class="n">ind_primary</span> <span class="o">=</span> <span class="s2">" PRIMARY"</span> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-565"><a href="#Generator-565"><span class="linenos"> 565</span></a> <span class="n">ind_amp</span> <span class="o">=</span> <span class="s2">" AMP"</span> <span class="k">if</span> <span class="n">index</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">"amp"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-566"><a href="#Generator-566"><span class="linenos"> 566</span></a> <span class="n">ind_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">index</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">index</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-567"><a href="#Generator-567"><span class="linenos"> 567</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-568"><a href="#Generator-568"><span class="linenos"> 568</span></a> <span class="sa">f</span><span class="s1">' (</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">index</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="o">=</span><span class="s2">"columns"</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="s1">)'</span> +</span><span id="Generator-569"><a href="#Generator-569"><span class="linenos"> 569</span></a> <span class="k">if</span> <span class="n">index</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">"columns"</span><span class="p">)</span> +</span><span id="Generator-570"><a href="#Generator-570"><span class="linenos"> 570</span></a> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-571"><a href="#Generator-571"><span class="linenos"> 571</span></a> <span class="p">)</span> +</span><span id="Generator-572"><a href="#Generator-572"><span class="linenos"> 572</span></a> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> +</span><span id="Generator-573"><a href="#Generator-573"><span class="linenos"> 573</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span> +</span><span id="Generator-574"><a href="#Generator-574"><span class="linenos"> 574</span></a> <span class="p">):</span> +</span><span id="Generator-575"><a href="#Generator-575"><span class="linenos"> 575</span></a> <span class="n">postindex_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator-576"><a href="#Generator-576"><span class="linenos"> 576</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="Generator-577"><a href="#Generator-577"><span class="linenos"> 577</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span> +</span><span id="Generator-578"><a href="#Generator-578"><span class="linenos"> 578</span></a> <span class="p">),</span> +</span><span id="Generator-579"><a href="#Generator-579"><span class="linenos"> 579</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-580"><a href="#Generator-580"><span class="linenos"> 580</span></a> <span class="p">)</span> +</span><span id="Generator-581"><a href="#Generator-581"><span class="linenos"> 581</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">postindex_props_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-582"><a href="#Generator-582"><span class="linenos"> 582</span></a> +</span><span id="Generator-583"><a href="#Generator-583"><span class="linenos"> 583</span></a> <span class="n">indexes_sql</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Generator-584"><a href="#Generator-584"><span class="linenos"> 584</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_unique</span><span class="si">}{</span><span class="n">ind_primary</span><span class="si">}{</span><span class="n">ind_amp</span><span class="si">}</span><span class="s2"> INDEX</span><span class="si">{</span><span class="n">ind_name</span><span class="si">}{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-585"><a href="#Generator-585"><span class="linenos"> 585</span></a> <span class="p">)</span> +</span><span id="Generator-586"><a href="#Generator-586"><span class="linenos"> 586</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">indexes_sql</span><span class="p">)</span> +</span><span id="Generator-587"><a href="#Generator-587"><span class="linenos"> 587</span></a> +</span><span id="Generator-588"><a href="#Generator-588"><span class="linenos"> 588</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-589"><a href="#Generator-589"><span class="linenos"> 589</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">):</span> +</span><span id="Generator-590"><a href="#Generator-590"><span class="linenos"> 590</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator-591"><a href="#Generator-591"><span class="linenos"> 591</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]),</span> +</span><span id="Generator-592"><a href="#Generator-592"><span class="linenos"> 592</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="Generator-593"><a href="#Generator-593"><span class="linenos"> 593</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="Generator-594"><a href="#Generator-594"><span class="linenos"> 594</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-595"><a href="#Generator-595"><span class="linenos"> 595</span></a> <span class="p">)</span> +</span><span id="Generator-596"><a href="#Generator-596"><span class="linenos"> 596</span></a> +</span><span id="Generator-597"><a href="#Generator-597"><span class="linenos"> 597</span></a> <span class="n">modifiers</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">replace</span><span class="p">,</span> <span class="n">unique</span><span class="p">,</span> <span class="n">postcreate_props_sql</span><span class="p">))</span> +</span><span id="Generator-598"><a href="#Generator-598"><span class="linenos"> 598</span></a> +</span><span id="Generator-599"><a href="#Generator-599"><span class="linenos"> 599</span></a> <span class="n">postexpression_props_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-600"><a href="#Generator-600"><span class="linenos"> 600</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">):</span> +</span><span id="Generator-601"><a href="#Generator-601"><span class="linenos"> 601</span></a> <span class="n">postexpression_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator-602"><a href="#Generator-602"><span class="linenos"> 602</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="Generator-603"><a href="#Generator-603"><span class="linenos"> 603</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">]</span> +</span><span id="Generator-604"><a href="#Generator-604"><span class="linenos"> 604</span></a> <span class="p">),</span> +</span><span id="Generator-605"><a href="#Generator-605"><span class="linenos"> 605</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="Generator-606"><a href="#Generator-606"><span class="linenos"> 606</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="Generator-607"><a href="#Generator-607"><span class="linenos"> 607</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-608"><a href="#Generator-608"><span class="linenos"> 608</span></a> <span class="p">)</span> +</span><span id="Generator-609"><a href="#Generator-609"><span class="linenos"> 609</span></a> +</span><span id="Generator-610"><a href="#Generator-610"><span class="linenos"> 610</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-611"><a href="#Generator-611"><span class="linenos"> 611</span></a> <span class="s2">" WITH NO SCHEMA BINDING"</span> <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">"no_schema_binding"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-612"><a href="#Generator-612"><span class="linenos"> 612</span></a> <span class="p">)</span> +</span><span id="Generator-613"><a href="#Generator-613"><span class="linenos"> 613</span></a> +</span><span id="Generator-614"><a href="#Generator-614"><span class="linenos"> 614</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREATE</span><span class="si">{</span><span class="n">modifiers</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">properties_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">postexpression_props_sql</span><span class="si">}{</span><span class="n">index_sql</span><span class="si">}{</span><span class="n">no_schema_binding</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-615"><a href="#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">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_sql</span><span class="p">)</span> +</span><span id="Generator-616"><a href="#Generator-616"><span class="linenos"> 616</span></a> +</span><span id="Generator-617"><a href="#Generator-617"><span class="linenos"> 617</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-618"><a href="#Generator-618"><span class="linenos"> 618</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-619"><a href="#Generator-619"><span class="linenos"> 619</span></a> +</span><span id="Generator-620"><a href="#Generator-620"><span class="linenos"> 620</span></a> <span class="k">def</span> <span class="nf">prepend_ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-621"><a href="#Generator-621"><span class="linenos"> 621</span></a> <span class="n">with_</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">"with"</span><span class="p">)</span> +</span><span id="Generator-622"><a href="#Generator-622"><span class="linenos"> 622</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> +</span><span id="Generator-623"><a href="#Generator-623"><span class="linenos"> 623</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">with_</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-624"><a href="#Generator-624"><span class="linenos"> 624</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator-625"><a href="#Generator-625"><span class="linenos"> 625</span></a> +</span><span id="Generator-626"><a href="#Generator-626"><span class="linenos"> 626</span></a> <span class="k">def</span> <span class="nf">with_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">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-627"><a href="#Generator-627"><span class="linenos"> 627</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-628"><a href="#Generator-628"><span class="linenos"> 628</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="s2">"RECURSIVE "</span> <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">"recursive"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-629"><a href="#Generator-629"><span class="linenos"> 629</span></a> +</span><span id="Generator-630"><a href="#Generator-630"><span class="linenos"> 630</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH </span><span class="si">{</span><span class="n">recursive</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-631"><a href="#Generator-631"><span class="linenos"> 631</span></a> +</span><span id="Generator-632"><a href="#Generator-632"><span class="linenos"> 632</span></a> <span class="k">def</span> <span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-633"><a href="#Generator-633"><span class="linenos"> 633</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-634"><a href="#Generator-634"><span class="linenos"> 634</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-635"><a href="#Generator-635"><span class="linenos"> 635</span></a> +</span><span id="Generator-636"><a href="#Generator-636"><span class="linenos"> 636</span></a> <span class="k">def</span> <span class="nf">tablealias_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">TableAlias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-637"><a href="#Generator-637"><span class="linenos"> 637</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator-638"><a href="#Generator-638"><span class="linenos"> 638</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-639"><a href="#Generator-639"><span class="linenos"> 639</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-640"><a href="#Generator-640"><span class="linenos"> 640</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-641"><a href="#Generator-641"><span class="linenos"> 641</span></a> +</span><span id="Generator-642"><a href="#Generator-642"><span class="linenos"> 642</span></a> <span class="k">def</span> <span class="nf">bitstring_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">BitString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-643"><a href="#Generator-643"><span class="linenos"> 643</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator-644"><a href="#Generator-644"><span class="linenos"> 644</span></a> +</span><span id="Generator-645"><a href="#Generator-645"><span class="linenos"> 645</span></a> <span class="k">def</span> <span class="nf">hexstring_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">HexString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-646"><a href="#Generator-646"><span class="linenos"> 646</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator-647"><a href="#Generator-647"><span class="linenos"> 647</span></a> +</span><span id="Generator-648"><a href="#Generator-648"><span class="linenos"> 648</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-649"><a href="#Generator-649"><span class="linenos"> 649</span></a> <span class="n">type_value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="Generator-650"><a href="#Generator-650"><span class="linenos"> 650</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_value</span><span class="p">,</span> <span class="n">type_value</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> +</span><span id="Generator-651"><a href="#Generator-651"><span class="linenos"> 651</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-652"><a href="#Generator-652"><span class="linenos"> 652</span></a> <span class="n">interior</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-653"><a href="#Generator-653"><span class="linenos"> 653</span></a> <span class="n">values</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-654"><a href="#Generator-654"><span class="linenos"> 654</span></a> <span class="k">if</span> <span class="n">interior</span><span class="p">:</span> +</span><span id="Generator-655"><a href="#Generator-655"><span class="linenos"> 655</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">"nested"</span><span class="p">):</span> +</span><span id="Generator-656"><a href="#Generator-656"><span class="linenos"> 656</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="n">interior</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-657"><a href="#Generator-657"><span class="linenos"> 657</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">"values"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-658"><a href="#Generator-658"><span class="linenos"> 658</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="s2">"]"</span><span class="p">)</span> <span class="k">if</span> <span class="n">type_value</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">ARRAY</span> <span class="k">else</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> +</span><span id="Generator-659"><a href="#Generator-659"><span class="linenos"> 659</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-660"><a href="#Generator-660"><span class="linenos"> 660</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'values'</span><span class="p">)</span><span class="si">}{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-661"><a href="#Generator-661"><span class="linenos"> 661</span></a> <span class="p">)</span> +</span><span id="Generator-662"><a href="#Generator-662"><span class="linenos"> 662</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-663"><a href="#Generator-663"><span class="linenos"> 663</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">interior</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-664"><a href="#Generator-664"><span class="linenos"> 664</span></a> +</span><span id="Generator-665"><a href="#Generator-665"><span class="linenos"> 665</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}{</span><span class="n">nested</span><span class="si">}{</span><span class="n">values</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-666"><a href="#Generator-666"><span class="linenos"> 666</span></a> +</span><span id="Generator-667"><a href="#Generator-667"><span class="linenos"> 667</span></a> <span class="k">def</span> <span class="nf">directory_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">Directory</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-668"><a href="#Generator-668"><span class="linenos"> 668</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-669"><a href="#Generator-669"><span class="linenos"> 669</span></a> <span class="n">row_format</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">"row_format"</span><span class="p">)</span> +</span><span id="Generator-670"><a href="#Generator-670"><span class="linenos"> 670</span></a> <span class="n">row_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">row_format</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-671"><a href="#Generator-671"><span class="linenos"> 671</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">local</span><span class="si">}</span><span class="s2">DIRECTORY </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-672"><a href="#Generator-672"><span class="linenos"> 672</span></a> +</span><span id="Generator-673"><a href="#Generator-673"><span class="linenos"> 673</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-674"><a href="#Generator-674"><span class="linenos"> 674</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">"this"</span><span class="p">)</span> +</span><span id="Generator-675"><a href="#Generator-675"><span class="linenos"> 675</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-676"><a href="#Generator-676"><span class="linenos"> 676</span></a> <span class="n">using_sql</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-677"><a href="#Generator-677"><span class="linenos"> 677</span></a> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'using'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">', USING '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-678"><a href="#Generator-678"><span class="linenos"> 678</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">"using"</span><span class="p">)</span> +</span><span id="Generator-679"><a href="#Generator-679"><span class="linenos"> 679</span></a> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-680"><a href="#Generator-680"><span class="linenos"> 680</span></a> <span class="p">)</span> +</span><span id="Generator-681"><a href="#Generator-681"><span class="linenos"> 681</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="Generator-682"><a href="#Generator-682"><span class="linenos"> 682</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"DELETE</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">using_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-683"><a href="#Generator-683"><span class="linenos"> 683</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Generator-684"><a href="#Generator-684"><span class="linenos"> 684</span></a> +</span><span id="Generator-685"><a href="#Generator-685"><span class="linenos"> 685</span></a> <span class="k">def</span> <span class="nf">drop_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">Drop</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-686"><a href="#Generator-686"><span class="linenos"> 686</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">"this"</span><span class="p">)</span> +</span><span id="Generator-687"><a href="#Generator-687"><span class="linenos"> 687</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">"kind"</span><span class="p">]</span> +</span><span id="Generator-688"><a href="#Generator-688"><span class="linenos"> 688</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator-689"><a href="#Generator-689"><span class="linenos"> 689</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-690"><a href="#Generator-690"><span class="linenos"> 690</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="s2">" MATERIALIZED"</span> <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">"materialized"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-691"><a href="#Generator-691"><span class="linenos"> 691</span></a> <span class="n">cascade</span> <span class="o">=</span> <span class="s2">" CASCADE"</span> <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">"cascade"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-692"><a href="#Generator-692"><span class="linenos"> 692</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">temporary</span><span class="si">}{</span><span class="n">materialized</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">cascade</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-693"><a href="#Generator-693"><span class="linenos"> 693</span></a> +</span><span id="Generator-694"><a href="#Generator-694"><span class="linenos"> 694</span></a> <span class="k">def</span> <span class="nf">except_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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-695"><a href="#Generator-695"><span class="linenos"> 695</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> +</span><span id="Generator-696"><a href="#Generator-696"><span class="linenos"> 696</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator-697"><a href="#Generator-697"><span class="linenos"> 697</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> +</span><span id="Generator-698"><a href="#Generator-698"><span class="linenos"> 698</span></a> <span class="p">)</span> +</span><span id="Generator-699"><a href="#Generator-699"><span class="linenos"> 699</span></a> +</span><span id="Generator-700"><a href="#Generator-700"><span class="linenos"> 700</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-701"><a href="#Generator-701"><span class="linenos"> 701</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-702"><a href="#Generator-702"><span class="linenos"> 702</span></a> +</span><span id="Generator-703"><a href="#Generator-703"><span class="linenos"> 703</span></a> <span class="k">def</span> <span class="nf">fetch_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">Fetch</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-704"><a href="#Generator-704"><span class="linenos"> 704</span></a> <span class="n">direction</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">"direction"</span><span class="p">)</span> +</span><span id="Generator-705"><a href="#Generator-705"><span class="linenos"> 705</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">direction</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-706"><a href="#Generator-706"><span class="linenos"> 706</span></a> <span class="n">count</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">"count"</span><span class="p">)</span> +</span><span id="Generator-707"><a href="#Generator-707"><span class="linenos"> 707</span></a> <span class="n">count</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">count</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">count</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-708"><a href="#Generator-708"><span class="linenos"> 708</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FETCH'</span><span class="p">)</span><span class="si">}{</span><span class="n">direction</span><span class="si">}{</span><span class="n">count</span><span class="si">}</span><span class="s2"> ROWS ONLY"</span> </span><span id="Generator-709"><a href="#Generator-709"><span class="linenos"> 709</span></a> -</span><span id="Generator-710"><a href="#Generator-710"><span class="linenos"> 710</span></a> <span class="k">def</span> <span class="nf">fetch_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">Fetch</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-711"><a href="#Generator-711"><span class="linenos"> 711</span></a> <span class="n">direction</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">"direction"</span><span class="p">)</span> -</span><span id="Generator-712"><a href="#Generator-712"><span class="linenos"> 712</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">direction</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-713"><a href="#Generator-713"><span class="linenos"> 713</span></a> <span class="n">count</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">"count"</span><span class="p">)</span> -</span><span id="Generator-714"><a href="#Generator-714"><span class="linenos"> 714</span></a> <span class="n">count</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">count</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">count</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-715"><a href="#Generator-715"><span class="linenos"> 715</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FETCH'</span><span class="p">)</span><span class="si">}{</span><span class="n">direction</span><span class="si">}{</span><span class="n">count</span><span class="si">}</span><span class="s2"> ROWS ONLY"</span> -</span><span id="Generator-716"><a href="#Generator-716"><span class="linenos"> 716</span></a> -</span><span id="Generator-717"><a href="#Generator-717"><span class="linenos"> 717</span></a> <span class="k">def</span> <span class="nf">filter_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">Filter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-718"><a href="#Generator-718"><span class="linenos"> 718</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">"this"</span><span class="p">)</span> -</span><span id="Generator-719"><a href="#Generator-719"><span class="linenos"> 719</span></a> <span class="n">where</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">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># where has a leading space</span> -</span><span id="Generator-720"><a href="#Generator-720"><span class="linenos"> 720</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FILTER(</span><span class="si">{</span><span class="n">where</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-721"><a href="#Generator-721"><span class="linenos"> 721</span></a> -</span><span id="Generator-722"><a href="#Generator-722"><span class="linenos"> 722</span></a> <span class="k">def</span> <span class="nf">hint_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">Hint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-723"><a href="#Generator-723"><span class="linenos"> 723</span></a> <span class="k">if</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">"this"</span><span class="p">):</span> -</span><span id="Generator-724"><a href="#Generator-724"><span class="linenos"> 724</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Hints are not supported"</span><span class="p">)</span> -</span><span id="Generator-725"><a href="#Generator-725"><span class="linenos"> 725</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Generator-726"><a href="#Generator-726"><span class="linenos"> 726</span></a> -</span><span id="Generator-727"><a href="#Generator-727"><span class="linenos"> 727</span></a> <span class="k">def</span> <span class="nf">index_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">Index</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-728"><a href="#Generator-728"><span class="linenos"> 728</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">"this"</span><span class="p">)</span> -</span><span id="Generator-729"><a href="#Generator-729"><span class="linenos"> 729</span></a> <span class="n">table</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">"table"</span><span class="p">)</span> -</span><span id="Generator-730"><a href="#Generator-730"><span class="linenos"> 730</span></a> <span class="n">columns</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">"columns"</span><span class="p">)</span> -</span><span id="Generator-731"><a href="#Generator-731"><span class="linenos"> 731</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-732"><a href="#Generator-732"><span class="linenos"> 732</span></a> -</span><span id="Generator-733"><a href="#Generator-733"><span class="linenos"> 733</span></a> <span class="k">def</span> <span class="nf">identifier_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">Identifier</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-734"><a href="#Generator-734"><span class="linenos"> 734</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> -</span><span id="Generator-735"><a href="#Generator-735"><span class="linenos"> 735</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">else</span> <span class="n">text</span> -</span><span id="Generator-736"><a href="#Generator-736"><span class="linenos"> 736</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span><span class="p">)</span> -</span><span id="Generator-737"><a href="#Generator-737"><span class="linenos"> 737</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">"quoted"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span><span class="p">:</span> -</span><span id="Generator-738"><a href="#Generator-738"><span class="linenos"> 738</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-739"><a href="#Generator-739"><span class="linenos"> 739</span></a> <span class="k">return</span> <span class="n">text</span> -</span><span id="Generator-740"><a href="#Generator-740"><span class="linenos"> 740</span></a> -</span><span id="Generator-741"><a href="#Generator-741"><span class="linenos"> 741</span></a> <span class="k">def</span> <span class="nf">national_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">National</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-742"><a href="#Generator-742"><span class="linenos"> 742</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"N</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-710"><a href="#Generator-710"><span class="linenos"> 710</span></a> <span class="k">def</span> <span class="nf">filter_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">Filter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-711"><a href="#Generator-711"><span class="linenos"> 711</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">"this"</span><span class="p">)</span> +</span><span id="Generator-712"><a href="#Generator-712"><span class="linenos"> 712</span></a> <span class="n">where</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">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># where has a leading space</span> +</span><span id="Generator-713"><a href="#Generator-713"><span class="linenos"> 713</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FILTER(</span><span class="si">{</span><span class="n">where</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-714"><a href="#Generator-714"><span class="linenos"> 714</span></a> +</span><span id="Generator-715"><a href="#Generator-715"><span class="linenos"> 715</span></a> <span class="k">def</span> <span class="nf">hint_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">Hint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-716"><a href="#Generator-716"><span class="linenos"> 716</span></a> <span class="k">if</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">"this"</span><span class="p">):</span> +</span><span id="Generator-717"><a href="#Generator-717"><span class="linenos"> 717</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Hints are not supported"</span><span class="p">)</span> +</span><span id="Generator-718"><a href="#Generator-718"><span class="linenos"> 718</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Generator-719"><a href="#Generator-719"><span class="linenos"> 719</span></a> +</span><span id="Generator-720"><a href="#Generator-720"><span class="linenos"> 720</span></a> <span class="k">def</span> <span class="nf">index_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">Index</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-721"><a href="#Generator-721"><span class="linenos"> 721</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">"this"</span><span class="p">)</span> +</span><span id="Generator-722"><a href="#Generator-722"><span class="linenos"> 722</span></a> <span class="n">table</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">"table"</span><span class="p">)</span> +</span><span id="Generator-723"><a href="#Generator-723"><span class="linenos"> 723</span></a> <span class="n">columns</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">"columns"</span><span class="p">)</span> +</span><span id="Generator-724"><a href="#Generator-724"><span class="linenos"> 724</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-725"><a href="#Generator-725"><span class="linenos"> 725</span></a> +</span><span id="Generator-726"><a href="#Generator-726"><span class="linenos"> 726</span></a> <span class="k">def</span> <span class="nf">identifier_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">Identifier</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-727"><a href="#Generator-727"><span class="linenos"> 727</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> +</span><span id="Generator-728"><a href="#Generator-728"><span class="linenos"> 728</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">else</span> <span class="n">text</span> +</span><span id="Generator-729"><a href="#Generator-729"><span class="linenos"> 729</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span><span class="p">)</span> +</span><span id="Generator-730"><a href="#Generator-730"><span class="linenos"> 730</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">"quoted"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span><span class="p">:</span> +</span><span id="Generator-731"><a href="#Generator-731"><span class="linenos"> 731</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-732"><a href="#Generator-732"><span class="linenos"> 732</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="Generator-733"><a href="#Generator-733"><span class="linenos"> 733</span></a> +</span><span id="Generator-734"><a href="#Generator-734"><span class="linenos"> 734</span></a> <span class="k">def</span> <span class="nf">national_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">National</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-735"><a href="#Generator-735"><span class="linenos"> 735</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"N</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-736"><a href="#Generator-736"><span class="linenos"> 736</span></a> +</span><span id="Generator-737"><a href="#Generator-737"><span class="linenos"> 737</span></a> <span class="k">def</span> <span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-738"><a href="#Generator-738"><span class="linenos"> 738</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-739"><a href="#Generator-739"><span class="linenos"> 739</span></a> +</span><span id="Generator-740"><a href="#Generator-740"><span class="linenos"> 740</span></a> <span class="k">def</span> <span class="nf">properties_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">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-741"><a href="#Generator-741"><span class="linenos"> 741</span></a> <span class="n">root_properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator-742"><a href="#Generator-742"><span class="linenos"> 742</span></a> <span class="n">with_properties</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="Generator-743"><a href="#Generator-743"><span class="linenos"> 743</span></a> -</span><span id="Generator-744"><a href="#Generator-744"><span class="linenos"> 744</span></a> <span class="k">def</span> <span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-745"><a href="#Generator-745"><span class="linenos"> 745</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-746"><a href="#Generator-746"><span class="linenos"> 746</span></a> -</span><span id="Generator-747"><a href="#Generator-747"><span class="linenos"> 747</span></a> <span class="k">def</span> <span class="nf">properties_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">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-748"><a href="#Generator-748"><span class="linenos"> 748</span></a> <span class="n">root_properties</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator-749"><a href="#Generator-749"><span class="linenos"> 749</span></a> <span class="n">with_properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator-744"><a href="#Generator-744"><span class="linenos"> 744</span></a> <span class="k">for</span> <span class="n">p</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="Generator-745"><a href="#Generator-745"><span class="linenos"> 745</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> +</span><span id="Generator-746"><a href="#Generator-746"><span class="linenos"> 746</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> +</span><span id="Generator-747"><a href="#Generator-747"><span class="linenos"> 747</span></a> <span class="n">with_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator-748"><a href="#Generator-748"><span class="linenos"> 748</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> +</span><span id="Generator-749"><a href="#Generator-749"><span class="linenos"> 749</span></a> <span class="n">root_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> </span><span id="Generator-750"><a href="#Generator-750"><span class="linenos"> 750</span></a> -</span><span id="Generator-751"><a href="#Generator-751"><span class="linenos"> 751</span></a> <span class="k">for</span> <span class="n">p</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="Generator-752"><a href="#Generator-752"><span class="linenos"> 752</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> -</span><span id="Generator-753"><a href="#Generator-753"><span class="linenos"> 753</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> -</span><span id="Generator-754"><a href="#Generator-754"><span class="linenos"> 754</span></a> <span class="n">with_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator-755"><a href="#Generator-755"><span class="linenos"> 755</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> -</span><span id="Generator-756"><a href="#Generator-756"><span class="linenos"> 756</span></a> <span class="n">root_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator-757"><a href="#Generator-757"><span class="linenos"> 757</span></a> -</span><span id="Generator-758"><a href="#Generator-758"><span class="linenos"> 758</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">root_properties</span><span class="p">(</span> -</span><span id="Generator-759"><a href="#Generator-759"><span class="linenos"> 759</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">root_properties</span><span class="p">)</span> -</span><span id="Generator-760"><a href="#Generator-760"><span class="linenos"> 760</span></a> <span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_properties</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">with_properties</span><span class="p">))</span> -</span><span id="Generator-761"><a href="#Generator-761"><span class="linenos"> 761</span></a> -</span><span id="Generator-762"><a href="#Generator-762"><span class="linenos"> 762</span></a> <span class="k">def</span> <span class="nf">root_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-763"><a href="#Generator-763"><span class="linenos"> 763</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="Generator-764"><a href="#Generator-764"><span class="linenos"> 764</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator-765"><a href="#Generator-765"><span class="linenos"> 765</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Generator-766"><a href="#Generator-766"><span class="linenos"> 766</span></a> -</span><span id="Generator-767"><a href="#Generator-767"><span class="linenos"> 767</span></a> <span class="k">def</span> <span class="nf">properties</span><span class="p">(</span> -</span><span id="Generator-768"><a href="#Generator-768"><span class="linenos"> 768</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator-769"><a href="#Generator-769"><span class="linenos"> 769</span></a> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> -</span><span id="Generator-770"><a href="#Generator-770"><span class="linenos"> 770</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator-771"><a href="#Generator-771"><span class="linenos"> 771</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> -</span><span id="Generator-772"><a href="#Generator-772"><span class="linenos"> 772</span></a> <span class="n">suffix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator-773"><a href="#Generator-773"><span class="linenos"> 773</span></a> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Generator-774"><a href="#Generator-774"><span class="linenos"> 774</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-775"><a href="#Generator-775"><span class="linenos"> 775</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="Generator-776"><a href="#Generator-776"><span class="linenos"> 776</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator-777"><a href="#Generator-777"><span class="linenos"> 777</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="k">if</span> <span class="n">wrapped</span> <span class="k">else</span> <span class="n">expressions</span> -</span><span id="Generator-778"><a href="#Generator-778"><span class="linenos"> 778</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="s1">' '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">suffix</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-779"><a href="#Generator-779"><span class="linenos"> 779</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Generator-780"><a href="#Generator-780"><span class="linenos"> 780</span></a> -</span><span id="Generator-781"><a href="#Generator-781"><span class="linenos"> 781</span></a> <span class="k">def</span> <span class="nf">with_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-782"><a href="#Generator-782"><span class="linenos"> 782</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">))</span> +</span><span id="Generator-751"><a href="#Generator-751"><span class="linenos"> 751</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">root_properties</span><span class="p">(</span> +</span><span id="Generator-752"><a href="#Generator-752"><span class="linenos"> 752</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">root_properties</span><span class="p">)</span> +</span><span id="Generator-753"><a href="#Generator-753"><span class="linenos"> 753</span></a> <span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_properties</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">with_properties</span><span class="p">))</span> +</span><span id="Generator-754"><a href="#Generator-754"><span class="linenos"> 754</span></a> +</span><span id="Generator-755"><a href="#Generator-755"><span class="linenos"> 755</span></a> <span class="k">def</span> <span class="nf">root_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-756"><a href="#Generator-756"><span class="linenos"> 756</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Generator-757"><a href="#Generator-757"><span class="linenos"> 757</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator-758"><a href="#Generator-758"><span class="linenos"> 758</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Generator-759"><a href="#Generator-759"><span class="linenos"> 759</span></a> +</span><span id="Generator-760"><a href="#Generator-760"><span class="linenos"> 760</span></a> <span class="k">def</span> <span class="nf">properties</span><span class="p">(</span> +</span><span id="Generator-761"><a href="#Generator-761"><span class="linenos"> 761</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator-762"><a href="#Generator-762"><span class="linenos"> 762</span></a> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> +</span><span id="Generator-763"><a href="#Generator-763"><span class="linenos"> 763</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator-764"><a href="#Generator-764"><span class="linenos"> 764</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> +</span><span id="Generator-765"><a href="#Generator-765"><span class="linenos"> 765</span></a> <span class="n">suffix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator-766"><a href="#Generator-766"><span class="linenos"> 766</span></a> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Generator-767"><a href="#Generator-767"><span class="linenos"> 767</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-768"><a href="#Generator-768"><span class="linenos"> 768</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Generator-769"><a href="#Generator-769"><span class="linenos"> 769</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator-770"><a href="#Generator-770"><span class="linenos"> 770</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="k">if</span> <span class="n">wrapped</span> <span class="k">else</span> <span class="n">expressions</span> +</span><span id="Generator-771"><a href="#Generator-771"><span class="linenos"> 771</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="s1">' '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">suffix</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-772"><a href="#Generator-772"><span class="linenos"> 772</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Generator-773"><a href="#Generator-773"><span class="linenos"> 773</span></a> +</span><span id="Generator-774"><a href="#Generator-774"><span class="linenos"> 774</span></a> <span class="k">def</span> <span class="nf">with_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-775"><a href="#Generator-775"><span class="linenos"> 775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">))</span> +</span><span id="Generator-776"><a href="#Generator-776"><span class="linenos"> 776</span></a> +</span><span id="Generator-777"><a href="#Generator-777"><span class="linenos"> 777</span></a> <span class="k">def</span> <span class="nf">locate_properties</span><span class="p">(</span> +</span><span id="Generator-778"><a href="#Generator-778"><span class="linenos"> 778</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span> +</span><span id="Generator-779"><a href="#Generator-779"><span class="linenos"> 779</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</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="p">,</span> <span class="nb">list</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="Generator-780"><a href="#Generator-780"><span class="linenos"> 780</span></a> <span class="n">properties_locs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="p">,</span> <span class="nb">list</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Generator-781"><a href="#Generator-781"><span class="linenos"> 781</span></a> <span class="n">key</span><span class="p">:</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</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><span id="Generator-782"><a href="#Generator-782"><span class="linenos"> 782</span></a> <span class="p">}</span> </span><span id="Generator-783"><a href="#Generator-783"><span class="linenos"> 783</span></a> -</span><span id="Generator-784"><a href="#Generator-784"><span class="linenos"> 784</span></a> <span class="k">def</span> <span class="nf">locate_properties</span><span class="p">(</span> -</span><span id="Generator-785"><a href="#Generator-785"><span class="linenos"> 785</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span> -</span><span id="Generator-786"><a href="#Generator-786"><span class="linenos"> 786</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</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="p">,</span> <span class="nb">list</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="Generator-787"><a href="#Generator-787"><span class="linenos"> 787</span></a> <span class="n">properties_locs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="p">,</span> <span class="nb">list</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Generator-788"><a href="#Generator-788"><span class="linenos"> 788</span></a> <span class="n">key</span><span class="p">:</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</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><span id="Generator-789"><a href="#Generator-789"><span class="linenos"> 789</span></a> <span class="p">}</span> -</span><span id="Generator-790"><a href="#Generator-790"><span class="linenos"> 790</span></a> -</span><span id="Generator-791"><a href="#Generator-791"><span class="linenos"> 791</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="Generator-792"><a href="#Generator-792"><span class="linenos"> 792</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> -</span><span id="Generator-793"><a href="#Generator-793"><span class="linenos"> 793</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">:</span> -</span><span id="Generator-794"><a href="#Generator-794"><span class="linenos"> 794</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator-795"><a href="#Generator-795"><span class="linenos"> 795</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">:</span> -</span><span id="Generator-796"><a href="#Generator-796"><span class="linenos"> 796</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator-797"><a href="#Generator-797"><span class="linenos"> 797</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> -</span><span id="Generator-798"><a href="#Generator-798"><span class="linenos"> 798</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator-799"><a href="#Generator-799"><span class="linenos"> 799</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> -</span><span id="Generator-800"><a href="#Generator-800"><span class="linenos"> 800</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator-801"><a href="#Generator-801"><span class="linenos"> 801</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">:</span> -</span><span id="Generator-802"><a href="#Generator-802"><span class="linenos"> 802</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator-803"><a href="#Generator-803"><span class="linenos"> 803</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">:</span> -</span><span id="Generator-804"><a href="#Generator-804"><span class="linenos"> 804</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator-805"><a href="#Generator-805"><span class="linenos"> 805</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</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="Generator-806"><a href="#Generator-806"><span class="linenos"> 806</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">p</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-807"><a href="#Generator-807"><span class="linenos"> 807</span></a> -</span><span id="Generator-808"><a href="#Generator-808"><span class="linenos"> 808</span></a> <span class="k">return</span> <span class="n">properties_locs</span> +</span><span id="Generator-784"><a href="#Generator-784"><span class="linenos"> 784</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Generator-785"><a href="#Generator-785"><span class="linenos"> 785</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> +</span><span id="Generator-786"><a href="#Generator-786"><span class="linenos"> 786</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">:</span> +</span><span id="Generator-787"><a href="#Generator-787"><span class="linenos"> 787</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator-788"><a href="#Generator-788"><span class="linenos"> 788</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">:</span> +</span><span id="Generator-789"><a href="#Generator-789"><span class="linenos"> 789</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator-790"><a href="#Generator-790"><span class="linenos"> 790</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> +</span><span id="Generator-791"><a href="#Generator-791"><span class="linenos"> 791</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator-792"><a href="#Generator-792"><span class="linenos"> 792</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> +</span><span id="Generator-793"><a href="#Generator-793"><span class="linenos"> 793</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator-794"><a href="#Generator-794"><span class="linenos"> 794</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">:</span> +</span><span id="Generator-795"><a href="#Generator-795"><span class="linenos"> 795</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator-796"><a href="#Generator-796"><span class="linenos"> 796</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">:</span> +</span><span id="Generator-797"><a href="#Generator-797"><span class="linenos"> 797</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator-798"><a href="#Generator-798"><span class="linenos"> 798</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">:</span> +</span><span id="Generator-799"><a href="#Generator-799"><span class="linenos"> 799</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator-800"><a href="#Generator-800"><span class="linenos"> 800</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</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="Generator-801"><a href="#Generator-801"><span class="linenos"> 801</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">p</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-802"><a href="#Generator-802"><span class="linenos"> 802</span></a> +</span><span id="Generator-803"><a href="#Generator-803"><span class="linenos"> 803</span></a> <span class="k">return</span> <span class="n">properties_locs</span> +</span><span id="Generator-804"><a href="#Generator-804"><span class="linenos"> 804</span></a> +</span><span id="Generator-805"><a href="#Generator-805"><span class="linenos"> 805</span></a> <span class="k">def</span> <span class="nf">property_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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-806"><a href="#Generator-806"><span class="linenos"> 806</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span> +</span><span id="Generator-807"><a href="#Generator-807"><span class="linenos"> 807</span></a> <span class="k">if</span> <span class="n">property_cls</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> +</span><span id="Generator-808"><a href="#Generator-808"><span class="linenos"> 808</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span><span id="Generator-809"><a href="#Generator-809"><span class="linenos"> 809</span></a> -</span><span id="Generator-810"><a href="#Generator-810"><span class="linenos"> 810</span></a> <span class="k">def</span> <span class="nf">property_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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-811"><a href="#Generator-811"><span class="linenos"> 811</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span> -</span><span id="Generator-812"><a href="#Generator-812"><span class="linenos"> 812</span></a> <span class="k">if</span> <span class="n">property_cls</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> -</span><span id="Generator-813"><a href="#Generator-813"><span class="linenos"> 813</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-814"><a href="#Generator-814"><span class="linenos"> 814</span></a> -</span><span id="Generator-815"><a href="#Generator-815"><span class="linenos"> 815</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">property_cls</span><span class="p">)</span> -</span><span id="Generator-816"><a href="#Generator-816"><span class="linenos"> 816</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> -</span><span id="Generator-817"><a href="#Generator-817"><span class="linenos"> 817</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-818"><a href="#Generator-818"><span class="linenos"> 818</span></a> -</span><span id="Generator-819"><a href="#Generator-819"><span class="linenos"> 819</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-810"><a href="#Generator-810"><span class="linenos"> 810</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">property_cls</span><span class="p">)</span> +</span><span id="Generator-811"><a href="#Generator-811"><span class="linenos"> 811</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> +</span><span id="Generator-812"><a href="#Generator-812"><span class="linenos"> 812</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-813"><a href="#Generator-813"><span class="linenos"> 813</span></a> +</span><span id="Generator-814"><a href="#Generator-814"><span class="linenos"> 814</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-815"><a href="#Generator-815"><span class="linenos"> 815</span></a> +</span><span id="Generator-816"><a href="#Generator-816"><span class="linenos"> 816</span></a> <span class="k">def</span> <span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-817"><a href="#Generator-817"><span class="linenos"> 817</span></a> <span class="n">options</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <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="Generator-818"><a href="#Generator-818"><span class="linenos"> 818</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-819"><a href="#Generator-819"><span class="linenos"> 819</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LIKE </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> </span><span id="Generator-820"><a href="#Generator-820"><span class="linenos"> 820</span></a> -</span><span id="Generator-821"><a href="#Generator-821"><span class="linenos"> 821</span></a> <span class="k">def</span> <span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-822"><a href="#Generator-822"><span class="linenos"> 822</span></a> <span class="n">options</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <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="Generator-823"><a href="#Generator-823"><span class="linenos"> 823</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-824"><a href="#Generator-824"><span class="linenos"> 824</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LIKE </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-821"><a href="#Generator-821"><span class="linenos"> 821</span></a> <span class="k">def</span> <span class="nf">fallbackproperty_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">FallbackProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-822"><a href="#Generator-822"><span class="linenos"> 822</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-823"><a href="#Generator-823"><span class="linenos"> 823</span></a> <span class="n">protection</span> <span class="o">=</span> <span class="s2">" PROTECTION"</span> <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">"protection"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-824"><a href="#Generator-824"><span class="linenos"> 824</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}</span><span class="s2">FALLBACK</span><span class="si">{</span><span class="n">protection</span><span class="si">}</span><span class="s2">"</span> </span><span id="Generator-825"><a href="#Generator-825"><span class="linenos"> 825</span></a> -</span><span id="Generator-826"><a href="#Generator-826"><span class="linenos"> 826</span></a> <span class="k">def</span> <span class="nf">fallbackproperty_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">FallbackProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-826"><a href="#Generator-826"><span class="linenos"> 826</span></a> <span class="k">def</span> <span class="nf">journalproperty_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">JournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> </span><span id="Generator-827"><a href="#Generator-827"><span class="linenos"> 827</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-828"><a href="#Generator-828"><span class="linenos"> 828</span></a> <span class="n">protection</span> <span class="o">=</span> <span class="s2">" PROTECTION"</span> <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">"protection"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-829"><a href="#Generator-829"><span class="linenos"> 829</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}</span><span class="s2">FALLBACK</span><span class="si">{</span><span class="n">protection</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-830"><a href="#Generator-830"><span class="linenos"> 830</span></a> -</span><span id="Generator-831"><a href="#Generator-831"><span class="linenos"> 831</span></a> <span class="k">def</span> <span class="nf">journalproperty_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">JournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-832"><a href="#Generator-832"><span class="linenos"> 832</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-833"><a href="#Generator-833"><span class="linenos"> 833</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-834"><a href="#Generator-834"><span class="linenos"> 834</span></a> <span class="n">before</span> <span class="o">=</span> <span class="s2">"BEFORE "</span> <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">"before"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-835"><a href="#Generator-835"><span class="linenos"> 835</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">before</span><span class="si">}</span><span class="s2">JOURNAL"</span> +</span><span id="Generator-828"><a href="#Generator-828"><span class="linenos"> 828</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-829"><a href="#Generator-829"><span class="linenos"> 829</span></a> <span class="n">before</span> <span class="o">=</span> <span class="s2">"BEFORE "</span> <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">"before"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-830"><a href="#Generator-830"><span class="linenos"> 830</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">before</span><span class="si">}</span><span class="s2">JOURNAL"</span> +</span><span id="Generator-831"><a href="#Generator-831"><span class="linenos"> 831</span></a> +</span><span id="Generator-832"><a href="#Generator-832"><span class="linenos"> 832</span></a> <span class="k">def</span> <span class="nf">freespaceproperty_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">FreespaceProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-833"><a href="#Generator-833"><span class="linenos"> 833</span></a> <span class="n">freespace</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">"this"</span><span class="p">)</span> +</span><span id="Generator-834"><a href="#Generator-834"><span class="linenos"> 834</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-835"><a href="#Generator-835"><span class="linenos"> 835</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FREESPACE=</span><span class="si">{</span><span class="n">freespace</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> </span><span id="Generator-836"><a href="#Generator-836"><span class="linenos"> 836</span></a> -</span><span id="Generator-837"><a href="#Generator-837"><span class="linenos"> 837</span></a> <span class="k">def</span> <span class="nf">freespaceproperty_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">FreespaceProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-838"><a href="#Generator-838"><span class="linenos"> 838</span></a> <span class="n">freespace</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">"this"</span><span class="p">)</span> -</span><span id="Generator-839"><a href="#Generator-839"><span class="linenos"> 839</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-840"><a href="#Generator-840"><span class="linenos"> 840</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FREESPACE=</span><span class="si">{</span><span class="n">freespace</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-841"><a href="#Generator-841"><span class="linenos"> 841</span></a> -</span><span id="Generator-842"><a href="#Generator-842"><span class="linenos"> 842</span></a> <span class="k">def</span> <span class="nf">afterjournalproperty_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">AfterJournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-843"><a href="#Generator-843"><span class="linenos"> 843</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-844"><a href="#Generator-844"><span class="linenos"> 844</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-845"><a href="#Generator-845"><span class="linenos"> 845</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-846"><a href="#Generator-846"><span class="linenos"> 846</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">"local"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-847"><a href="#Generator-847"><span class="linenos"> 847</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"NOT LOCAL "</span> -</span><span id="Generator-848"><a href="#Generator-848"><span class="linenos"> 848</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">local</span><span class="si">}</span><span class="s2">AFTER JOURNAL"</span> -</span><span id="Generator-849"><a href="#Generator-849"><span class="linenos"> 849</span></a> -</span><span id="Generator-850"><a href="#Generator-850"><span class="linenos"> 850</span></a> <span class="k">def</span> <span class="nf">checksumproperty_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">ChecksumProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-851"><a href="#Generator-851"><span class="linenos"> 851</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">"default"</span><span class="p">):</span> -</span><span id="Generator-852"><a href="#Generator-852"><span class="linenos"> 852</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> -</span><span id="Generator-853"><a href="#Generator-853"><span class="linenos"> 853</span></a> <span class="k">elif</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">"on"</span><span class="p">):</span> -</span><span id="Generator-854"><a href="#Generator-854"><span class="linenos"> 854</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ON"</span> -</span><span id="Generator-855"><a href="#Generator-855"><span class="linenos"> 855</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-856"><a href="#Generator-856"><span class="linenos"> 856</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"OFF"</span> -</span><span id="Generator-857"><a href="#Generator-857"><span class="linenos"> 857</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECKSUM=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-858"><a href="#Generator-858"><span class="linenos"> 858</span></a> -</span><span id="Generator-859"><a href="#Generator-859"><span class="linenos"> 859</span></a> <span class="k">def</span> <span class="nf">mergeblockratioproperty_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">MergeBlockRatioProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-860"><a href="#Generator-860"><span class="linenos"> 860</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">"no"</span><span class="p">):</span> -</span><span id="Generator-861"><a href="#Generator-861"><span class="linenos"> 861</span></a> <span class="k">return</span> <span class="s2">"NO MERGEBLOCKRATIO"</span> -</span><span id="Generator-862"><a href="#Generator-862"><span class="linenos"> 862</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">"default"</span><span class="p">):</span> -</span><span id="Generator-863"><a href="#Generator-863"><span class="linenos"> 863</span></a> <span class="k">return</span> <span class="s2">"DEFAULT MERGEBLOCKRATIO"</span> -</span><span id="Generator-864"><a href="#Generator-864"><span class="linenos"> 864</span></a> -</span><span id="Generator-865"><a href="#Generator-865"><span class="linenos"> 865</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-866"><a href="#Generator-866"><span class="linenos"> 866</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGEBLOCKRATIO=</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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-867"><a href="#Generator-867"><span class="linenos"> 867</span></a> -</span><span id="Generator-868"><a href="#Generator-868"><span class="linenos"> 868</span></a> <span class="k">def</span> <span class="nf">datablocksizeproperty_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">DataBlocksizeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-869"><a href="#Generator-869"><span class="linenos"> 869</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="Generator-870"><a href="#Generator-870"><span class="linenos"> 870</span></a> <span class="nb">min</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">"min"</span><span class="p">)</span> -</span><span id="Generator-871"><a href="#Generator-871"><span class="linenos"> 871</span></a> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">min</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-872"><a href="#Generator-872"><span class="linenos"> 872</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="Generator-873"><a href="#Generator-873"><span class="linenos"> 873</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> -</span><span id="Generator-874"><a href="#Generator-874"><span class="linenos"> 874</span></a> <span class="k">elif</span> <span class="nb">min</span><span class="p">:</span> -</span><span id="Generator-875"><a href="#Generator-875"><span class="linenos"> 875</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MINIMUM"</span> -</span><span id="Generator-876"><a href="#Generator-876"><span class="linenos"> 876</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-877"><a href="#Generator-877"><span class="linenos"> 877</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MAXIMUM"</span> -</span><span id="Generator-878"><a href="#Generator-878"><span class="linenos"> 878</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2"> DATABLOCKSIZE"</span> -</span><span id="Generator-879"><a href="#Generator-879"><span class="linenos"> 879</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-880"><a href="#Generator-880"><span class="linenos"> 880</span></a> <span class="n">units</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">"units"</span><span class="p">)</span> -</span><span id="Generator-881"><a href="#Generator-881"><span class="linenos"> 881</span></a> <span class="n">units</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">units</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-882"><a href="#Generator-882"><span class="linenos"> 882</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATABLOCKSIZE=</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">'size'</span><span class="p">)</span><span class="si">}{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-883"><a href="#Generator-883"><span class="linenos"> 883</span></a> -</span><span id="Generator-884"><a href="#Generator-884"><span class="linenos"> 884</span></a> <span class="k">def</span> <span class="nf">blockcompressionproperty_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">BlockCompressionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-885"><a href="#Generator-885"><span class="linenos"> 885</span></a> <span class="n">autotemp</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">"autotemp"</span><span class="p">)</span> -</span><span id="Generator-886"><a href="#Generator-886"><span class="linenos"> 886</span></a> <span class="n">always</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">"always"</span><span class="p">)</span> -</span><span id="Generator-887"><a href="#Generator-887"><span class="linenos"> 887</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="Generator-888"><a href="#Generator-888"><span class="linenos"> 888</span></a> <span class="n">manual</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">"manual"</span><span class="p">)</span> -</span><span id="Generator-889"><a href="#Generator-889"><span class="linenos"> 889</span></a> <span class="n">never</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">"never"</span><span class="p">)</span> -</span><span id="Generator-890"><a href="#Generator-890"><span class="linenos"> 890</span></a> -</span><span id="Generator-891"><a href="#Generator-891"><span class="linenos"> 891</span></a> <span class="k">if</span> <span class="n">autotemp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-892"><a href="#Generator-892"><span class="linenos"> 892</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"AUTOTEMP(</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">autotemp</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-893"><a href="#Generator-893"><span class="linenos"> 893</span></a> <span class="k">elif</span> <span class="n">always</span><span class="p">:</span> -</span><span id="Generator-894"><a href="#Generator-894"><span class="linenos"> 894</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ALWAYS"</span> -</span><span id="Generator-895"><a href="#Generator-895"><span class="linenos"> 895</span></a> <span class="k">elif</span> <span class="n">default</span><span class="p">:</span> -</span><span id="Generator-896"><a href="#Generator-896"><span class="linenos"> 896</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> -</span><span id="Generator-897"><a href="#Generator-897"><span class="linenos"> 897</span></a> <span class="k">elif</span> <span class="n">manual</span><span class="p">:</span> -</span><span id="Generator-898"><a href="#Generator-898"><span class="linenos"> 898</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MANUAL"</span> -</span><span id="Generator-899"><a href="#Generator-899"><span class="linenos"> 899</span></a> <span class="k">elif</span> <span class="n">never</span><span class="p">:</span> -</span><span id="Generator-900"><a href="#Generator-900"><span class="linenos"> 900</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"NEVER"</span> -</span><span id="Generator-901"><a href="#Generator-901"><span class="linenos"> 901</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"BLOCKCOMPRESSION=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-902"><a href="#Generator-902"><span class="linenos"> 902</span></a> -</span><span id="Generator-903"><a href="#Generator-903"><span class="linenos"> 903</span></a> <span class="k">def</span> <span class="nf">isolatedloadingproperty_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">IsolatedLoadingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-904"><a href="#Generator-904"><span class="linenos"> 904</span></a> <span class="n">no</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">"no"</span><span class="p">)</span> -</span><span id="Generator-905"><a href="#Generator-905"><span class="linenos"> 905</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">" NO"</span> <span class="k">if</span> <span class="n">no</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-906"><a href="#Generator-906"><span class="linenos"> 906</span></a> <span class="n">concurrent</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">"concurrent"</span><span class="p">)</span> -</span><span id="Generator-907"><a href="#Generator-907"><span class="linenos"> 907</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="s2">" CONCURRENT"</span> <span class="k">if</span> <span class="n">concurrent</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-908"><a href="#Generator-908"><span class="linenos"> 908</span></a> -</span><span id="Generator-909"><a href="#Generator-909"><span class="linenos"> 909</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-910"><a href="#Generator-910"><span class="linenos"> 910</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">"for_all"</span><span class="p">):</span> -</span><span id="Generator-911"><a href="#Generator-911"><span class="linenos"> 911</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR ALL"</span> -</span><span id="Generator-912"><a href="#Generator-912"><span class="linenos"> 912</span></a> <span class="k">elif</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">"for_insert"</span><span class="p">):</span> -</span><span id="Generator-913"><a href="#Generator-913"><span class="linenos"> 913</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR INSERT"</span> -</span><span id="Generator-914"><a href="#Generator-914"><span class="linenos"> 914</span></a> <span class="k">elif</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">"for_none"</span><span class="p">):</span> -</span><span id="Generator-915"><a href="#Generator-915"><span class="linenos"> 915</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR NONE"</span> -</span><span id="Generator-916"><a href="#Generator-916"><span class="linenos"> 916</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">concurrent</span><span class="si">}</span><span class="s2"> ISOLATED LOADING</span><span class="si">{</span><span class="n">for_</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-917"><a href="#Generator-917"><span class="linenos"> 917</span></a> -</span><span id="Generator-918"><a href="#Generator-918"><span class="linenos"> 918</span></a> <span class="k">def</span> <span class="nf">lockingproperty_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">LockingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-919"><a href="#Generator-919"><span class="linenos"> 919</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="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> -</span><span id="Generator-920"><a href="#Generator-920"><span class="linenos"> 920</span></a> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-921"><a href="#Generator-921"><span class="linenos"> 921</span></a> <span class="n">for_or_in</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">"for_or_in"</span><span class="p">)</span> -</span><span id="Generator-922"><a href="#Generator-922"><span class="linenos"> 922</span></a> <span class="n">lock_type</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">"lock_type"</span><span class="p">)</span> -</span><span id="Generator-923"><a href="#Generator-923"><span class="linenos"> 923</span></a> <span class="n">override</span> <span class="o">=</span> <span class="s2">" OVERRIDE"</span> <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">"override"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-924"><a href="#Generator-924"><span class="linenos"> 924</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOCKING </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">for_or_in</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}{</span><span class="n">override</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-925"><a href="#Generator-925"><span class="linenos"> 925</span></a> -</span><span id="Generator-926"><a href="#Generator-926"><span class="linenos"> 926</span></a> <span class="k">def</span> <span class="nf">insert_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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-927"><a href="#Generator-927"><span class="linenos"> 927</span></a> <span class="n">overwrite</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">"overwrite"</span><span class="p">)</span> +</span><span id="Generator-837"><a href="#Generator-837"><span class="linenos"> 837</span></a> <span class="k">def</span> <span class="nf">afterjournalproperty_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">AfterJournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-838"><a href="#Generator-838"><span class="linenos"> 838</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-839"><a href="#Generator-839"><span class="linenos"> 839</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-840"><a href="#Generator-840"><span class="linenos"> 840</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-841"><a href="#Generator-841"><span class="linenos"> 841</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">"local"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-842"><a href="#Generator-842"><span class="linenos"> 842</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"NOT LOCAL "</span> +</span><span id="Generator-843"><a href="#Generator-843"><span class="linenos"> 843</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">local</span><span class="si">}</span><span class="s2">AFTER JOURNAL"</span> +</span><span id="Generator-844"><a href="#Generator-844"><span class="linenos"> 844</span></a> +</span><span id="Generator-845"><a href="#Generator-845"><span class="linenos"> 845</span></a> <span class="k">def</span> <span class="nf">checksumproperty_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">ChecksumProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-846"><a href="#Generator-846"><span class="linenos"> 846</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">"default"</span><span class="p">):</span> +</span><span id="Generator-847"><a href="#Generator-847"><span class="linenos"> 847</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> +</span><span id="Generator-848"><a href="#Generator-848"><span class="linenos"> 848</span></a> <span class="k">elif</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">"on"</span><span class="p">):</span> +</span><span id="Generator-849"><a href="#Generator-849"><span class="linenos"> 849</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ON"</span> +</span><span id="Generator-850"><a href="#Generator-850"><span class="linenos"> 850</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-851"><a href="#Generator-851"><span class="linenos"> 851</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"OFF"</span> +</span><span id="Generator-852"><a href="#Generator-852"><span class="linenos"> 852</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECKSUM=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-853"><a href="#Generator-853"><span class="linenos"> 853</span></a> +</span><span id="Generator-854"><a href="#Generator-854"><span class="linenos"> 854</span></a> <span class="k">def</span> <span class="nf">mergeblockratioproperty_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">MergeBlockRatioProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-855"><a href="#Generator-855"><span class="linenos"> 855</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">"no"</span><span class="p">):</span> +</span><span id="Generator-856"><a href="#Generator-856"><span class="linenos"> 856</span></a> <span class="k">return</span> <span class="s2">"NO MERGEBLOCKRATIO"</span> +</span><span id="Generator-857"><a href="#Generator-857"><span class="linenos"> 857</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">"default"</span><span class="p">):</span> +</span><span id="Generator-858"><a href="#Generator-858"><span class="linenos"> 858</span></a> <span class="k">return</span> <span class="s2">"DEFAULT MERGEBLOCKRATIO"</span> +</span><span id="Generator-859"><a href="#Generator-859"><span class="linenos"> 859</span></a> +</span><span id="Generator-860"><a href="#Generator-860"><span class="linenos"> 860</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-861"><a href="#Generator-861"><span class="linenos"> 861</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGEBLOCKRATIO=</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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-862"><a href="#Generator-862"><span class="linenos"> 862</span></a> +</span><span id="Generator-863"><a href="#Generator-863"><span class="linenos"> 863</span></a> <span class="k">def</span> <span class="nf">datablocksizeproperty_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">DataBlocksizeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-864"><a href="#Generator-864"><span class="linenos"> 864</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="Generator-865"><a href="#Generator-865"><span class="linenos"> 865</span></a> <span class="nb">min</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">"min"</span><span class="p">)</span> +</span><span id="Generator-866"><a href="#Generator-866"><span class="linenos"> 866</span></a> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">min</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-867"><a href="#Generator-867"><span class="linenos"> 867</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="Generator-868"><a href="#Generator-868"><span class="linenos"> 868</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> +</span><span id="Generator-869"><a href="#Generator-869"><span class="linenos"> 869</span></a> <span class="k">elif</span> <span class="nb">min</span><span class="p">:</span> +</span><span id="Generator-870"><a href="#Generator-870"><span class="linenos"> 870</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MINIMUM"</span> +</span><span id="Generator-871"><a href="#Generator-871"><span class="linenos"> 871</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-872"><a href="#Generator-872"><span class="linenos"> 872</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MAXIMUM"</span> +</span><span id="Generator-873"><a href="#Generator-873"><span class="linenos"> 873</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2"> DATABLOCKSIZE"</span> +</span><span id="Generator-874"><a href="#Generator-874"><span class="linenos"> 874</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-875"><a href="#Generator-875"><span class="linenos"> 875</span></a> <span class="n">units</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">"units"</span><span class="p">)</span> +</span><span id="Generator-876"><a href="#Generator-876"><span class="linenos"> 876</span></a> <span class="n">units</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">units</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-877"><a href="#Generator-877"><span class="linenos"> 877</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATABLOCKSIZE=</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">'size'</span><span class="p">)</span><span class="si">}{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-878"><a href="#Generator-878"><span class="linenos"> 878</span></a> +</span><span id="Generator-879"><a href="#Generator-879"><span class="linenos"> 879</span></a> <span class="k">def</span> <span class="nf">blockcompressionproperty_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">BlockCompressionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-880"><a href="#Generator-880"><span class="linenos"> 880</span></a> <span class="n">autotemp</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">"autotemp"</span><span class="p">)</span> +</span><span id="Generator-881"><a href="#Generator-881"><span class="linenos"> 881</span></a> <span class="n">always</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">"always"</span><span class="p">)</span> +</span><span id="Generator-882"><a href="#Generator-882"><span class="linenos"> 882</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="Generator-883"><a href="#Generator-883"><span class="linenos"> 883</span></a> <span class="n">manual</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">"manual"</span><span class="p">)</span> +</span><span id="Generator-884"><a href="#Generator-884"><span class="linenos"> 884</span></a> <span class="n">never</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">"never"</span><span class="p">)</span> +</span><span id="Generator-885"><a href="#Generator-885"><span class="linenos"> 885</span></a> +</span><span id="Generator-886"><a href="#Generator-886"><span class="linenos"> 886</span></a> <span class="k">if</span> <span class="n">autotemp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-887"><a href="#Generator-887"><span class="linenos"> 887</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"AUTOTEMP(</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">autotemp</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-888"><a href="#Generator-888"><span class="linenos"> 888</span></a> <span class="k">elif</span> <span class="n">always</span><span class="p">:</span> +</span><span id="Generator-889"><a href="#Generator-889"><span class="linenos"> 889</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ALWAYS"</span> +</span><span id="Generator-890"><a href="#Generator-890"><span class="linenos"> 890</span></a> <span class="k">elif</span> <span class="n">default</span><span class="p">:</span> +</span><span id="Generator-891"><a href="#Generator-891"><span class="linenos"> 891</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> +</span><span id="Generator-892"><a href="#Generator-892"><span class="linenos"> 892</span></a> <span class="k">elif</span> <span class="n">manual</span><span class="p">:</span> +</span><span id="Generator-893"><a href="#Generator-893"><span class="linenos"> 893</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MANUAL"</span> +</span><span id="Generator-894"><a href="#Generator-894"><span class="linenos"> 894</span></a> <span class="k">elif</span> <span class="n">never</span><span class="p">:</span> +</span><span id="Generator-895"><a href="#Generator-895"><span class="linenos"> 895</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"NEVER"</span> +</span><span id="Generator-896"><a href="#Generator-896"><span class="linenos"> 896</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"BLOCKCOMPRESSION=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-897"><a href="#Generator-897"><span class="linenos"> 897</span></a> +</span><span id="Generator-898"><a href="#Generator-898"><span class="linenos"> 898</span></a> <span class="k">def</span> <span class="nf">isolatedloadingproperty_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">IsolatedLoadingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-899"><a href="#Generator-899"><span class="linenos"> 899</span></a> <span class="n">no</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">"no"</span><span class="p">)</span> +</span><span id="Generator-900"><a href="#Generator-900"><span class="linenos"> 900</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">" NO"</span> <span class="k">if</span> <span class="n">no</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-901"><a href="#Generator-901"><span class="linenos"> 901</span></a> <span class="n">concurrent</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">"concurrent"</span><span class="p">)</span> +</span><span id="Generator-902"><a href="#Generator-902"><span class="linenos"> 902</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="s2">" CONCURRENT"</span> <span class="k">if</span> <span class="n">concurrent</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-903"><a href="#Generator-903"><span class="linenos"> 903</span></a> +</span><span id="Generator-904"><a href="#Generator-904"><span class="linenos"> 904</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-905"><a href="#Generator-905"><span class="linenos"> 905</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">"for_all"</span><span class="p">):</span> +</span><span id="Generator-906"><a href="#Generator-906"><span class="linenos"> 906</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR ALL"</span> +</span><span id="Generator-907"><a href="#Generator-907"><span class="linenos"> 907</span></a> <span class="k">elif</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">"for_insert"</span><span class="p">):</span> +</span><span id="Generator-908"><a href="#Generator-908"><span class="linenos"> 908</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR INSERT"</span> +</span><span id="Generator-909"><a href="#Generator-909"><span class="linenos"> 909</span></a> <span class="k">elif</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">"for_none"</span><span class="p">):</span> +</span><span id="Generator-910"><a href="#Generator-910"><span class="linenos"> 910</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR NONE"</span> +</span><span id="Generator-911"><a href="#Generator-911"><span class="linenos"> 911</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">concurrent</span><span class="si">}</span><span class="s2"> ISOLATED LOADING</span><span class="si">{</span><span class="n">for_</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-912"><a href="#Generator-912"><span class="linenos"> 912</span></a> +</span><span id="Generator-913"><a href="#Generator-913"><span class="linenos"> 913</span></a> <span class="k">def</span> <span class="nf">lockingproperty_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">LockingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-914"><a href="#Generator-914"><span class="linenos"> 914</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="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> +</span><span id="Generator-915"><a href="#Generator-915"><span class="linenos"> 915</span></a> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-916"><a href="#Generator-916"><span class="linenos"> 916</span></a> <span class="n">for_or_in</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">"for_or_in"</span><span class="p">)</span> +</span><span id="Generator-917"><a href="#Generator-917"><span class="linenos"> 917</span></a> <span class="n">lock_type</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">"lock_type"</span><span class="p">)</span> +</span><span id="Generator-918"><a href="#Generator-918"><span class="linenos"> 918</span></a> <span class="n">override</span> <span class="o">=</span> <span class="s2">" OVERRIDE"</span> <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">"override"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-919"><a href="#Generator-919"><span class="linenos"> 919</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOCKING </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">for_or_in</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}{</span><span class="n">override</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-920"><a href="#Generator-920"><span class="linenos"> 920</span></a> +</span><span id="Generator-921"><a href="#Generator-921"><span class="linenos"> 921</span></a> <span class="k">def</span> <span class="nf">withdataproperty_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">WithDataProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-922"><a href="#Generator-922"><span class="linenos"> 922</span></a> <span class="n">data_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"WITH </span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'no'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">DATA"</span> +</span><span id="Generator-923"><a href="#Generator-923"><span class="linenos"> 923</span></a> <span class="n">statistics</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">"statistics"</span><span class="p">)</span> +</span><span id="Generator-924"><a href="#Generator-924"><span class="linenos"> 924</span></a> <span class="n">statistics_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-925"><a href="#Generator-925"><span class="linenos"> 925</span></a> <span class="k">if</span> <span class="n">statistics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-926"><a href="#Generator-926"><span class="linenos"> 926</span></a> <span class="n">statistics_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AND </span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">statistics</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">STATISTICS"</span> +</span><span id="Generator-927"><a href="#Generator-927"><span class="linenos"> 927</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">data_sql</span><span class="si">}{</span><span class="n">statistics_sql</span><span class="si">}</span><span class="s2">"</span> </span><span id="Generator-928"><a href="#Generator-928"><span class="linenos"> 928</span></a> -</span><span id="Generator-929"><a href="#Generator-929"><span class="linenos"> 929</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">Directory</span><span class="p">):</span> -</span><span id="Generator-930"><a href="#Generator-930"><span class="linenos"> 930</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> -</span><span id="Generator-931"><a href="#Generator-931"><span class="linenos"> 931</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-932"><a href="#Generator-932"><span class="linenos"> 932</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE TABLE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> -</span><span id="Generator-933"><a href="#Generator-933"><span class="linenos"> 933</span></a> -</span><span id="Generator-934"><a href="#Generator-934"><span class="linenos"> 934</span></a> <span class="n">alternative</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">"alternative"</span><span class="p">)</span> -</span><span id="Generator-935"><a href="#Generator-935"><span class="linenos"> 935</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OR </span><span class="si">{</span><span class="n">alternative</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">alternative</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator-936"><a href="#Generator-936"><span class="linenos"> 936</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-937"><a href="#Generator-937"><span class="linenos"> 937</span></a> -</span><span id="Generator-938"><a href="#Generator-938"><span class="linenos"> 938</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator-939"><a href="#Generator-939"><span class="linenos"> 939</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-940"><a href="#Generator-940"><span class="linenos"> 940</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">"partition"</span><span class="p">)</span> <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">"partition"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-941"><a href="#Generator-941"><span class="linenos"> 941</span></a> <span class="p">)</span> -</span><span id="Generator-942"><a href="#Generator-942"><span class="linenos"> 942</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator-943"><a href="#Generator-943"><span class="linenos"> 943</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="k">if</span> <span class="n">partition_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-944"><a href="#Generator-944"><span class="linenos"> 944</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT</span><span class="si">{</span><span class="n">alternative</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">exists</span><span class="si">}{</span><span class="n">partition_sql</span><span class="si">}{</span><span class="n">sep</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-945"><a href="#Generator-945"><span class="linenos"> 945</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Generator-946"><a href="#Generator-946"><span class="linenos"> 946</span></a> -</span><span id="Generator-947"><a href="#Generator-947"><span class="linenos"> 947</span></a> <span class="k">def</span> <span class="nf">intersect_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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-948"><a href="#Generator-948"><span class="linenos"> 948</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> -</span><span id="Generator-949"><a href="#Generator-949"><span class="linenos"> 949</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator-950"><a href="#Generator-950"><span class="linenos"> 950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> -</span><span id="Generator-951"><a href="#Generator-951"><span class="linenos"> 951</span></a> <span class="p">)</span> -</span><span id="Generator-952"><a href="#Generator-952"><span class="linenos"> 952</span></a> -</span><span id="Generator-953"><a href="#Generator-953"><span class="linenos"> 953</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-954"><a href="#Generator-954"><span class="linenos"> 954</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-929"><a href="#Generator-929"><span class="linenos"> 929</span></a> <span class="k">def</span> <span class="nf">insert_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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-930"><a href="#Generator-930"><span class="linenos"> 930</span></a> <span class="n">overwrite</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">"overwrite"</span><span class="p">)</span> +</span><span id="Generator-931"><a href="#Generator-931"><span class="linenos"> 931</span></a> +</span><span id="Generator-932"><a href="#Generator-932"><span class="linenos"> 932</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">Directory</span><span class="p">):</span> +</span><span id="Generator-933"><a href="#Generator-933"><span class="linenos"> 933</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> +</span><span id="Generator-934"><a href="#Generator-934"><span class="linenos"> 934</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-935"><a href="#Generator-935"><span class="linenos"> 935</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE TABLE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> +</span><span id="Generator-936"><a href="#Generator-936"><span class="linenos"> 936</span></a> +</span><span id="Generator-937"><a href="#Generator-937"><span class="linenos"> 937</span></a> <span class="n">alternative</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">"alternative"</span><span class="p">)</span> +</span><span id="Generator-938"><a href="#Generator-938"><span class="linenos"> 938</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OR </span><span class="si">{</span><span class="n">alternative</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">alternative</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator-939"><a href="#Generator-939"><span class="linenos"> 939</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-940"><a href="#Generator-940"><span class="linenos"> 940</span></a> +</span><span id="Generator-941"><a href="#Generator-941"><span class="linenos"> 941</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator-942"><a href="#Generator-942"><span class="linenos"> 942</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-943"><a href="#Generator-943"><span class="linenos"> 943</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">"partition"</span><span class="p">)</span> <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">"partition"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-944"><a href="#Generator-944"><span class="linenos"> 944</span></a> <span class="p">)</span> +</span><span id="Generator-945"><a href="#Generator-945"><span class="linenos"> 945</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator-946"><a href="#Generator-946"><span class="linenos"> 946</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="k">if</span> <span class="n">partition_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-947"><a href="#Generator-947"><span class="linenos"> 947</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT</span><span class="si">{</span><span class="n">alternative</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">exists</span><span class="si">}{</span><span class="n">partition_sql</span><span class="si">}{</span><span class="n">sep</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-948"><a href="#Generator-948"><span class="linenos"> 948</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Generator-949"><a href="#Generator-949"><span class="linenos"> 949</span></a> +</span><span id="Generator-950"><a href="#Generator-950"><span class="linenos"> 950</span></a> <span class="k">def</span> <span class="nf">intersect_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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-951"><a href="#Generator-951"><span class="linenos"> 951</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> +</span><span id="Generator-952"><a href="#Generator-952"><span class="linenos"> 952</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator-953"><a href="#Generator-953"><span class="linenos"> 953</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> +</span><span id="Generator-954"><a href="#Generator-954"><span class="linenos"> 954</span></a> <span class="p">)</span> </span><span id="Generator-955"><a href="#Generator-955"><span class="linenos"> 955</span></a> -</span><span id="Generator-956"><a href="#Generator-956"><span class="linenos"> 956</span></a> <span class="k">def</span> <span class="nf">introducer_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">Introducer</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-957"><a href="#Generator-957"><span class="linenos"> 957</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-956"><a href="#Generator-956"><span class="linenos"> 956</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-957"><a href="#Generator-957"><span class="linenos"> 957</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span><span id="Generator-958"><a href="#Generator-958"><span class="linenos"> 958</span></a> -</span><span id="Generator-959"><a href="#Generator-959"><span class="linenos"> 959</span></a> <span class="k">def</span> <span class="nf">pseudotype_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">PseudoType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-960"><a href="#Generator-960"><span class="linenos"> 960</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Generator-959"><a href="#Generator-959"><span class="linenos"> 959</span></a> <span class="k">def</span> <span class="nf">introducer_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">Introducer</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-960"><a href="#Generator-960"><span class="linenos"> 960</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span><span id="Generator-961"><a href="#Generator-961"><span class="linenos"> 961</span></a> -</span><span id="Generator-962"><a href="#Generator-962"><span class="linenos"> 962</span></a> <span class="k">def</span> <span class="nf">rowformatdelimitedproperty_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">RowFormatDelimitedProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-963"><a href="#Generator-963"><span class="linenos"> 963</span></a> <span class="n">fields</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">"fields"</span><span class="p">)</span> -</span><span id="Generator-964"><a href="#Generator-964"><span class="linenos"> 964</span></a> <span class="n">fields</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FIELDS TERMINATED BY </span><span class="si">{</span><span class="n">fields</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">fields</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-965"><a href="#Generator-965"><span class="linenos"> 965</span></a> <span class="n">escaped</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">"escaped"</span><span class="p">)</span> -</span><span id="Generator-966"><a href="#Generator-966"><span class="linenos"> 966</span></a> <span class="n">escaped</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ESCAPED BY </span><span class="si">{</span><span class="n">escaped</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">escaped</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-967"><a href="#Generator-967"><span class="linenos"> 967</span></a> <span class="n">items</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">"collection_items"</span><span class="p">)</span> -</span><span id="Generator-968"><a href="#Generator-968"><span class="linenos"> 968</span></a> <span class="n">items</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLECTION ITEMS TERMINATED BY </span><span class="si">{</span><span class="n">items</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">items</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-969"><a href="#Generator-969"><span class="linenos"> 969</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_keys"</span><span class="p">)</span> -</span><span id="Generator-970"><a href="#Generator-970"><span class="linenos"> 970</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAP KEYS TERMINATED BY </span><span class="si">{</span><span class="n">keys</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-971"><a href="#Generator-971"><span class="linenos"> 971</span></a> <span class="n">lines</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">"lines"</span><span class="p">)</span> -</span><span id="Generator-972"><a href="#Generator-972"><span class="linenos"> 972</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" LINES TERMINATED BY </span><span class="si">{</span><span class="n">lines</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">lines</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-973"><a href="#Generator-973"><span class="linenos"> 973</span></a> <span class="n">null</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">"null"</span><span class="p">)</span> -</span><span id="Generator-974"><a href="#Generator-974"><span class="linenos"> 974</span></a> <span class="n">null</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" NULL DEFINED AS </span><span class="si">{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">null</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-975"><a href="#Generator-975"><span class="linenos"> 975</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROW FORMAT DELIMITED</span><span class="si">{</span><span class="n">fields</span><span class="si">}{</span><span class="n">escaped</span><span class="si">}{</span><span class="n">items</span><span class="si">}{</span><span class="n">keys</span><span class="si">}{</span><span class="n">lines</span><span class="si">}{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-976"><a href="#Generator-976"><span class="linenos"> 976</span></a> -</span><span id="Generator-977"><a href="#Generator-977"><span class="linenos"> 977</span></a> <span class="k">def</span> <span class="nf">table_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">Table</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" AS "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-978"><a href="#Generator-978"><span class="linenos"> 978</span></a> <span class="n">table</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator-979"><a href="#Generator-979"><span class="linenos"> 979</span></a> <span class="n">part</span> -</span><span id="Generator-980"><a href="#Generator-980"><span class="linenos"> 980</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">[</span> -</span><span id="Generator-981"><a href="#Generator-981"><span class="linenos"> 981</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">"catalog"</span><span class="p">),</span> -</span><span id="Generator-982"><a href="#Generator-982"><span class="linenos"> 982</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">"db"</span><span class="p">),</span> -</span><span id="Generator-983"><a href="#Generator-983"><span class="linenos"> 983</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">"this"</span><span class="p">),</span> -</span><span id="Generator-984"><a href="#Generator-984"><span class="linenos"> 984</span></a> <span class="p">]</span> -</span><span id="Generator-985"><a href="#Generator-985"><span class="linenos"> 985</span></a> <span class="k">if</span> <span class="n">part</span> -</span><span id="Generator-986"><a href="#Generator-986"><span class="linenos"> 986</span></a> <span class="p">)</span> -</span><span id="Generator-987"><a href="#Generator-987"><span class="linenos"> 987</span></a> -</span><span id="Generator-988"><a href="#Generator-988"><span class="linenos"> 988</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator-989"><a href="#Generator-989"><span class="linenos"> 989</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-990"><a href="#Generator-990"><span class="linenos"> 990</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"hints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">", "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-991"><a href="#Generator-991"><span class="linenos"> 991</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">hints</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">hints</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-992"><a href="#Generator-992"><span class="linenos"> 992</span></a> <span class="n">laterals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Generator-993"><a href="#Generator-993"><span class="linenos"> 993</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Generator-994"><a href="#Generator-994"><span class="linenos"> 994</span></a> <span class="n">pivots</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Generator-995"><a href="#Generator-995"><span class="linenos"> 995</span></a> <span class="n">system_time</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">"system_time"</span><span class="p">)</span> -</span><span id="Generator-996"><a href="#Generator-996"><span class="linenos"> 996</span></a> <span class="n">system_time</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'system_time'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">system_time</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-997"><a href="#Generator-997"><span class="linenos"> 997</span></a> -</span><span id="Generator-998"><a href="#Generator-998"><span class="linenos"> 998</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">pivots</span><span class="p">:</span> -</span><span id="Generator-999"><a href="#Generator-999"><span class="linenos"> 999</span></a> <span class="n">pivots</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">pivots</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1000"><a href="#Generator-1000"><span class="linenos">1000</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-1001"><a href="#Generator-1001"><span class="linenos">1001</span></a> -</span><span id="Generator-1002"><a href="#Generator-1002"><span class="linenos">1002</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">system_time</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">hints</span><span class="si">}{</span><span class="n">laterals</span><span class="si">}{</span><span class="n">joins</span><span class="si">}{</span><span class="n">pivots</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1003"><a href="#Generator-1003"><span class="linenos">1003</span></a> -</span><span id="Generator-1004"><a href="#Generator-1004"><span class="linenos">1004</span></a> <span class="k">def</span> <span class="nf">tablesample_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">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1005"><a href="#Generator-1005"><span class="linenos">1005</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> -</span><span id="Generator-1006"><a href="#Generator-1006"><span class="linenos">1006</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="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator-1007"><a href="#Generator-1007"><span class="linenos">1007</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="s1">'alias'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1008"><a href="#Generator-1008"><span class="linenos">1008</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1009"><a href="#Generator-1009"><span class="linenos">1009</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1010"><a href="#Generator-1010"><span class="linenos">1010</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-1011"><a href="#Generator-1011"><span class="linenos">1011</span></a> <span class="n">method</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">"method"</span><span class="p">)</span> -</span><span id="Generator-1012"><a href="#Generator-1012"><span class="linenos">1012</span></a> <span class="n">method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">method</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">method</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1013"><a href="#Generator-1013"><span class="linenos">1013</span></a> <span class="n">numerator</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">"bucket_numerator"</span><span class="p">)</span> -</span><span id="Generator-1014"><a href="#Generator-1014"><span class="linenos">1014</span></a> <span class="n">denominator</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">"bucket_denominator"</span><span class="p">)</span> -</span><span id="Generator-1015"><a href="#Generator-1015"><span class="linenos">1015</span></a> <span class="n">field</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">"bucket_field"</span><span class="p">)</span> -</span><span id="Generator-1016"><a href="#Generator-1016"><span class="linenos">1016</span></a> <span class="n">field</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">field</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1017"><a href="#Generator-1017"><span class="linenos">1017</span></a> <span class="n">bucket</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"BUCKET </span><span class="si">{</span><span class="n">numerator</span><span class="si">}</span><span class="s2"> OUT OF </span><span class="si">{</span><span class="n">denominator</span><span class="si">}{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">numerator</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1018"><a href="#Generator-1018"><span class="linenos">1018</span></a> <span class="n">percent</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">"percent"</span><span class="p">)</span> -</span><span id="Generator-1019"><a href="#Generator-1019"><span class="linenos">1019</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">percent</span><span class="si">}</span><span class="s2"> PERCENT"</span> <span class="k">if</span> <span class="n">percent</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1020"><a href="#Generator-1020"><span class="linenos">1020</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> -</span><span id="Generator-1021"><a href="#Generator-1021"><span class="linenos">1021</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">rows</span><span class="si">}</span><span class="s2"> ROWS"</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1022"><a href="#Generator-1022"><span class="linenos">1022</span></a> <span class="n">size</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">"size"</span><span class="p">)</span> -</span><span id="Generator-1023"><a href="#Generator-1023"><span class="linenos">1023</span></a> <span class="n">seed</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">"seed"</span><span class="p">)</span> -</span><span id="Generator-1024"><a href="#Generator-1024"><span class="linenos">1024</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SEED (</span><span class="si">{</span><span class="n">seed</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">seed</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1025"><a href="#Generator-1025"><span class="linenos">1025</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TABLESAMPLE</span><span class="si">{</span><span class="n">method</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">bucket</span><span class="si">}{</span><span class="n">percent</span><span class="si">}{</span><span class="n">rows</span><span class="si">}{</span><span class="n">size</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">seed</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1026"><a href="#Generator-1026"><span class="linenos">1026</span></a> -</span><span id="Generator-1027"><a href="#Generator-1027"><span class="linenos">1027</span></a> <span class="k">def</span> <span class="nf">pivot_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">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1028"><a href="#Generator-1028"><span class="linenos">1028</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1029"><a href="#Generator-1029"><span class="linenos">1029</span></a> <span class="n">unpivot</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">"unpivot"</span><span class="p">)</span> -</span><span id="Generator-1030"><a href="#Generator-1030"><span class="linenos">1030</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="s2">"UNPIVOT"</span> <span class="k">if</span> <span class="n">unpivot</span> <span class="k">else</span> <span class="s2">"PIVOT"</span> -</span><span id="Generator-1031"><a href="#Generator-1031"><span class="linenos">1031</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> -</span><span id="Generator-1032"><a href="#Generator-1032"><span class="linenos">1032</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> -</span><span id="Generator-1033"><a href="#Generator-1033"><span class="linenos">1033</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">direction</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2"> FOR </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1034"><a href="#Generator-1034"><span class="linenos">1034</span></a> -</span><span id="Generator-1035"><a href="#Generator-1035"><span class="linenos">1035</span></a> <span class="k">def</span> <span class="nf">tuple_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">Tuple</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1036"><a href="#Generator-1036"><span class="linenos">1036</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1037"><a href="#Generator-1037"><span class="linenos">1037</span></a> -</span><span id="Generator-1038"><a href="#Generator-1038"><span class="linenos">1038</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1039"><a href="#Generator-1039"><span class="linenos">1039</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1040"><a href="#Generator-1040"><span class="linenos">1040</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1041"><a href="#Generator-1041"><span class="linenos">1041</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> -</span><span id="Generator-1042"><a href="#Generator-1042"><span class="linenos">1042</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="Generator-1043"><a href="#Generator-1043"><span class="linenos">1043</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1044"><a href="#Generator-1044"><span class="linenos">1044</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Generator-1045"><a href="#Generator-1045"><span class="linenos">1045</span></a> -</span><span id="Generator-1046"><a href="#Generator-1046"><span class="linenos">1046</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1047"><a href="#Generator-1047"><span class="linenos">1047</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1048"><a href="#Generator-1048"><span class="linenos">1048</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator-1049"><a href="#Generator-1049"><span class="linenos">1049</span></a> <span class="n">values</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"VALUES</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">args</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1050"><a href="#Generator-1050"><span class="linenos">1050</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-1051"><a href="#Generator-1051"><span class="linenos">1051</span></a> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1052"><a href="#Generator-1052"><span class="linenos">1052</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WRAP_DERIVED_VALUES</span> <span class="ow">and</span> <span class="p">(</span><span class="n">alias</span> <span class="ow">or</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">From</span><span class="p">))</span> -</span><span id="Generator-1053"><a href="#Generator-1053"><span class="linenos">1053</span></a> <span class="k">else</span> <span class="n">values</span> -</span><span id="Generator-1054"><a href="#Generator-1054"><span class="linenos">1054</span></a> <span class="p">)</span> -</span><span id="Generator-1055"><a href="#Generator-1055"><span class="linenos">1055</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">values</span> -</span><span id="Generator-1056"><a href="#Generator-1056"><span class="linenos">1056</span></a> -</span><span id="Generator-1057"><a href="#Generator-1057"><span class="linenos">1057</span></a> <span class="k">def</span> <span class="nf">var_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">Var</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1058"><a href="#Generator-1058"><span class="linenos">1058</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator-1059"><a href="#Generator-1059"><span class="linenos">1059</span></a> -</span><span id="Generator-1060"><a href="#Generator-1060"><span class="linenos">1060</span></a> <span class="k">def</span> <span class="nf">into_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">Into</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1061"><a href="#Generator-1061"><span class="linenos">1061</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1062"><a href="#Generator-1062"><span class="linenos">1062</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="s2">" UNLOGGED"</span> <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">"unlogged"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1063"><a href="#Generator-1063"><span class="linenos">1063</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'INTO'</span><span class="p">)</span><span class="si">}{</span><span class="n">temporary</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">unlogged</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1064"><a href="#Generator-1064"><span class="linenos">1064</span></a> -</span><span id="Generator-1065"><a href="#Generator-1065"><span class="linenos">1065</span></a> <span class="k">def</span> <span class="nf">from_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">From</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1066"><a href="#Generator-1066"><span class="linenos">1066</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1067"><a href="#Generator-1067"><span class="linenos">1067</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FROM'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1068"><a href="#Generator-1068"><span class="linenos">1068</span></a> -</span><span id="Generator-1069"><a href="#Generator-1069"><span class="linenos">1069</span></a> <span class="k">def</span> <span class="nf">group_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">Group</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1070"><a href="#Generator-1070"><span class="linenos">1070</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"GROUP BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1071"><a href="#Generator-1071"><span class="linenos">1071</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"grouping_sets"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator-1072"><a href="#Generator-1072"><span class="linenos">1072</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-1073"><a href="#Generator-1073"><span class="linenos">1073</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'GROUPING SETS'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">grouping_sets</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1074"><a href="#Generator-1074"><span class="linenos">1074</span></a> <span class="p">)</span> -</span><span id="Generator-1075"><a href="#Generator-1075"><span class="linenos">1075</span></a> -</span><span id="Generator-1076"><a href="#Generator-1076"><span class="linenos">1076</span></a> <span class="n">cube</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">"cube"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="Generator-1077"><a href="#Generator-1077"><span class="linenos">1077</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">cube</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Generator-1078"><a href="#Generator-1078"><span class="linenos">1078</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1079"><a href="#Generator-1079"><span class="linenos">1079</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1080"><a href="#Generator-1080"><span class="linenos">1080</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"cube"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator-1081"><a href="#Generator-1081"><span class="linenos">1081</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">cube_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">cube_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1082"><a href="#Generator-1082"><span class="linenos">1082</span></a> -</span><span id="Generator-1083"><a href="#Generator-1083"><span class="linenos">1083</span></a> <span class="n">rollup</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">"rollup"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="Generator-1084"><a href="#Generator-1084"><span class="linenos">1084</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">rollup</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Generator-1085"><a href="#Generator-1085"><span class="linenos">1085</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1086"><a href="#Generator-1086"><span class="linenos">1086</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1087"><a href="#Generator-1087"><span class="linenos">1087</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"rollup"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator-1088"><a href="#Generator-1088"><span class="linenos">1088</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">rollup_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">rollup_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1089"><a href="#Generator-1089"><span class="linenos">1089</span></a> -</span><span id="Generator-1090"><a href="#Generator-1090"><span class="linenos">1090</span></a> <span class="n">groupings</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">,</span> <span class="n">cube_sql</span><span class="p">,</span> <span class="n">rollup_sql</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">","</span><span class="p">)</span> -</span><span id="Generator-1091"><a href="#Generator-1091"><span class="linenos">1091</span></a> -</span><span id="Generator-1092"><a href="#Generator-1092"><span class="linenos">1092</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">"expressions"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">groupings</span><span class="p">:</span> -</span><span id="Generator-1093"><a href="#Generator-1093"><span class="linenos">1093</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}</span><span class="s2">,"</span> -</span><span id="Generator-1094"><a href="#Generator-1094"><span class="linenos">1094</span></a> -</span><span id="Generator-1095"><a href="#Generator-1095"><span class="linenos">1095</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="n">groupings</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1096"><a href="#Generator-1096"><span class="linenos">1096</span></a> -</span><span id="Generator-1097"><a href="#Generator-1097"><span class="linenos">1097</span></a> <span class="k">def</span> <span class="nf">having_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">Having</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1098"><a href="#Generator-1098"><span class="linenos">1098</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> -</span><span id="Generator-1099"><a href="#Generator-1099"><span class="linenos">1099</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'HAVING'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1100"><a href="#Generator-1100"><span class="linenos">1100</span></a> -</span><span id="Generator-1101"><a href="#Generator-1101"><span class="linenos">1101</span></a> <span class="k">def</span> <span class="nf">join_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">Join</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1102"><a href="#Generator-1102"><span class="linenos">1102</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span> -</span><span id="Generator-1103"><a href="#Generator-1103"><span class="linenos">1103</span></a> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator-1104"><a href="#Generator-1104"><span class="linenos">1104</span></a> <span class="n">op</span> -</span><span id="Generator-1105"><a href="#Generator-1105"><span class="linenos">1105</span></a> <span class="k">for</span> <span class="n">op</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="Generator-1106"><a href="#Generator-1106"><span class="linenos">1106</span></a> <span class="s2">"NATURAL"</span> <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">"natural"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-1107"><a href="#Generator-1107"><span class="linenos">1107</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">side</span><span class="p">,</span> -</span><span id="Generator-1108"><a href="#Generator-1108"><span class="linenos">1108</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Generator-1109"><a href="#Generator-1109"><span class="linenos">1109</span></a> <span class="s2">"JOIN"</span><span class="p">,</span> -</span><span id="Generator-1110"><a href="#Generator-1110"><span class="linenos">1110</span></a> <span class="p">)</span> -</span><span id="Generator-1111"><a href="#Generator-1111"><span class="linenos">1111</span></a> <span class="k">if</span> <span class="n">op</span> -</span><span id="Generator-1112"><a href="#Generator-1112"><span class="linenos">1112</span></a> <span class="p">)</span> -</span><span id="Generator-1113"><a href="#Generator-1113"><span class="linenos">1113</span></a> <span class="p">)</span> -</span><span id="Generator-1114"><a href="#Generator-1114"><span class="linenos">1114</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">)</span> -</span><span id="Generator-1115"><a href="#Generator-1115"><span class="linenos">1115</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> -</span><span id="Generator-1116"><a href="#Generator-1116"><span class="linenos">1116</span></a> -</span><span id="Generator-1117"><a href="#Generator-1117"><span class="linenos">1117</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">on_sql</span> <span class="ow">and</span> <span class="n">using</span><span class="p">:</span> -</span><span id="Generator-1118"><a href="#Generator-1118"><span class="linenos">1118</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="o">*</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">column</span><span class="p">)</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">using</span><span class="p">))</span> -</span><span id="Generator-1119"><a href="#Generator-1119"><span class="linenos">1119</span></a> -</span><span id="Generator-1120"><a href="#Generator-1120"><span class="linenos">1120</span></a> <span class="k">if</span> <span class="n">on_sql</span><span class="p">:</span> -</span><span id="Generator-1121"><a href="#Generator-1121"><span class="linenos">1121</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">on_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1122"><a href="#Generator-1122"><span class="linenos">1122</span></a> <span class="n">space</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator-1123"><a href="#Generator-1123"><span class="linenos">1123</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> -</span><span id="Generator-1124"><a href="#Generator-1124"><span class="linenos">1124</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">USING (</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1125"><a href="#Generator-1125"><span class="linenos">1125</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1126"><a href="#Generator-1126"><span class="linenos">1126</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">ON </span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1127"><a href="#Generator-1127"><span class="linenos">1127</span></a> -</span><span id="Generator-1128"><a href="#Generator-1128"><span class="linenos">1128</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator-1129"><a href="#Generator-1129"><span class="linenos">1129</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator-1130"><a href="#Generator-1130"><span class="linenos">1130</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">op_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_sql</span><span class="si">}{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1131"><a href="#Generator-1131"><span class="linenos">1131</span></a> -</span><span id="Generator-1132"><a href="#Generator-1132"><span class="linenos">1132</span></a> <span class="k">def</span> <span class="nf">lambda_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">Lambda</span><span class="p">,</span> <span class="n">arrow_sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"->"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1133"><a href="#Generator-1133"><span class="linenos">1133</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1134"><a href="#Generator-1134"><span class="linenos">1134</span></a> <span class="n">args</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">))</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">args</span> -</span><span id="Generator-1135"><a href="#Generator-1135"><span class="linenos">1135</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">arrow_sep</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1136"><a href="#Generator-1136"><span class="linenos">1136</span></a> -</span><span id="Generator-1137"><a href="#Generator-1137"><span class="linenos">1137</span></a> <span class="k">def</span> <span class="nf">lateral_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">Lateral</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1138"><a href="#Generator-1138"><span class="linenos">1138</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1139"><a href="#Generator-1139"><span class="linenos">1139</span></a> -</span><span id="Generator-1140"><a href="#Generator-1140"><span class="linenos">1140</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">Subquery</span><span class="p">):</span> -</span><span id="Generator-1141"><a href="#Generator-1141"><span class="linenos">1141</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1142"><a href="#Generator-1142"><span class="linenos">1142</span></a> -</span><span id="Generator-1143"><a href="#Generator-1143"><span class="linenos">1143</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">"view"</span><span class="p">):</span> -</span><span id="Generator-1144"><a href="#Generator-1144"><span class="linenos">1144</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="p">[</span><span class="s2">"alias"</span><span class="p">]</span> -</span><span id="Generator-1145"><a href="#Generator-1145"><span class="linenos">1145</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1146"><a href="#Generator-1146"><span class="linenos">1146</span></a> <span class="n">table</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">alias</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1147"><a href="#Generator-1147"><span class="linenos">1147</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1148"><a href="#Generator-1148"><span class="linenos">1148</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"LATERAL VIEW</span><span class="si">{</span><span class="s1">' OUTER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'outer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-1149"><a href="#Generator-1149"><span class="linenos">1149</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">table</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1150"><a href="#Generator-1150"><span class="linenos">1150</span></a> -</span><span id="Generator-1151"><a href="#Generator-1151"><span class="linenos">1151</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator-1152"><a href="#Generator-1152"><span class="linenos">1152</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1153"><a href="#Generator-1153"><span class="linenos">1153</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1154"><a href="#Generator-1154"><span class="linenos">1154</span></a> -</span><span id="Generator-1155"><a href="#Generator-1155"><span class="linenos">1155</span></a> <span class="k">def</span> <span class="nf">limit_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">Limit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1156"><a href="#Generator-1156"><span class="linenos">1156</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1157"><a href="#Generator-1157"><span class="linenos">1157</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'LIMIT'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1158"><a href="#Generator-1158"><span class="linenos">1158</span></a> -</span><span id="Generator-1159"><a href="#Generator-1159"><span class="linenos">1159</span></a> <span class="k">def</span> <span class="nf">offset_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">Offset</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1160"><a href="#Generator-1160"><span class="linenos">1160</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1161"><a href="#Generator-1161"><span class="linenos">1161</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'OFFSET'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1162"><a href="#Generator-1162"><span class="linenos">1162</span></a> -</span><span id="Generator-1163"><a href="#Generator-1163"><span class="linenos">1163</span></a> <span class="k">def</span> <span class="nf">lock_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">Lock</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1164"><a href="#Generator-1164"><span class="linenos">1164</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">LOCKING_READS_SUPPORTED</span><span class="p">:</span> -</span><span id="Generator-1165"><a href="#Generator-1165"><span class="linenos">1165</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"UPDATE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"update"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">"SHARE"</span> -</span><span id="Generator-1166"><a href="#Generator-1166"><span class="linenos">1166</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"FOR </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-1167"><a href="#Generator-1167"><span class="linenos">1167</span></a> -</span><span id="Generator-1168"><a href="#Generator-1168"><span class="linenos">1168</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Locking reads using 'FOR UPDATE/SHARE' are not supported"</span><span class="p">)</span> -</span><span id="Generator-1169"><a href="#Generator-1169"><span class="linenos">1169</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Generator-1170"><a href="#Generator-1170"><span class="linenos">1170</span></a> -</span><span id="Generator-1171"><a href="#Generator-1171"><span class="linenos">1171</span></a> <span class="k">def</span> <span class="nf">literal_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">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1172"><a href="#Generator-1172"><span class="linenos">1172</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="Generator-1173"><a href="#Generator-1173"><span class="linenos">1173</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="Generator-1174"><a href="#Generator-1174"><span class="linenos">1174</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span><span class="p">)</span> -</span><span id="Generator-1175"><a href="#Generator-1175"><span class="linenos">1175</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator-1176"><a href="#Generator-1176"><span class="linenos">1176</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">)</span> -</span><span id="Generator-1177"><a href="#Generator-1177"><span class="linenos">1177</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1178"><a href="#Generator-1178"><span class="linenos">1178</span></a> <span class="k">return</span> <span class="n">text</span> -</span><span id="Generator-1179"><a href="#Generator-1179"><span class="linenos">1179</span></a> -</span><span id="Generator-1180"><a href="#Generator-1180"><span class="linenos">1180</span></a> <span class="k">def</span> <span class="nf">loaddata_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">LoadData</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1181"><a href="#Generator-1181"><span class="linenos">1181</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">" LOCAL"</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1182"><a href="#Generator-1182"><span class="linenos">1182</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPATH </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">'inpath'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1183"><a href="#Generator-1183"><span class="linenos">1183</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="s2">" OVERWRITE"</span> <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">"overwrite"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1184"><a href="#Generator-1184"><span class="linenos">1184</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO TABLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1185"><a href="#Generator-1185"><span class="linenos">1185</span></a> <span class="n">partition</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">"partition"</span><span class="p">)</span> -</span><span id="Generator-1186"><a href="#Generator-1186"><span class="linenos">1186</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1187"><a href="#Generator-1187"><span class="linenos">1187</span></a> <span class="n">input_format</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">"input_format"</span><span class="p">)</span> -</span><span id="Generator-1188"><a href="#Generator-1188"><span class="linenos">1188</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPUTFORMAT </span><span class="si">{</span><span class="n">input_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">input_format</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1189"><a href="#Generator-1189"><span class="linenos">1189</span></a> <span class="n">serde</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">"serde"</span><span class="p">)</span> -</span><span id="Generator-1190"><a href="#Generator-1190"><span class="linenos">1190</span></a> <span class="n">serde</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SERDE </span><span class="si">{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">serde</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1191"><a href="#Generator-1191"><span class="linenos">1191</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOAD DATA</span><span class="si">{</span><span class="n">local</span><span class="si">}{</span><span class="n">inpath</span><span class="si">}{</span><span class="n">overwrite</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">partition</span><span class="si">}{</span><span class="n">input_format</span><span class="si">}{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1192"><a href="#Generator-1192"><span class="linenos">1192</span></a> -</span><span id="Generator-1193"><a href="#Generator-1193"><span class="linenos">1193</span></a> <span class="k">def</span> <span class="nf">null_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1194"><a href="#Generator-1194"><span class="linenos">1194</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> -</span><span id="Generator-1195"><a href="#Generator-1195"><span class="linenos">1195</span></a> -</span><span id="Generator-1196"><a href="#Generator-1196"><span class="linenos">1196</span></a> <span class="k">def</span> <span class="nf">boolean_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">Boolean</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1197"><a href="#Generator-1197"><span class="linenos">1197</span></a> <span class="k">return</span> <span class="s2">"TRUE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">"FALSE"</span> -</span><span id="Generator-1198"><a href="#Generator-1198"><span class="linenos">1198</span></a> -</span><span id="Generator-1199"><a href="#Generator-1199"><span class="linenos">1199</span></a> <span class="k">def</span> <span class="nf">order_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">Order</span><span class="p">,</span> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1200"><a href="#Generator-1200"><span class="linenos">1200</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1201"><a href="#Generator-1201"><span class="linenos">1201</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">this</span> -</span><span id="Generator-1202"><a href="#Generator-1202"><span class="linenos">1202</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">ORDER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">this</span> <span class="ow">or</span> <span class="n">flat</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Generator-1203"><a href="#Generator-1203"><span class="linenos">1203</span></a> -</span><span id="Generator-1204"><a href="#Generator-1204"><span class="linenos">1204</span></a> <span class="k">def</span> <span class="nf">cluster_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">Cluster</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1205"><a href="#Generator-1205"><span class="linenos">1205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1206"><a href="#Generator-1206"><span class="linenos">1206</span></a> -</span><span id="Generator-1207"><a href="#Generator-1207"><span class="linenos">1207</span></a> <span class="k">def</span> <span class="nf">distribute_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">Distribute</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1208"><a href="#Generator-1208"><span class="linenos">1208</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"DISTRIBUTE BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1209"><a href="#Generator-1209"><span class="linenos">1209</span></a> -</span><span id="Generator-1210"><a href="#Generator-1210"><span class="linenos">1210</span></a> <span class="k">def</span> <span class="nf">sort_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">Sort</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1211"><a href="#Generator-1211"><span class="linenos">1211</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"SORT BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1212"><a href="#Generator-1212"><span class="linenos">1212</span></a> -</span><span id="Generator-1213"><a href="#Generator-1213"><span class="linenos">1213</span></a> <span class="k">def</span> <span class="nf">ordered_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">Ordered</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1214"><a href="#Generator-1214"><span class="linenos">1214</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> -</span><span id="Generator-1215"><a href="#Generator-1215"><span class="linenos">1215</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> -</span><span id="Generator-1216"><a href="#Generator-1216"><span class="linenos">1216</span></a> -</span><span id="Generator-1217"><a href="#Generator-1217"><span class="linenos">1217</span></a> <span class="n">nulls_first</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">"nulls_first"</span><span class="p">)</span> -</span><span id="Generator-1218"><a href="#Generator-1218"><span class="linenos">1218</span></a> <span class="n">nulls_last</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">nulls_first</span> -</span><span id="Generator-1219"><a href="#Generator-1219"><span class="linenos">1219</span></a> <span class="n">nulls_are_large</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_large"</span> -</span><span id="Generator-1220"><a href="#Generator-1220"><span class="linenos">1220</span></a> <span class="n">nulls_are_small</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span> -</span><span id="Generator-1221"><a href="#Generator-1221"><span class="linenos">1221</span></a> <span class="n">nulls_are_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_last"</span> -</span><span id="Generator-1222"><a href="#Generator-1222"><span class="linenos">1222</span></a> -</span><span id="Generator-1223"><a href="#Generator-1223"><span class="linenos">1223</span></a> <span class="n">sort_order</span> <span class="o">=</span> <span class="s2">" DESC"</span> <span class="k">if</span> <span class="n">desc</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1224"><a href="#Generator-1224"><span class="linenos">1224</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-1225"><a href="#Generator-1225"><span class="linenos">1225</span></a> <span class="k">if</span> <span class="n">nulls_first</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="Generator-1226"><a href="#Generator-1226"><span class="linenos">1226</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="n">nulls_are_last</span> -</span><span id="Generator-1227"><a href="#Generator-1227"><span class="linenos">1227</span></a> <span class="p">):</span> -</span><span id="Generator-1228"><a href="#Generator-1228"><span class="linenos">1228</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS FIRST"</span> -</span><span id="Generator-1229"><a href="#Generator-1229"><span class="linenos">1229</span></a> <span class="k">elif</span> <span class="p">(</span> -</span><span id="Generator-1230"><a href="#Generator-1230"><span class="linenos">1230</span></a> <span class="n">nulls_last</span> -</span><span id="Generator-1231"><a href="#Generator-1231"><span class="linenos">1231</span></a> <span class="ow">and</span> <span class="p">((</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">))</span> -</span><span id="Generator-1232"><a href="#Generator-1232"><span class="linenos">1232</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">nulls_are_last</span> -</span><span id="Generator-1233"><a href="#Generator-1233"><span class="linenos">1233</span></a> <span class="p">):</span> -</span><span id="Generator-1234"><a href="#Generator-1234"><span class="linenos">1234</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS LAST"</span> -</span><span id="Generator-1235"><a href="#Generator-1235"><span class="linenos">1235</span></a> -</span><span id="Generator-1236"><a href="#Generator-1236"><span class="linenos">1236</span></a> <span class="k">if</span> <span class="n">nulls_sort_change</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">NULL_ORDERING_SUPPORTED</span><span class="p">:</span> -</span><span id="Generator-1237"><a href="#Generator-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span> -</span><span id="Generator-1238"><a href="#Generator-1238"><span class="linenos">1238</span></a> <span class="s2">"Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"</span> -</span><span id="Generator-1239"><a href="#Generator-1239"><span class="linenos">1239</span></a> <span class="p">)</span> -</span><span id="Generator-1240"><a href="#Generator-1240"><span class="linenos">1240</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-1241"><a href="#Generator-1241"><span class="linenos">1241</span></a> -</span><span id="Generator-1242"><a href="#Generator-1242"><span class="linenos">1242</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">sort_order</span><span class="si">}{</span><span class="n">nulls_sort_change</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1243"><a href="#Generator-1243"><span class="linenos">1243</span></a> -</span><span id="Generator-1244"><a href="#Generator-1244"><span class="linenos">1244</span></a> <span class="k">def</span> <span class="nf">matchrecognize_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">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1245"><a href="#Generator-1245"><span class="linenos">1245</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1246"><a href="#Generator-1246"><span class="linenos">1246</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> -</span><span id="Generator-1247"><a href="#Generator-1247"><span class="linenos">1247</span></a> <span class="n">measures</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">"measures"</span><span class="p">)</span> -</span><span id="Generator-1248"><a href="#Generator-1248"><span class="linenos">1248</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"MEASURES </span><span class="si">{</span><span class="n">measures</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">measures</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1249"><a href="#Generator-1249"><span class="linenos">1249</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> -</span><span id="Generator-1250"><a href="#Generator-1250"><span class="linenos">1250</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">rows</span><span class="p">)</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1251"><a href="#Generator-1251"><span class="linenos">1251</span></a> <span class="n">after</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">"after"</span><span class="p">)</span> -</span><span id="Generator-1252"><a href="#Generator-1252"><span class="linenos">1252</span></a> <span class="n">after</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">after</span><span class="p">)</span> <span class="k">if</span> <span class="n">after</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1253"><a href="#Generator-1253"><span class="linenos">1253</span></a> <span class="n">pattern</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">"pattern"</span><span class="p">)</span> -</span><span id="Generator-1254"><a href="#Generator-1254"><span class="linenos">1254</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"PATTERN (</span><span class="si">{</span><span class="n">pattern</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> <span class="k">if</span> <span class="n">pattern</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1255"><a href="#Generator-1255"><span class="linenos">1255</span></a> <span class="n">define</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">"define"</span><span class="p">)</span> -</span><span id="Generator-1256"><a href="#Generator-1256"><span class="linenos">1256</span></a> <span class="n">define</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"DEFINE </span><span class="si">{</span><span class="n">define</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">define</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1257"><a href="#Generator-1257"><span class="linenos">1257</span></a> <span class="n">body</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator-1258"><a href="#Generator-1258"><span class="linenos">1258</span></a> <span class="p">(</span> -</span><span id="Generator-1259"><a href="#Generator-1259"><span class="linenos">1259</span></a> <span class="n">partition</span><span class="p">,</span> -</span><span id="Generator-1260"><a href="#Generator-1260"><span class="linenos">1260</span></a> <span class="n">order</span><span class="p">,</span> -</span><span id="Generator-1261"><a href="#Generator-1261"><span class="linenos">1261</span></a> <span class="n">measures</span><span class="p">,</span> -</span><span id="Generator-1262"><a href="#Generator-1262"><span class="linenos">1262</span></a> <span class="n">rows</span><span class="p">,</span> -</span><span id="Generator-1263"><a href="#Generator-1263"><span class="linenos">1263</span></a> <span class="n">after</span><span class="p">,</span> -</span><span id="Generator-1264"><a href="#Generator-1264"><span class="linenos">1264</span></a> <span class="n">pattern</span><span class="p">,</span> -</span><span id="Generator-1265"><a href="#Generator-1265"><span class="linenos">1265</span></a> <span class="n">define</span><span class="p">,</span> -</span><span id="Generator-1266"><a href="#Generator-1266"><span class="linenos">1266</span></a> <span class="p">)</span> -</span><span id="Generator-1267"><a href="#Generator-1267"><span class="linenos">1267</span></a> <span class="p">)</span> -</span><span id="Generator-1268"><a href="#Generator-1268"><span class="linenos">1268</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'MATCH_RECOGNIZE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">body</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1269"><a href="#Generator-1269"><span class="linenos">1269</span></a> -</span><span id="Generator-1270"><a href="#Generator-1270"><span class="linenos">1270</span></a> <span class="k">def</span> <span class="nf">query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">sqls</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1271"><a href="#Generator-1271"><span class="linenos">1271</span></a> <span class="k">return</span> <span class="n">csv</span><span class="p">(</span> -</span><span id="Generator-1272"><a href="#Generator-1272"><span class="linenos">1272</span></a> <span class="o">*</span><span class="n">sqls</span><span class="p">,</span> -</span><span id="Generator-1273"><a href="#Generator-1273"><span class="linenos">1273</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> -</span><span id="Generator-1274"><a href="#Generator-1274"><span class="linenos">1274</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">"match"</span><span class="p">),</span> -</span><span id="Generator-1275"><a href="#Generator-1275"><span class="linenos">1275</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"laterals"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> -</span><span id="Generator-1276"><a href="#Generator-1276"><span class="linenos">1276</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">"where"</span><span class="p">),</span> -</span><span id="Generator-1277"><a href="#Generator-1277"><span class="linenos">1277</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">"group"</span><span class="p">),</span> -</span><span id="Generator-1278"><a href="#Generator-1278"><span class="linenos">1278</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">"having"</span><span class="p">),</span> -</span><span id="Generator-1279"><a href="#Generator-1279"><span class="linenos">1279</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">"qualify"</span><span class="p">),</span> -</span><span id="Generator-1280"><a href="#Generator-1280"><span class="linenos">1280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WINDOW "</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"windows"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1281"><a href="#Generator-1281"><span class="linenos">1281</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">"windows"</span><span class="p">)</span> -</span><span id="Generator-1282"><a href="#Generator-1282"><span class="linenos">1282</span></a> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator-1283"><a href="#Generator-1283"><span class="linenos">1283</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">"distribute"</span><span class="p">),</span> -</span><span id="Generator-1284"><a href="#Generator-1284"><span class="linenos">1284</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">"sort"</span><span class="p">),</span> -</span><span id="Generator-1285"><a href="#Generator-1285"><span class="linenos">1285</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">"cluster"</span><span class="p">),</span> -</span><span id="Generator-1286"><a href="#Generator-1286"><span class="linenos">1286</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">"order"</span><span class="p">),</span> -</span><span id="Generator-1287"><a href="#Generator-1287"><span class="linenos">1287</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">"limit"</span><span class="p">),</span> -</span><span id="Generator-1288"><a href="#Generator-1288"><span class="linenos">1288</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">"offset"</span><span class="p">),</span> -</span><span id="Generator-1289"><a href="#Generator-1289"><span class="linenos">1289</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">"lock"</span><span class="p">),</span> -</span><span id="Generator-1290"><a href="#Generator-1290"><span class="linenos">1290</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> -</span><span id="Generator-1291"><a href="#Generator-1291"><span class="linenos">1291</span></a> <span class="p">)</span> -</span><span id="Generator-1292"><a href="#Generator-1292"><span class="linenos">1292</span></a> -</span><span id="Generator-1293"><a href="#Generator-1293"><span class="linenos">1293</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1294"><a href="#Generator-1294"><span class="linenos">1294</span></a> <span class="n">hint</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">"hint"</span><span class="p">)</span> -</span><span id="Generator-1295"><a href="#Generator-1295"><span class="linenos">1295</span></a> <span class="n">distinct</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">"distinct"</span><span class="p">)</span> -</span><span id="Generator-1296"><a href="#Generator-1296"><span class="linenos">1296</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">distinct</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1297"><a href="#Generator-1297"><span class="linenos">1297</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1298"><a href="#Generator-1298"><span class="linenos">1298</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="n">expressions</span> -</span><span id="Generator-1299"><a href="#Generator-1299"><span class="linenos">1299</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> -</span><span id="Generator-1300"><a href="#Generator-1300"><span class="linenos">1300</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator-1301"><a href="#Generator-1301"><span class="linenos">1301</span></a> <span class="sa">f</span><span class="s2">"SELECT</span><span class="si">{</span><span class="n">hint</span><span class="si">}{</span><span class="n">distinct</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator-1302"><a href="#Generator-1302"><span class="linenos">1302</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">"into"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Generator-1303"><a href="#Generator-1303"><span class="linenos">1303</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">"from"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Generator-1304"><a href="#Generator-1304"><span class="linenos">1304</span></a> <span class="p">)</span> -</span><span id="Generator-1305"><a href="#Generator-1305"><span class="linenos">1305</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Generator-1306"><a href="#Generator-1306"><span class="linenos">1306</span></a> -</span><span id="Generator-1307"><a href="#Generator-1307"><span class="linenos">1307</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">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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1308"><a href="#Generator-1308"><span class="linenos">1308</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1309"><a href="#Generator-1309"><span class="linenos">1309</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1310"><a href="#Generator-1310"><span class="linenos">1310</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1311"><a href="#Generator-1311"><span class="linenos">1311</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1312"><a href="#Generator-1312"><span class="linenos">1312</span></a> -</span><span id="Generator-1313"><a href="#Generator-1313"><span class="linenos">1313</span></a> <span class="k">def</span> <span class="nf">star_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">Star</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1314"><a href="#Generator-1314"><span class="linenos">1314</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"except"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1315"><a href="#Generator-1315"><span class="linenos">1315</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'except'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">except_</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">except_</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1316"><a href="#Generator-1316"><span class="linenos">1316</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"replace"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1317"><a href="#Generator-1317"><span class="linenos">1317</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'replace'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">replace</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1318"><a href="#Generator-1318"><span class="linenos">1318</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"*</span><span class="si">{</span><span class="n">except_</span><span class="si">}{</span><span class="n">replace</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1319"><a href="#Generator-1319"><span class="linenos">1319</span></a> -</span><span id="Generator-1320"><a href="#Generator-1320"><span class="linenos">1320</span></a> <span class="k">def</span> <span class="nf">structkwarg_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">StructKwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1321"><a href="#Generator-1321"><span class="linenos">1321</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1322"><a href="#Generator-1322"><span class="linenos">1322</span></a> -</span><span id="Generator-1323"><a href="#Generator-1323"><span class="linenos">1323</span></a> <span class="k">def</span> <span class="nf">parameter_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">Parameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1324"><a href="#Generator-1324"><span class="linenos">1324</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1325"><a href="#Generator-1325"><span class="linenos">1325</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1326"><a href="#Generator-1326"><span class="linenos">1326</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">PARAMETER_TOKEN</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1327"><a href="#Generator-1327"><span class="linenos">1327</span></a> -</span><span id="Generator-1328"><a href="#Generator-1328"><span class="linenos">1328</span></a> <span class="k">def</span> <span class="nf">sessionparameter_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">SessionParameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1329"><a href="#Generator-1329"><span class="linenos">1329</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1330"><a href="#Generator-1330"><span class="linenos">1330</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> -</span><span id="Generator-1331"><a href="#Generator-1331"><span class="linenos">1331</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Generator-1332"><a href="#Generator-1332"><span class="linenos">1332</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">."</span> -</span><span id="Generator-1333"><a href="#Generator-1333"><span class="linenos">1333</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"@@</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1334"><a href="#Generator-1334"><span class="linenos">1334</span></a> -</span><span id="Generator-1335"><a href="#Generator-1335"><span class="linenos">1335</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1336"><a href="#Generator-1336"><span class="linenos">1336</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">":</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">"?"</span> -</span><span id="Generator-1337"><a href="#Generator-1337"><span class="linenos">1337</span></a> -</span><span id="Generator-1338"><a href="#Generator-1338"><span class="linenos">1338</span></a> <span class="k">def</span> <span class="nf">subquery_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">Subquery</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1339"><a href="#Generator-1339"><span class="linenos">1339</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator-1340"><a href="#Generator-1340"><span class="linenos">1340</span></a> -</span><span id="Generator-1341"><a href="#Generator-1341"><span class="linenos">1341</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> -</span><span id="Generator-1342"><a href="#Generator-1342"><span class="linenos">1342</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator-1343"><a href="#Generator-1343"><span class="linenos">1343</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> -</span><span id="Generator-1344"><a href="#Generator-1344"><span class="linenos">1344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">),</span> -</span><span id="Generator-1345"><a href="#Generator-1345"><span class="linenos">1345</span></a> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator-1346"><a href="#Generator-1346"><span class="linenos">1346</span></a> <span class="p">)</span> -</span><span id="Generator-1347"><a href="#Generator-1347"><span class="linenos">1347</span></a> -</span><span id="Generator-1348"><a href="#Generator-1348"><span class="linenos">1348</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Generator-1349"><a href="#Generator-1349"><span class="linenos">1349</span></a> -</span><span id="Generator-1350"><a href="#Generator-1350"><span class="linenos">1350</span></a> <span class="k">def</span> <span class="nf">qualify_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">Qualify</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1351"><a href="#Generator-1351"><span class="linenos">1351</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> -</span><span id="Generator-1352"><a href="#Generator-1352"><span class="linenos">1352</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'QUALIFY'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1353"><a href="#Generator-1353"><span class="linenos">1353</span></a> -</span><span id="Generator-1354"><a href="#Generator-1354"><span class="linenos">1354</span></a> <span class="k">def</span> <span class="nf">union_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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1355"><a href="#Generator-1355"><span class="linenos">1355</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> -</span><span id="Generator-1356"><a href="#Generator-1356"><span class="linenos">1356</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator-1357"><a href="#Generator-1357"><span class="linenos">1357</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">union_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> -</span><span id="Generator-1358"><a href="#Generator-1358"><span class="linenos">1358</span></a> <span class="p">)</span> -</span><span id="Generator-1359"><a href="#Generator-1359"><span class="linenos">1359</span></a> -</span><span id="Generator-1360"><a href="#Generator-1360"><span class="linenos">1360</span></a> <span class="k">def</span> <span class="nf">union_op</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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1361"><a href="#Generator-1361"><span class="linenos">1361</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">" DISTINCT"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPLICIT_UNION</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1362"><a href="#Generator-1362"><span class="linenos">1362</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">kind</span> <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">"distinct"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" ALL"</span> -</span><span id="Generator-1363"><a href="#Generator-1363"><span class="linenos">1363</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNION</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1364"><a href="#Generator-1364"><span class="linenos">1364</span></a> -</span><span id="Generator-1365"><a href="#Generator-1365"><span class="linenos">1365</span></a> <span class="k">def</span> <span class="nf">unnest_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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1366"><a href="#Generator-1366"><span class="linenos">1366</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1367"><a href="#Generator-1367"><span class="linenos">1367</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator-1368"><a href="#Generator-1368"><span class="linenos">1368</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> -</span><span id="Generator-1369"><a href="#Generator-1369"><span class="linenos">1369</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> -</span><span id="Generator-1370"><a href="#Generator-1370"><span class="linenos">1370</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1371"><a href="#Generator-1371"><span class="linenos">1371</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1372"><a href="#Generator-1372"><span class="linenos">1372</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator-1373"><a href="#Generator-1373"><span class="linenos">1373</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">alias</span> -</span><span id="Generator-1374"><a href="#Generator-1374"><span class="linenos">1374</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="s2">" WITH ORDINALITY"</span> <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">"ordinality"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1375"><a href="#Generator-1375"><span class="linenos">1375</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> -</span><span id="Generator-1376"><a href="#Generator-1376"><span class="linenos">1376</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH OFFSET AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1377"><a href="#Generator-1377"><span class="linenos">1377</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNNEST(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">ordinality</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1378"><a href="#Generator-1378"><span class="linenos">1378</span></a> -</span><span id="Generator-1379"><a href="#Generator-1379"><span class="linenos">1379</span></a> <span class="k">def</span> <span class="nf">where_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">Where</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1380"><a href="#Generator-1380"><span class="linenos">1380</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> -</span><span id="Generator-1381"><a href="#Generator-1381"><span class="linenos">1381</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WHERE'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1382"><a href="#Generator-1382"><span class="linenos">1382</span></a> -</span><span id="Generator-1383"><a href="#Generator-1383"><span class="linenos">1383</span></a> <span class="k">def</span> <span class="nf">window_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">Window</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1384"><a href="#Generator-1384"><span class="linenos">1384</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1385"><a href="#Generator-1385"><span class="linenos">1385</span></a> -</span><span id="Generator-1386"><a href="#Generator-1386"><span class="linenos">1386</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1387"><a href="#Generator-1387"><span class="linenos">1387</span></a> -</span><span id="Generator-1388"><a href="#Generator-1388"><span class="linenos">1388</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> -</span><span id="Generator-1389"><a href="#Generator-1389"><span class="linenos">1389</span></a> <span class="n">order_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">order_sql</span><span class="p">(</span><span class="n">order</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="n">order</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1390"><a href="#Generator-1390"><span class="linenos">1390</span></a> -</span><span id="Generator-1391"><a href="#Generator-1391"><span class="linenos">1391</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="n">partition</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">partition</span> <span class="ow">and</span> <span class="n">order</span> <span class="k">else</span> <span class="n">partition</span> -</span><span id="Generator-1392"><a href="#Generator-1392"><span class="linenos">1392</span></a> -</span><span id="Generator-1393"><a href="#Generator-1393"><span class="linenos">1393</span></a> <span class="n">spec</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">"spec"</span><span class="p">)</span> -</span><span id="Generator-1394"><a href="#Generator-1394"><span class="linenos">1394</span></a> <span class="n">spec_sql</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">window_spec_sql</span><span class="p">(</span><span class="n">spec</span><span class="p">)</span> <span class="k">if</span> <span class="n">spec</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1395"><a href="#Generator-1395"><span class="linenos">1395</span></a> -</span><span id="Generator-1396"><a href="#Generator-1396"><span class="linenos">1396</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator-1397"><a href="#Generator-1397"><span class="linenos">1397</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">'AS'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">arg_key</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'windows'</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'OVER'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1398"><a href="#Generator-1398"><span class="linenos">1398</span></a> -</span><span id="Generator-1399"><a href="#Generator-1399"><span class="linenos">1399</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">partition</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">order</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">spec</span> <span class="ow">and</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Generator-1400"><a href="#Generator-1400"><span class="linenos">1400</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1401"><a href="#Generator-1401"><span class="linenos">1401</span></a> -</span><span id="Generator-1402"><a href="#Generator-1402"><span class="linenos">1402</span></a> <span class="n">window_args</span> <span class="o">=</span> <span class="n">alias</span> <span class="o">+</span> <span class="n">partition_sql</span> <span class="o">+</span> <span class="n">order_sql</span> <span class="o">+</span> <span class="n">spec_sql</span> -</span><span id="Generator-1403"><a href="#Generator-1403"><span class="linenos">1403</span></a> -</span><span id="Generator-1404"><a href="#Generator-1404"><span class="linenos">1404</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">window_args</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1405"><a href="#Generator-1405"><span class="linenos">1405</span></a> -</span><span id="Generator-1406"><a href="#Generator-1406"><span class="linenos">1406</span></a> <span class="k">def</span> <span class="nf">partition_by_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">Window</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1407"><a href="#Generator-1407"><span class="linenos">1407</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"partition_by"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1408"><a href="#Generator-1408"><span class="linenos">1408</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1409"><a href="#Generator-1409"><span class="linenos">1409</span></a> -</span><span id="Generator-1410"><a href="#Generator-1410"><span class="linenos">1410</span></a> <span class="k">def</span> <span class="nf">window_spec_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">WindowSpec</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1411"><a href="#Generator-1411"><span class="linenos">1411</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="Generator-1412"><a href="#Generator-1412"><span class="linenos">1412</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator-1413"><a href="#Generator-1413"><span class="linenos">1413</span></a> <span class="n">end</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-1414"><a href="#Generator-1414"><span class="linenos">1414</span></a> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator-1415"><a href="#Generator-1415"><span class="linenos">1415</span></a> <span class="ow">or</span> <span class="s2">"CURRENT ROW"</span> -</span><span id="Generator-1416"><a href="#Generator-1416"><span class="linenos">1416</span></a> <span class="p">)</span> -</span><span id="Generator-1417"><a href="#Generator-1417"><span class="linenos">1417</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1418"><a href="#Generator-1418"><span class="linenos">1418</span></a> -</span><span id="Generator-1419"><a href="#Generator-1419"><span class="linenos">1419</span></a> <span class="k">def</span> <span class="nf">withingroup_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">WithinGroup</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1420"><a href="#Generator-1420"><span class="linenos">1420</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1421"><a href="#Generator-1421"><span class="linenos">1421</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># order has a leading space</span> -</span><span id="Generator-1422"><a href="#Generator-1422"><span class="linenos">1422</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> WITHIN GROUP (</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1423"><a href="#Generator-1423"><span class="linenos">1423</span></a> -</span><span id="Generator-1424"><a href="#Generator-1424"><span class="linenos">1424</span></a> <span class="k">def</span> <span class="nf">between_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">Between</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1425"><a href="#Generator-1425"><span class="linenos">1425</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1426"><a href="#Generator-1426"><span class="linenos">1426</span></a> <span class="n">low</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">"low"</span><span class="p">)</span> -</span><span id="Generator-1427"><a href="#Generator-1427"><span class="linenos">1427</span></a> <span class="n">high</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">"high"</span><span class="p">)</span> -</span><span id="Generator-1428"><a href="#Generator-1428"><span class="linenos">1428</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">low</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">high</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1429"><a href="#Generator-1429"><span class="linenos">1429</span></a> -</span><span id="Generator-1430"><a href="#Generator-1430"><span class="linenos">1430</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1431"><a href="#Generator-1431"><span class="linenos">1431</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> -</span><span id="Generator-1432"><a href="#Generator-1432"><span class="linenos">1432</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="Generator-1433"><a href="#Generator-1433"><span class="linenos">1433</span></a> -</span><span id="Generator-1434"><a href="#Generator-1434"><span class="linenos">1434</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> -</span><span id="Generator-1435"><a href="#Generator-1435"><span class="linenos">1435</span></a> -</span><span id="Generator-1436"><a href="#Generator-1436"><span class="linenos">1436</span></a> <span class="k">def</span> <span class="nf">all_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">All</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1437"><a href="#Generator-1437"><span class="linenos">1437</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALL </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1438"><a href="#Generator-1438"><span class="linenos">1438</span></a> -</span><span id="Generator-1439"><a href="#Generator-1439"><span class="linenos">1439</span></a> <span class="k">def</span> <span class="nf">any_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">Any</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1440"><a href="#Generator-1440"><span class="linenos">1440</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1441"><a href="#Generator-1441"><span class="linenos">1441</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">Subqueryable</span><span class="p">):</span> -</span><span id="Generator-1442"><a href="#Generator-1442"><span class="linenos">1442</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Generator-1443"><a href="#Generator-1443"><span class="linenos">1443</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ANY </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1444"><a href="#Generator-1444"><span class="linenos">1444</span></a> -</span><span id="Generator-1445"><a href="#Generator-1445"><span class="linenos">1445</span></a> <span class="k">def</span> <span class="nf">exists_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">Exists</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1446"><a href="#Generator-1446"><span class="linenos">1446</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXISTS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1447"><a href="#Generator-1447"><span class="linenos">1447</span></a> -</span><span id="Generator-1448"><a href="#Generator-1448"><span class="linenos">1448</span></a> <span class="k">def</span> <span class="nf">case_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">Case</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1449"><a href="#Generator-1449"><span class="linenos">1449</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1450"><a href="#Generator-1450"><span class="linenos">1450</span></a> <span class="n">statements</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"CASE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"CASE"</span><span class="p">]</span> -</span><span id="Generator-1451"><a href="#Generator-1451"><span class="linenos">1451</span></a> -</span><span id="Generator-1452"><a href="#Generator-1452"><span class="linenos">1452</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">args</span><span class="p">[</span><span class="s2">"ifs"</span><span class="p">]:</span> -</span><span id="Generator-1453"><a href="#Generator-1453"><span class="linenos">1453</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WHEN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-1454"><a href="#Generator-1454"><span class="linenos">1454</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"THEN </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">'true'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-1455"><a href="#Generator-1455"><span class="linenos">1455</span></a> -</span><span id="Generator-1456"><a href="#Generator-1456"><span class="linenos">1456</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="Generator-1457"><a href="#Generator-1457"><span class="linenos">1457</span></a> -</span><span id="Generator-1458"><a href="#Generator-1458"><span class="linenos">1458</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="Generator-1459"><a href="#Generator-1459"><span class="linenos">1459</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ELSE </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-1460"><a href="#Generator-1460"><span class="linenos">1460</span></a> -</span><span id="Generator-1461"><a href="#Generator-1461"><span class="linenos">1461</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> -</span><span id="Generator-1462"><a href="#Generator-1462"><span class="linenos">1462</span></a> -</span><span id="Generator-1463"><a href="#Generator-1463"><span class="linenos">1463</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> -</span><span id="Generator-1464"><a href="#Generator-1464"><span class="linenos">1464</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">),</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1465"><a href="#Generator-1465"><span class="linenos">1465</span></a> -</span><span id="Generator-1466"><a href="#Generator-1466"><span class="linenos">1466</span></a> <span class="k">return</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> -</span><span id="Generator-1467"><a href="#Generator-1467"><span class="linenos">1467</span></a> -</span><span id="Generator-1468"><a href="#Generator-1468"><span class="linenos">1468</span></a> <span class="k">def</span> <span class="nf">constraint_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">Constraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1469"><a href="#Generator-1469"><span class="linenos">1469</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1470"><a href="#Generator-1470"><span class="linenos">1470</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1471"><a href="#Generator-1471"><span class="linenos">1471</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1472"><a href="#Generator-1472"><span class="linenos">1472</span></a> -</span><span id="Generator-1473"><a href="#Generator-1473"><span class="linenos">1473</span></a> <span class="k">def</span> <span class="nf">extract_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">Extract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1474"><a href="#Generator-1474"><span class="linenos">1474</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1475"><a href="#Generator-1475"><span class="linenos">1475</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator-1476"><a href="#Generator-1476"><span class="linenos">1476</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXTRACT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1477"><a href="#Generator-1477"><span class="linenos">1477</span></a> -</span><span id="Generator-1478"><a href="#Generator-1478"><span class="linenos">1478</span></a> <span class="k">def</span> <span class="nf">trim_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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1479"><a href="#Generator-1479"><span class="linenos">1479</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="Generator-1480"><a href="#Generator-1480"><span class="linenos">1480</span></a> -</span><span id="Generator-1481"><a href="#Generator-1481"><span class="linenos">1481</span></a> <span class="k">if</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"LEADING"</span><span class="p">:</span> -</span><span id="Generator-1482"><a href="#Generator-1482"><span class="linenos">1482</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">"LTRIM"</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="Generator-1483"><a href="#Generator-1483"><span class="linenos">1483</span></a> <span class="k">elif</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"TRAILING"</span><span class="p">:</span> -</span><span id="Generator-1484"><a href="#Generator-1484"><span class="linenos">1484</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">"RTRIM"</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="Generator-1485"><a href="#Generator-1485"><span class="linenos">1485</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1486"><a href="#Generator-1486"><span class="linenos">1486</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">"TRIM"</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><span id="Generator-1487"><a href="#Generator-1487"><span class="linenos">1487</span></a> -</span><span id="Generator-1488"><a href="#Generator-1488"><span class="linenos">1488</span></a> <span class="k">def</span> <span class="nf">concat_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">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1489"><a href="#Generator-1489"><span class="linenos">1489</span></a> <span class="k">if</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 class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Generator-1490"><a href="#Generator-1490"><span class="linenos">1490</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="Generator-1491"><a href="#Generator-1491"><span class="linenos">1491</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="Generator-1492"><a href="#Generator-1492"><span class="linenos">1492</span></a> -</span><span id="Generator-1493"><a href="#Generator-1493"><span class="linenos">1493</span></a> <span class="k">def</span> <span class="nf">check_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">Check</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1494"><a href="#Generator-1494"><span class="linenos">1494</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="n">key</span><span class="o">=</span><span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator-1495"><a href="#Generator-1495"><span class="linenos">1495</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECK (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1496"><a href="#Generator-1496"><span class="linenos">1496</span></a> -</span><span id="Generator-1497"><a href="#Generator-1497"><span class="linenos">1497</span></a> <span class="k">def</span> <span class="nf">foreignkey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1498"><a href="#Generator-1498"><span class="linenos">1498</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1499"><a href="#Generator-1499"><span class="linenos">1499</span></a> <span class="n">reference</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">"reference"</span><span class="p">)</span> -</span><span id="Generator-1500"><a href="#Generator-1500"><span class="linenos">1500</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">reference</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">reference</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1501"><a href="#Generator-1501"><span class="linenos">1501</span></a> <span class="n">delete</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">"delete"</span><span class="p">)</span> -</span><span id="Generator-1502"><a href="#Generator-1502"><span class="linenos">1502</span></a> <span class="n">delete</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON DELETE </span><span class="si">{</span><span class="n">delete</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">delete</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1503"><a href="#Generator-1503"><span class="linenos">1503</span></a> <span class="n">update</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">"update"</span><span class="p">)</span> -</span><span id="Generator-1504"><a href="#Generator-1504"><span class="linenos">1504</span></a> <span class="n">update</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON UPDATE </span><span class="si">{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">update</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1505"><a href="#Generator-1505"><span class="linenos">1505</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FOREIGN KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">reference</span><span class="si">}{</span><span class="n">delete</span><span class="si">}{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1506"><a href="#Generator-1506"><span class="linenos">1506</span></a> -</span><span id="Generator-1507"><a href="#Generator-1507"><span class="linenos">1507</span></a> <span class="k">def</span> <span class="nf">primarykey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1508"><a href="#Generator-1508"><span class="linenos">1508</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1509"><a href="#Generator-1509"><span class="linenos">1509</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator-1510"><a href="#Generator-1510"><span class="linenos">1510</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1511"><a href="#Generator-1511"><span class="linenos">1511</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1512"><a href="#Generator-1512"><span class="linenos">1512</span></a> -</span><span id="Generator-1513"><a href="#Generator-1513"><span class="linenos">1513</span></a> <span class="k">def</span> <span class="nf">unique_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">Unique</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1514"><a href="#Generator-1514"><span class="linenos">1514</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> -</span><span id="Generator-1515"><a href="#Generator-1515"><span class="linenos">1515</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNIQUE (</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1516"><a href="#Generator-1516"><span class="linenos">1516</span></a> -</span><span id="Generator-1517"><a href="#Generator-1517"><span class="linenos">1517</span></a> <span class="k">def</span> <span class="nf">if_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">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1518"><a href="#Generator-1518"><span class="linenos">1518</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sql</span><span class="p">(</span> -</span><span id="Generator-1519"><a href="#Generator-1519"><span class="linenos">1519</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()],</span> <span class="n">default</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">"false"</span><span class="p">))</span> -</span><span id="Generator-1520"><a href="#Generator-1520"><span class="linenos">1520</span></a> <span class="p">)</span> -</span><span id="Generator-1521"><a href="#Generator-1521"><span class="linenos">1521</span></a> -</span><span id="Generator-1522"><a href="#Generator-1522"><span class="linenos">1522</span></a> <span class="k">def</span> <span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1523"><a href="#Generator-1523"><span class="linenos">1523</span></a> <span class="n">query</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">"query"</span><span class="p">)</span> -</span><span id="Generator-1524"><a href="#Generator-1524"><span class="linenos">1524</span></a> <span class="n">unnest</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">"unnest"</span><span class="p">)</span> -</span><span id="Generator-1525"><a href="#Generator-1525"><span class="linenos">1525</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> -</span><span id="Generator-1526"><a href="#Generator-1526"><span class="linenos">1526</span></a> <span class="n">is_global</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"is_global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1527"><a href="#Generator-1527"><span class="linenos">1527</span></a> -</span><span id="Generator-1528"><a href="#Generator-1528"><span class="linenos">1528</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> -</span><span id="Generator-1529"><a href="#Generator-1529"><span class="linenos">1529</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">query</span><span class="p">)</span> -</span><span id="Generator-1530"><a href="#Generator-1530"><span class="linenos">1530</span></a> <span class="k">elif</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="Generator-1531"><a href="#Generator-1531"><span class="linenos">1531</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_unnest_op</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> -</span><span id="Generator-1532"><a href="#Generator-1532"><span class="linenos">1532</span></a> <span class="k">elif</span> <span class="n">field</span><span class="p">:</span> -</span><span id="Generator-1533"><a href="#Generator-1533"><span class="linenos">1533</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> -</span><span id="Generator-1534"><a href="#Generator-1534"><span class="linenos">1534</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1535"><a href="#Generator-1535"><span class="linenos">1535</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1536"><a href="#Generator-1536"><span class="linenos">1536</span></a> -</span><span id="Generator-1537"><a href="#Generator-1537"><span class="linenos">1537</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">is_global</span><span class="si">}</span><span class="s2"> IN </span><span class="si">{</span><span class="n">in_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1538"><a href="#Generator-1538"><span class="linenos">1538</span></a> -</span><span id="Generator-1539"><a href="#Generator-1539"><span class="linenos">1539</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1540"><a href="#Generator-1540"><span class="linenos">1540</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(SELECT </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">unnest</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1541"><a href="#Generator-1541"><span class="linenos">1541</span></a> -</span><span id="Generator-1542"><a href="#Generator-1542"><span class="linenos">1542</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1543"><a href="#Generator-1543"><span class="linenos">1543</span></a> <span class="n">this</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1544"><a href="#Generator-1544"><span class="linenos">1544</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Generator-1545"><a href="#Generator-1545"><span class="linenos">1545</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-1546"><a href="#Generator-1546"><span class="linenos">1546</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1547"><a href="#Generator-1547"><span class="linenos">1547</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> -</span><span id="Generator-1548"><a href="#Generator-1548"><span class="linenos">1548</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1549"><a href="#Generator-1549"><span class="linenos">1549</span></a> <span class="p">)</span> -</span><span id="Generator-1550"><a href="#Generator-1550"><span class="linenos">1550</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1551"><a href="#Generator-1551"><span class="linenos">1551</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator-1552"><a href="#Generator-1552"><span class="linenos">1552</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> -</span><span id="Generator-1553"><a href="#Generator-1553"><span class="linenos">1553</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">unit</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1554"><a href="#Generator-1554"><span class="linenos">1554</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERVAL</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1555"><a href="#Generator-1555"><span class="linenos">1555</span></a> -</span><span id="Generator-1556"><a href="#Generator-1556"><span class="linenos">1556</span></a> <span class="k">def</span> <span class="nf">return_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">Return</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1557"><a href="#Generator-1557"><span class="linenos">1557</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RETURN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1558"><a href="#Generator-1558"><span class="linenos">1558</span></a> -</span><span id="Generator-1559"><a href="#Generator-1559"><span class="linenos">1559</span></a> <span class="k">def</span> <span class="nf">reference_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">Reference</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1560"><a href="#Generator-1560"><span class="linenos">1560</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1561"><a href="#Generator-1561"><span class="linenos">1561</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1562"><a href="#Generator-1562"><span class="linenos">1562</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1563"><a href="#Generator-1563"><span class="linenos">1563</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator-1564"><a href="#Generator-1564"><span class="linenos">1564</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1565"><a href="#Generator-1565"><span class="linenos">1565</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"REFERENCES </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1566"><a href="#Generator-1566"><span class="linenos">1566</span></a> -</span><span id="Generator-1567"><a href="#Generator-1567"><span class="linenos">1567</span></a> <span class="k">def</span> <span class="nf">anonymous_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">Anonymous</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1568"><a href="#Generator-1568"><span class="linenos">1568</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="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Generator-1569"><a href="#Generator-1569"><span class="linenos">1569</span></a> -</span><span id="Generator-1570"><a href="#Generator-1570"><span class="linenos">1570</span></a> <span class="k">def</span> <span class="nf">paren_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">Paren</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1571"><a href="#Generator-1571"><span class="linenos">1571</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">unnest</span><span class="p">(),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> -</span><span id="Generator-1572"><a href="#Generator-1572"><span class="linenos">1572</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1573"><a href="#Generator-1573"><span class="linenos">1573</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1574"><a href="#Generator-1574"><span class="linenos">1574</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Generator-1575"><a href="#Generator-1575"><span class="linenos">1575</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1576"><a href="#Generator-1576"><span class="linenos">1576</span></a> -</span><span id="Generator-1577"><a href="#Generator-1577"><span class="linenos">1577</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Generator-1578"><a href="#Generator-1578"><span class="linenos">1578</span></a> -</span><span id="Generator-1579"><a href="#Generator-1579"><span class="linenos">1579</span></a> <span class="k">def</span> <span class="nf">neg_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">Neg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1580"><a href="#Generator-1580"><span class="linenos">1580</span></a> <span class="c1"># This makes sure we don't convert "- - 5" to "--5", which is a comment</span> -</span><span id="Generator-1581"><a href="#Generator-1581"><span class="linenos">1581</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator-1582"><a href="#Generator-1582"><span class="linenos">1582</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">this_sql</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"-"</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1583"><a href="#Generator-1583"><span class="linenos">1583</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"-</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1584"><a href="#Generator-1584"><span class="linenos">1584</span></a> -</span><span id="Generator-1585"><a href="#Generator-1585"><span class="linenos">1585</span></a> <span class="k">def</span> <span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1586"><a href="#Generator-1586"><span class="linenos">1586</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"NOT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1587"><a href="#Generator-1587"><span class="linenos">1587</span></a> -</span><span id="Generator-1588"><a href="#Generator-1588"><span class="linenos">1588</span></a> <span class="k">def</span> <span class="nf">alias_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">Alias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1589"><a href="#Generator-1589"><span class="linenos">1589</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator-1590"><a href="#Generator-1590"><span class="linenos">1590</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">to_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1591"><a href="#Generator-1591"><span class="linenos">1591</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1592"><a href="#Generator-1592"><span class="linenos">1592</span></a> -</span><span id="Generator-1593"><a href="#Generator-1593"><span class="linenos">1593</span></a> <span class="k">def</span> <span class="nf">aliases_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">Aliases</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1594"><a href="#Generator-1594"><span class="linenos">1594</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1595"><a href="#Generator-1595"><span class="linenos">1595</span></a> -</span><span id="Generator-1596"><a href="#Generator-1596"><span class="linenos">1596</span></a> <span class="k">def</span> <span class="nf">attimezone_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">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1597"><a href="#Generator-1597"><span class="linenos">1597</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1598"><a href="#Generator-1598"><span class="linenos">1598</span></a> <span class="n">zone</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">"zone"</span><span class="p">)</span> -</span><span id="Generator-1599"><a href="#Generator-1599"><span class="linenos">1599</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1600"><a href="#Generator-1600"><span class="linenos">1600</span></a> -</span><span id="Generator-1601"><a href="#Generator-1601"><span class="linenos">1601</span></a> <span class="k">def</span> <span class="nf">add_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">Add</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1602"><a href="#Generator-1602"><span class="linenos">1602</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> -</span><span id="Generator-1603"><a href="#Generator-1603"><span class="linenos">1603</span></a> -</span><span id="Generator-1604"><a href="#Generator-1604"><span class="linenos">1604</span></a> <span class="k">def</span> <span class="nf">and_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">And</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1605"><a href="#Generator-1605"><span class="linenos">1605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">)</span> -</span><span id="Generator-1606"><a href="#Generator-1606"><span class="linenos">1606</span></a> -</span><span id="Generator-1607"><a href="#Generator-1607"><span class="linenos">1607</span></a> <span class="k">def</span> <span class="nf">connector_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">Connector</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1608"><a href="#Generator-1608"><span class="linenos">1608</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator-1609"><a href="#Generator-1609"><span class="linenos">1609</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">op</span><span class="p">)</span> -</span><span id="Generator-1610"><a href="#Generator-1610"><span class="linenos">1610</span></a> -</span><span id="Generator-1611"><a href="#Generator-1611"><span class="linenos">1611</span></a> <span class="n">sqls</span> <span class="o">=</span> <span class="nb">tuple</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="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">flatten</span><span class="p">(</span><span class="n">unnest</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="Generator-1612"><a href="#Generator-1612"><span class="linenos">1612</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator-1613"><a href="#Generator-1613"><span class="linenos">1613</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> -</span><span id="Generator-1614"><a href="#Generator-1614"><span class="linenos">1614</span></a> -</span><span id="Generator-1615"><a href="#Generator-1615"><span class="linenos">1615</span></a> <span class="k">def</span> <span class="nf">bitwiseand_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">BitwiseAnd</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1616"><a href="#Generator-1616"><span class="linenos">1616</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"&"</span><span class="p">)</span> -</span><span id="Generator-1617"><a href="#Generator-1617"><span class="linenos">1617</span></a> -</span><span id="Generator-1618"><a href="#Generator-1618"><span class="linenos">1618</span></a> <span class="k">def</span> <span class="nf">bitwiseleftshift_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">BitwiseLeftShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1619"><a href="#Generator-1619"><span class="linenos">1619</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<<"</span><span class="p">)</span> -</span><span id="Generator-1620"><a href="#Generator-1620"><span class="linenos">1620</span></a> -</span><span id="Generator-1621"><a href="#Generator-1621"><span class="linenos">1621</span></a> <span class="k">def</span> <span class="nf">bitwisenot_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">BitwiseNot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1622"><a href="#Generator-1622"><span class="linenos">1622</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"~</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1623"><a href="#Generator-1623"><span class="linenos">1623</span></a> -</span><span id="Generator-1624"><a href="#Generator-1624"><span class="linenos">1624</span></a> <span class="k">def</span> <span class="nf">bitwiseor_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">BitwiseOr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1625"><a href="#Generator-1625"><span class="linenos">1625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"|"</span><span class="p">)</span> -</span><span id="Generator-1626"><a href="#Generator-1626"><span class="linenos">1626</span></a> -</span><span id="Generator-1627"><a href="#Generator-1627"><span class="linenos">1627</span></a> <span class="k">def</span> <span class="nf">bitwiserightshift_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">BitwiseRightShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1628"><a href="#Generator-1628"><span class="linenos">1628</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">>"</span><span class="p">)</span> -</span><span id="Generator-1629"><a href="#Generator-1629"><span class="linenos">1629</span></a> -</span><span id="Generator-1630"><a href="#Generator-1630"><span class="linenos">1630</span></a> <span class="k">def</span> <span class="nf">bitwisexor_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">BitwiseXor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1631"><a href="#Generator-1631"><span class="linenos">1631</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">)</span> -</span><span id="Generator-1632"><a href="#Generator-1632"><span class="linenos">1632</span></a> -</span><span id="Generator-1633"><a href="#Generator-1633"><span class="linenos">1633</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1634"><a href="#Generator-1634"><span class="linenos">1634</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1635"><a href="#Generator-1635"><span class="linenos">1635</span></a> -</span><span id="Generator-1636"><a href="#Generator-1636"><span class="linenos">1636</span></a> <span class="k">def</span> <span class="nf">currentdate_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">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1637"><a href="#Generator-1637"><span class="linenos">1637</span></a> <span class="n">zone</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1638"><a href="#Generator-1638"><span class="linenos">1638</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE(</span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> -</span><span id="Generator-1639"><a href="#Generator-1639"><span class="linenos">1639</span></a> -</span><span id="Generator-1640"><a href="#Generator-1640"><span class="linenos">1640</span></a> <span class="k">def</span> <span class="nf">collate_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">Collate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1641"><a href="#Generator-1641"><span class="linenos">1641</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"COLLATE"</span><span class="p">)</span> -</span><span id="Generator-1642"><a href="#Generator-1642"><span class="linenos">1642</span></a> -</span><span id="Generator-1643"><a href="#Generator-1643"><span class="linenos">1643</span></a> <span class="k">def</span> <span class="nf">command_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">Command</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1644"><a href="#Generator-1644"><span class="linenos">1644</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s1">'expression'</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1645"><a href="#Generator-1645"><span class="linenos">1645</span></a> -</span><span id="Generator-1646"><a href="#Generator-1646"><span class="linenos">1646</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1647"><a href="#Generator-1647"><span class="linenos">1647</span></a> <span class="k">return</span> <span class="s2">"BEGIN"</span> -</span><span id="Generator-1648"><a href="#Generator-1648"><span class="linenos">1648</span></a> -</span><span id="Generator-1649"><a href="#Generator-1649"><span class="linenos">1649</span></a> <span class="k">def</span> <span class="nf">commit_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">Commit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1650"><a href="#Generator-1650"><span class="linenos">1650</span></a> <span class="n">chain</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">"chain"</span><span class="p">)</span> -</span><span id="Generator-1651"><a href="#Generator-1651"><span class="linenos">1651</span></a> <span class="k">if</span> <span class="n">chain</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-1652"><a href="#Generator-1652"><span class="linenos">1652</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="s2">" AND CHAIN"</span> <span class="k">if</span> <span class="n">chain</span> <span class="k">else</span> <span class="s2">" AND NO CHAIN"</span> -</span><span id="Generator-1653"><a href="#Generator-1653"><span class="linenos">1653</span></a> -</span><span id="Generator-1654"><a href="#Generator-1654"><span class="linenos">1654</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COMMIT</span><span class="si">{</span><span class="n">chain</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1655"><a href="#Generator-1655"><span class="linenos">1655</span></a> -</span><span id="Generator-1656"><a href="#Generator-1656"><span class="linenos">1656</span></a> <span class="k">def</span> <span class="nf">rollback_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">Rollback</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1657"><a href="#Generator-1657"><span class="linenos">1657</span></a> <span class="n">savepoint</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">"savepoint"</span><span class="p">)</span> -</span><span id="Generator-1658"><a href="#Generator-1658"><span class="linenos">1658</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" TO </span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">savepoint</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1659"><a href="#Generator-1659"><span class="linenos">1659</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROLLBACK</span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1660"><a href="#Generator-1660"><span class="linenos">1660</span></a> -</span><span id="Generator-1661"><a href="#Generator-1661"><span class="linenos">1661</span></a> <span class="k">def</span> <span class="nf">altercolumn_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">AlterColumn</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1662"><a href="#Generator-1662"><span class="linenos">1662</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1663"><a href="#Generator-1663"><span class="linenos">1663</span></a> -</span><span id="Generator-1664"><a href="#Generator-1664"><span class="linenos">1664</span></a> <span class="n">dtype</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">"dtype"</span><span class="p">)</span> -</span><span id="Generator-1665"><a href="#Generator-1665"><span class="linenos">1665</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="p">:</span> -</span><span id="Generator-1666"><a href="#Generator-1666"><span class="linenos">1666</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> -</span><span id="Generator-1667"><a href="#Generator-1667"><span class="linenos">1667</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1668"><a href="#Generator-1668"><span class="linenos">1668</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> -</span><span id="Generator-1669"><a href="#Generator-1669"><span class="linenos">1669</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">using</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1670"><a href="#Generator-1670"><span class="linenos">1670</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TYPE </span><span class="si">{</span><span class="n">dtype</span><span class="si">}{</span><span class="n">collate</span><span class="si">}{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1671"><a href="#Generator-1671"><span class="linenos">1671</span></a> -</span><span id="Generator-1672"><a href="#Generator-1672"><span class="linenos">1672</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="Generator-1673"><a href="#Generator-1673"><span class="linenos">1673</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="Generator-1674"><a href="#Generator-1674"><span class="linenos">1674</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET DEFAULT </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1675"><a href="#Generator-1675"><span class="linenos">1675</span></a> -</span><span id="Generator-1676"><a href="#Generator-1676"><span class="linenos">1676</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">"drop"</span><span class="p">):</span> -</span><span id="Generator-1677"><a href="#Generator-1677"><span class="linenos">1677</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported ALTER COLUMN syntax"</span><span class="p">)</span> -</span><span id="Generator-1678"><a href="#Generator-1678"><span class="linenos">1678</span></a> -</span><span id="Generator-1679"><a href="#Generator-1679"><span class="linenos">1679</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> DROP DEFAULT"</span> -</span><span id="Generator-1680"><a href="#Generator-1680"><span class="linenos">1680</span></a> -</span><span id="Generator-1681"><a href="#Generator-1681"><span class="linenos">1681</span></a> <span class="k">def</span> <span class="nf">renametable_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">RenameTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1682"><a href="#Generator-1682"><span class="linenos">1682</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1683"><a href="#Generator-1683"><span class="linenos">1683</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RENAME TO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1684"><a href="#Generator-1684"><span class="linenos">1684</span></a> -</span><span id="Generator-1685"><a href="#Generator-1685"><span class="linenos">1685</span></a> <span class="k">def</span> <span class="nf">altertable_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">AlterTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1686"><a href="#Generator-1686"><span class="linenos">1686</span></a> <span class="n">actions</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">"actions"</span><span class="p">]</span> -</span><span id="Generator-1687"><a href="#Generator-1687"><span class="linenos">1687</span></a> -</span><span id="Generator-1688"><a href="#Generator-1688"><span class="linenos">1688</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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="Generator-1689"><a href="#Generator-1689"><span class="linenos">1689</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMN "</span><span class="p">)</span> -</span><span id="Generator-1690"><a href="#Generator-1690"><span class="linenos">1690</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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="Generator-1691"><a href="#Generator-1691"><span class="linenos">1691</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMNS "</span><span class="p">)</span> -</span><span id="Generator-1692"><a href="#Generator-1692"><span class="linenos">1692</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">):</span> -</span><span id="Generator-1693"><a href="#Generator-1693"><span class="linenos">1693</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1694"><a href="#Generator-1694"><span class="linenos">1694</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1695"><a href="#Generator-1695"><span class="linenos">1695</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">)</span> -</span><span id="Generator-1696"><a href="#Generator-1696"><span class="linenos">1696</span></a> -</span><span id="Generator-1697"><a href="#Generator-1697"><span class="linenos">1697</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1698"><a href="#Generator-1698"><span class="linenos">1698</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER TABLE</span><span class="si">{</span><span class="n">exists</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">actions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1699"><a href="#Generator-1699"><span class="linenos">1699</span></a> -</span><span id="Generator-1700"><a href="#Generator-1700"><span class="linenos">1700</span></a> <span class="k">def</span> <span class="nf">droppartition_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">DropPartition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1701"><a href="#Generator-1701"><span class="linenos">1701</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1702"><a href="#Generator-1702"><span class="linenos">1702</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator-1703"><a href="#Generator-1703"><span class="linenos">1703</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1704"><a href="#Generator-1704"><span class="linenos">1704</span></a> -</span><span id="Generator-1705"><a href="#Generator-1705"><span class="linenos">1705</span></a> <span class="k">def</span> <span class="nf">addconstraint_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">AddConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1706"><a href="#Generator-1706"><span class="linenos">1706</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1707"><a href="#Generator-1707"><span class="linenos">1707</span></a> <span class="n">expression_</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">"expression"</span><span class="p">)</span> -</span><span id="Generator-1708"><a href="#Generator-1708"><span class="linenos">1708</span></a> <span class="n">add_constraint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ADD CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"ADD"</span> -</span><span id="Generator-1709"><a href="#Generator-1709"><span class="linenos">1709</span></a> -</span><span id="Generator-1710"><a href="#Generator-1710"><span class="linenos">1710</span></a> <span class="n">enforced</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">"enforced"</span><span class="p">)</span> -</span><span id="Generator-1711"><a href="#Generator-1711"><span class="linenos">1711</span></a> <span class="k">if</span> <span class="n">enforced</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator-1712"><a href="#Generator-1712"><span class="linenos">1712</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> CHECK (</span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="s1">' ENFORCED'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">enforced</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1713"><a href="#Generator-1713"><span class="linenos">1713</span></a> -</span><span id="Generator-1714"><a href="#Generator-1714"><span class="linenos">1714</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1715"><a href="#Generator-1715"><span class="linenos">1715</span></a> -</span><span id="Generator-1716"><a href="#Generator-1716"><span class="linenos">1716</span></a> <span class="k">def</span> <span class="nf">distinct_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">Distinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1717"><a href="#Generator-1717"><span class="linenos">1717</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1718"><a href="#Generator-1718"><span class="linenos">1718</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1719"><a href="#Generator-1719"><span class="linenos">1719</span></a> -</span><span id="Generator-1720"><a href="#Generator-1720"><span class="linenos">1720</span></a> <span class="n">on</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">"on"</span><span class="p">)</span> -</span><span id="Generator-1721"><a href="#Generator-1721"><span class="linenos">1721</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">on</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1722"><a href="#Generator-1722"><span class="linenos">1722</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DISTINCT</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1723"><a href="#Generator-1723"><span class="linenos">1723</span></a> -</span><span id="Generator-1724"><a href="#Generator-1724"><span class="linenos">1724</span></a> <span class="k">def</span> <span class="nf">ignorenulls_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">IgnoreNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1725"><a href="#Generator-1725"><span class="linenos">1725</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> IGNORE NULLS"</span> -</span><span id="Generator-1726"><a href="#Generator-1726"><span class="linenos">1726</span></a> -</span><span id="Generator-1727"><a href="#Generator-1727"><span class="linenos">1727</span></a> <span class="k">def</span> <span class="nf">respectnulls_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">RespectNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1728"><a href="#Generator-1728"><span class="linenos">1728</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> RESPECT NULLS"</span> -</span><span id="Generator-1729"><a href="#Generator-1729"><span class="linenos">1729</span></a> -</span><span id="Generator-1730"><a href="#Generator-1730"><span class="linenos">1730</span></a> <span class="k">def</span> <span class="nf">intdiv_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">IntDiv</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1731"><a href="#Generator-1731"><span class="linenos">1731</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="Generator-1732"><a href="#Generator-1732"><span class="linenos">1732</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">(</span> -</span><span id="Generator-1733"><a href="#Generator-1733"><span class="linenos">1733</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">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="o">.</span><span class="n">expression</span><span class="p">),</span> -</span><span id="Generator-1734"><a href="#Generator-1734"><span class="linenos">1734</span></a> <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="p">(</span><span class="n">this</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">INT</span><span class="p">),</span> -</span><span id="Generator-1735"><a href="#Generator-1735"><span class="linenos">1735</span></a> <span class="p">)</span> -</span><span id="Generator-1736"><a href="#Generator-1736"><span class="linenos">1736</span></a> <span class="p">)</span> -</span><span id="Generator-1737"><a href="#Generator-1737"><span class="linenos">1737</span></a> -</span><span id="Generator-1738"><a href="#Generator-1738"><span class="linenos">1738</span></a> <span class="k">def</span> <span class="nf">dpipe_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">DPipe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1739"><a href="#Generator-1739"><span class="linenos">1739</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span> -</span><span id="Generator-1740"><a href="#Generator-1740"><span class="linenos">1740</span></a> -</span><span id="Generator-1741"><a href="#Generator-1741"><span class="linenos">1741</span></a> <span class="k">def</span> <span class="nf">div_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">Div</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1742"><a href="#Generator-1742"><span class="linenos">1742</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span> -</span><span id="Generator-1743"><a href="#Generator-1743"><span class="linenos">1743</span></a> -</span><span id="Generator-1744"><a href="#Generator-1744"><span class="linenos">1744</span></a> <span class="k">def</span> <span class="nf">distance_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">Distance</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1745"><a href="#Generator-1745"><span class="linenos">1745</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<->"</span><span class="p">)</span> -</span><span id="Generator-1746"><a href="#Generator-1746"><span class="linenos">1746</span></a> -</span><span id="Generator-1747"><a href="#Generator-1747"><span class="linenos">1747</span></a> <span class="k">def</span> <span class="nf">dot_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">Dot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1748"><a href="#Generator-1748"><span class="linenos">1748</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1749"><a href="#Generator-1749"><span class="linenos">1749</span></a> -</span><span id="Generator-1750"><a href="#Generator-1750"><span class="linenos">1750</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1751"><a href="#Generator-1751"><span class="linenos">1751</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> -</span><span id="Generator-1752"><a href="#Generator-1752"><span class="linenos">1752</span></a> -</span><span id="Generator-1753"><a href="#Generator-1753"><span class="linenos">1753</span></a> <span class="k">def</span> <span class="nf">escape_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">Escape</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1754"><a href="#Generator-1754"><span class="linenos">1754</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ESCAPE"</span><span class="p">)</span> -</span><span id="Generator-1755"><a href="#Generator-1755"><span class="linenos">1755</span></a> -</span><span id="Generator-1756"><a href="#Generator-1756"><span class="linenos">1756</span></a> <span class="k">def</span> <span class="nf">glob_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">Glob</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1757"><a href="#Generator-1757"><span class="linenos">1757</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"GLOB"</span><span class="p">)</span> -</span><span id="Generator-1758"><a href="#Generator-1758"><span class="linenos">1758</span></a> -</span><span id="Generator-1759"><a href="#Generator-1759"><span class="linenos">1759</span></a> <span class="k">def</span> <span class="nf">gt_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">GT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1760"><a href="#Generator-1760"><span class="linenos">1760</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> -</span><span id="Generator-1761"><a href="#Generator-1761"><span class="linenos">1761</span></a> -</span><span id="Generator-1762"><a href="#Generator-1762"><span class="linenos">1762</span></a> <span class="k">def</span> <span class="nf">gte_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">GTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1763"><a href="#Generator-1763"><span class="linenos">1763</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">="</span><span class="p">)</span> -</span><span id="Generator-1764"><a href="#Generator-1764"><span class="linenos">1764</span></a> -</span><span id="Generator-1765"><a href="#Generator-1765"><span class="linenos">1765</span></a> <span class="k">def</span> <span class="nf">ilike_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">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1766"><a href="#Generator-1766"><span class="linenos">1766</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE"</span><span class="p">)</span> -</span><span id="Generator-1767"><a href="#Generator-1767"><span class="linenos">1767</span></a> -</span><span id="Generator-1768"><a href="#Generator-1768"><span class="linenos">1768</span></a> <span class="k">def</span> <span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1769"><a href="#Generator-1769"><span class="linenos">1769</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS"</span><span class="p">)</span> -</span><span id="Generator-1770"><a href="#Generator-1770"><span class="linenos">1770</span></a> -</span><span id="Generator-1771"><a href="#Generator-1771"><span class="linenos">1771</span></a> <span class="k">def</span> <span class="nf">like_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">Like</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1772"><a href="#Generator-1772"><span class="linenos">1772</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">)</span> -</span><span id="Generator-1773"><a href="#Generator-1773"><span class="linenos">1773</span></a> -</span><span id="Generator-1774"><a href="#Generator-1774"><span class="linenos">1774</span></a> <span class="k">def</span> <span class="nf">similarto_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">SimilarTo</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1775"><a href="#Generator-1775"><span class="linenos">1775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"SIMILAR TO"</span><span class="p">)</span> -</span><span id="Generator-1776"><a href="#Generator-1776"><span class="linenos">1776</span></a> -</span><span id="Generator-1777"><a href="#Generator-1777"><span class="linenos">1777</span></a> <span class="k">def</span> <span class="nf">lt_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">LT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1778"><a href="#Generator-1778"><span class="linenos">1778</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<"</span><span class="p">)</span> -</span><span id="Generator-1779"><a href="#Generator-1779"><span class="linenos">1779</span></a> -</span><span id="Generator-1780"><a href="#Generator-1780"><span class="linenos">1780</span></a> <span class="k">def</span> <span class="nf">lte_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">LTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1781"><a href="#Generator-1781"><span class="linenos">1781</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<="</span><span class="p">)</span> -</span><span id="Generator-1782"><a href="#Generator-1782"><span class="linenos">1782</span></a> -</span><span id="Generator-1783"><a href="#Generator-1783"><span class="linenos">1783</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1784"><a href="#Generator-1784"><span class="linenos">1784</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"%"</span><span class="p">)</span> -</span><span id="Generator-1785"><a href="#Generator-1785"><span class="linenos">1785</span></a> -</span><span id="Generator-1786"><a href="#Generator-1786"><span class="linenos">1786</span></a> <span class="k">def</span> <span class="nf">mul_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">Mul</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1787"><a href="#Generator-1787"><span class="linenos">1787</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">)</span> -</span><span id="Generator-1788"><a href="#Generator-1788"><span class="linenos">1788</span></a> -</span><span id="Generator-1789"><a href="#Generator-1789"><span class="linenos">1789</span></a> <span class="k">def</span> <span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1790"><a href="#Generator-1790"><span class="linenos">1790</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<>"</span><span class="p">)</span> -</span><span id="Generator-1791"><a href="#Generator-1791"><span class="linenos">1791</span></a> -</span><span id="Generator-1792"><a href="#Generator-1792"><span class="linenos">1792</span></a> <span class="k">def</span> <span class="nf">nullsafeeq_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">NullSafeEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1793"><a href="#Generator-1793"><span class="linenos">1793</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS NOT DISTINCT FROM"</span><span class="p">)</span> -</span><span id="Generator-1794"><a href="#Generator-1794"><span class="linenos">1794</span></a> -</span><span id="Generator-1795"><a href="#Generator-1795"><span class="linenos">1795</span></a> <span class="k">def</span> <span class="nf">nullsafeneq_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">NullSafeNEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1796"><a href="#Generator-1796"><span class="linenos">1796</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS DISTINCT FROM"</span><span class="p">)</span> -</span><span id="Generator-1797"><a href="#Generator-1797"><span class="linenos">1797</span></a> -</span><span id="Generator-1798"><a href="#Generator-1798"><span class="linenos">1798</span></a> <span class="k">def</span> <span class="nf">or_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">Or</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1799"><a href="#Generator-1799"><span class="linenos">1799</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"OR"</span><span class="p">)</span> -</span><span id="Generator-1800"><a href="#Generator-1800"><span class="linenos">1800</span></a> -</span><span id="Generator-1801"><a href="#Generator-1801"><span class="linenos">1801</span></a> <span class="k">def</span> <span class="nf">slice_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">Slice</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1802"><a href="#Generator-1802"><span class="linenos">1802</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">":"</span><span class="p">)</span> -</span><span id="Generator-1803"><a href="#Generator-1803"><span class="linenos">1803</span></a> -</span><span id="Generator-1804"><a href="#Generator-1804"><span class="linenos">1804</span></a> <span class="k">def</span> <span class="nf">sub_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">Sub</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1805"><a href="#Generator-1805"><span class="linenos">1805</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> -</span><span id="Generator-1806"><a href="#Generator-1806"><span class="linenos">1806</span></a> -</span><span id="Generator-1807"><a href="#Generator-1807"><span class="linenos">1807</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1808"><a href="#Generator-1808"><span class="linenos">1808</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRY_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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1809"><a href="#Generator-1809"><span class="linenos">1809</span></a> -</span><span id="Generator-1810"><a href="#Generator-1810"><span class="linenos">1810</span></a> <span class="k">def</span> <span class="nf">use_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">Use</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1811"><a href="#Generator-1811"><span class="linenos">1811</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="Generator-1812"><a href="#Generator-1812"><span class="linenos">1812</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1813"><a href="#Generator-1813"><span class="linenos">1813</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1814"><a href="#Generator-1814"><span class="linenos">1814</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1815"><a href="#Generator-1815"><span class="linenos">1815</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"USE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1816"><a href="#Generator-1816"><span class="linenos">1816</span></a> -</span><span id="Generator-1817"><a href="#Generator-1817"><span class="linenos">1817</span></a> <span class="k">def</span> <span class="nf">binary</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">Binary</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1818"><a href="#Generator-1818"><span class="linenos">1818</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1819"><a href="#Generator-1819"><span class="linenos">1819</span></a> -</span><span id="Generator-1820"><a href="#Generator-1820"><span class="linenos">1820</span></a> <span class="k">def</span> <span class="nf">function_fallback_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">Func</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1821"><a href="#Generator-1821"><span class="linenos">1821</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator-1822"><a href="#Generator-1822"><span class="linenos">1822</span></a> <span class="k">for</span> <span class="n">arg_value</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> -</span><span id="Generator-1823"><a href="#Generator-1823"><span class="linenos">1823</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg_value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="Generator-1824"><a href="#Generator-1824"><span class="linenos">1824</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">arg_value</span><span class="p">:</span> -</span><span id="Generator-1825"><a href="#Generator-1825"><span class="linenos">1825</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="Generator-1826"><a href="#Generator-1826"><span class="linenos">1826</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1827"><a href="#Generator-1827"><span class="linenos">1827</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arg_value</span><span class="p">)</span> -</span><span id="Generator-1828"><a href="#Generator-1828"><span class="linenos">1828</span></a> -</span><span id="Generator-1829"><a href="#Generator-1829"><span class="linenos">1829</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="n">expression</span><span class="o">.</span><span class="n">sql_name</span><span class="p">(),</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> -</span><span id="Generator-1830"><a href="#Generator-1830"><span class="linenos">1830</span></a> -</span><span id="Generator-1831"><a href="#Generator-1831"><span class="linenos">1831</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1832"><a href="#Generator-1832"><span class="linenos">1832</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="n">name</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_args</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1833"><a href="#Generator-1833"><span class="linenos">1833</span></a> -</span><span id="Generator-1834"><a href="#Generator-1834"><span class="linenos">1834</span></a> <span class="k">def</span> <span class="nf">format_args</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1835"><a href="#Generator-1835"><span class="linenos">1835</span></a> <span class="n">arg_sqls</span> <span class="o">=</span> <span class="nb">tuple</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">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span> <span class="k">if</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Generator-1836"><a href="#Generator-1836"><span class="linenos">1836</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> -</span><span id="Generator-1837"><a href="#Generator-1837"><span class="linenos">1837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="sa">f</span><span class="s2">",</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1838"><a href="#Generator-1838"><span class="linenos">1838</span></a> <span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> -</span><span id="Generator-1839"><a href="#Generator-1839"><span class="linenos">1839</span></a> -</span><span id="Generator-1840"><a href="#Generator-1840"><span class="linenos">1840</span></a> <span class="k">def</span> <span class="nf">text_width</span><span class="p">(</span><span class="bp">self</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">Iterable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="Generator-1841"><a href="#Generator-1841"><span class="linenos">1841</span></a> <span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> -</span><span id="Generator-1842"><a href="#Generator-1842"><span class="linenos">1842</span></a> -</span><span id="Generator-1843"><a href="#Generator-1843"><span class="linenos">1843</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> -</span><span id="Generator-1844"><a href="#Generator-1844"><span class="linenos">1844</span></a> <span class="k">return</span> <span class="n">format_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span><span class="p">)</span> -</span><span id="Generator-1845"><a href="#Generator-1845"><span class="linenos">1845</span></a> -</span><span id="Generator-1846"><a href="#Generator-1846"><span class="linenos">1846</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span> -</span><span id="Generator-1847"><a href="#Generator-1847"><span class="linenos">1847</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator-1848"><a href="#Generator-1848"><span class="linenos">1848</span></a> <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><span id="Generator-1849"><a href="#Generator-1849"><span class="linenos">1849</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Generator-1850"><a href="#Generator-1850"><span class="linenos">1850</span></a> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Generator-1851"><a href="#Generator-1851"><span class="linenos">1851</span></a> <span class="n">indent</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Generator-1852"><a href="#Generator-1852"><span class="linenos">1852</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> -</span><span id="Generator-1853"><a href="#Generator-1853"><span class="linenos">1853</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator-1854"><a href="#Generator-1854"><span class="linenos">1854</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1855"><a href="#Generator-1855"><span class="linenos">1855</span></a> <span class="n">expressions</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="n">key</span> <span class="ow">or</span> <span class="s2">"expressions"</span><span class="p">)</span> -</span><span id="Generator-1856"><a href="#Generator-1856"><span class="linenos">1856</span></a> -</span><span id="Generator-1857"><a href="#Generator-1857"><span class="linenos">1857</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Generator-1858"><a href="#Generator-1858"><span class="linenos">1858</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Generator-1859"><a href="#Generator-1859"><span class="linenos">1859</span></a> -</span><span id="Generator-1860"><a href="#Generator-1860"><span class="linenos">1860</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> -</span><span id="Generator-1861"><a href="#Generator-1861"><span class="linenos">1861</span></a> <span class="k">return</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="Generator-1862"><a href="#Generator-1862"><span class="linenos">1862</span></a> -</span><span id="Generator-1863"><a href="#Generator-1863"><span class="linenos">1863</span></a> <span class="n">num_sqls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Generator-1864"><a href="#Generator-1864"><span class="linenos">1864</span></a> -</span><span id="Generator-1865"><a href="#Generator-1865"><span class="linenos">1865</span></a> <span class="c1"># These are calculated once in case we have the leading_comma / pretty option set, correspondingly</span> -</span><span id="Generator-1866"><a href="#Generator-1866"><span class="linenos">1866</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> -</span><span id="Generator-1867"><a href="#Generator-1867"><span class="linenos">1867</span></a> <span class="n">stripped_sep</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="Generator-1868"><a href="#Generator-1868"><span class="linenos">1868</span></a> -</span><span id="Generator-1869"><a href="#Generator-1869"><span class="linenos">1869</span></a> <span class="n">result_sqls</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator-1870"><a href="#Generator-1870"><span class="linenos">1870</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> -</span><span id="Generator-1871"><a href="#Generator-1871"><span class="linenos">1871</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator-1872"><a href="#Generator-1872"><span class="linenos">1872</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> <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">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator-1873"><a href="#Generator-1873"><span class="linenos">1873</span></a> -</span><span id="Generator-1874"><a href="#Generator-1874"><span class="linenos">1874</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator-1875"><a href="#Generator-1875"><span class="linenos">1875</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span><span class="p">:</span> -</span><span id="Generator-1876"><a href="#Generator-1876"><span class="linenos">1876</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="n">pad</span><span class="si">}{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-1877"><a href="#Generator-1877"><span class="linenos">1877</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1878"><a href="#Generator-1878"><span class="linenos">1878</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Generator-1879"><a href="#Generator-1879"><span class="linenos">1879</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">stripped_sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1880"><a href="#Generator-1880"><span class="linenos">1880</span></a> <span class="p">)</span> -</span><span id="Generator-1881"><a href="#Generator-1881"><span class="linenos">1881</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1882"><a href="#Generator-1882"><span class="linenos">1882</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-1883"><a href="#Generator-1883"><span class="linenos">1883</span></a> -</span><span id="Generator-1884"><a href="#Generator-1884"><span class="linenos">1884</span></a> <span class="n">result_sql</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> -</span><span id="Generator-1885"><a href="#Generator-1885"><span class="linenos">1885</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">result_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">if</span> <span class="n">indent</span> <span class="k">else</span> <span class="n">result_sql</span> -</span><span id="Generator-1886"><a href="#Generator-1886"><span class="linenos">1886</span></a> -</span><span id="Generator-1887"><a href="#Generator-1887"><span class="linenos">1887</span></a> <span class="k">def</span> <span class="nf">op_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</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">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1888"><a href="#Generator-1888"><span class="linenos">1888</span></a> <span class="n">flat</span> <span class="o">=</span> <span class="n">flat</span> <span class="ow">or</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">Properties</span><span class="p">)</span> -</span><span id="Generator-1889"><a href="#Generator-1889"><span class="linenos">1889</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">flat</span><span class="p">)</span> -</span><span id="Generator-1890"><a href="#Generator-1890"><span class="linenos">1890</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> -</span><span id="Generator-1891"><a href="#Generator-1891"><span class="linenos">1891</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1892"><a href="#Generator-1892"><span class="linenos">1892</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expressions_sql</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1893"><a href="#Generator-1893"><span class="linenos">1893</span></a> -</span><span id="Generator-1894"><a href="#Generator-1894"><span class="linenos">1894</span></a> <span class="k">def</span> <span class="nf">naked_property</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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1895"><a href="#Generator-1895"><span class="linenos">1895</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> -</span><span id="Generator-1896"><a href="#Generator-1896"><span class="linenos">1896</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> -</span><span id="Generator-1897"><a href="#Generator-1897"><span class="linenos">1897</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator-1898"><a href="#Generator-1898"><span class="linenos">1898</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1899"><a href="#Generator-1899"><span class="linenos">1899</span></a> -</span><span id="Generator-1900"><a href="#Generator-1900"><span class="linenos">1900</span></a> <span class="k">def</span> <span class="nf">set_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1901"><a href="#Generator-1901"><span class="linenos">1901</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1902"><a href="#Generator-1902"><span class="linenos">1902</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span> -</span><span id="Generator-1903"><a href="#Generator-1903"><span class="linenos">1903</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> -</span><span id="Generator-1904"><a href="#Generator-1904"><span class="linenos">1904</span></a> <span class="n">expression</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1905"><a href="#Generator-1905"><span class="linenos">1905</span></a> <span class="p">)</span> -</span><span id="Generator-1906"><a href="#Generator-1906"><span class="linenos">1906</span></a> -</span><span id="Generator-1907"><a href="#Generator-1907"><span class="linenos">1907</span></a> <span class="k">def</span> <span class="nf">tag_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">Tag</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1908"><a href="#Generator-1908"><span class="linenos">1908</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</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="s1">'prefix'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}{</span><span class="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="s1">'postfix'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1909"><a href="#Generator-1909"><span class="linenos">1909</span></a> -</span><span id="Generator-1910"><a href="#Generator-1910"><span class="linenos">1910</span></a> <span class="k">def</span> <span class="nf">token_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1911"><a href="#Generator-1911"><span class="linenos">1911</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">TOKEN_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">token_type</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Generator-1912"><a href="#Generator-1912"><span class="linenos">1912</span></a> -</span><span id="Generator-1913"><a href="#Generator-1913"><span class="linenos">1913</span></a> <span class="k">def</span> <span class="nf">userdefinedfunction_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">UserDefinedFunction</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1914"><a href="#Generator-1914"><span class="linenos">1914</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1915"><a href="#Generator-1915"><span class="linenos">1915</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="Generator-1916"><a href="#Generator-1916"><span class="linenos">1916</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator-1917"><a href="#Generator-1917"><span class="linenos">1917</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1918"><a href="#Generator-1918"><span class="linenos">1918</span></a> <span class="p">)</span> -</span><span id="Generator-1919"><a href="#Generator-1919"><span class="linenos">1919</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1920"><a href="#Generator-1920"><span class="linenos">1920</span></a> -</span><span id="Generator-1921"><a href="#Generator-1921"><span class="linenos">1921</span></a> <span class="k">def</span> <span class="nf">joinhint_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">JoinHint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1922"><a href="#Generator-1922"><span class="linenos">1922</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1923"><a href="#Generator-1923"><span class="linenos">1923</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator-1924"><a href="#Generator-1924"><span class="linenos">1924</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator-1925"><a href="#Generator-1925"><span class="linenos">1925</span></a> -</span><span id="Generator-1926"><a href="#Generator-1926"><span class="linenos">1926</span></a> <span class="k">def</span> <span class="nf">kwarg_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">Kwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1927"><a href="#Generator-1927"><span class="linenos">1927</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> -</span><span id="Generator-1928"><a href="#Generator-1928"><span class="linenos">1928</span></a> -</span><span id="Generator-1929"><a href="#Generator-1929"><span class="linenos">1929</span></a> <span class="k">def</span> <span class="nf">when_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">When</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1930"><a href="#Generator-1930"><span class="linenos">1930</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1931"><a href="#Generator-1931"><span class="linenos">1931</span></a> <span class="n">then_expression</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">"then"</span><span class="p">)</span> -</span><span id="Generator-1932"><a href="#Generator-1932"><span class="linenos">1932</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">):</span> -</span><span id="Generator-1933"><a href="#Generator-1933"><span class="linenos">1933</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1934"><a href="#Generator-1934"><span class="linenos">1934</span></a> <span class="k">if</span> <span class="s2">"expression"</span> <span class="ow">in</span> <span class="n">then_expression</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> -</span><span id="Generator-1935"><a href="#Generator-1935"><span class="linenos">1935</span></a> <span class="n">then</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" VALUES </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1936"><a href="#Generator-1936"><span class="linenos">1936</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> -</span><span id="Generator-1937"><a href="#Generator-1937"><span class="linenos">1937</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_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">"expressions"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> -</span><span id="Generator-1938"><a href="#Generator-1938"><span class="linenos">1938</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expressions'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1939"><a href="#Generator-1939"><span class="linenos">1939</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1940"><a href="#Generator-1940"><span class="linenos">1940</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE SET </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1941"><a href="#Generator-1941"><span class="linenos">1941</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator-1942"><a href="#Generator-1942"><span class="linenos">1942</span></a> <span class="n">then</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">then_expression</span><span class="p">)</span> -</span><span id="Generator-1943"><a href="#Generator-1943"><span class="linenos">1943</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WHEN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> THEN </span><span class="si">{</span><span class="n">then</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1944"><a href="#Generator-1944"><span class="linenos">1944</span></a> -</span><span id="Generator-1945"><a href="#Generator-1945"><span class="linenos">1945</span></a> <span class="k">def</span> <span class="nf">merge_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">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator-1946"><a href="#Generator-1946"><span class="linenos">1946</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">"this"</span><span class="p">)</span> -</span><span id="Generator-1947"><a href="#Generator-1947"><span class="linenos">1947</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"USING </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">'using'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1948"><a href="#Generator-1948"><span class="linenos">1948</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ON </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">'on'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator-1949"><a href="#Generator-1949"><span class="linenos">1949</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGE INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">on</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">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">' '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-962"><a href="#Generator-962"><span class="linenos"> 962</span></a> <span class="k">def</span> <span class="nf">pseudotype_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">PseudoType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-963"><a href="#Generator-963"><span class="linenos"> 963</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Generator-964"><a href="#Generator-964"><span class="linenos"> 964</span></a> +</span><span id="Generator-965"><a href="#Generator-965"><span class="linenos"> 965</span></a> <span class="k">def</span> <span class="nf">rowformatdelimitedproperty_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">RowFormatDelimitedProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-966"><a href="#Generator-966"><span class="linenos"> 966</span></a> <span class="n">fields</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">"fields"</span><span class="p">)</span> +</span><span id="Generator-967"><a href="#Generator-967"><span class="linenos"> 967</span></a> <span class="n">fields</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FIELDS TERMINATED BY </span><span class="si">{</span><span class="n">fields</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">fields</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-968"><a href="#Generator-968"><span class="linenos"> 968</span></a> <span class="n">escaped</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">"escaped"</span><span class="p">)</span> +</span><span id="Generator-969"><a href="#Generator-969"><span class="linenos"> 969</span></a> <span class="n">escaped</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ESCAPED BY </span><span class="si">{</span><span class="n">escaped</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">escaped</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-970"><a href="#Generator-970"><span class="linenos"> 970</span></a> <span class="n">items</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">"collection_items"</span><span class="p">)</span> +</span><span id="Generator-971"><a href="#Generator-971"><span class="linenos"> 971</span></a> <span class="n">items</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLECTION ITEMS TERMINATED BY </span><span class="si">{</span><span class="n">items</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">items</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-972"><a href="#Generator-972"><span class="linenos"> 972</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_keys"</span><span class="p">)</span> +</span><span id="Generator-973"><a href="#Generator-973"><span class="linenos"> 973</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAP KEYS TERMINATED BY </span><span class="si">{</span><span class="n">keys</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-974"><a href="#Generator-974"><span class="linenos"> 974</span></a> <span class="n">lines</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">"lines"</span><span class="p">)</span> +</span><span id="Generator-975"><a href="#Generator-975"><span class="linenos"> 975</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" LINES TERMINATED BY </span><span class="si">{</span><span class="n">lines</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">lines</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-976"><a href="#Generator-976"><span class="linenos"> 976</span></a> <span class="n">null</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">"null"</span><span class="p">)</span> +</span><span id="Generator-977"><a href="#Generator-977"><span class="linenos"> 977</span></a> <span class="n">null</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" NULL DEFINED AS </span><span class="si">{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">null</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-978"><a href="#Generator-978"><span class="linenos"> 978</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROW FORMAT DELIMITED</span><span class="si">{</span><span class="n">fields</span><span class="si">}{</span><span class="n">escaped</span><span class="si">}{</span><span class="n">items</span><span class="si">}{</span><span class="n">keys</span><span class="si">}{</span><span class="n">lines</span><span class="si">}{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-979"><a href="#Generator-979"><span class="linenos"> 979</span></a> +</span><span id="Generator-980"><a href="#Generator-980"><span class="linenos"> 980</span></a> <span class="k">def</span> <span class="nf">table_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">Table</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" AS "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-981"><a href="#Generator-981"><span class="linenos"> 981</span></a> <span class="n">table</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator-982"><a href="#Generator-982"><span class="linenos"> 982</span></a> <span class="n">part</span> +</span><span id="Generator-983"><a href="#Generator-983"><span class="linenos"> 983</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">[</span> +</span><span id="Generator-984"><a href="#Generator-984"><span class="linenos"> 984</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">"catalog"</span><span class="p">),</span> +</span><span id="Generator-985"><a href="#Generator-985"><span class="linenos"> 985</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">"db"</span><span class="p">),</span> +</span><span id="Generator-986"><a href="#Generator-986"><span class="linenos"> 986</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">"this"</span><span class="p">),</span> +</span><span id="Generator-987"><a href="#Generator-987"><span class="linenos"> 987</span></a> <span class="p">]</span> +</span><span id="Generator-988"><a href="#Generator-988"><span class="linenos"> 988</span></a> <span class="k">if</span> <span class="n">part</span> +</span><span id="Generator-989"><a href="#Generator-989"><span class="linenos"> 989</span></a> <span class="p">)</span> +</span><span id="Generator-990"><a href="#Generator-990"><span class="linenos"> 990</span></a> +</span><span id="Generator-991"><a href="#Generator-991"><span class="linenos"> 991</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-992"><a href="#Generator-992"><span class="linenos"> 992</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-993"><a href="#Generator-993"><span class="linenos"> 993</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"hints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">", "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-994"><a href="#Generator-994"><span class="linenos"> 994</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">hints</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">hints</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-995"><a href="#Generator-995"><span class="linenos"> 995</span></a> <span class="n">laterals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Generator-996"><a href="#Generator-996"><span class="linenos"> 996</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Generator-997"><a href="#Generator-997"><span class="linenos"> 997</span></a> <span class="n">pivots</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Generator-998"><a href="#Generator-998"><span class="linenos"> 998</span></a> <span class="n">system_time</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">"system_time"</span><span class="p">)</span> +</span><span id="Generator-999"><a href="#Generator-999"><span class="linenos"> 999</span></a> <span class="n">system_time</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'system_time'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">system_time</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1000"><a href="#Generator-1000"><span class="linenos">1000</span></a> +</span><span id="Generator-1001"><a href="#Generator-1001"><span class="linenos">1001</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">system_time</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">hints</span><span class="si">}{</span><span class="n">laterals</span><span class="si">}{</span><span class="n">joins</span><span class="si">}{</span><span class="n">pivots</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1002"><a href="#Generator-1002"><span class="linenos">1002</span></a> +</span><span id="Generator-1003"><a href="#Generator-1003"><span class="linenos">1003</span></a> <span class="k">def</span> <span class="nf">tablesample_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">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1004"><a href="#Generator-1004"><span class="linenos">1004</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> +</span><span id="Generator-1005"><a href="#Generator-1005"><span class="linenos">1005</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="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator-1006"><a href="#Generator-1006"><span class="linenos">1006</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="s1">'alias'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1007"><a href="#Generator-1007"><span class="linenos">1007</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1008"><a href="#Generator-1008"><span class="linenos">1008</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1009"><a href="#Generator-1009"><span class="linenos">1009</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-1010"><a href="#Generator-1010"><span class="linenos">1010</span></a> <span class="n">method</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">"method"</span><span class="p">)</span> +</span><span id="Generator-1011"><a href="#Generator-1011"><span class="linenos">1011</span></a> <span class="n">method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">method</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">method</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1012"><a href="#Generator-1012"><span class="linenos">1012</span></a> <span class="n">numerator</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">"bucket_numerator"</span><span class="p">)</span> +</span><span id="Generator-1013"><a href="#Generator-1013"><span class="linenos">1013</span></a> <span class="n">denominator</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">"bucket_denominator"</span><span class="p">)</span> +</span><span id="Generator-1014"><a href="#Generator-1014"><span class="linenos">1014</span></a> <span class="n">field</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">"bucket_field"</span><span class="p">)</span> +</span><span id="Generator-1015"><a href="#Generator-1015"><span class="linenos">1015</span></a> <span class="n">field</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">field</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1016"><a href="#Generator-1016"><span class="linenos">1016</span></a> <span class="n">bucket</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"BUCKET </span><span class="si">{</span><span class="n">numerator</span><span class="si">}</span><span class="s2"> OUT OF </span><span class="si">{</span><span class="n">denominator</span><span class="si">}{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">numerator</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1017"><a href="#Generator-1017"><span class="linenos">1017</span></a> <span class="n">percent</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">"percent"</span><span class="p">)</span> +</span><span id="Generator-1018"><a href="#Generator-1018"><span class="linenos">1018</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">percent</span><span class="si">}</span><span class="s2"> PERCENT"</span> <span class="k">if</span> <span class="n">percent</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1019"><a href="#Generator-1019"><span class="linenos">1019</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> +</span><span id="Generator-1020"><a href="#Generator-1020"><span class="linenos">1020</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">rows</span><span class="si">}</span><span class="s2"> ROWS"</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1021"><a href="#Generator-1021"><span class="linenos">1021</span></a> <span class="n">size</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">"size"</span><span class="p">)</span> +</span><span id="Generator-1022"><a href="#Generator-1022"><span class="linenos">1022</span></a> <span class="n">seed</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">"seed"</span><span class="p">)</span> +</span><span id="Generator-1023"><a href="#Generator-1023"><span class="linenos">1023</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SEED (</span><span class="si">{</span><span class="n">seed</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">seed</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1024"><a href="#Generator-1024"><span class="linenos">1024</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TABLESAMPLE</span><span class="si">{</span><span class="n">method</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">bucket</span><span class="si">}{</span><span class="n">percent</span><span class="si">}{</span><span class="n">rows</span><span class="si">}{</span><span class="n">size</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">seed</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1025"><a href="#Generator-1025"><span class="linenos">1025</span></a> +</span><span id="Generator-1026"><a href="#Generator-1026"><span class="linenos">1026</span></a> <span class="k">def</span> <span class="nf">pivot_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">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1027"><a href="#Generator-1027"><span class="linenos">1027</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1028"><a href="#Generator-1028"><span class="linenos">1028</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-1029"><a href="#Generator-1029"><span class="linenos">1029</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1030"><a href="#Generator-1030"><span class="linenos">1030</span></a> <span class="n">unpivot</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">"unpivot"</span><span class="p">)</span> +</span><span id="Generator-1031"><a href="#Generator-1031"><span class="linenos">1031</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="s2">"UNPIVOT"</span> <span class="k">if</span> <span class="n">unpivot</span> <span class="k">else</span> <span class="s2">"PIVOT"</span> +</span><span id="Generator-1032"><a href="#Generator-1032"><span class="linenos">1032</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> +</span><span id="Generator-1033"><a href="#Generator-1033"><span class="linenos">1033</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> +</span><span id="Generator-1034"><a href="#Generator-1034"><span class="linenos">1034</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">direction</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2"> FOR </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1035"><a href="#Generator-1035"><span class="linenos">1035</span></a> +</span><span id="Generator-1036"><a href="#Generator-1036"><span class="linenos">1036</span></a> <span class="k">def</span> <span class="nf">tuple_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">Tuple</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1037"><a href="#Generator-1037"><span class="linenos">1037</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1038"><a href="#Generator-1038"><span class="linenos">1038</span></a> +</span><span id="Generator-1039"><a href="#Generator-1039"><span class="linenos">1039</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1040"><a href="#Generator-1040"><span class="linenos">1040</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1041"><a href="#Generator-1041"><span class="linenos">1041</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1042"><a href="#Generator-1042"><span class="linenos">1042</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> +</span><span id="Generator-1043"><a href="#Generator-1043"><span class="linenos">1043</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="Generator-1044"><a href="#Generator-1044"><span class="linenos">1044</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1045"><a href="#Generator-1045"><span class="linenos">1045</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Generator-1046"><a href="#Generator-1046"><span class="linenos">1046</span></a> +</span><span id="Generator-1047"><a href="#Generator-1047"><span class="linenos">1047</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1048"><a href="#Generator-1048"><span class="linenos">1048</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1049"><a href="#Generator-1049"><span class="linenos">1049</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-1050"><a href="#Generator-1050"><span class="linenos">1050</span></a> <span class="n">values</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"VALUES</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">args</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1051"><a href="#Generator-1051"><span class="linenos">1051</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-1052"><a href="#Generator-1052"><span class="linenos">1052</span></a> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1053"><a href="#Generator-1053"><span class="linenos">1053</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WRAP_DERIVED_VALUES</span> <span class="ow">and</span> <span class="p">(</span><span class="n">alias</span> <span class="ow">or</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">From</span><span class="p">))</span> +</span><span id="Generator-1054"><a href="#Generator-1054"><span class="linenos">1054</span></a> <span class="k">else</span> <span class="n">values</span> +</span><span id="Generator-1055"><a href="#Generator-1055"><span class="linenos">1055</span></a> <span class="p">)</span> +</span><span id="Generator-1056"><a href="#Generator-1056"><span class="linenos">1056</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">values</span> +</span><span id="Generator-1057"><a href="#Generator-1057"><span class="linenos">1057</span></a> +</span><span id="Generator-1058"><a href="#Generator-1058"><span class="linenos">1058</span></a> <span class="k">def</span> <span class="nf">var_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">Var</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1059"><a href="#Generator-1059"><span class="linenos">1059</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator-1060"><a href="#Generator-1060"><span class="linenos">1060</span></a> +</span><span id="Generator-1061"><a href="#Generator-1061"><span class="linenos">1061</span></a> <span class="k">def</span> <span class="nf">into_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">Into</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1062"><a href="#Generator-1062"><span class="linenos">1062</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1063"><a href="#Generator-1063"><span class="linenos">1063</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="s2">" UNLOGGED"</span> <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">"unlogged"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1064"><a href="#Generator-1064"><span class="linenos">1064</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'INTO'</span><span class="p">)</span><span class="si">}{</span><span class="n">temporary</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">unlogged</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1065"><a href="#Generator-1065"><span class="linenos">1065</span></a> +</span><span id="Generator-1066"><a href="#Generator-1066"><span class="linenos">1066</span></a> <span class="k">def</span> <span class="nf">from_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">From</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1067"><a href="#Generator-1067"><span class="linenos">1067</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1068"><a href="#Generator-1068"><span class="linenos">1068</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FROM'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1069"><a href="#Generator-1069"><span class="linenos">1069</span></a> +</span><span id="Generator-1070"><a href="#Generator-1070"><span class="linenos">1070</span></a> <span class="k">def</span> <span class="nf">group_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">Group</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1071"><a href="#Generator-1071"><span class="linenos">1071</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"GROUP BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1072"><a href="#Generator-1072"><span class="linenos">1072</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"grouping_sets"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator-1073"><a href="#Generator-1073"><span class="linenos">1073</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-1074"><a href="#Generator-1074"><span class="linenos">1074</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'GROUPING SETS'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">grouping_sets</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1075"><a href="#Generator-1075"><span class="linenos">1075</span></a> <span class="p">)</span> +</span><span id="Generator-1076"><a href="#Generator-1076"><span class="linenos">1076</span></a> +</span><span id="Generator-1077"><a href="#Generator-1077"><span class="linenos">1077</span></a> <span class="n">cube</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">"cube"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="Generator-1078"><a href="#Generator-1078"><span class="linenos">1078</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">cube</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Generator-1079"><a href="#Generator-1079"><span class="linenos">1079</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1080"><a href="#Generator-1080"><span class="linenos">1080</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1081"><a href="#Generator-1081"><span class="linenos">1081</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"cube"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator-1082"><a href="#Generator-1082"><span class="linenos">1082</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">cube_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">cube_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1083"><a href="#Generator-1083"><span class="linenos">1083</span></a> +</span><span id="Generator-1084"><a href="#Generator-1084"><span class="linenos">1084</span></a> <span class="n">rollup</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">"rollup"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="Generator-1085"><a href="#Generator-1085"><span class="linenos">1085</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">rollup</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Generator-1086"><a href="#Generator-1086"><span class="linenos">1086</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1087"><a href="#Generator-1087"><span class="linenos">1087</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1088"><a href="#Generator-1088"><span class="linenos">1088</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"rollup"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator-1089"><a href="#Generator-1089"><span class="linenos">1089</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">rollup_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">rollup_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1090"><a href="#Generator-1090"><span class="linenos">1090</span></a> +</span><span id="Generator-1091"><a href="#Generator-1091"><span class="linenos">1091</span></a> <span class="n">groupings</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">,</span> <span class="n">cube_sql</span><span class="p">,</span> <span class="n">rollup_sql</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">","</span><span class="p">)</span> +</span><span id="Generator-1092"><a href="#Generator-1092"><span class="linenos">1092</span></a> +</span><span id="Generator-1093"><a href="#Generator-1093"><span class="linenos">1093</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">"expressions"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">groupings</span><span class="p">:</span> +</span><span id="Generator-1094"><a href="#Generator-1094"><span class="linenos">1094</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}</span><span class="s2">,"</span> +</span><span id="Generator-1095"><a href="#Generator-1095"><span class="linenos">1095</span></a> +</span><span id="Generator-1096"><a href="#Generator-1096"><span class="linenos">1096</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="n">groupings</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1097"><a href="#Generator-1097"><span class="linenos">1097</span></a> +</span><span id="Generator-1098"><a href="#Generator-1098"><span class="linenos">1098</span></a> <span class="k">def</span> <span class="nf">having_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">Having</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1099"><a href="#Generator-1099"><span class="linenos">1099</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> +</span><span id="Generator-1100"><a href="#Generator-1100"><span class="linenos">1100</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'HAVING'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1101"><a href="#Generator-1101"><span class="linenos">1101</span></a> +</span><span id="Generator-1102"><a href="#Generator-1102"><span class="linenos">1102</span></a> <span class="k">def</span> <span class="nf">join_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">Join</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1103"><a href="#Generator-1103"><span class="linenos">1103</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span> +</span><span id="Generator-1104"><a href="#Generator-1104"><span class="linenos">1104</span></a> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator-1105"><a href="#Generator-1105"><span class="linenos">1105</span></a> <span class="n">op</span> +</span><span id="Generator-1106"><a href="#Generator-1106"><span class="linenos">1106</span></a> <span class="k">for</span> <span class="n">op</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="Generator-1107"><a href="#Generator-1107"><span class="linenos">1107</span></a> <span class="s2">"NATURAL"</span> <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">"natural"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-1108"><a href="#Generator-1108"><span class="linenos">1108</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">side</span><span class="p">,</span> +</span><span id="Generator-1109"><a href="#Generator-1109"><span class="linenos">1109</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Generator-1110"><a href="#Generator-1110"><span class="linenos">1110</span></a> <span class="s2">"JOIN"</span><span class="p">,</span> +</span><span id="Generator-1111"><a href="#Generator-1111"><span class="linenos">1111</span></a> <span class="p">)</span> +</span><span id="Generator-1112"><a href="#Generator-1112"><span class="linenos">1112</span></a> <span class="k">if</span> <span class="n">op</span> +</span><span id="Generator-1113"><a href="#Generator-1113"><span class="linenos">1113</span></a> <span class="p">)</span> +</span><span id="Generator-1114"><a href="#Generator-1114"><span class="linenos">1114</span></a> <span class="p">)</span> +</span><span id="Generator-1115"><a href="#Generator-1115"><span class="linenos">1115</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">)</span> +</span><span id="Generator-1116"><a href="#Generator-1116"><span class="linenos">1116</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> +</span><span id="Generator-1117"><a href="#Generator-1117"><span class="linenos">1117</span></a> +</span><span id="Generator-1118"><a href="#Generator-1118"><span class="linenos">1118</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">on_sql</span> <span class="ow">and</span> <span class="n">using</span><span class="p">:</span> +</span><span id="Generator-1119"><a href="#Generator-1119"><span class="linenos">1119</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="o">*</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">column</span><span class="p">)</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">using</span><span class="p">))</span> +</span><span id="Generator-1120"><a href="#Generator-1120"><span class="linenos">1120</span></a> +</span><span id="Generator-1121"><a href="#Generator-1121"><span class="linenos">1121</span></a> <span class="k">if</span> <span class="n">on_sql</span><span class="p">:</span> +</span><span id="Generator-1122"><a href="#Generator-1122"><span class="linenos">1122</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">on_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1123"><a href="#Generator-1123"><span class="linenos">1123</span></a> <span class="n">space</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator-1124"><a href="#Generator-1124"><span class="linenos">1124</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> +</span><span id="Generator-1125"><a href="#Generator-1125"><span class="linenos">1125</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">USING (</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1126"><a href="#Generator-1126"><span class="linenos">1126</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1127"><a href="#Generator-1127"><span class="linenos">1127</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">ON </span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1128"><a href="#Generator-1128"><span class="linenos">1128</span></a> +</span><span id="Generator-1129"><a href="#Generator-1129"><span class="linenos">1129</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator-1130"><a href="#Generator-1130"><span class="linenos">1130</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator-1131"><a href="#Generator-1131"><span class="linenos">1131</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">op_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_sql</span><span class="si">}{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1132"><a href="#Generator-1132"><span class="linenos">1132</span></a> +</span><span id="Generator-1133"><a href="#Generator-1133"><span class="linenos">1133</span></a> <span class="k">def</span> <span class="nf">lambda_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">Lambda</span><span class="p">,</span> <span class="n">arrow_sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"->"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1134"><a href="#Generator-1134"><span class="linenos">1134</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1135"><a href="#Generator-1135"><span class="linenos">1135</span></a> <span class="n">args</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">))</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">args</span> +</span><span id="Generator-1136"><a href="#Generator-1136"><span class="linenos">1136</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">arrow_sep</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1137"><a href="#Generator-1137"><span class="linenos">1137</span></a> +</span><span id="Generator-1138"><a href="#Generator-1138"><span class="linenos">1138</span></a> <span class="k">def</span> <span class="nf">lateral_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">Lateral</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1139"><a href="#Generator-1139"><span class="linenos">1139</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1140"><a href="#Generator-1140"><span class="linenos">1140</span></a> +</span><span id="Generator-1141"><a href="#Generator-1141"><span class="linenos">1141</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">Subquery</span><span class="p">):</span> +</span><span id="Generator-1142"><a href="#Generator-1142"><span class="linenos">1142</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1143"><a href="#Generator-1143"><span class="linenos">1143</span></a> +</span><span id="Generator-1144"><a href="#Generator-1144"><span class="linenos">1144</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">"view"</span><span class="p">):</span> +</span><span id="Generator-1145"><a href="#Generator-1145"><span class="linenos">1145</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="p">[</span><span class="s2">"alias"</span><span class="p">]</span> +</span><span id="Generator-1146"><a href="#Generator-1146"><span class="linenos">1146</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1147"><a href="#Generator-1147"><span class="linenos">1147</span></a> <span class="n">table</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">alias</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1148"><a href="#Generator-1148"><span class="linenos">1148</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1149"><a href="#Generator-1149"><span class="linenos">1149</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"LATERAL VIEW</span><span class="si">{</span><span class="s1">' OUTER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'outer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-1150"><a href="#Generator-1150"><span class="linenos">1150</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">table</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1151"><a href="#Generator-1151"><span class="linenos">1151</span></a> +</span><span id="Generator-1152"><a href="#Generator-1152"><span class="linenos">1152</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-1153"><a href="#Generator-1153"><span class="linenos">1153</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1154"><a href="#Generator-1154"><span class="linenos">1154</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1155"><a href="#Generator-1155"><span class="linenos">1155</span></a> +</span><span id="Generator-1156"><a href="#Generator-1156"><span class="linenos">1156</span></a> <span class="k">def</span> <span class="nf">limit_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">Limit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1157"><a href="#Generator-1157"><span class="linenos">1157</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1158"><a href="#Generator-1158"><span class="linenos">1158</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'LIMIT'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1159"><a href="#Generator-1159"><span class="linenos">1159</span></a> +</span><span id="Generator-1160"><a href="#Generator-1160"><span class="linenos">1160</span></a> <span class="k">def</span> <span class="nf">offset_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">Offset</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1161"><a href="#Generator-1161"><span class="linenos">1161</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1162"><a href="#Generator-1162"><span class="linenos">1162</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'OFFSET'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1163"><a href="#Generator-1163"><span class="linenos">1163</span></a> +</span><span id="Generator-1164"><a href="#Generator-1164"><span class="linenos">1164</span></a> <span class="k">def</span> <span class="nf">lock_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">Lock</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1165"><a href="#Generator-1165"><span class="linenos">1165</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">LOCKING_READS_SUPPORTED</span><span class="p">:</span> +</span><span id="Generator-1166"><a href="#Generator-1166"><span class="linenos">1166</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"UPDATE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"update"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">"SHARE"</span> +</span><span id="Generator-1167"><a href="#Generator-1167"><span class="linenos">1167</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"FOR </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-1168"><a href="#Generator-1168"><span class="linenos">1168</span></a> +</span><span id="Generator-1169"><a href="#Generator-1169"><span class="linenos">1169</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Locking reads using 'FOR UPDATE/SHARE' are not supported"</span><span class="p">)</span> +</span><span id="Generator-1170"><a href="#Generator-1170"><span class="linenos">1170</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Generator-1171"><a href="#Generator-1171"><span class="linenos">1171</span></a> +</span><span id="Generator-1172"><a href="#Generator-1172"><span class="linenos">1172</span></a> <span class="k">def</span> <span class="nf">literal_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">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1173"><a href="#Generator-1173"><span class="linenos">1173</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="Generator-1174"><a href="#Generator-1174"><span class="linenos">1174</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="Generator-1175"><a href="#Generator-1175"><span class="linenos">1175</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span><span class="p">)</span> +</span><span id="Generator-1176"><a href="#Generator-1176"><span class="linenos">1176</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator-1177"><a href="#Generator-1177"><span class="linenos">1177</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">)</span> +</span><span id="Generator-1178"><a href="#Generator-1178"><span class="linenos">1178</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1179"><a href="#Generator-1179"><span class="linenos">1179</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="Generator-1180"><a href="#Generator-1180"><span class="linenos">1180</span></a> +</span><span id="Generator-1181"><a href="#Generator-1181"><span class="linenos">1181</span></a> <span class="k">def</span> <span class="nf">loaddata_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">LoadData</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1182"><a href="#Generator-1182"><span class="linenos">1182</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">" LOCAL"</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1183"><a href="#Generator-1183"><span class="linenos">1183</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPATH </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">'inpath'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1184"><a href="#Generator-1184"><span class="linenos">1184</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="s2">" OVERWRITE"</span> <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">"overwrite"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1185"><a href="#Generator-1185"><span class="linenos">1185</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO TABLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1186"><a href="#Generator-1186"><span class="linenos">1186</span></a> <span class="n">partition</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">"partition"</span><span class="p">)</span> +</span><span id="Generator-1187"><a href="#Generator-1187"><span class="linenos">1187</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1188"><a href="#Generator-1188"><span class="linenos">1188</span></a> <span class="n">input_format</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">"input_format"</span><span class="p">)</span> +</span><span id="Generator-1189"><a href="#Generator-1189"><span class="linenos">1189</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPUTFORMAT </span><span class="si">{</span><span class="n">input_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">input_format</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1190"><a href="#Generator-1190"><span class="linenos">1190</span></a> <span class="n">serde</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">"serde"</span><span class="p">)</span> +</span><span id="Generator-1191"><a href="#Generator-1191"><span class="linenos">1191</span></a> <span class="n">serde</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SERDE </span><span class="si">{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">serde</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1192"><a href="#Generator-1192"><span class="linenos">1192</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOAD DATA</span><span class="si">{</span><span class="n">local</span><span class="si">}{</span><span class="n">inpath</span><span class="si">}{</span><span class="n">overwrite</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">partition</span><span class="si">}{</span><span class="n">input_format</span><span class="si">}{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1193"><a href="#Generator-1193"><span class="linenos">1193</span></a> +</span><span id="Generator-1194"><a href="#Generator-1194"><span class="linenos">1194</span></a> <span class="k">def</span> <span class="nf">null_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1195"><a href="#Generator-1195"><span class="linenos">1195</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> +</span><span id="Generator-1196"><a href="#Generator-1196"><span class="linenos">1196</span></a> +</span><span id="Generator-1197"><a href="#Generator-1197"><span class="linenos">1197</span></a> <span class="k">def</span> <span class="nf">boolean_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">Boolean</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1198"><a href="#Generator-1198"><span class="linenos">1198</span></a> <span class="k">return</span> <span class="s2">"TRUE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">"FALSE"</span> +</span><span id="Generator-1199"><a href="#Generator-1199"><span class="linenos">1199</span></a> +</span><span id="Generator-1200"><a href="#Generator-1200"><span class="linenos">1200</span></a> <span class="k">def</span> <span class="nf">order_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">Order</span><span class="p">,</span> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1201"><a href="#Generator-1201"><span class="linenos">1201</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1202"><a href="#Generator-1202"><span class="linenos">1202</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="Generator-1203"><a href="#Generator-1203"><span class="linenos">1203</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">ORDER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">this</span> <span class="ow">or</span> <span class="n">flat</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Generator-1204"><a href="#Generator-1204"><span class="linenos">1204</span></a> +</span><span id="Generator-1205"><a href="#Generator-1205"><span class="linenos">1205</span></a> <span class="k">def</span> <span class="nf">cluster_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">Cluster</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1206"><a href="#Generator-1206"><span class="linenos">1206</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1207"><a href="#Generator-1207"><span class="linenos">1207</span></a> +</span><span id="Generator-1208"><a href="#Generator-1208"><span class="linenos">1208</span></a> <span class="k">def</span> <span class="nf">distribute_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">Distribute</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1209"><a href="#Generator-1209"><span class="linenos">1209</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"DISTRIBUTE BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1210"><a href="#Generator-1210"><span class="linenos">1210</span></a> +</span><span id="Generator-1211"><a href="#Generator-1211"><span class="linenos">1211</span></a> <span class="k">def</span> <span class="nf">sort_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">Sort</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1212"><a href="#Generator-1212"><span class="linenos">1212</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"SORT BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1213"><a href="#Generator-1213"><span class="linenos">1213</span></a> +</span><span id="Generator-1214"><a href="#Generator-1214"><span class="linenos">1214</span></a> <span class="k">def</span> <span class="nf">ordered_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">Ordered</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1215"><a href="#Generator-1215"><span class="linenos">1215</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> +</span><span id="Generator-1216"><a href="#Generator-1216"><span class="linenos">1216</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> +</span><span id="Generator-1217"><a href="#Generator-1217"><span class="linenos">1217</span></a> +</span><span id="Generator-1218"><a href="#Generator-1218"><span class="linenos">1218</span></a> <span class="n">nulls_first</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">"nulls_first"</span><span class="p">)</span> +</span><span id="Generator-1219"><a href="#Generator-1219"><span class="linenos">1219</span></a> <span class="n">nulls_last</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">nulls_first</span> +</span><span id="Generator-1220"><a href="#Generator-1220"><span class="linenos">1220</span></a> <span class="n">nulls_are_large</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_large"</span> +</span><span id="Generator-1221"><a href="#Generator-1221"><span class="linenos">1221</span></a> <span class="n">nulls_are_small</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span> +</span><span id="Generator-1222"><a href="#Generator-1222"><span class="linenos">1222</span></a> <span class="n">nulls_are_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_last"</span> +</span><span id="Generator-1223"><a href="#Generator-1223"><span class="linenos">1223</span></a> +</span><span id="Generator-1224"><a href="#Generator-1224"><span class="linenos">1224</span></a> <span class="n">sort_order</span> <span class="o">=</span> <span class="s2">" DESC"</span> <span class="k">if</span> <span class="n">desc</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1225"><a href="#Generator-1225"><span class="linenos">1225</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-1226"><a href="#Generator-1226"><span class="linenos">1226</span></a> <span class="k">if</span> <span class="n">nulls_first</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="Generator-1227"><a href="#Generator-1227"><span class="linenos">1227</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="n">nulls_are_last</span> +</span><span id="Generator-1228"><a href="#Generator-1228"><span class="linenos">1228</span></a> <span class="p">):</span> +</span><span id="Generator-1229"><a href="#Generator-1229"><span class="linenos">1229</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS FIRST"</span> +</span><span id="Generator-1230"><a href="#Generator-1230"><span class="linenos">1230</span></a> <span class="k">elif</span> <span class="p">(</span> +</span><span id="Generator-1231"><a href="#Generator-1231"><span class="linenos">1231</span></a> <span class="n">nulls_last</span> +</span><span id="Generator-1232"><a href="#Generator-1232"><span class="linenos">1232</span></a> <span class="ow">and</span> <span class="p">((</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">))</span> +</span><span id="Generator-1233"><a href="#Generator-1233"><span class="linenos">1233</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">nulls_are_last</span> +</span><span id="Generator-1234"><a href="#Generator-1234"><span class="linenos">1234</span></a> <span class="p">):</span> +</span><span id="Generator-1235"><a href="#Generator-1235"><span class="linenos">1235</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS LAST"</span> +</span><span id="Generator-1236"><a href="#Generator-1236"><span class="linenos">1236</span></a> +</span><span id="Generator-1237"><a href="#Generator-1237"><span class="linenos">1237</span></a> <span class="k">if</span> <span class="n">nulls_sort_change</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">NULL_ORDERING_SUPPORTED</span><span class="p">:</span> +</span><span id="Generator-1238"><a href="#Generator-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span> +</span><span id="Generator-1239"><a href="#Generator-1239"><span class="linenos">1239</span></a> <span class="s2">"Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"</span> +</span><span id="Generator-1240"><a href="#Generator-1240"><span class="linenos">1240</span></a> <span class="p">)</span> +</span><span id="Generator-1241"><a href="#Generator-1241"><span class="linenos">1241</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-1242"><a href="#Generator-1242"><span class="linenos">1242</span></a> +</span><span id="Generator-1243"><a href="#Generator-1243"><span class="linenos">1243</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">sort_order</span><span class="si">}{</span><span class="n">nulls_sort_change</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1244"><a href="#Generator-1244"><span class="linenos">1244</span></a> +</span><span id="Generator-1245"><a href="#Generator-1245"><span class="linenos">1245</span></a> <span class="k">def</span> <span class="nf">matchrecognize_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">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1246"><a href="#Generator-1246"><span class="linenos">1246</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1247"><a href="#Generator-1247"><span class="linenos">1247</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> +</span><span id="Generator-1248"><a href="#Generator-1248"><span class="linenos">1248</span></a> <span class="n">measures</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">"measures"</span><span class="p">)</span> +</span><span id="Generator-1249"><a href="#Generator-1249"><span class="linenos">1249</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"MEASURES </span><span class="si">{</span><span class="n">measures</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">measures</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1250"><a href="#Generator-1250"><span class="linenos">1250</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> +</span><span id="Generator-1251"><a href="#Generator-1251"><span class="linenos">1251</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">rows</span><span class="p">)</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1252"><a href="#Generator-1252"><span class="linenos">1252</span></a> <span class="n">after</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">"after"</span><span class="p">)</span> +</span><span id="Generator-1253"><a href="#Generator-1253"><span class="linenos">1253</span></a> <span class="n">after</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">after</span><span class="p">)</span> <span class="k">if</span> <span class="n">after</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1254"><a href="#Generator-1254"><span class="linenos">1254</span></a> <span class="n">pattern</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">"pattern"</span><span class="p">)</span> +</span><span id="Generator-1255"><a href="#Generator-1255"><span class="linenos">1255</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"PATTERN (</span><span class="si">{</span><span class="n">pattern</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> <span class="k">if</span> <span class="n">pattern</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1256"><a href="#Generator-1256"><span class="linenos">1256</span></a> <span class="n">define</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">"define"</span><span class="p">)</span> +</span><span id="Generator-1257"><a href="#Generator-1257"><span class="linenos">1257</span></a> <span class="n">define</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"DEFINE </span><span class="si">{</span><span class="n">define</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">define</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1258"><a href="#Generator-1258"><span class="linenos">1258</span></a> <span class="n">body</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator-1259"><a href="#Generator-1259"><span class="linenos">1259</span></a> <span class="p">(</span> +</span><span id="Generator-1260"><a href="#Generator-1260"><span class="linenos">1260</span></a> <span class="n">partition</span><span class="p">,</span> +</span><span id="Generator-1261"><a href="#Generator-1261"><span class="linenos">1261</span></a> <span class="n">order</span><span class="p">,</span> +</span><span id="Generator-1262"><a href="#Generator-1262"><span class="linenos">1262</span></a> <span class="n">measures</span><span class="p">,</span> +</span><span id="Generator-1263"><a href="#Generator-1263"><span class="linenos">1263</span></a> <span class="n">rows</span><span class="p">,</span> +</span><span id="Generator-1264"><a href="#Generator-1264"><span class="linenos">1264</span></a> <span class="n">after</span><span class="p">,</span> +</span><span id="Generator-1265"><a href="#Generator-1265"><span class="linenos">1265</span></a> <span class="n">pattern</span><span class="p">,</span> +</span><span id="Generator-1266"><a href="#Generator-1266"><span class="linenos">1266</span></a> <span class="n">define</span><span class="p">,</span> +</span><span id="Generator-1267"><a href="#Generator-1267"><span class="linenos">1267</span></a> <span class="p">)</span> +</span><span id="Generator-1268"><a href="#Generator-1268"><span class="linenos">1268</span></a> <span class="p">)</span> +</span><span id="Generator-1269"><a href="#Generator-1269"><span class="linenos">1269</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'MATCH_RECOGNIZE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">body</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1270"><a href="#Generator-1270"><span class="linenos">1270</span></a> +</span><span id="Generator-1271"><a href="#Generator-1271"><span class="linenos">1271</span></a> <span class="k">def</span> <span class="nf">query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">sqls</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1272"><a href="#Generator-1272"><span class="linenos">1272</span></a> <span class="k">return</span> <span class="n">csv</span><span class="p">(</span> +</span><span id="Generator-1273"><a href="#Generator-1273"><span class="linenos">1273</span></a> <span class="o">*</span><span class="n">sqls</span><span class="p">,</span> +</span><span id="Generator-1274"><a href="#Generator-1274"><span class="linenos">1274</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> +</span><span id="Generator-1275"><a href="#Generator-1275"><span class="linenos">1275</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">"match"</span><span class="p">),</span> +</span><span id="Generator-1276"><a href="#Generator-1276"><span class="linenos">1276</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"laterals"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> +</span><span id="Generator-1277"><a href="#Generator-1277"><span class="linenos">1277</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">"where"</span><span class="p">),</span> +</span><span id="Generator-1278"><a href="#Generator-1278"><span class="linenos">1278</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">"group"</span><span class="p">),</span> +</span><span id="Generator-1279"><a href="#Generator-1279"><span class="linenos">1279</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">"having"</span><span class="p">),</span> +</span><span id="Generator-1280"><a href="#Generator-1280"><span class="linenos">1280</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">"qualify"</span><span class="p">),</span> +</span><span id="Generator-1281"><a href="#Generator-1281"><span class="linenos">1281</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WINDOW "</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"windows"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1282"><a href="#Generator-1282"><span class="linenos">1282</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">"windows"</span><span class="p">)</span> +</span><span id="Generator-1283"><a href="#Generator-1283"><span class="linenos">1283</span></a> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator-1284"><a href="#Generator-1284"><span class="linenos">1284</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">"distribute"</span><span class="p">),</span> +</span><span id="Generator-1285"><a href="#Generator-1285"><span class="linenos">1285</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">"sort"</span><span class="p">),</span> +</span><span id="Generator-1286"><a href="#Generator-1286"><span class="linenos">1286</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">"cluster"</span><span class="p">),</span> +</span><span id="Generator-1287"><a href="#Generator-1287"><span class="linenos">1287</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">"order"</span><span class="p">),</span> +</span><span id="Generator-1288"><a href="#Generator-1288"><span class="linenos">1288</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">"limit"</span><span class="p">),</span> +</span><span id="Generator-1289"><a href="#Generator-1289"><span class="linenos">1289</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">"offset"</span><span class="p">),</span> +</span><span id="Generator-1290"><a href="#Generator-1290"><span class="linenos">1290</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">"lock"</span><span class="p">),</span> +</span><span id="Generator-1291"><a href="#Generator-1291"><span class="linenos">1291</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> +</span><span id="Generator-1292"><a href="#Generator-1292"><span class="linenos">1292</span></a> <span class="p">)</span> +</span><span id="Generator-1293"><a href="#Generator-1293"><span class="linenos">1293</span></a> +</span><span id="Generator-1294"><a href="#Generator-1294"><span class="linenos">1294</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1295"><a href="#Generator-1295"><span class="linenos">1295</span></a> <span class="n">hint</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">"hint"</span><span class="p">)</span> +</span><span id="Generator-1296"><a href="#Generator-1296"><span class="linenos">1296</span></a> <span class="n">distinct</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">"distinct"</span><span class="p">)</span> +</span><span id="Generator-1297"><a href="#Generator-1297"><span class="linenos">1297</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">distinct</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1298"><a href="#Generator-1298"><span class="linenos">1298</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1299"><a href="#Generator-1299"><span class="linenos">1299</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="n">expressions</span> +</span><span id="Generator-1300"><a href="#Generator-1300"><span class="linenos">1300</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> +</span><span id="Generator-1301"><a href="#Generator-1301"><span class="linenos">1301</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator-1302"><a href="#Generator-1302"><span class="linenos">1302</span></a> <span class="sa">f</span><span class="s2">"SELECT</span><span class="si">{</span><span class="n">hint</span><span class="si">}{</span><span class="n">distinct</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator-1303"><a href="#Generator-1303"><span class="linenos">1303</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">"into"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Generator-1304"><a href="#Generator-1304"><span class="linenos">1304</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">"from"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Generator-1305"><a href="#Generator-1305"><span class="linenos">1305</span></a> <span class="p">)</span> +</span><span id="Generator-1306"><a href="#Generator-1306"><span class="linenos">1306</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Generator-1307"><a href="#Generator-1307"><span class="linenos">1307</span></a> +</span><span id="Generator-1308"><a href="#Generator-1308"><span class="linenos">1308</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">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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1309"><a href="#Generator-1309"><span class="linenos">1309</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1310"><a href="#Generator-1310"><span class="linenos">1310</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1311"><a href="#Generator-1311"><span class="linenos">1311</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1312"><a href="#Generator-1312"><span class="linenos">1312</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1313"><a href="#Generator-1313"><span class="linenos">1313</span></a> +</span><span id="Generator-1314"><a href="#Generator-1314"><span class="linenos">1314</span></a> <span class="k">def</span> <span class="nf">star_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">Star</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1315"><a href="#Generator-1315"><span class="linenos">1315</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"except"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1316"><a href="#Generator-1316"><span class="linenos">1316</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'except'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">except_</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">except_</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1317"><a href="#Generator-1317"><span class="linenos">1317</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"replace"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1318"><a href="#Generator-1318"><span class="linenos">1318</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'replace'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">replace</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1319"><a href="#Generator-1319"><span class="linenos">1319</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"*</span><span class="si">{</span><span class="n">except_</span><span class="si">}{</span><span class="n">replace</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1320"><a href="#Generator-1320"><span class="linenos">1320</span></a> +</span><span id="Generator-1321"><a href="#Generator-1321"><span class="linenos">1321</span></a> <span class="k">def</span> <span class="nf">structkwarg_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">StructKwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1322"><a href="#Generator-1322"><span class="linenos">1322</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1323"><a href="#Generator-1323"><span class="linenos">1323</span></a> +</span><span id="Generator-1324"><a href="#Generator-1324"><span class="linenos">1324</span></a> <span class="k">def</span> <span class="nf">parameter_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">Parameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1325"><a href="#Generator-1325"><span class="linenos">1325</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1326"><a href="#Generator-1326"><span class="linenos">1326</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1327"><a href="#Generator-1327"><span class="linenos">1327</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">PARAMETER_TOKEN</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1328"><a href="#Generator-1328"><span class="linenos">1328</span></a> +</span><span id="Generator-1329"><a href="#Generator-1329"><span class="linenos">1329</span></a> <span class="k">def</span> <span class="nf">sessionparameter_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">SessionParameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1330"><a href="#Generator-1330"><span class="linenos">1330</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1331"><a href="#Generator-1331"><span class="linenos">1331</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> +</span><span id="Generator-1332"><a href="#Generator-1332"><span class="linenos">1332</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Generator-1333"><a href="#Generator-1333"><span class="linenos">1333</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">."</span> +</span><span id="Generator-1334"><a href="#Generator-1334"><span class="linenos">1334</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"@@</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1335"><a href="#Generator-1335"><span class="linenos">1335</span></a> +</span><span id="Generator-1336"><a href="#Generator-1336"><span class="linenos">1336</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1337"><a href="#Generator-1337"><span class="linenos">1337</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">":</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">"?"</span> +</span><span id="Generator-1338"><a href="#Generator-1338"><span class="linenos">1338</span></a> +</span><span id="Generator-1339"><a href="#Generator-1339"><span class="linenos">1339</span></a> <span class="k">def</span> <span class="nf">subquery_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">Subquery</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1340"><a href="#Generator-1340"><span class="linenos">1340</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-1341"><a href="#Generator-1341"><span class="linenos">1341</span></a> +</span><span id="Generator-1342"><a href="#Generator-1342"><span class="linenos">1342</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> +</span><span id="Generator-1343"><a href="#Generator-1343"><span class="linenos">1343</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator-1344"><a href="#Generator-1344"><span class="linenos">1344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> +</span><span id="Generator-1345"><a href="#Generator-1345"><span class="linenos">1345</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">),</span> +</span><span id="Generator-1346"><a href="#Generator-1346"><span class="linenos">1346</span></a> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator-1347"><a href="#Generator-1347"><span class="linenos">1347</span></a> <span class="p">)</span> +</span><span id="Generator-1348"><a href="#Generator-1348"><span class="linenos">1348</span></a> +</span><span id="Generator-1349"><a href="#Generator-1349"><span class="linenos">1349</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Generator-1350"><a href="#Generator-1350"><span class="linenos">1350</span></a> +</span><span id="Generator-1351"><a href="#Generator-1351"><span class="linenos">1351</span></a> <span class="k">def</span> <span class="nf">qualify_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">Qualify</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1352"><a href="#Generator-1352"><span class="linenos">1352</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> +</span><span id="Generator-1353"><a href="#Generator-1353"><span class="linenos">1353</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'QUALIFY'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1354"><a href="#Generator-1354"><span class="linenos">1354</span></a> +</span><span id="Generator-1355"><a href="#Generator-1355"><span class="linenos">1355</span></a> <span class="k">def</span> <span class="nf">union_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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1356"><a href="#Generator-1356"><span class="linenos">1356</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> +</span><span id="Generator-1357"><a href="#Generator-1357"><span class="linenos">1357</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator-1358"><a href="#Generator-1358"><span class="linenos">1358</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">union_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> +</span><span id="Generator-1359"><a href="#Generator-1359"><span class="linenos">1359</span></a> <span class="p">)</span> +</span><span id="Generator-1360"><a href="#Generator-1360"><span class="linenos">1360</span></a> +</span><span id="Generator-1361"><a href="#Generator-1361"><span class="linenos">1361</span></a> <span class="k">def</span> <span class="nf">union_op</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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1362"><a href="#Generator-1362"><span class="linenos">1362</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">" DISTINCT"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPLICIT_UNION</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1363"><a href="#Generator-1363"><span class="linenos">1363</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">kind</span> <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">"distinct"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" ALL"</span> +</span><span id="Generator-1364"><a href="#Generator-1364"><span class="linenos">1364</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNION</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1365"><a href="#Generator-1365"><span class="linenos">1365</span></a> +</span><span id="Generator-1366"><a href="#Generator-1366"><span class="linenos">1366</span></a> <span class="k">def</span> <span class="nf">unnest_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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1367"><a href="#Generator-1367"><span class="linenos">1367</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1368"><a href="#Generator-1368"><span class="linenos">1368</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-1369"><a href="#Generator-1369"><span class="linenos">1369</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> +</span><span id="Generator-1370"><a href="#Generator-1370"><span class="linenos">1370</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> +</span><span id="Generator-1371"><a href="#Generator-1371"><span class="linenos">1371</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1372"><a href="#Generator-1372"><span class="linenos">1372</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1373"><a href="#Generator-1373"><span class="linenos">1373</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-1374"><a href="#Generator-1374"><span class="linenos">1374</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">alias</span> +</span><span id="Generator-1375"><a href="#Generator-1375"><span class="linenos">1375</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="s2">" WITH ORDINALITY"</span> <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">"ordinality"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1376"><a href="#Generator-1376"><span class="linenos">1376</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> +</span><span id="Generator-1377"><a href="#Generator-1377"><span class="linenos">1377</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH OFFSET AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1378"><a href="#Generator-1378"><span class="linenos">1378</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNNEST(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">ordinality</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1379"><a href="#Generator-1379"><span class="linenos">1379</span></a> +</span><span id="Generator-1380"><a href="#Generator-1380"><span class="linenos">1380</span></a> <span class="k">def</span> <span class="nf">where_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">Where</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1381"><a href="#Generator-1381"><span class="linenos">1381</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> +</span><span id="Generator-1382"><a href="#Generator-1382"><span class="linenos">1382</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WHERE'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1383"><a href="#Generator-1383"><span class="linenos">1383</span></a> +</span><span id="Generator-1384"><a href="#Generator-1384"><span class="linenos">1384</span></a> <span class="k">def</span> <span class="nf">window_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">Window</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1385"><a href="#Generator-1385"><span class="linenos">1385</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1386"><a href="#Generator-1386"><span class="linenos">1386</span></a> +</span><span id="Generator-1387"><a href="#Generator-1387"><span class="linenos">1387</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1388"><a href="#Generator-1388"><span class="linenos">1388</span></a> +</span><span id="Generator-1389"><a href="#Generator-1389"><span class="linenos">1389</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> +</span><span id="Generator-1390"><a href="#Generator-1390"><span class="linenos">1390</span></a> <span class="n">order_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">order_sql</span><span class="p">(</span><span class="n">order</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="n">order</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1391"><a href="#Generator-1391"><span class="linenos">1391</span></a> +</span><span id="Generator-1392"><a href="#Generator-1392"><span class="linenos">1392</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="n">partition</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">partition</span> <span class="ow">and</span> <span class="n">order</span> <span class="k">else</span> <span class="n">partition</span> +</span><span id="Generator-1393"><a href="#Generator-1393"><span class="linenos">1393</span></a> +</span><span id="Generator-1394"><a href="#Generator-1394"><span class="linenos">1394</span></a> <span class="n">spec</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">"spec"</span><span class="p">)</span> +</span><span id="Generator-1395"><a href="#Generator-1395"><span class="linenos">1395</span></a> <span class="n">spec_sql</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">window_spec_sql</span><span class="p">(</span><span class="n">spec</span><span class="p">)</span> <span class="k">if</span> <span class="n">spec</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1396"><a href="#Generator-1396"><span class="linenos">1396</span></a> +</span><span id="Generator-1397"><a href="#Generator-1397"><span class="linenos">1397</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-1398"><a href="#Generator-1398"><span class="linenos">1398</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">'AS'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">arg_key</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'windows'</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'OVER'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1399"><a href="#Generator-1399"><span class="linenos">1399</span></a> +</span><span id="Generator-1400"><a href="#Generator-1400"><span class="linenos">1400</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">partition</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">order</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">spec</span> <span class="ow">and</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Generator-1401"><a href="#Generator-1401"><span class="linenos">1401</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1402"><a href="#Generator-1402"><span class="linenos">1402</span></a> +</span><span id="Generator-1403"><a href="#Generator-1403"><span class="linenos">1403</span></a> <span class="n">window_args</span> <span class="o">=</span> <span class="n">alias</span> <span class="o">+</span> <span class="n">partition_sql</span> <span class="o">+</span> <span class="n">order_sql</span> <span class="o">+</span> <span class="n">spec_sql</span> +</span><span id="Generator-1404"><a href="#Generator-1404"><span class="linenos">1404</span></a> +</span><span id="Generator-1405"><a href="#Generator-1405"><span class="linenos">1405</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">window_args</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1406"><a href="#Generator-1406"><span class="linenos">1406</span></a> +</span><span id="Generator-1407"><a href="#Generator-1407"><span class="linenos">1407</span></a> <span class="k">def</span> <span class="nf">partition_by_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">Window</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1408"><a href="#Generator-1408"><span class="linenos">1408</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"partition_by"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1409"><a href="#Generator-1409"><span class="linenos">1409</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1410"><a href="#Generator-1410"><span class="linenos">1410</span></a> +</span><span id="Generator-1411"><a href="#Generator-1411"><span class="linenos">1411</span></a> <span class="k">def</span> <span class="nf">window_spec_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">WindowSpec</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1412"><a href="#Generator-1412"><span class="linenos">1412</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="Generator-1413"><a href="#Generator-1413"><span class="linenos">1413</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator-1414"><a href="#Generator-1414"><span class="linenos">1414</span></a> <span class="n">end</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-1415"><a href="#Generator-1415"><span class="linenos">1415</span></a> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator-1416"><a href="#Generator-1416"><span class="linenos">1416</span></a> <span class="ow">or</span> <span class="s2">"CURRENT ROW"</span> +</span><span id="Generator-1417"><a href="#Generator-1417"><span class="linenos">1417</span></a> <span class="p">)</span> +</span><span id="Generator-1418"><a href="#Generator-1418"><span class="linenos">1418</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1419"><a href="#Generator-1419"><span class="linenos">1419</span></a> +</span><span id="Generator-1420"><a href="#Generator-1420"><span class="linenos">1420</span></a> <span class="k">def</span> <span class="nf">withingroup_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">WithinGroup</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1421"><a href="#Generator-1421"><span class="linenos">1421</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1422"><a href="#Generator-1422"><span class="linenos">1422</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># order has a leading space</span> +</span><span id="Generator-1423"><a href="#Generator-1423"><span class="linenos">1423</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> WITHIN GROUP (</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1424"><a href="#Generator-1424"><span class="linenos">1424</span></a> +</span><span id="Generator-1425"><a href="#Generator-1425"><span class="linenos">1425</span></a> <span class="k">def</span> <span class="nf">between_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">Between</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1426"><a href="#Generator-1426"><span class="linenos">1426</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1427"><a href="#Generator-1427"><span class="linenos">1427</span></a> <span class="n">low</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">"low"</span><span class="p">)</span> +</span><span id="Generator-1428"><a href="#Generator-1428"><span class="linenos">1428</span></a> <span class="n">high</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">"high"</span><span class="p">)</span> +</span><span id="Generator-1429"><a href="#Generator-1429"><span class="linenos">1429</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">low</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">high</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1430"><a href="#Generator-1430"><span class="linenos">1430</span></a> +</span><span id="Generator-1431"><a href="#Generator-1431"><span class="linenos">1431</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1432"><a href="#Generator-1432"><span class="linenos">1432</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> +</span><span id="Generator-1433"><a href="#Generator-1433"><span class="linenos">1433</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="Generator-1434"><a href="#Generator-1434"><span class="linenos">1434</span></a> +</span><span id="Generator-1435"><a href="#Generator-1435"><span class="linenos">1435</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> +</span><span id="Generator-1436"><a href="#Generator-1436"><span class="linenos">1436</span></a> +</span><span id="Generator-1437"><a href="#Generator-1437"><span class="linenos">1437</span></a> <span class="k">def</span> <span class="nf">all_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">All</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1438"><a href="#Generator-1438"><span class="linenos">1438</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALL </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1439"><a href="#Generator-1439"><span class="linenos">1439</span></a> +</span><span id="Generator-1440"><a href="#Generator-1440"><span class="linenos">1440</span></a> <span class="k">def</span> <span class="nf">any_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">Any</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1441"><a href="#Generator-1441"><span class="linenos">1441</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1442"><a href="#Generator-1442"><span class="linenos">1442</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">Subqueryable</span><span class="p">):</span> +</span><span id="Generator-1443"><a href="#Generator-1443"><span class="linenos">1443</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Generator-1444"><a href="#Generator-1444"><span class="linenos">1444</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ANY </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1445"><a href="#Generator-1445"><span class="linenos">1445</span></a> +</span><span id="Generator-1446"><a href="#Generator-1446"><span class="linenos">1446</span></a> <span class="k">def</span> <span class="nf">exists_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">Exists</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1447"><a href="#Generator-1447"><span class="linenos">1447</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXISTS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1448"><a href="#Generator-1448"><span class="linenos">1448</span></a> +</span><span id="Generator-1449"><a href="#Generator-1449"><span class="linenos">1449</span></a> <span class="k">def</span> <span class="nf">case_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">Case</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1450"><a href="#Generator-1450"><span class="linenos">1450</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1451"><a href="#Generator-1451"><span class="linenos">1451</span></a> <span class="n">statements</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"CASE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"CASE"</span><span class="p">]</span> +</span><span id="Generator-1452"><a href="#Generator-1452"><span class="linenos">1452</span></a> +</span><span id="Generator-1453"><a href="#Generator-1453"><span class="linenos">1453</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">args</span><span class="p">[</span><span class="s2">"ifs"</span><span class="p">]:</span> +</span><span id="Generator-1454"><a href="#Generator-1454"><span class="linenos">1454</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WHEN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-1455"><a href="#Generator-1455"><span class="linenos">1455</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"THEN </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">'true'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-1456"><a href="#Generator-1456"><span class="linenos">1456</span></a> +</span><span id="Generator-1457"><a href="#Generator-1457"><span class="linenos">1457</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="Generator-1458"><a href="#Generator-1458"><span class="linenos">1458</span></a> +</span><span id="Generator-1459"><a href="#Generator-1459"><span class="linenos">1459</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="Generator-1460"><a href="#Generator-1460"><span class="linenos">1460</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ELSE </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-1461"><a href="#Generator-1461"><span class="linenos">1461</span></a> +</span><span id="Generator-1462"><a href="#Generator-1462"><span class="linenos">1462</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> +</span><span id="Generator-1463"><a href="#Generator-1463"><span class="linenos">1463</span></a> +</span><span id="Generator-1464"><a href="#Generator-1464"><span class="linenos">1464</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> +</span><span id="Generator-1465"><a href="#Generator-1465"><span class="linenos">1465</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">),</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1466"><a href="#Generator-1466"><span class="linenos">1466</span></a> +</span><span id="Generator-1467"><a href="#Generator-1467"><span class="linenos">1467</span></a> <span class="k">return</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> +</span><span id="Generator-1468"><a href="#Generator-1468"><span class="linenos">1468</span></a> +</span><span id="Generator-1469"><a href="#Generator-1469"><span class="linenos">1469</span></a> <span class="k">def</span> <span class="nf">constraint_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">Constraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1470"><a href="#Generator-1470"><span class="linenos">1470</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1471"><a href="#Generator-1471"><span class="linenos">1471</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1472"><a href="#Generator-1472"><span class="linenos">1472</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1473"><a href="#Generator-1473"><span class="linenos">1473</span></a> +</span><span id="Generator-1474"><a href="#Generator-1474"><span class="linenos">1474</span></a> <span class="k">def</span> <span class="nf">extract_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">Extract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1475"><a href="#Generator-1475"><span class="linenos">1475</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1476"><a href="#Generator-1476"><span class="linenos">1476</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator-1477"><a href="#Generator-1477"><span class="linenos">1477</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXTRACT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1478"><a href="#Generator-1478"><span class="linenos">1478</span></a> +</span><span id="Generator-1479"><a href="#Generator-1479"><span class="linenos">1479</span></a> <span class="k">def</span> <span class="nf">trim_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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1480"><a href="#Generator-1480"><span class="linenos">1480</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="Generator-1481"><a href="#Generator-1481"><span class="linenos">1481</span></a> +</span><span id="Generator-1482"><a href="#Generator-1482"><span class="linenos">1482</span></a> <span class="k">if</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"LEADING"</span><span class="p">:</span> +</span><span id="Generator-1483"><a href="#Generator-1483"><span class="linenos">1483</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">"LTRIM"</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="Generator-1484"><a href="#Generator-1484"><span class="linenos">1484</span></a> <span class="k">elif</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"TRAILING"</span><span class="p">:</span> +</span><span id="Generator-1485"><a href="#Generator-1485"><span class="linenos">1485</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">"RTRIM"</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="Generator-1486"><a href="#Generator-1486"><span class="linenos">1486</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1487"><a href="#Generator-1487"><span class="linenos">1487</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">"TRIM"</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><span id="Generator-1488"><a href="#Generator-1488"><span class="linenos">1488</span></a> +</span><span id="Generator-1489"><a href="#Generator-1489"><span class="linenos">1489</span></a> <span class="k">def</span> <span class="nf">concat_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">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1490"><a href="#Generator-1490"><span class="linenos">1490</span></a> <span class="k">if</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 class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Generator-1491"><a href="#Generator-1491"><span class="linenos">1491</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="Generator-1492"><a href="#Generator-1492"><span class="linenos">1492</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="Generator-1493"><a href="#Generator-1493"><span class="linenos">1493</span></a> +</span><span id="Generator-1494"><a href="#Generator-1494"><span class="linenos">1494</span></a> <span class="k">def</span> <span class="nf">check_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">Check</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1495"><a href="#Generator-1495"><span class="linenos">1495</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="n">key</span><span class="o">=</span><span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator-1496"><a href="#Generator-1496"><span class="linenos">1496</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECK (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1497"><a href="#Generator-1497"><span class="linenos">1497</span></a> +</span><span id="Generator-1498"><a href="#Generator-1498"><span class="linenos">1498</span></a> <span class="k">def</span> <span class="nf">foreignkey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1499"><a href="#Generator-1499"><span class="linenos">1499</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1500"><a href="#Generator-1500"><span class="linenos">1500</span></a> <span class="n">reference</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">"reference"</span><span class="p">)</span> +</span><span id="Generator-1501"><a href="#Generator-1501"><span class="linenos">1501</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">reference</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">reference</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1502"><a href="#Generator-1502"><span class="linenos">1502</span></a> <span class="n">delete</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">"delete"</span><span class="p">)</span> +</span><span id="Generator-1503"><a href="#Generator-1503"><span class="linenos">1503</span></a> <span class="n">delete</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON DELETE </span><span class="si">{</span><span class="n">delete</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">delete</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1504"><a href="#Generator-1504"><span class="linenos">1504</span></a> <span class="n">update</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">"update"</span><span class="p">)</span> +</span><span id="Generator-1505"><a href="#Generator-1505"><span class="linenos">1505</span></a> <span class="n">update</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON UPDATE </span><span class="si">{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">update</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1506"><a href="#Generator-1506"><span class="linenos">1506</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FOREIGN KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">reference</span><span class="si">}{</span><span class="n">delete</span><span class="si">}{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1507"><a href="#Generator-1507"><span class="linenos">1507</span></a> +</span><span id="Generator-1508"><a href="#Generator-1508"><span class="linenos">1508</span></a> <span class="k">def</span> <span class="nf">primarykey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1509"><a href="#Generator-1509"><span class="linenos">1509</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1510"><a href="#Generator-1510"><span class="linenos">1510</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator-1511"><a href="#Generator-1511"><span class="linenos">1511</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1512"><a href="#Generator-1512"><span class="linenos">1512</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1513"><a href="#Generator-1513"><span class="linenos">1513</span></a> +</span><span id="Generator-1514"><a href="#Generator-1514"><span class="linenos">1514</span></a> <span class="k">def</span> <span class="nf">unique_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">Unique</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1515"><a href="#Generator-1515"><span class="linenos">1515</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> +</span><span id="Generator-1516"><a href="#Generator-1516"><span class="linenos">1516</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNIQUE (</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1517"><a href="#Generator-1517"><span class="linenos">1517</span></a> +</span><span id="Generator-1518"><a href="#Generator-1518"><span class="linenos">1518</span></a> <span class="k">def</span> <span class="nf">if_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">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1519"><a href="#Generator-1519"><span class="linenos">1519</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sql</span><span class="p">(</span> +</span><span id="Generator-1520"><a href="#Generator-1520"><span class="linenos">1520</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()],</span> <span class="n">default</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">"false"</span><span class="p">))</span> +</span><span id="Generator-1521"><a href="#Generator-1521"><span class="linenos">1521</span></a> <span class="p">)</span> +</span><span id="Generator-1522"><a href="#Generator-1522"><span class="linenos">1522</span></a> +</span><span id="Generator-1523"><a href="#Generator-1523"><span class="linenos">1523</span></a> <span class="k">def</span> <span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1524"><a href="#Generator-1524"><span class="linenos">1524</span></a> <span class="n">query</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">"query"</span><span class="p">)</span> +</span><span id="Generator-1525"><a href="#Generator-1525"><span class="linenos">1525</span></a> <span class="n">unnest</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">"unnest"</span><span class="p">)</span> +</span><span id="Generator-1526"><a href="#Generator-1526"><span class="linenos">1526</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> +</span><span id="Generator-1527"><a href="#Generator-1527"><span class="linenos">1527</span></a> <span class="n">is_global</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"is_global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1528"><a href="#Generator-1528"><span class="linenos">1528</span></a> +</span><span id="Generator-1529"><a href="#Generator-1529"><span class="linenos">1529</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> +</span><span id="Generator-1530"><a href="#Generator-1530"><span class="linenos">1530</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">query</span><span class="p">)</span> +</span><span id="Generator-1531"><a href="#Generator-1531"><span class="linenos">1531</span></a> <span class="k">elif</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="Generator-1532"><a href="#Generator-1532"><span class="linenos">1532</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_unnest_op</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> +</span><span id="Generator-1533"><a href="#Generator-1533"><span class="linenos">1533</span></a> <span class="k">elif</span> <span class="n">field</span><span class="p">:</span> +</span><span id="Generator-1534"><a href="#Generator-1534"><span class="linenos">1534</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> +</span><span id="Generator-1535"><a href="#Generator-1535"><span class="linenos">1535</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1536"><a href="#Generator-1536"><span class="linenos">1536</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1537"><a href="#Generator-1537"><span class="linenos">1537</span></a> +</span><span id="Generator-1538"><a href="#Generator-1538"><span class="linenos">1538</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">is_global</span><span class="si">}</span><span class="s2"> IN </span><span class="si">{</span><span class="n">in_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1539"><a href="#Generator-1539"><span class="linenos">1539</span></a> +</span><span id="Generator-1540"><a href="#Generator-1540"><span class="linenos">1540</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1541"><a href="#Generator-1541"><span class="linenos">1541</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(SELECT </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">unnest</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1542"><a href="#Generator-1542"><span class="linenos">1542</span></a> +</span><span id="Generator-1543"><a href="#Generator-1543"><span class="linenos">1543</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1544"><a href="#Generator-1544"><span class="linenos">1544</span></a> <span class="n">this</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1545"><a href="#Generator-1545"><span class="linenos">1545</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Generator-1546"><a href="#Generator-1546"><span class="linenos">1546</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-1547"><a href="#Generator-1547"><span class="linenos">1547</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1548"><a href="#Generator-1548"><span class="linenos">1548</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> +</span><span id="Generator-1549"><a href="#Generator-1549"><span class="linenos">1549</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1550"><a href="#Generator-1550"><span class="linenos">1550</span></a> <span class="p">)</span> +</span><span id="Generator-1551"><a href="#Generator-1551"><span class="linenos">1551</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1552"><a href="#Generator-1552"><span class="linenos">1552</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator-1553"><a href="#Generator-1553"><span class="linenos">1553</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> +</span><span id="Generator-1554"><a href="#Generator-1554"><span class="linenos">1554</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">unit</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1555"><a href="#Generator-1555"><span class="linenos">1555</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERVAL</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1556"><a href="#Generator-1556"><span class="linenos">1556</span></a> +</span><span id="Generator-1557"><a href="#Generator-1557"><span class="linenos">1557</span></a> <span class="k">def</span> <span class="nf">return_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">Return</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1558"><a href="#Generator-1558"><span class="linenos">1558</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RETURN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1559"><a href="#Generator-1559"><span class="linenos">1559</span></a> +</span><span id="Generator-1560"><a href="#Generator-1560"><span class="linenos">1560</span></a> <span class="k">def</span> <span class="nf">reference_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">Reference</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1561"><a href="#Generator-1561"><span class="linenos">1561</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1562"><a href="#Generator-1562"><span class="linenos">1562</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1563"><a href="#Generator-1563"><span class="linenos">1563</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1564"><a href="#Generator-1564"><span class="linenos">1564</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator-1565"><a href="#Generator-1565"><span class="linenos">1565</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1566"><a href="#Generator-1566"><span class="linenos">1566</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"REFERENCES </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1567"><a href="#Generator-1567"><span class="linenos">1567</span></a> +</span><span id="Generator-1568"><a href="#Generator-1568"><span class="linenos">1568</span></a> <span class="k">def</span> <span class="nf">anonymous_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">Anonymous</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1569"><a href="#Generator-1569"><span class="linenos">1569</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="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Generator-1570"><a href="#Generator-1570"><span class="linenos">1570</span></a> +</span><span id="Generator-1571"><a href="#Generator-1571"><span class="linenos">1571</span></a> <span class="k">def</span> <span class="nf">paren_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">Paren</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1572"><a href="#Generator-1572"><span class="linenos">1572</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">unnest</span><span class="p">(),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="Generator-1573"><a href="#Generator-1573"><span class="linenos">1573</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1574"><a href="#Generator-1574"><span class="linenos">1574</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1575"><a href="#Generator-1575"><span class="linenos">1575</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Generator-1576"><a href="#Generator-1576"><span class="linenos">1576</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1577"><a href="#Generator-1577"><span class="linenos">1577</span></a> +</span><span id="Generator-1578"><a href="#Generator-1578"><span class="linenos">1578</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Generator-1579"><a href="#Generator-1579"><span class="linenos">1579</span></a> +</span><span id="Generator-1580"><a href="#Generator-1580"><span class="linenos">1580</span></a> <span class="k">def</span> <span class="nf">neg_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">Neg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1581"><a href="#Generator-1581"><span class="linenos">1581</span></a> <span class="c1"># This makes sure we don't convert "- - 5" to "--5", which is a comment</span> +</span><span id="Generator-1582"><a href="#Generator-1582"><span class="linenos">1582</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator-1583"><a href="#Generator-1583"><span class="linenos">1583</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">this_sql</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"-"</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1584"><a href="#Generator-1584"><span class="linenos">1584</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"-</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1585"><a href="#Generator-1585"><span class="linenos">1585</span></a> +</span><span id="Generator-1586"><a href="#Generator-1586"><span class="linenos">1586</span></a> <span class="k">def</span> <span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1587"><a href="#Generator-1587"><span class="linenos">1587</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"NOT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1588"><a href="#Generator-1588"><span class="linenos">1588</span></a> +</span><span id="Generator-1589"><a href="#Generator-1589"><span class="linenos">1589</span></a> <span class="k">def</span> <span class="nf">alias_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">Alias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1590"><a href="#Generator-1590"><span class="linenos">1590</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator-1591"><a href="#Generator-1591"><span class="linenos">1591</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">to_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1592"><a href="#Generator-1592"><span class="linenos">1592</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1593"><a href="#Generator-1593"><span class="linenos">1593</span></a> +</span><span id="Generator-1594"><a href="#Generator-1594"><span class="linenos">1594</span></a> <span class="k">def</span> <span class="nf">aliases_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">Aliases</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1595"><a href="#Generator-1595"><span class="linenos">1595</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1596"><a href="#Generator-1596"><span class="linenos">1596</span></a> +</span><span id="Generator-1597"><a href="#Generator-1597"><span class="linenos">1597</span></a> <span class="k">def</span> <span class="nf">attimezone_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">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1598"><a href="#Generator-1598"><span class="linenos">1598</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1599"><a href="#Generator-1599"><span class="linenos">1599</span></a> <span class="n">zone</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">"zone"</span><span class="p">)</span> +</span><span id="Generator-1600"><a href="#Generator-1600"><span class="linenos">1600</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1601"><a href="#Generator-1601"><span class="linenos">1601</span></a> +</span><span id="Generator-1602"><a href="#Generator-1602"><span class="linenos">1602</span></a> <span class="k">def</span> <span class="nf">add_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">Add</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1603"><a href="#Generator-1603"><span class="linenos">1603</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> +</span><span id="Generator-1604"><a href="#Generator-1604"><span class="linenos">1604</span></a> +</span><span id="Generator-1605"><a href="#Generator-1605"><span class="linenos">1605</span></a> <span class="k">def</span> <span class="nf">and_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">And</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1606"><a href="#Generator-1606"><span class="linenos">1606</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">)</span> +</span><span id="Generator-1607"><a href="#Generator-1607"><span class="linenos">1607</span></a> +</span><span id="Generator-1608"><a href="#Generator-1608"><span class="linenos">1608</span></a> <span class="k">def</span> <span class="nf">connector_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">Connector</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1609"><a href="#Generator-1609"><span class="linenos">1609</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator-1610"><a href="#Generator-1610"><span class="linenos">1610</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">op</span><span class="p">)</span> +</span><span id="Generator-1611"><a href="#Generator-1611"><span class="linenos">1611</span></a> +</span><span id="Generator-1612"><a href="#Generator-1612"><span class="linenos">1612</span></a> <span class="n">sqls</span> <span class="o">=</span> <span class="nb">tuple</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="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">flatten</span><span class="p">(</span><span class="n">unnest</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="Generator-1613"><a href="#Generator-1613"><span class="linenos">1613</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator-1614"><a href="#Generator-1614"><span class="linenos">1614</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> +</span><span id="Generator-1615"><a href="#Generator-1615"><span class="linenos">1615</span></a> +</span><span id="Generator-1616"><a href="#Generator-1616"><span class="linenos">1616</span></a> <span class="k">def</span> <span class="nf">bitwiseand_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">BitwiseAnd</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1617"><a href="#Generator-1617"><span class="linenos">1617</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"&"</span><span class="p">)</span> +</span><span id="Generator-1618"><a href="#Generator-1618"><span class="linenos">1618</span></a> +</span><span id="Generator-1619"><a href="#Generator-1619"><span class="linenos">1619</span></a> <span class="k">def</span> <span class="nf">bitwiseleftshift_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">BitwiseLeftShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1620"><a href="#Generator-1620"><span class="linenos">1620</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<<"</span><span class="p">)</span> +</span><span id="Generator-1621"><a href="#Generator-1621"><span class="linenos">1621</span></a> +</span><span id="Generator-1622"><a href="#Generator-1622"><span class="linenos">1622</span></a> <span class="k">def</span> <span class="nf">bitwisenot_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">BitwiseNot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1623"><a href="#Generator-1623"><span class="linenos">1623</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"~</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1624"><a href="#Generator-1624"><span class="linenos">1624</span></a> +</span><span id="Generator-1625"><a href="#Generator-1625"><span class="linenos">1625</span></a> <span class="k">def</span> <span class="nf">bitwiseor_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">BitwiseOr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1626"><a href="#Generator-1626"><span class="linenos">1626</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"|"</span><span class="p">)</span> +</span><span id="Generator-1627"><a href="#Generator-1627"><span class="linenos">1627</span></a> +</span><span id="Generator-1628"><a href="#Generator-1628"><span class="linenos">1628</span></a> <span class="k">def</span> <span class="nf">bitwiserightshift_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">BitwiseRightShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1629"><a href="#Generator-1629"><span class="linenos">1629</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">>"</span><span class="p">)</span> +</span><span id="Generator-1630"><a href="#Generator-1630"><span class="linenos">1630</span></a> +</span><span id="Generator-1631"><a href="#Generator-1631"><span class="linenos">1631</span></a> <span class="k">def</span> <span class="nf">bitwisexor_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">BitwiseXor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1632"><a href="#Generator-1632"><span class="linenos">1632</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">)</span> +</span><span id="Generator-1633"><a href="#Generator-1633"><span class="linenos">1633</span></a> +</span><span id="Generator-1634"><a href="#Generator-1634"><span class="linenos">1634</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1635"><a href="#Generator-1635"><span class="linenos">1635</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1636"><a href="#Generator-1636"><span class="linenos">1636</span></a> +</span><span id="Generator-1637"><a href="#Generator-1637"><span class="linenos">1637</span></a> <span class="k">def</span> <span class="nf">currentdate_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">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1638"><a href="#Generator-1638"><span class="linenos">1638</span></a> <span class="n">zone</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1639"><a href="#Generator-1639"><span class="linenos">1639</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE(</span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> +</span><span id="Generator-1640"><a href="#Generator-1640"><span class="linenos">1640</span></a> +</span><span id="Generator-1641"><a href="#Generator-1641"><span class="linenos">1641</span></a> <span class="k">def</span> <span class="nf">collate_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">Collate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1642"><a href="#Generator-1642"><span class="linenos">1642</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"COLLATE"</span><span class="p">)</span> +</span><span id="Generator-1643"><a href="#Generator-1643"><span class="linenos">1643</span></a> +</span><span id="Generator-1644"><a href="#Generator-1644"><span class="linenos">1644</span></a> <span class="k">def</span> <span class="nf">command_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">Command</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1645"><a href="#Generator-1645"><span class="linenos">1645</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s1">'expression'</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1646"><a href="#Generator-1646"><span class="linenos">1646</span></a> +</span><span id="Generator-1647"><a href="#Generator-1647"><span class="linenos">1647</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1648"><a href="#Generator-1648"><span class="linenos">1648</span></a> <span class="k">return</span> <span class="s2">"BEGIN"</span> +</span><span id="Generator-1649"><a href="#Generator-1649"><span class="linenos">1649</span></a> +</span><span id="Generator-1650"><a href="#Generator-1650"><span class="linenos">1650</span></a> <span class="k">def</span> <span class="nf">commit_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">Commit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1651"><a href="#Generator-1651"><span class="linenos">1651</span></a> <span class="n">chain</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">"chain"</span><span class="p">)</span> +</span><span id="Generator-1652"><a href="#Generator-1652"><span class="linenos">1652</span></a> <span class="k">if</span> <span class="n">chain</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-1653"><a href="#Generator-1653"><span class="linenos">1653</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="s2">" AND CHAIN"</span> <span class="k">if</span> <span class="n">chain</span> <span class="k">else</span> <span class="s2">" AND NO CHAIN"</span> +</span><span id="Generator-1654"><a href="#Generator-1654"><span class="linenos">1654</span></a> +</span><span id="Generator-1655"><a href="#Generator-1655"><span class="linenos">1655</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COMMIT</span><span class="si">{</span><span class="n">chain</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1656"><a href="#Generator-1656"><span class="linenos">1656</span></a> +</span><span id="Generator-1657"><a href="#Generator-1657"><span class="linenos">1657</span></a> <span class="k">def</span> <span class="nf">rollback_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">Rollback</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1658"><a href="#Generator-1658"><span class="linenos">1658</span></a> <span class="n">savepoint</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">"savepoint"</span><span class="p">)</span> +</span><span id="Generator-1659"><a href="#Generator-1659"><span class="linenos">1659</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" TO </span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">savepoint</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1660"><a href="#Generator-1660"><span class="linenos">1660</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROLLBACK</span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1661"><a href="#Generator-1661"><span class="linenos">1661</span></a> +</span><span id="Generator-1662"><a href="#Generator-1662"><span class="linenos">1662</span></a> <span class="k">def</span> <span class="nf">altercolumn_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">AlterColumn</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1663"><a href="#Generator-1663"><span class="linenos">1663</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1664"><a href="#Generator-1664"><span class="linenos">1664</span></a> +</span><span id="Generator-1665"><a href="#Generator-1665"><span class="linenos">1665</span></a> <span class="n">dtype</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">"dtype"</span><span class="p">)</span> +</span><span id="Generator-1666"><a href="#Generator-1666"><span class="linenos">1666</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="p">:</span> +</span><span id="Generator-1667"><a href="#Generator-1667"><span class="linenos">1667</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> +</span><span id="Generator-1668"><a href="#Generator-1668"><span class="linenos">1668</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1669"><a href="#Generator-1669"><span class="linenos">1669</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> +</span><span id="Generator-1670"><a href="#Generator-1670"><span class="linenos">1670</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">using</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1671"><a href="#Generator-1671"><span class="linenos">1671</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TYPE </span><span class="si">{</span><span class="n">dtype</span><span class="si">}{</span><span class="n">collate</span><span class="si">}{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1672"><a href="#Generator-1672"><span class="linenos">1672</span></a> +</span><span id="Generator-1673"><a href="#Generator-1673"><span class="linenos">1673</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="Generator-1674"><a href="#Generator-1674"><span class="linenos">1674</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="Generator-1675"><a href="#Generator-1675"><span class="linenos">1675</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET DEFAULT </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1676"><a href="#Generator-1676"><span class="linenos">1676</span></a> +</span><span id="Generator-1677"><a href="#Generator-1677"><span class="linenos">1677</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">"drop"</span><span class="p">):</span> +</span><span id="Generator-1678"><a href="#Generator-1678"><span class="linenos">1678</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported ALTER COLUMN syntax"</span><span class="p">)</span> +</span><span id="Generator-1679"><a href="#Generator-1679"><span class="linenos">1679</span></a> +</span><span id="Generator-1680"><a href="#Generator-1680"><span class="linenos">1680</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> DROP DEFAULT"</span> +</span><span id="Generator-1681"><a href="#Generator-1681"><span class="linenos">1681</span></a> +</span><span id="Generator-1682"><a href="#Generator-1682"><span class="linenos">1682</span></a> <span class="k">def</span> <span class="nf">renametable_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">RenameTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1683"><a href="#Generator-1683"><span class="linenos">1683</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1684"><a href="#Generator-1684"><span class="linenos">1684</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RENAME TO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1685"><a href="#Generator-1685"><span class="linenos">1685</span></a> +</span><span id="Generator-1686"><a href="#Generator-1686"><span class="linenos">1686</span></a> <span class="k">def</span> <span class="nf">altertable_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">AlterTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1687"><a href="#Generator-1687"><span class="linenos">1687</span></a> <span class="n">actions</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">"actions"</span><span class="p">]</span> +</span><span id="Generator-1688"><a href="#Generator-1688"><span class="linenos">1688</span></a> +</span><span id="Generator-1689"><a href="#Generator-1689"><span class="linenos">1689</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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="Generator-1690"><a href="#Generator-1690"><span class="linenos">1690</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMN "</span><span class="p">)</span> +</span><span id="Generator-1691"><a href="#Generator-1691"><span class="linenos">1691</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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="Generator-1692"><a href="#Generator-1692"><span class="linenos">1692</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMNS "</span><span class="p">)</span> +</span><span id="Generator-1693"><a href="#Generator-1693"><span class="linenos">1693</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">):</span> +</span><span id="Generator-1694"><a href="#Generator-1694"><span class="linenos">1694</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1695"><a href="#Generator-1695"><span class="linenos">1695</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1696"><a href="#Generator-1696"><span class="linenos">1696</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">)</span> +</span><span id="Generator-1697"><a href="#Generator-1697"><span class="linenos">1697</span></a> +</span><span id="Generator-1698"><a href="#Generator-1698"><span class="linenos">1698</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1699"><a href="#Generator-1699"><span class="linenos">1699</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER TABLE</span><span class="si">{</span><span class="n">exists</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">actions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1700"><a href="#Generator-1700"><span class="linenos">1700</span></a> +</span><span id="Generator-1701"><a href="#Generator-1701"><span class="linenos">1701</span></a> <span class="k">def</span> <span class="nf">droppartition_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">DropPartition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1702"><a href="#Generator-1702"><span class="linenos">1702</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1703"><a href="#Generator-1703"><span class="linenos">1703</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator-1704"><a href="#Generator-1704"><span class="linenos">1704</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1705"><a href="#Generator-1705"><span class="linenos">1705</span></a> +</span><span id="Generator-1706"><a href="#Generator-1706"><span class="linenos">1706</span></a> <span class="k">def</span> <span class="nf">addconstraint_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">AddConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1707"><a href="#Generator-1707"><span class="linenos">1707</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1708"><a href="#Generator-1708"><span class="linenos">1708</span></a> <span class="n">expression_</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">"expression"</span><span class="p">)</span> +</span><span id="Generator-1709"><a href="#Generator-1709"><span class="linenos">1709</span></a> <span class="n">add_constraint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ADD CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"ADD"</span> +</span><span id="Generator-1710"><a href="#Generator-1710"><span class="linenos">1710</span></a> +</span><span id="Generator-1711"><a href="#Generator-1711"><span class="linenos">1711</span></a> <span class="n">enforced</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">"enforced"</span><span class="p">)</span> +</span><span id="Generator-1712"><a href="#Generator-1712"><span class="linenos">1712</span></a> <span class="k">if</span> <span class="n">enforced</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator-1713"><a href="#Generator-1713"><span class="linenos">1713</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> CHECK (</span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="s1">' ENFORCED'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">enforced</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1714"><a href="#Generator-1714"><span class="linenos">1714</span></a> +</span><span id="Generator-1715"><a href="#Generator-1715"><span class="linenos">1715</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1716"><a href="#Generator-1716"><span class="linenos">1716</span></a> +</span><span id="Generator-1717"><a href="#Generator-1717"><span class="linenos">1717</span></a> <span class="k">def</span> <span class="nf">distinct_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">Distinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1718"><a href="#Generator-1718"><span class="linenos">1718</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1719"><a href="#Generator-1719"><span class="linenos">1719</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1720"><a href="#Generator-1720"><span class="linenos">1720</span></a> +</span><span id="Generator-1721"><a href="#Generator-1721"><span class="linenos">1721</span></a> <span class="n">on</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">"on"</span><span class="p">)</span> +</span><span id="Generator-1722"><a href="#Generator-1722"><span class="linenos">1722</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">on</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1723"><a href="#Generator-1723"><span class="linenos">1723</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DISTINCT</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1724"><a href="#Generator-1724"><span class="linenos">1724</span></a> +</span><span id="Generator-1725"><a href="#Generator-1725"><span class="linenos">1725</span></a> <span class="k">def</span> <span class="nf">ignorenulls_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">IgnoreNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1726"><a href="#Generator-1726"><span class="linenos">1726</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> IGNORE NULLS"</span> +</span><span id="Generator-1727"><a href="#Generator-1727"><span class="linenos">1727</span></a> +</span><span id="Generator-1728"><a href="#Generator-1728"><span class="linenos">1728</span></a> <span class="k">def</span> <span class="nf">respectnulls_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">RespectNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1729"><a href="#Generator-1729"><span class="linenos">1729</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> RESPECT NULLS"</span> +</span><span id="Generator-1730"><a href="#Generator-1730"><span class="linenos">1730</span></a> +</span><span id="Generator-1731"><a href="#Generator-1731"><span class="linenos">1731</span></a> <span class="k">def</span> <span class="nf">intdiv_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">IntDiv</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1732"><a href="#Generator-1732"><span class="linenos">1732</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="Generator-1733"><a href="#Generator-1733"><span class="linenos">1733</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">(</span> +</span><span id="Generator-1734"><a href="#Generator-1734"><span class="linenos">1734</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">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="o">.</span><span class="n">expression</span><span class="p">),</span> +</span><span id="Generator-1735"><a href="#Generator-1735"><span class="linenos">1735</span></a> <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="p">(</span><span class="n">this</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">INT</span><span class="p">),</span> +</span><span id="Generator-1736"><a href="#Generator-1736"><span class="linenos">1736</span></a> <span class="p">)</span> +</span><span id="Generator-1737"><a href="#Generator-1737"><span class="linenos">1737</span></a> <span class="p">)</span> +</span><span id="Generator-1738"><a href="#Generator-1738"><span class="linenos">1738</span></a> +</span><span id="Generator-1739"><a href="#Generator-1739"><span class="linenos">1739</span></a> <span class="k">def</span> <span class="nf">dpipe_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">DPipe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1740"><a href="#Generator-1740"><span class="linenos">1740</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span> +</span><span id="Generator-1741"><a href="#Generator-1741"><span class="linenos">1741</span></a> +</span><span id="Generator-1742"><a href="#Generator-1742"><span class="linenos">1742</span></a> <span class="k">def</span> <span class="nf">div_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">Div</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1743"><a href="#Generator-1743"><span class="linenos">1743</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span> +</span><span id="Generator-1744"><a href="#Generator-1744"><span class="linenos">1744</span></a> +</span><span id="Generator-1745"><a href="#Generator-1745"><span class="linenos">1745</span></a> <span class="k">def</span> <span class="nf">distance_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">Distance</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1746"><a href="#Generator-1746"><span class="linenos">1746</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<->"</span><span class="p">)</span> +</span><span id="Generator-1747"><a href="#Generator-1747"><span class="linenos">1747</span></a> +</span><span id="Generator-1748"><a href="#Generator-1748"><span class="linenos">1748</span></a> <span class="k">def</span> <span class="nf">dot_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">Dot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1749"><a href="#Generator-1749"><span class="linenos">1749</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1750"><a href="#Generator-1750"><span class="linenos">1750</span></a> +</span><span id="Generator-1751"><a href="#Generator-1751"><span class="linenos">1751</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1752"><a href="#Generator-1752"><span class="linenos">1752</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> +</span><span id="Generator-1753"><a href="#Generator-1753"><span class="linenos">1753</span></a> +</span><span id="Generator-1754"><a href="#Generator-1754"><span class="linenos">1754</span></a> <span class="k">def</span> <span class="nf">escape_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">Escape</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1755"><a href="#Generator-1755"><span class="linenos">1755</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ESCAPE"</span><span class="p">)</span> +</span><span id="Generator-1756"><a href="#Generator-1756"><span class="linenos">1756</span></a> +</span><span id="Generator-1757"><a href="#Generator-1757"><span class="linenos">1757</span></a> <span class="k">def</span> <span class="nf">glob_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">Glob</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1758"><a href="#Generator-1758"><span class="linenos">1758</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"GLOB"</span><span class="p">)</span> +</span><span id="Generator-1759"><a href="#Generator-1759"><span class="linenos">1759</span></a> +</span><span id="Generator-1760"><a href="#Generator-1760"><span class="linenos">1760</span></a> <span class="k">def</span> <span class="nf">gt_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">GT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1761"><a href="#Generator-1761"><span class="linenos">1761</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> +</span><span id="Generator-1762"><a href="#Generator-1762"><span class="linenos">1762</span></a> +</span><span id="Generator-1763"><a href="#Generator-1763"><span class="linenos">1763</span></a> <span class="k">def</span> <span class="nf">gte_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">GTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1764"><a href="#Generator-1764"><span class="linenos">1764</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">="</span><span class="p">)</span> +</span><span id="Generator-1765"><a href="#Generator-1765"><span class="linenos">1765</span></a> +</span><span id="Generator-1766"><a href="#Generator-1766"><span class="linenos">1766</span></a> <span class="k">def</span> <span class="nf">ilike_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">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1767"><a href="#Generator-1767"><span class="linenos">1767</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE"</span><span class="p">)</span> +</span><span id="Generator-1768"><a href="#Generator-1768"><span class="linenos">1768</span></a> +</span><span id="Generator-1769"><a href="#Generator-1769"><span class="linenos">1769</span></a> <span class="k">def</span> <span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1770"><a href="#Generator-1770"><span class="linenos">1770</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS"</span><span class="p">)</span> +</span><span id="Generator-1771"><a href="#Generator-1771"><span class="linenos">1771</span></a> +</span><span id="Generator-1772"><a href="#Generator-1772"><span class="linenos">1772</span></a> <span class="k">def</span> <span class="nf">like_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">Like</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1773"><a href="#Generator-1773"><span class="linenos">1773</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">)</span> +</span><span id="Generator-1774"><a href="#Generator-1774"><span class="linenos">1774</span></a> +</span><span id="Generator-1775"><a href="#Generator-1775"><span class="linenos">1775</span></a> <span class="k">def</span> <span class="nf">similarto_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">SimilarTo</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1776"><a href="#Generator-1776"><span class="linenos">1776</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"SIMILAR TO"</span><span class="p">)</span> +</span><span id="Generator-1777"><a href="#Generator-1777"><span class="linenos">1777</span></a> +</span><span id="Generator-1778"><a href="#Generator-1778"><span class="linenos">1778</span></a> <span class="k">def</span> <span class="nf">lt_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">LT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1779"><a href="#Generator-1779"><span class="linenos">1779</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<"</span><span class="p">)</span> +</span><span id="Generator-1780"><a href="#Generator-1780"><span class="linenos">1780</span></a> +</span><span id="Generator-1781"><a href="#Generator-1781"><span class="linenos">1781</span></a> <span class="k">def</span> <span class="nf">lte_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">LTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1782"><a href="#Generator-1782"><span class="linenos">1782</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<="</span><span class="p">)</span> +</span><span id="Generator-1783"><a href="#Generator-1783"><span class="linenos">1783</span></a> +</span><span id="Generator-1784"><a href="#Generator-1784"><span class="linenos">1784</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1785"><a href="#Generator-1785"><span class="linenos">1785</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"%"</span><span class="p">)</span> +</span><span id="Generator-1786"><a href="#Generator-1786"><span class="linenos">1786</span></a> +</span><span id="Generator-1787"><a href="#Generator-1787"><span class="linenos">1787</span></a> <span class="k">def</span> <span class="nf">mul_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">Mul</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1788"><a href="#Generator-1788"><span class="linenos">1788</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">)</span> +</span><span id="Generator-1789"><a href="#Generator-1789"><span class="linenos">1789</span></a> +</span><span id="Generator-1790"><a href="#Generator-1790"><span class="linenos">1790</span></a> <span class="k">def</span> <span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1791"><a href="#Generator-1791"><span class="linenos">1791</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<>"</span><span class="p">)</span> +</span><span id="Generator-1792"><a href="#Generator-1792"><span class="linenos">1792</span></a> +</span><span id="Generator-1793"><a href="#Generator-1793"><span class="linenos">1793</span></a> <span class="k">def</span> <span class="nf">nullsafeeq_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">NullSafeEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1794"><a href="#Generator-1794"><span class="linenos">1794</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS NOT DISTINCT FROM"</span><span class="p">)</span> +</span><span id="Generator-1795"><a href="#Generator-1795"><span class="linenos">1795</span></a> +</span><span id="Generator-1796"><a href="#Generator-1796"><span class="linenos">1796</span></a> <span class="k">def</span> <span class="nf">nullsafeneq_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">NullSafeNEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1797"><a href="#Generator-1797"><span class="linenos">1797</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS DISTINCT FROM"</span><span class="p">)</span> +</span><span id="Generator-1798"><a href="#Generator-1798"><span class="linenos">1798</span></a> +</span><span id="Generator-1799"><a href="#Generator-1799"><span class="linenos">1799</span></a> <span class="k">def</span> <span class="nf">or_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">Or</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1800"><a href="#Generator-1800"><span class="linenos">1800</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"OR"</span><span class="p">)</span> +</span><span id="Generator-1801"><a href="#Generator-1801"><span class="linenos">1801</span></a> +</span><span id="Generator-1802"><a href="#Generator-1802"><span class="linenos">1802</span></a> <span class="k">def</span> <span class="nf">slice_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">Slice</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1803"><a href="#Generator-1803"><span class="linenos">1803</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">":"</span><span class="p">)</span> +</span><span id="Generator-1804"><a href="#Generator-1804"><span class="linenos">1804</span></a> +</span><span id="Generator-1805"><a href="#Generator-1805"><span class="linenos">1805</span></a> <span class="k">def</span> <span class="nf">sub_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">Sub</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1806"><a href="#Generator-1806"><span class="linenos">1806</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> +</span><span id="Generator-1807"><a href="#Generator-1807"><span class="linenos">1807</span></a> +</span><span id="Generator-1808"><a href="#Generator-1808"><span class="linenos">1808</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1809"><a href="#Generator-1809"><span class="linenos">1809</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRY_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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1810"><a href="#Generator-1810"><span class="linenos">1810</span></a> +</span><span id="Generator-1811"><a href="#Generator-1811"><span class="linenos">1811</span></a> <span class="k">def</span> <span class="nf">use_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">Use</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1812"><a href="#Generator-1812"><span class="linenos">1812</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="Generator-1813"><a href="#Generator-1813"><span class="linenos">1813</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1814"><a href="#Generator-1814"><span class="linenos">1814</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1815"><a href="#Generator-1815"><span class="linenos">1815</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1816"><a href="#Generator-1816"><span class="linenos">1816</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"USE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1817"><a href="#Generator-1817"><span class="linenos">1817</span></a> +</span><span id="Generator-1818"><a href="#Generator-1818"><span class="linenos">1818</span></a> <span class="k">def</span> <span class="nf">binary</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">Binary</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1819"><a href="#Generator-1819"><span class="linenos">1819</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1820"><a href="#Generator-1820"><span class="linenos">1820</span></a> +</span><span id="Generator-1821"><a href="#Generator-1821"><span class="linenos">1821</span></a> <span class="k">def</span> <span class="nf">function_fallback_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">Func</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1822"><a href="#Generator-1822"><span class="linenos">1822</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator-1823"><a href="#Generator-1823"><span class="linenos">1823</span></a> <span class="k">for</span> <span class="n">arg_value</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> +</span><span id="Generator-1824"><a href="#Generator-1824"><span class="linenos">1824</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg_value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="Generator-1825"><a href="#Generator-1825"><span class="linenos">1825</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">arg_value</span><span class="p">:</span> +</span><span id="Generator-1826"><a href="#Generator-1826"><span class="linenos">1826</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="Generator-1827"><a href="#Generator-1827"><span class="linenos">1827</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1828"><a href="#Generator-1828"><span class="linenos">1828</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arg_value</span><span class="p">)</span> +</span><span id="Generator-1829"><a href="#Generator-1829"><span class="linenos">1829</span></a> +</span><span id="Generator-1830"><a href="#Generator-1830"><span class="linenos">1830</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="n">expression</span><span class="o">.</span><span class="n">sql_name</span><span class="p">(),</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> +</span><span id="Generator-1831"><a href="#Generator-1831"><span class="linenos">1831</span></a> +</span><span id="Generator-1832"><a href="#Generator-1832"><span class="linenos">1832</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1833"><a href="#Generator-1833"><span class="linenos">1833</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="n">name</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_args</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1834"><a href="#Generator-1834"><span class="linenos">1834</span></a> +</span><span id="Generator-1835"><a href="#Generator-1835"><span class="linenos">1835</span></a> <span class="k">def</span> <span class="nf">format_args</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1836"><a href="#Generator-1836"><span class="linenos">1836</span></a> <span class="n">arg_sqls</span> <span class="o">=</span> <span class="nb">tuple</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">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span> <span class="k">if</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Generator-1837"><a href="#Generator-1837"><span class="linenos">1837</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> +</span><span id="Generator-1838"><a href="#Generator-1838"><span class="linenos">1838</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="sa">f</span><span class="s2">",</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1839"><a href="#Generator-1839"><span class="linenos">1839</span></a> <span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> +</span><span id="Generator-1840"><a href="#Generator-1840"><span class="linenos">1840</span></a> +</span><span id="Generator-1841"><a href="#Generator-1841"><span class="linenos">1841</span></a> <span class="k">def</span> <span class="nf">text_width</span><span class="p">(</span><span class="bp">self</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">Iterable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="Generator-1842"><a href="#Generator-1842"><span class="linenos">1842</span></a> <span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Generator-1843"><a href="#Generator-1843"><span class="linenos">1843</span></a> +</span><span id="Generator-1844"><a href="#Generator-1844"><span class="linenos">1844</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> +</span><span id="Generator-1845"><a href="#Generator-1845"><span class="linenos">1845</span></a> <span class="k">return</span> <span class="n">format_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span><span class="p">)</span> +</span><span id="Generator-1846"><a href="#Generator-1846"><span class="linenos">1846</span></a> +</span><span id="Generator-1847"><a href="#Generator-1847"><span class="linenos">1847</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span> +</span><span id="Generator-1848"><a href="#Generator-1848"><span class="linenos">1848</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator-1849"><a href="#Generator-1849"><span class="linenos">1849</span></a> <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><span id="Generator-1850"><a href="#Generator-1850"><span class="linenos">1850</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Generator-1851"><a href="#Generator-1851"><span class="linenos">1851</span></a> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Generator-1852"><a href="#Generator-1852"><span class="linenos">1852</span></a> <span class="n">indent</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Generator-1853"><a href="#Generator-1853"><span class="linenos">1853</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> +</span><span id="Generator-1854"><a href="#Generator-1854"><span class="linenos">1854</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator-1855"><a href="#Generator-1855"><span class="linenos">1855</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1856"><a href="#Generator-1856"><span class="linenos">1856</span></a> <span class="n">expressions</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="n">key</span> <span class="ow">or</span> <span class="s2">"expressions"</span><span class="p">)</span> +</span><span id="Generator-1857"><a href="#Generator-1857"><span class="linenos">1857</span></a> +</span><span id="Generator-1858"><a href="#Generator-1858"><span class="linenos">1858</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Generator-1859"><a href="#Generator-1859"><span class="linenos">1859</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Generator-1860"><a href="#Generator-1860"><span class="linenos">1860</span></a> +</span><span id="Generator-1861"><a href="#Generator-1861"><span class="linenos">1861</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> +</span><span id="Generator-1862"><a href="#Generator-1862"><span class="linenos">1862</span></a> <span class="k">return</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="Generator-1863"><a href="#Generator-1863"><span class="linenos">1863</span></a> +</span><span id="Generator-1864"><a href="#Generator-1864"><span class="linenos">1864</span></a> <span class="n">num_sqls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Generator-1865"><a href="#Generator-1865"><span class="linenos">1865</span></a> +</span><span id="Generator-1866"><a href="#Generator-1866"><span class="linenos">1866</span></a> <span class="c1"># These are calculated once in case we have the leading_comma / pretty option set, correspondingly</span> +</span><span id="Generator-1867"><a href="#Generator-1867"><span class="linenos">1867</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> +</span><span id="Generator-1868"><a href="#Generator-1868"><span class="linenos">1868</span></a> <span class="n">stripped_sep</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="Generator-1869"><a href="#Generator-1869"><span class="linenos">1869</span></a> +</span><span id="Generator-1870"><a href="#Generator-1870"><span class="linenos">1870</span></a> <span class="n">result_sqls</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator-1871"><a href="#Generator-1871"><span class="linenos">1871</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> +</span><span id="Generator-1872"><a href="#Generator-1872"><span class="linenos">1872</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator-1873"><a href="#Generator-1873"><span class="linenos">1873</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> <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">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator-1874"><a href="#Generator-1874"><span class="linenos">1874</span></a> +</span><span id="Generator-1875"><a href="#Generator-1875"><span class="linenos">1875</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator-1876"><a href="#Generator-1876"><span class="linenos">1876</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span><span class="p">:</span> +</span><span id="Generator-1877"><a href="#Generator-1877"><span class="linenos">1877</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="n">pad</span><span class="si">}{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-1878"><a href="#Generator-1878"><span class="linenos">1878</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1879"><a href="#Generator-1879"><span class="linenos">1879</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Generator-1880"><a href="#Generator-1880"><span class="linenos">1880</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">stripped_sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1881"><a href="#Generator-1881"><span class="linenos">1881</span></a> <span class="p">)</span> +</span><span id="Generator-1882"><a href="#Generator-1882"><span class="linenos">1882</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1883"><a href="#Generator-1883"><span class="linenos">1883</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-1884"><a href="#Generator-1884"><span class="linenos">1884</span></a> +</span><span id="Generator-1885"><a href="#Generator-1885"><span class="linenos">1885</span></a> <span class="n">result_sql</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> +</span><span id="Generator-1886"><a href="#Generator-1886"><span class="linenos">1886</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">result_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">if</span> <span class="n">indent</span> <span class="k">else</span> <span class="n">result_sql</span> +</span><span id="Generator-1887"><a href="#Generator-1887"><span class="linenos">1887</span></a> +</span><span id="Generator-1888"><a href="#Generator-1888"><span class="linenos">1888</span></a> <span class="k">def</span> <span class="nf">op_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</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">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1889"><a href="#Generator-1889"><span class="linenos">1889</span></a> <span class="n">flat</span> <span class="o">=</span> <span class="n">flat</span> <span class="ow">or</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">Properties</span><span class="p">)</span> +</span><span id="Generator-1890"><a href="#Generator-1890"><span class="linenos">1890</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">flat</span><span class="p">)</span> +</span><span id="Generator-1891"><a href="#Generator-1891"><span class="linenos">1891</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> +</span><span id="Generator-1892"><a href="#Generator-1892"><span class="linenos">1892</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1893"><a href="#Generator-1893"><span class="linenos">1893</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expressions_sql</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1894"><a href="#Generator-1894"><span class="linenos">1894</span></a> +</span><span id="Generator-1895"><a href="#Generator-1895"><span class="linenos">1895</span></a> <span class="k">def</span> <span class="nf">naked_property</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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1896"><a href="#Generator-1896"><span class="linenos">1896</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> +</span><span id="Generator-1897"><a href="#Generator-1897"><span class="linenos">1897</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> +</span><span id="Generator-1898"><a href="#Generator-1898"><span class="linenos">1898</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator-1899"><a href="#Generator-1899"><span class="linenos">1899</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1900"><a href="#Generator-1900"><span class="linenos">1900</span></a> +</span><span id="Generator-1901"><a href="#Generator-1901"><span class="linenos">1901</span></a> <span class="k">def</span> <span class="nf">set_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1902"><a href="#Generator-1902"><span class="linenos">1902</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1903"><a href="#Generator-1903"><span class="linenos">1903</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span> +</span><span id="Generator-1904"><a href="#Generator-1904"><span class="linenos">1904</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> +</span><span id="Generator-1905"><a href="#Generator-1905"><span class="linenos">1905</span></a> <span class="n">expression</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1906"><a href="#Generator-1906"><span class="linenos">1906</span></a> <span class="p">)</span> +</span><span id="Generator-1907"><a href="#Generator-1907"><span class="linenos">1907</span></a> +</span><span id="Generator-1908"><a href="#Generator-1908"><span class="linenos">1908</span></a> <span class="k">def</span> <span class="nf">tag_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">Tag</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1909"><a href="#Generator-1909"><span class="linenos">1909</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</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="s1">'prefix'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}{</span><span class="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="s1">'postfix'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1910"><a href="#Generator-1910"><span class="linenos">1910</span></a> +</span><span id="Generator-1911"><a href="#Generator-1911"><span class="linenos">1911</span></a> <span class="k">def</span> <span class="nf">token_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1912"><a href="#Generator-1912"><span class="linenos">1912</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">TOKEN_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">token_type</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Generator-1913"><a href="#Generator-1913"><span class="linenos">1913</span></a> +</span><span id="Generator-1914"><a href="#Generator-1914"><span class="linenos">1914</span></a> <span class="k">def</span> <span class="nf">userdefinedfunction_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">UserDefinedFunction</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1915"><a href="#Generator-1915"><span class="linenos">1915</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1916"><a href="#Generator-1916"><span class="linenos">1916</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="Generator-1917"><a href="#Generator-1917"><span class="linenos">1917</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator-1918"><a href="#Generator-1918"><span class="linenos">1918</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1919"><a href="#Generator-1919"><span class="linenos">1919</span></a> <span class="p">)</span> +</span><span id="Generator-1920"><a href="#Generator-1920"><span class="linenos">1920</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1921"><a href="#Generator-1921"><span class="linenos">1921</span></a> +</span><span id="Generator-1922"><a href="#Generator-1922"><span class="linenos">1922</span></a> <span class="k">def</span> <span class="nf">joinhint_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">JoinHint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1923"><a href="#Generator-1923"><span class="linenos">1923</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1924"><a href="#Generator-1924"><span class="linenos">1924</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator-1925"><a href="#Generator-1925"><span class="linenos">1925</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator-1926"><a href="#Generator-1926"><span class="linenos">1926</span></a> +</span><span id="Generator-1927"><a href="#Generator-1927"><span class="linenos">1927</span></a> <span class="k">def</span> <span class="nf">kwarg_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">Kwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1928"><a href="#Generator-1928"><span class="linenos">1928</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> +</span><span id="Generator-1929"><a href="#Generator-1929"><span class="linenos">1929</span></a> +</span><span id="Generator-1930"><a href="#Generator-1930"><span class="linenos">1930</span></a> <span class="k">def</span> <span class="nf">when_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">When</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1931"><a href="#Generator-1931"><span class="linenos">1931</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1932"><a href="#Generator-1932"><span class="linenos">1932</span></a> <span class="n">then_expression</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">"then"</span><span class="p">)</span> +</span><span id="Generator-1933"><a href="#Generator-1933"><span class="linenos">1933</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">):</span> +</span><span id="Generator-1934"><a href="#Generator-1934"><span class="linenos">1934</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1935"><a href="#Generator-1935"><span class="linenos">1935</span></a> <span class="k">if</span> <span class="s2">"expression"</span> <span class="ow">in</span> <span class="n">then_expression</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> +</span><span id="Generator-1936"><a href="#Generator-1936"><span class="linenos">1936</span></a> <span class="n">then</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" VALUES </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1937"><a href="#Generator-1937"><span class="linenos">1937</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> +</span><span id="Generator-1938"><a href="#Generator-1938"><span class="linenos">1938</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_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">"expressions"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> +</span><span id="Generator-1939"><a href="#Generator-1939"><span class="linenos">1939</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expressions'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1940"><a href="#Generator-1940"><span class="linenos">1940</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1941"><a href="#Generator-1941"><span class="linenos">1941</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE SET </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1942"><a href="#Generator-1942"><span class="linenos">1942</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator-1943"><a href="#Generator-1943"><span class="linenos">1943</span></a> <span class="n">then</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">then_expression</span><span class="p">)</span> +</span><span id="Generator-1944"><a href="#Generator-1944"><span class="linenos">1944</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WHEN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> THEN </span><span class="si">{</span><span class="n">then</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1945"><a href="#Generator-1945"><span class="linenos">1945</span></a> +</span><span id="Generator-1946"><a href="#Generator-1946"><span class="linenos">1946</span></a> <span class="k">def</span> <span class="nf">merge_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">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator-1947"><a href="#Generator-1947"><span class="linenos">1947</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">"this"</span><span class="p">)</span> +</span><span id="Generator-1948"><a href="#Generator-1948"><span class="linenos">1948</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"USING </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">'using'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1949"><a href="#Generator-1949"><span class="linenos">1949</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ON </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">'on'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator-1950"><a href="#Generator-1950"><span class="linenos">1950</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGE INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">on</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">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">' '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -4632,60 +4640,60 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.__init__-200"><a href="#Generator.__init__-200"><span class="linenos">200</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Generator.__init__-201"><a href="#Generator.__init__-201"><span class="linenos">201</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator.__init__-202"><a href="#Generator.__init__-202"><span class="linenos">202</span></a> <span class="n">time_mapping</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-203"><a href="#Generator.__init__-203"><span class="linenos">203</span></a> <span class="n">time_trie</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-204"><a href="#Generator.__init__-204"><span class="linenos">204</span></a> <span class="n">pretty</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-205"><a href="#Generator.__init__-205"><span class="linenos">205</span></a> <span class="n">quote_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-206"><a href="#Generator.__init__-206"><span class="linenos">206</span></a> <span class="n">quote_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-207"><a href="#Generator.__init__-207"><span class="linenos">207</span></a> <span class="n">identifier_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-208"><a href="#Generator.__init__-208"><span class="linenos">208</span></a> <span class="n">identifier_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-209"><a href="#Generator.__init__-209"><span class="linenos">209</span></a> <span class="n">identify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.__init__-210"><a href="#Generator.__init__-210"><span class="linenos">210</span></a> <span class="n">normalize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.__init__-211"><a href="#Generator.__init__-211"><span class="linenos">211</span></a> <span class="n">string_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-212"><a href="#Generator.__init__-212"><span class="linenos">212</span></a> <span class="n">identifier_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-213"><a href="#Generator.__init__-213"><span class="linenos">213</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> -</span><span id="Generator.__init__-214"><a href="#Generator.__init__-214"><span class="linenos">214</span></a> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> -</span><span id="Generator.__init__-215"><a href="#Generator.__init__-215"><span class="linenos">215</span></a> <span class="n">index_offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> -</span><span id="Generator.__init__-216"><a href="#Generator.__init__-216"><span class="linenos">216</span></a> <span class="n">unnest_column_only</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.__init__-217"><a href="#Generator.__init__-217"><span class="linenos">217</span></a> <span class="n">alias_post_tablesample</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.__init__-218"><a href="#Generator.__init__-218"><span class="linenos">218</span></a> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"upper"</span><span class="p">,</span> -</span><span id="Generator.__init__-219"><a href="#Generator.__init__-219"><span class="linenos">219</span></a> <span class="n">unsupported_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">,</span> -</span><span id="Generator.__init__-220"><a href="#Generator.__init__-220"><span class="linenos">220</span></a> <span class="n">null_ordering</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.__init__-221"><a href="#Generator.__init__-221"><span class="linenos">221</span></a> <span class="n">max_unsupported</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> -</span><span id="Generator.__init__-222"><a href="#Generator.__init__-222"><span class="linenos">222</span></a> <span class="n">leading_comma</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.__init__-223"><a href="#Generator.__init__-223"><span class="linenos">223</span></a> <span class="n">max_text_width</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> -</span><span id="Generator.__init__-224"><a href="#Generator.__init__-224"><span class="linenos">224</span></a> <span class="n">comments</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Generator.__init__-225"><a href="#Generator.__init__-225"><span class="linenos">225</span></a> <span class="p">):</span> -</span><span id="Generator.__init__-226"><a href="#Generator.__init__-226"><span class="linenos">226</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> -</span><span id="Generator.__init__-227"><a href="#Generator.__init__-227"><span class="linenos">227</span></a> -</span><span id="Generator.__init__-228"><a href="#Generator.__init__-228"><span class="linenos">228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span> <span class="o">=</span> <span class="n">time_mapping</span> <span class="ow">or</span> <span class="p">{}</span> -</span><span id="Generator.__init__-229"><a href="#Generator.__init__-229"><span class="linenos">229</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span> <span class="o">=</span> <span class="n">time_trie</span> -</span><span id="Generator.__init__-230"><a href="#Generator.__init__-230"><span class="linenos">230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="n">pretty</span> <span class="k">if</span> <span class="n">pretty</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">pretty</span> -</span><span id="Generator.__init__-231"><a href="#Generator.__init__-231"><span class="linenos">231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span> <span class="o">=</span> <span class="n">quote_start</span> <span class="ow">or</span> <span class="s2">"'"</span> -</span><span id="Generator.__init__-232"><a href="#Generator.__init__-232"><span class="linenos">232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> <span class="o">=</span> <span class="n">quote_end</span> <span class="ow">or</span> <span class="s2">"'"</span> -</span><span id="Generator.__init__-233"><a href="#Generator.__init__-233"><span class="linenos">233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span> <span class="o">=</span> <span class="n">identifier_start</span> <span class="ow">or</span> <span class="s1">'"'</span> -</span><span id="Generator.__init__-234"><a href="#Generator.__init__-234"><span class="linenos">234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">or</span> <span class="s1">'"'</span> -</span><span id="Generator.__init__-235"><a href="#Generator.__init__-235"><span class="linenos">235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">identify</span> -</span><span id="Generator.__init__-236"><a href="#Generator.__init__-236"><span class="linenos">236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="o">=</span> <span class="n">normalize</span> -</span><span id="Generator.__init__-237"><a href="#Generator.__init__-237"><span class="linenos">237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">=</span> <span class="n">string_escape</span> <span class="ow">or</span> <span class="s2">"'"</span> -</span><span id="Generator.__init__-238"><a href="#Generator.__init__-238"><span class="linenos">238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">=</span> <span class="n">identifier_escape</span> <span class="ow">or</span> <span class="s1">'"'</span> -</span><span id="Generator.__init__-239"><a href="#Generator.__init__-239"><span class="linenos">239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="o">=</span> <span class="n">pad</span> -</span><span id="Generator.__init__-240"><a href="#Generator.__init__-240"><span class="linenos">240</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> -</span><span id="Generator.__init__-241"><a href="#Generator.__init__-241"><span class="linenos">241</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> -</span><span id="Generator.__init__-242"><a href="#Generator.__init__-242"><span class="linenos">242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> -</span><span id="Generator.__init__-243"><a href="#Generator.__init__-243"><span class="linenos">243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">=</span> <span class="n">normalize_functions</span> -</span><span id="Generator.__init__-244"><a href="#Generator.__init__-244"><span class="linenos">244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">=</span> <span class="n">unsupported_level</span> -</span><span id="Generator.__init__-245"><a href="#Generator.__init__-245"><span class="linenos">245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator.__init__-246"><a href="#Generator.__init__-246"><span class="linenos">246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span> <span class="o">=</span> <span class="n">max_unsupported</span> -</span><span id="Generator.__init__-247"><a href="#Generator.__init__-247"><span class="linenos">247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> -</span><span id="Generator.__init__-248"><a href="#Generator.__init__-248"><span class="linenos">248</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_indent</span> <span class="o">=</span> <span class="n">indent</span> -</span><span id="Generator.__init__-249"><a href="#Generator.__init__-249"><span class="linenos">249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> -</span><span id="Generator.__init__-250"><a href="#Generator.__init__-250"><span class="linenos">250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> -</span><span id="Generator.__init__-251"><a href="#Generator.__init__-251"><span class="linenos">251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span> <span class="o">=</span> <span class="n">leading_comma</span> -</span><span id="Generator.__init__-252"><a href="#Generator.__init__-252"><span class="linenos">252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="o">=</span> <span class="n">max_text_width</span> -</span><span id="Generator.__init__-253"><a href="#Generator.__init__-253"><span class="linenos">253</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="n">comments</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.__init__-214"><a href="#Generator.__init__-214"><span class="linenos">214</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Generator.__init__-215"><a href="#Generator.__init__-215"><span class="linenos">215</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator.__init__-216"><a href="#Generator.__init__-216"><span class="linenos">216</span></a> <span class="n">time_mapping</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-217"><a href="#Generator.__init__-217"><span class="linenos">217</span></a> <span class="n">time_trie</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-218"><a href="#Generator.__init__-218"><span class="linenos">218</span></a> <span class="n">pretty</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-219"><a href="#Generator.__init__-219"><span class="linenos">219</span></a> <span class="n">quote_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-220"><a href="#Generator.__init__-220"><span class="linenos">220</span></a> <span class="n">quote_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-221"><a href="#Generator.__init__-221"><span class="linenos">221</span></a> <span class="n">identifier_start</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-222"><a href="#Generator.__init__-222"><span class="linenos">222</span></a> <span class="n">identifier_end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-223"><a href="#Generator.__init__-223"><span class="linenos">223</span></a> <span class="n">identify</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.__init__-224"><a href="#Generator.__init__-224"><span class="linenos">224</span></a> <span class="n">normalize</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.__init__-225"><a href="#Generator.__init__-225"><span class="linenos">225</span></a> <span class="n">string_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-226"><a href="#Generator.__init__-226"><span class="linenos">226</span></a> <span class="n">identifier_escape</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-227"><a href="#Generator.__init__-227"><span class="linenos">227</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> +</span><span id="Generator.__init__-228"><a href="#Generator.__init__-228"><span class="linenos">228</span></a> <span class="n">indent</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> +</span><span id="Generator.__init__-229"><a href="#Generator.__init__-229"><span class="linenos">229</span></a> <span class="n">index_offset</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> +</span><span id="Generator.__init__-230"><a href="#Generator.__init__-230"><span class="linenos">230</span></a> <span class="n">unnest_column_only</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.__init__-231"><a href="#Generator.__init__-231"><span class="linenos">231</span></a> <span class="n">alias_post_tablesample</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.__init__-232"><a href="#Generator.__init__-232"><span class="linenos">232</span></a> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"upper"</span><span class="p">,</span> +</span><span id="Generator.__init__-233"><a href="#Generator.__init__-233"><span class="linenos">233</span></a> <span class="n">unsupported_level</span><span class="o">=</span><span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">,</span> +</span><span id="Generator.__init__-234"><a href="#Generator.__init__-234"><span class="linenos">234</span></a> <span class="n">null_ordering</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.__init__-235"><a href="#Generator.__init__-235"><span class="linenos">235</span></a> <span class="n">max_unsupported</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span> +</span><span id="Generator.__init__-236"><a href="#Generator.__init__-236"><span class="linenos">236</span></a> <span class="n">leading_comma</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.__init__-237"><a href="#Generator.__init__-237"><span class="linenos">237</span></a> <span class="n">max_text_width</span><span class="o">=</span><span class="mi">80</span><span class="p">,</span> +</span><span id="Generator.__init__-238"><a href="#Generator.__init__-238"><span class="linenos">238</span></a> <span class="n">comments</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Generator.__init__-239"><a href="#Generator.__init__-239"><span class="linenos">239</span></a> <span class="p">):</span> +</span><span id="Generator.__init__-240"><a href="#Generator.__init__-240"><span class="linenos">240</span></a> <span class="kn">import</span> <span class="nn">sqlglot</span> +</span><span id="Generator.__init__-241"><a href="#Generator.__init__-241"><span class="linenos">241</span></a> +</span><span id="Generator.__init__-242"><a href="#Generator.__init__-242"><span class="linenos">242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span> <span class="o">=</span> <span class="n">time_mapping</span> <span class="ow">or</span> <span class="p">{}</span> +</span><span id="Generator.__init__-243"><a href="#Generator.__init__-243"><span class="linenos">243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span> <span class="o">=</span> <span class="n">time_trie</span> +</span><span id="Generator.__init__-244"><a href="#Generator.__init__-244"><span class="linenos">244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="o">=</span> <span class="n">pretty</span> <span class="k">if</span> <span class="n">pretty</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">pretty</span> +</span><span id="Generator.__init__-245"><a href="#Generator.__init__-245"><span class="linenos">245</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span> <span class="o">=</span> <span class="n">quote_start</span> <span class="ow">or</span> <span class="s2">"'"</span> +</span><span id="Generator.__init__-246"><a href="#Generator.__init__-246"><span class="linenos">246</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> <span class="o">=</span> <span class="n">quote_end</span> <span class="ow">or</span> <span class="s2">"'"</span> +</span><span id="Generator.__init__-247"><a href="#Generator.__init__-247"><span class="linenos">247</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span> <span class="o">=</span> <span class="n">identifier_start</span> <span class="ow">or</span> <span class="s1">'"'</span> +</span><span id="Generator.__init__-248"><a href="#Generator.__init__-248"><span class="linenos">248</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">or</span> <span class="s1">'"'</span> +</span><span id="Generator.__init__-249"><a href="#Generator.__init__-249"><span class="linenos">249</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">identify</span> +</span><span id="Generator.__init__-250"><a href="#Generator.__init__-250"><span class="linenos">250</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="o">=</span> <span class="n">normalize</span> +</span><span id="Generator.__init__-251"><a href="#Generator.__init__-251"><span class="linenos">251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">=</span> <span class="n">string_escape</span> <span class="ow">or</span> <span class="s2">"'"</span> +</span><span id="Generator.__init__-252"><a href="#Generator.__init__-252"><span class="linenos">252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">=</span> <span class="n">identifier_escape</span> <span class="ow">or</span> <span class="s1">'"'</span> +</span><span id="Generator.__init__-253"><a href="#Generator.__init__-253"><span class="linenos">253</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="o">=</span> <span class="n">pad</span> +</span><span id="Generator.__init__-254"><a href="#Generator.__init__-254"><span class="linenos">254</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> +</span><span id="Generator.__init__-255"><a href="#Generator.__init__-255"><span class="linenos">255</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> +</span><span id="Generator.__init__-256"><a href="#Generator.__init__-256"><span class="linenos">256</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> +</span><span id="Generator.__init__-257"><a href="#Generator.__init__-257"><span class="linenos">257</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">=</span> <span class="n">normalize_functions</span> +</span><span id="Generator.__init__-258"><a href="#Generator.__init__-258"><span class="linenos">258</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">=</span> <span class="n">unsupported_level</span> +</span><span id="Generator.__init__-259"><a href="#Generator.__init__-259"><span class="linenos">259</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator.__init__-260"><a href="#Generator.__init__-260"><span class="linenos">260</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span> <span class="o">=</span> <span class="n">max_unsupported</span> +</span><span id="Generator.__init__-261"><a href="#Generator.__init__-261"><span class="linenos">261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> +</span><span id="Generator.__init__-262"><a href="#Generator.__init__-262"><span class="linenos">262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_indent</span> <span class="o">=</span> <span class="n">indent</span> +</span><span id="Generator.__init__-263"><a href="#Generator.__init__-263"><span class="linenos">263</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">string_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span> +</span><span id="Generator.__init__-264"><a href="#Generator.__init__-264"><span class="linenos">264</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_escape</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span> +</span><span id="Generator.__init__-265"><a href="#Generator.__init__-265"><span class="linenos">265</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span> <span class="o">=</span> <span class="n">leading_comma</span> +</span><span id="Generator.__init__-266"><a href="#Generator.__init__-266"><span class="linenos">266</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="o">=</span> <span class="n">max_text_width</span> +</span><span id="Generator.__init__-267"><a href="#Generator.__init__-267"><span class="linenos">267</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="n">comments</span> </span></pre></div> @@ -4703,31 +4711,31 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.generate"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.generate-255"><a href="#Generator.generate-255"><span class="linenos">255</span></a> <span class="k">def</span> <span class="nf">generate</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.generate-256"><a href="#Generator.generate-256"><span class="linenos">256</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Generator.generate-257"><a href="#Generator.generate-257"><span class="linenos">257</span></a><span class="sd"> Generates a SQL string by interpreting the given syntax tree.</span> -</span><span id="Generator.generate-258"><a href="#Generator.generate-258"><span class="linenos">258</span></a> -</span><span id="Generator.generate-259"><a href="#Generator.generate-259"><span class="linenos">259</span></a><span class="sd"> Args</span> -</span><span id="Generator.generate-260"><a href="#Generator.generate-260"><span class="linenos">260</span></a><span class="sd"> expression: the syntax tree.</span> -</span><span id="Generator.generate-261"><a href="#Generator.generate-261"><span class="linenos">261</span></a> -</span><span id="Generator.generate-262"><a href="#Generator.generate-262"><span class="linenos">262</span></a><span class="sd"> Returns</span> -</span><span id="Generator.generate-263"><a href="#Generator.generate-263"><span class="linenos">263</span></a><span class="sd"> the SQL string.</span> -</span><span id="Generator.generate-264"><a href="#Generator.generate-264"><span class="linenos">264</span></a><span class="sd"> """</span> -</span><span id="Generator.generate-265"><a href="#Generator.generate-265"><span class="linenos">265</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator.generate-266"><a href="#Generator.generate-266"><span class="linenos">266</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="Generator.generate-267"><a href="#Generator.generate-267"><span class="linenos">267</span></a> -</span><span id="Generator.generate-268"><a href="#Generator.generate-268"><span class="linenos">268</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> -</span><span id="Generator.generate-269"><a href="#Generator.generate-269"><span class="linenos">269</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="Generator.generate-270"><a href="#Generator.generate-270"><span class="linenos">270</span></a> -</span><span id="Generator.generate-271"><a href="#Generator.generate-271"><span class="linenos">271</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> -</span><span id="Generator.generate-272"><a href="#Generator.generate-272"><span class="linenos">272</span></a> <span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> -</span><span id="Generator.generate-273"><a href="#Generator.generate-273"><span class="linenos">273</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> -</span><span id="Generator.generate-274"><a href="#Generator.generate-274"><span class="linenos">274</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> -</span><span id="Generator.generate-275"><a href="#Generator.generate-275"><span class="linenos">275</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span><span class="p">))</span> -</span><span id="Generator.generate-276"><a href="#Generator.generate-276"><span class="linenos">276</span></a> -</span><span id="Generator.generate-277"><a href="#Generator.generate-277"><span class="linenos">277</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator.generate-278"><a href="#Generator.generate-278"><span class="linenos">278</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.generate-279"><a href="#Generator.generate-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="n">sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.generate-269"><a href="#Generator.generate-269"><span class="linenos">269</span></a> <span class="k">def</span> <span class="nf">generate</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.generate-270"><a href="#Generator.generate-270"><span class="linenos">270</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Generator.generate-271"><a href="#Generator.generate-271"><span class="linenos">271</span></a><span class="sd"> Generates a SQL string by interpreting the given syntax tree.</span> +</span><span id="Generator.generate-272"><a href="#Generator.generate-272"><span class="linenos">272</span></a> +</span><span id="Generator.generate-273"><a href="#Generator.generate-273"><span class="linenos">273</span></a><span class="sd"> Args</span> +</span><span id="Generator.generate-274"><a href="#Generator.generate-274"><span class="linenos">274</span></a><span class="sd"> expression: the syntax tree.</span> +</span><span id="Generator.generate-275"><a href="#Generator.generate-275"><span class="linenos">275</span></a> +</span><span id="Generator.generate-276"><a href="#Generator.generate-276"><span class="linenos">276</span></a><span class="sd"> Returns</span> +</span><span id="Generator.generate-277"><a href="#Generator.generate-277"><span class="linenos">277</span></a><span class="sd"> the SQL string.</span> +</span><span id="Generator.generate-278"><a href="#Generator.generate-278"><span class="linenos">278</span></a><span class="sd"> """</span> +</span><span id="Generator.generate-279"><a href="#Generator.generate-279"><span class="linenos">279</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator.generate-280"><a href="#Generator.generate-280"><span class="linenos">280</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="Generator.generate-281"><a href="#Generator.generate-281"><span class="linenos">281</span></a> +</span><span id="Generator.generate-282"><a href="#Generator.generate-282"><span class="linenos">282</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> +</span><span id="Generator.generate-283"><a href="#Generator.generate-283"><span class="linenos">283</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator.generate-284"><a href="#Generator.generate-284"><span class="linenos">284</span></a> +</span><span id="Generator.generate-285"><a href="#Generator.generate-285"><span class="linenos">285</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> +</span><span id="Generator.generate-286"><a href="#Generator.generate-286"><span class="linenos">286</span></a> <span class="k">for</span> <span class="n">msg</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> +</span><span id="Generator.generate-287"><a href="#Generator.generate-287"><span class="linenos">287</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span> +</span><span id="Generator.generate-288"><a href="#Generator.generate-288"><span class="linenos">288</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">:</span> +</span><span id="Generator.generate-289"><a href="#Generator.generate-289"><span class="linenos">289</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_unsupported</span><span class="p">))</span> +</span><span id="Generator.generate-290"><a href="#Generator.generate-290"><span class="linenos">290</span></a> +</span><span id="Generator.generate-291"><a href="#Generator.generate-291"><span class="linenos">291</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator.generate-292"><a href="#Generator.generate-292"><span class="linenos">292</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">,</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.generate-293"><a href="#Generator.generate-293"><span class="linenos">293</span></a> <span class="k">return</span> <span class="n">sql</span> </span></pre></div> @@ -4753,10 +4761,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.unsupported"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.unsupported-281"><a href="#Generator.unsupported-281"><span class="linenos">281</span></a> <span class="k">def</span> <span class="nf">unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.unsupported-282"><a href="#Generator.unsupported-282"><span class="linenos">282</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> -</span><span id="Generator.unsupported-283"><a href="#Generator.unsupported-283"><span class="linenos">283</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> -</span><span id="Generator.unsupported-284"><a href="#Generator.unsupported-284"><span class="linenos">284</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.unsupported-295"><a href="#Generator.unsupported-295"><span class="linenos">295</span></a> <span class="k">def</span> <span class="nf">unsupported</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.unsupported-296"><a href="#Generator.unsupported-296"><span class="linenos">296</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> +</span><span id="Generator.unsupported-297"><a href="#Generator.unsupported-297"><span class="linenos">297</span></a> <span class="k">raise</span> <span class="n">UnsupportedError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> +</span><span id="Generator.unsupported-298"><a href="#Generator.unsupported-298"><span class="linenos">298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported_messages</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">message</span><span class="p">)</span> </span></pre></div> @@ -4774,8 +4782,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.sep"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sep-286"><a href="#Generator.sep-286"><span class="linenos">286</span></a> <span class="k">def</span> <span class="nf">sep</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.sep-287"><a href="#Generator.sep-287"><span class="linenos">287</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="n">sep</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sep-300"><a href="#Generator.sep-300"><span class="linenos">300</span></a> <span class="k">def</span> <span class="nf">sep</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.sep-301"><a href="#Generator.sep-301"><span class="linenos">301</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="n">sep</span> </span></pre></div> @@ -4793,8 +4801,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.seg"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.seg-289"><a href="#Generator.seg-289"><span class="linenos">289</span></a> <span class="k">def</span> <span class="nf">seg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.seg-290"><a href="#Generator.seg-290"><span class="linenos">290</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.seg-303"><a href="#Generator.seg-303"><span class="linenos">303</span></a> <span class="k">def</span> <span class="nf">seg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.seg-304"><a href="#Generator.seg-304"><span class="linenos">304</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="n">sep</span><span class="p">)</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -4812,10 +4820,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.pad_comment"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.pad_comment-292"><a href="#Generator.pad_comment-292"><span class="linenos">292</span></a> <span class="k">def</span> <span class="nf">pad_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.pad_comment-293"><a href="#Generator.pad_comment-293"><span class="linenos">293</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">comment</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> -</span><span id="Generator.pad_comment-294"><a href="#Generator.pad_comment-294"><span class="linenos">294</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="n">comment</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> -</span><span id="Generator.pad_comment-295"><a href="#Generator.pad_comment-295"><span class="linenos">295</span></a> <span class="k">return</span> <span class="n">comment</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.pad_comment-306"><a href="#Generator.pad_comment-306"><span class="linenos">306</span></a> <span class="k">def</span> <span class="nf">pad_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.pad_comment-307"><a href="#Generator.pad_comment-307"><span class="linenos">307</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="n">comment</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> +</span><span id="Generator.pad_comment-308"><a href="#Generator.pad_comment-308"><span class="linenos">308</span></a> <span class="n">comment</span> <span class="o">=</span> <span class="n">comment</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">comment</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">else</span> <span class="n">comment</span> +</span><span id="Generator.pad_comment-309"><a href="#Generator.pad_comment-309"><span class="linenos">309</span></a> <span class="k">return</span> <span class="n">comment</span> </span></pre></div> @@ -4833,24 +4841,24 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.maybe_comment"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.maybe_comment-297"><a href="#Generator.maybe_comment-297"><span class="linenos">297</span></a> <span class="k">def</span> <span class="nf">maybe_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.maybe_comment-298"><a href="#Generator.maybe_comment-298"><span class="linenos">298</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Generator.maybe_comment-299"><a href="#Generator.maybe_comment-299"><span class="linenos">299</span></a> -</span><span id="Generator.maybe_comment-300"><a href="#Generator.maybe_comment-300"><span class="linenos">300</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments</span><span class="p">:</span> -</span><span id="Generator.maybe_comment-301"><a href="#Generator.maybe_comment-301"><span class="linenos">301</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="Generator.maybe_comment-302"><a href="#Generator.maybe_comment-302"><span class="linenos">302</span></a> -</span><span id="Generator.maybe_comment-303"><a href="#Generator.maybe_comment-303"><span class="linenos">303</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator.maybe_comment-304"><a href="#Generator.maybe_comment-304"><span class="linenos">304</span></a> <span class="n">comments_sql</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator.maybe_comment-305"><a href="#Generator.maybe_comment-305"><span class="linenos">305</span></a> <span class="sa">f</span><span class="s2">"/*</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">pad_comment</span><span class="p">(</span><span class="n">comment</span><span class="p">)</span><span class="si">}</span><span class="s2">*/"</span> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">comments</span> <span class="k">if</span> <span class="n">comment</span> -</span><span id="Generator.maybe_comment-306"><a href="#Generator.maybe_comment-306"><span class="linenos">306</span></a> <span class="p">)</span> -</span><span id="Generator.maybe_comment-307"><a href="#Generator.maybe_comment-307"><span class="linenos">307</span></a> -</span><span id="Generator.maybe_comment-308"><a href="#Generator.maybe_comment-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments_sql</span><span class="p">:</span> -</span><span id="Generator.maybe_comment-309"><a href="#Generator.maybe_comment-309"><span class="linenos">309</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="Generator.maybe_comment-310"><a href="#Generator.maybe_comment-310"><span class="linenos">310</span></a> -</span><span id="Generator.maybe_comment-311"><a href="#Generator.maybe_comment-311"><span class="linenos">311</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">WITH_SEPARATED_COMMENTS</span><span class="p">):</span> -</span><span id="Generator.maybe_comment-312"><a href="#Generator.maybe_comment-312"><span class="linenos">312</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.maybe_comment-311"><a href="#Generator.maybe_comment-311"><span class="linenos">311</span></a> <span class="k">def</span> <span class="nf">maybe_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.maybe_comment-312"><a href="#Generator.maybe_comment-312"><span class="linenos">312</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="k">else</span> <span class="kc">None</span> </span><span id="Generator.maybe_comment-313"><a href="#Generator.maybe_comment-313"><span class="linenos">313</span></a> -</span><span id="Generator.maybe_comment-314"><a href="#Generator.maybe_comment-314"><span class="linenos">314</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.maybe_comment-314"><a href="#Generator.maybe_comment-314"><span class="linenos">314</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments</span><span class="p">:</span> +</span><span id="Generator.maybe_comment-315"><a href="#Generator.maybe_comment-315"><span class="linenos">315</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator.maybe_comment-316"><a href="#Generator.maybe_comment-316"><span class="linenos">316</span></a> +</span><span id="Generator.maybe_comment-317"><a href="#Generator.maybe_comment-317"><span class="linenos">317</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator.maybe_comment-318"><a href="#Generator.maybe_comment-318"><span class="linenos">318</span></a> <span class="n">comments_sql</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator.maybe_comment-319"><a href="#Generator.maybe_comment-319"><span class="linenos">319</span></a> <span class="sa">f</span><span class="s2">"/*</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">pad_comment</span><span class="p">(</span><span class="n">comment</span><span class="p">)</span><span class="si">}</span><span class="s2">*/"</span> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">comments</span> <span class="k">if</span> <span class="n">comment</span> +</span><span id="Generator.maybe_comment-320"><a href="#Generator.maybe_comment-320"><span class="linenos">320</span></a> <span class="p">)</span> +</span><span id="Generator.maybe_comment-321"><a href="#Generator.maybe_comment-321"><span class="linenos">321</span></a> +</span><span id="Generator.maybe_comment-322"><a href="#Generator.maybe_comment-322"><span class="linenos">322</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">comments_sql</span><span class="p">:</span> +</span><span id="Generator.maybe_comment-323"><a href="#Generator.maybe_comment-323"><span class="linenos">323</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator.maybe_comment-324"><a href="#Generator.maybe_comment-324"><span class="linenos">324</span></a> +</span><span id="Generator.maybe_comment-325"><a href="#Generator.maybe_comment-325"><span class="linenos">325</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">WITH_SEPARATED_COMMENTS</span><span class="p">):</span> +</span><span id="Generator.maybe_comment-326"><a href="#Generator.maybe_comment-326"><span class="linenos">326</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.maybe_comment-327"><a href="#Generator.maybe_comment-327"><span class="linenos">327</span></a> +</span><span id="Generator.maybe_comment-328"><a href="#Generator.maybe_comment-328"><span class="linenos">328</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">comments_sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -4868,15 +4876,15 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.wrap"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.wrap-316"><a href="#Generator.wrap-316"><span class="linenos">316</span></a> <span class="k">def</span> <span class="nf">wrap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.wrap-317"><a href="#Generator.wrap-317"><span class="linenos">317</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span> -</span><span id="Generator.wrap-318"><a href="#Generator.wrap-318"><span class="linenos">318</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><span id="Generator.wrap-319"><a href="#Generator.wrap-319"><span class="linenos">319</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</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">Union</span><span class="p">))</span> -</span><span id="Generator.wrap-320"><a href="#Generator.wrap-320"><span class="linenos">320</span></a> <span class="k">else</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">"this"</span><span class="p">),</span> -</span><span id="Generator.wrap-321"><a href="#Generator.wrap-321"><span class="linenos">321</span></a> <span class="n">level</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> -</span><span id="Generator.wrap-322"><a href="#Generator.wrap-322"><span class="linenos">322</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> -</span><span id="Generator.wrap-323"><a href="#Generator.wrap-323"><span class="linenos">323</span></a> <span class="p">)</span> -</span><span id="Generator.wrap-324"><a href="#Generator.wrap-324"><span class="linenos">324</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.wrap-330"><a href="#Generator.wrap-330"><span class="linenos">330</span></a> <span class="k">def</span> <span class="nf">wrap</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.wrap-331"><a href="#Generator.wrap-331"><span class="linenos">331</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span> +</span><span id="Generator.wrap-332"><a href="#Generator.wrap-332"><span class="linenos">332</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><span id="Generator.wrap-333"><a href="#Generator.wrap-333"><span class="linenos">333</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</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">Union</span><span class="p">))</span> +</span><span id="Generator.wrap-334"><a href="#Generator.wrap-334"><span class="linenos">334</span></a> <span class="k">else</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">"this"</span><span class="p">),</span> +</span><span id="Generator.wrap-335"><a href="#Generator.wrap-335"><span class="linenos">335</span></a> <span class="n">level</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> +</span><span id="Generator.wrap-336"><a href="#Generator.wrap-336"><span class="linenos">336</span></a> <span class="n">pad</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> +</span><span id="Generator.wrap-337"><a href="#Generator.wrap-337"><span class="linenos">337</span></a> <span class="p">)</span> +</span><span id="Generator.wrap-338"><a href="#Generator.wrap-338"><span class="linenos">338</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -4894,12 +4902,12 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.no_identify"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.no_identify-326"><a href="#Generator.no_identify-326"><span class="linenos">326</span></a> <span class="k">def</span> <span class="nf">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.no_identify-327"><a href="#Generator.no_identify-327"><span class="linenos">327</span></a> <span class="n">original</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> -</span><span id="Generator.no_identify-328"><a href="#Generator.no_identify-328"><span class="linenos">328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Generator.no_identify-329"><a href="#Generator.no_identify-329"><span class="linenos">329</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="Generator.no_identify-330"><a href="#Generator.no_identify-330"><span class="linenos">330</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">original</span> -</span><span id="Generator.no_identify-331"><a href="#Generator.no_identify-331"><span class="linenos">331</span></a> <span class="k">return</span> <span class="n">result</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.no_identify-340"><a href="#Generator.no_identify-340"><span class="linenos">340</span></a> <span class="k">def</span> <span class="nf">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[</span><span class="o">...</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.no_identify-341"><a href="#Generator.no_identify-341"><span class="linenos">341</span></a> <span class="n">original</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> +</span><span id="Generator.no_identify-342"><a href="#Generator.no_identify-342"><span class="linenos">342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Generator.no_identify-343"><a href="#Generator.no_identify-343"><span class="linenos">343</span></a> <span class="n">result</span> <span class="o">=</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Generator.no_identify-344"><a href="#Generator.no_identify-344"><span class="linenos">344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span> <span class="o">=</span> <span class="n">original</span> +</span><span id="Generator.no_identify-345"><a href="#Generator.no_identify-345"><span class="linenos">345</span></a> <span class="k">return</span> <span class="n">result</span> </span></pre></div> @@ -4917,12 +4925,12 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.normalize_func"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.normalize_func-333"><a href="#Generator.normalize_func-333"><span class="linenos">333</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.normalize_func-334"><a href="#Generator.normalize_func-334"><span class="linenos">334</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"upper"</span><span class="p">:</span> -</span><span id="Generator.normalize_func-335"><a href="#Generator.normalize_func-335"><span class="linenos">335</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Generator.normalize_func-336"><a href="#Generator.normalize_func-336"><span class="linenos">336</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"lower"</span><span class="p">:</span> -</span><span id="Generator.normalize_func-337"><a href="#Generator.normalize_func-337"><span class="linenos">337</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="Generator.normalize_func-338"><a href="#Generator.normalize_func-338"><span class="linenos">338</span></a> <span class="k">return</span> <span class="n">name</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.normalize_func-347"><a href="#Generator.normalize_func-347"><span class="linenos">347</span></a> <span class="k">def</span> <span class="nf">normalize_func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.normalize_func-348"><a href="#Generator.normalize_func-348"><span class="linenos">348</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"upper"</span><span class="p">:</span> +</span><span id="Generator.normalize_func-349"><a href="#Generator.normalize_func-349"><span class="linenos">349</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Generator.normalize_func-350"><a href="#Generator.normalize_func-350"><span class="linenos">350</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize_functions</span> <span class="o">==</span> <span class="s2">"lower"</span><span class="p">:</span> +</span><span id="Generator.normalize_func-351"><a href="#Generator.normalize_func-351"><span class="linenos">351</span></a> <span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> +</span><span id="Generator.normalize_func-352"><a href="#Generator.normalize_func-352"><span class="linenos">352</span></a> <span class="k">return</span> <span class="n">name</span> </span></pre></div> @@ -4940,26 +4948,26 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.indent"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.indent-340"><a href="#Generator.indent-340"><span class="linenos">340</span></a> <span class="k">def</span> <span class="nf">indent</span><span class="p">(</span> -</span><span id="Generator.indent-341"><a href="#Generator.indent-341"><span class="linenos">341</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator.indent-342"><a href="#Generator.indent-342"><span class="linenos">342</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="Generator.indent-343"><a href="#Generator.indent-343"><span class="linenos">343</span></a> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="Generator.indent-344"><a href="#Generator.indent-344"><span class="linenos">344</span></a> <span class="n">pad</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.indent-345"><a href="#Generator.indent-345"><span class="linenos">345</span></a> <span class="n">skip_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.indent-346"><a href="#Generator.indent-346"><span class="linenos">346</span></a> <span class="n">skip_last</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.indent-347"><a href="#Generator.indent-347"><span class="linenos">347</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.indent-348"><a href="#Generator.indent-348"><span class="linenos">348</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator.indent-349"><a href="#Generator.indent-349"><span class="linenos">349</span></a> <span class="k">return</span> <span class="n">sql</span> -</span><span id="Generator.indent-350"><a href="#Generator.indent-350"><span class="linenos">350</span></a> -</span><span id="Generator.indent-351"><a href="#Generator.indent-351"><span class="linenos">351</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="k">if</span> <span class="n">pad</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">pad</span> -</span><span id="Generator.indent-352"><a href="#Generator.indent-352"><span class="linenos">352</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.indent-353"><a href="#Generator.indent-353"><span class="linenos">353</span></a> -</span><span id="Generator.indent-354"><a href="#Generator.indent-354"><span class="linenos">354</span></a> <span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator.indent-355"><a href="#Generator.indent-355"><span class="linenos">355</span></a> <span class="n">line</span> -</span><span id="Generator.indent-356"><a href="#Generator.indent-356"><span class="linenos">356</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">skip_first</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">skip_last</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Generator.indent-357"><a href="#Generator.indent-357"><span class="linenos">357</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' '</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">level</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_indent</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">pad</span><span class="p">)</span><span class="si">}{</span><span class="n">line</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.indent-358"><a href="#Generator.indent-358"><span class="linenos">358</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> -</span><span id="Generator.indent-359"><a href="#Generator.indent-359"><span class="linenos">359</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.indent-354"><a href="#Generator.indent-354"><span class="linenos">354</span></a> <span class="k">def</span> <span class="nf">indent</span><span class="p">(</span> +</span><span id="Generator.indent-355"><a href="#Generator.indent-355"><span class="linenos">355</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator.indent-356"><a href="#Generator.indent-356"><span class="linenos">356</span></a> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="Generator.indent-357"><a href="#Generator.indent-357"><span class="linenos">357</span></a> <span class="n">level</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="Generator.indent-358"><a href="#Generator.indent-358"><span class="linenos">358</span></a> <span class="n">pad</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">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.indent-359"><a href="#Generator.indent-359"><span class="linenos">359</span></a> <span class="n">skip_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.indent-360"><a href="#Generator.indent-360"><span class="linenos">360</span></a> <span class="n">skip_last</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.indent-361"><a href="#Generator.indent-361"><span class="linenos">361</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.indent-362"><a href="#Generator.indent-362"><span class="linenos">362</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator.indent-363"><a href="#Generator.indent-363"><span class="linenos">363</span></a> <span class="k">return</span> <span class="n">sql</span> +</span><span id="Generator.indent-364"><a href="#Generator.indent-364"><span class="linenos">364</span></a> +</span><span id="Generator.indent-365"><a href="#Generator.indent-365"><span class="linenos">365</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> <span class="k">if</span> <span class="n">pad</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">pad</span> +</span><span id="Generator.indent-366"><a href="#Generator.indent-366"><span class="linenos">366</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="n">sql</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.indent-367"><a href="#Generator.indent-367"><span class="linenos">367</span></a> +</span><span id="Generator.indent-368"><a href="#Generator.indent-368"><span class="linenos">368</span></a> <span class="k">return</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator.indent-369"><a href="#Generator.indent-369"><span class="linenos">369</span></a> <span class="n">line</span> +</span><span id="Generator.indent-370"><a href="#Generator.indent-370"><span class="linenos">370</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">skip_first</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">skip_last</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">==</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Generator.indent-371"><a href="#Generator.indent-371"><span class="linenos">371</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' '</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="n">level</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="bp">self</span><span class="o">.</span><span class="n">_indent</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">pad</span><span class="p">)</span><span class="si">}{</span><span class="n">line</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.indent-372"><a href="#Generator.indent-372"><span class="linenos">372</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">line</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span> +</span><span id="Generator.indent-373"><a href="#Generator.indent-373"><span class="linenos">373</span></a> <span class="p">)</span> </span></pre></div> @@ -4977,42 +4985,42 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sql-361"><a href="#Generator.sql-361"><span class="linenos">361</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span> -</span><span id="Generator.sql-362"><a href="#Generator.sql-362"><span class="linenos">362</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator.sql-363"><a href="#Generator.sql-363"><span class="linenos">363</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> -</span><span id="Generator.sql-364"><a href="#Generator.sql-364"><span class="linenos">364</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.sql-365"><a href="#Generator.sql-365"><span class="linenos">365</span></a> <span class="n">comment</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Generator.sql-366"><a href="#Generator.sql-366"><span class="linenos">366</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.sql-367"><a href="#Generator.sql-367"><span class="linenos">367</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Generator.sql-368"><a href="#Generator.sql-368"><span class="linenos">368</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Generator.sql-369"><a href="#Generator.sql-369"><span class="linenos">369</span></a> -</span><span id="Generator.sql-370"><a href="#Generator.sql-370"><span class="linenos">370</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> -</span><span id="Generator.sql-371"><a href="#Generator.sql-371"><span class="linenos">371</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Generator.sql-372"><a href="#Generator.sql-372"><span class="linenos">372</span></a> -</span><span id="Generator.sql-373"><a href="#Generator.sql-373"><span class="linenos">373</span></a> <span class="k">if</span> <span class="n">key</span><span class="p">:</span> -</span><span id="Generator.sql-374"><a href="#Generator.sql-374"><span class="linenos">374</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> -</span><span id="Generator.sql-375"><a href="#Generator.sql-375"><span class="linenos">375</span></a> -</span><span id="Generator.sql-376"><a href="#Generator.sql-376"><span class="linenos">376</span></a> <span class="n">transform</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> -</span><span id="Generator.sql-377"><a href="#Generator.sql-377"><span class="linenos">377</span></a> -</span><span id="Generator.sql-378"><a href="#Generator.sql-378"><span class="linenos">378</span></a> <span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">transform</span><span class="p">):</span> -</span><span id="Generator.sql-379"><a href="#Generator.sql-379"><span class="linenos">379</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</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="Generator.sql-380"><a href="#Generator.sql-380"><span class="linenos">380</span></a> <span class="k">elif</span> <span class="n">transform</span><span class="p">:</span> -</span><span id="Generator.sql-381"><a href="#Generator.sql-381"><span class="linenos">381</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</span> -</span><span id="Generator.sql-382"><a href="#Generator.sql-382"><span class="linenos">382</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> -</span><span id="Generator.sql-383"><a href="#Generator.sql-383"><span class="linenos">383</span></a> <span class="n">exp_handler_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">_sql"</span> -</span><span id="Generator.sql-384"><a href="#Generator.sql-384"><span class="linenos">384</span></a> -</span><span id="Generator.sql-385"><a href="#Generator.sql-385"><span class="linenos">385</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">):</span> -</span><span id="Generator.sql-386"><a href="#Generator.sql-386"><span class="linenos">386</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">)(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.sql-387"><a href="#Generator.sql-387"><span class="linenos">387</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Generator.sql-388"><a href="#Generator.sql-388"><span class="linenos">388</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.sql-389"><a href="#Generator.sql-389"><span class="linenos">389</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">):</span> -</span><span id="Generator.sql-390"><a href="#Generator.sql-390"><span class="linenos">390</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">property_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.sql-391"><a href="#Generator.sql-391"><span class="linenos">391</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.sql-392"><a href="#Generator.sql-392"><span class="linenos">392</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.sql-393"><a href="#Generator.sql-393"><span class="linenos">393</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.sql-394"><a href="#Generator.sql-394"><span class="linenos">394</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected an Expression. Received </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.sql-395"><a href="#Generator.sql-395"><span class="linenos">395</span></a> -</span><span id="Generator.sql-396"><a href="#Generator.sql-396"><span class="linenos">396</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">comment</span> <span class="k">else</span> <span class="n">sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sql-375"><a href="#Generator.sql-375"><span class="linenos">375</span></a> <span class="k">def</span> <span class="nf">sql</span><span class="p">(</span> +</span><span id="Generator.sql-376"><a href="#Generator.sql-376"><span class="linenos">376</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator.sql-377"><a href="#Generator.sql-377"><span class="linenos">377</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> +</span><span id="Generator.sql-378"><a href="#Generator.sql-378"><span class="linenos">378</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.sql-379"><a href="#Generator.sql-379"><span class="linenos">379</span></a> <span class="n">comment</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Generator.sql-380"><a href="#Generator.sql-380"><span class="linenos">380</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.sql-381"><a href="#Generator.sql-381"><span class="linenos">381</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Generator.sql-382"><a href="#Generator.sql-382"><span class="linenos">382</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Generator.sql-383"><a href="#Generator.sql-383"><span class="linenos">383</span></a> +</span><span id="Generator.sql-384"><a href="#Generator.sql-384"><span class="linenos">384</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> +</span><span id="Generator.sql-385"><a href="#Generator.sql-385"><span class="linenos">385</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Generator.sql-386"><a href="#Generator.sql-386"><span class="linenos">386</span></a> +</span><span id="Generator.sql-387"><a href="#Generator.sql-387"><span class="linenos">387</span></a> <span class="k">if</span> <span class="n">key</span><span class="p">:</span> +</span><span id="Generator.sql-388"><a href="#Generator.sql-388"><span class="linenos">388</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">))</span> +</span><span id="Generator.sql-389"><a href="#Generator.sql-389"><span class="linenos">389</span></a> +</span><span id="Generator.sql-390"><a href="#Generator.sql-390"><span class="linenos">390</span></a> <span class="n">transform</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> +</span><span id="Generator.sql-391"><a href="#Generator.sql-391"><span class="linenos">391</span></a> +</span><span id="Generator.sql-392"><a href="#Generator.sql-392"><span class="linenos">392</span></a> <span class="k">if</span> <span class="n">callable</span><span class="p">(</span><span class="n">transform</span><span class="p">):</span> +</span><span id="Generator.sql-393"><a href="#Generator.sql-393"><span class="linenos">393</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</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="Generator.sql-394"><a href="#Generator.sql-394"><span class="linenos">394</span></a> <span class="k">elif</span> <span class="n">transform</span><span class="p">:</span> +</span><span id="Generator.sql-395"><a href="#Generator.sql-395"><span class="linenos">395</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="n">transform</span> +</span><span id="Generator.sql-396"><a href="#Generator.sql-396"><span class="linenos">396</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">):</span> +</span><span id="Generator.sql-397"><a href="#Generator.sql-397"><span class="linenos">397</span></a> <span class="n">exp_handler_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">_sql"</span> +</span><span id="Generator.sql-398"><a href="#Generator.sql-398"><span class="linenos">398</span></a> +</span><span id="Generator.sql-399"><a href="#Generator.sql-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">):</span> +</span><span id="Generator.sql-400"><a href="#Generator.sql-400"><span class="linenos">400</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_handler_name</span><span class="p">)(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.sql-401"><a href="#Generator.sql-401"><span class="linenos">401</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Generator.sql-402"><a href="#Generator.sql-402"><span class="linenos">402</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.sql-403"><a href="#Generator.sql-403"><span class="linenos">403</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">):</span> +</span><span id="Generator.sql-404"><a href="#Generator.sql-404"><span class="linenos">404</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">property_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.sql-405"><a href="#Generator.sql-405"><span class="linenos">405</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.sql-406"><a href="#Generator.sql-406"><span class="linenos">406</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.sql-407"><a href="#Generator.sql-407"><span class="linenos">407</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.sql-408"><a href="#Generator.sql-408"><span class="linenos">408</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected an Expression. Received </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">expression</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.sql-409"><a href="#Generator.sql-409"><span class="linenos">409</span></a> +</span><span id="Generator.sql-410"><a href="#Generator.sql-410"><span class="linenos">410</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="n">sql</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="ow">and</span> <span class="n">comment</span> <span class="k">else</span> <span class="n">sql</span> </span></pre></div> @@ -5030,10 +5038,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.uncache_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.uncache_sql-398"><a href="#Generator.uncache_sql-398"><span class="linenos">398</span></a> <span class="k">def</span> <span class="nf">uncache_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">Uncache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.uncache_sql-399"><a href="#Generator.uncache_sql-399"><span class="linenos">399</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> -</span><span id="Generator.uncache_sql-400"><a href="#Generator.uncache_sql-400"><span class="linenos">400</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.uncache_sql-401"><a href="#Generator.uncache_sql-401"><span class="linenos">401</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNCACHE TABLE</span><span class="si">{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.uncache_sql-412"><a href="#Generator.uncache_sql-412"><span class="linenos">412</span></a> <span class="k">def</span> <span class="nf">uncache_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">Uncache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.uncache_sql-413"><a href="#Generator.uncache_sql-413"><span class="linenos">413</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> +</span><span id="Generator.uncache_sql-414"><a href="#Generator.uncache_sql-414"><span class="linenos">414</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.uncache_sql-415"><a href="#Generator.uncache_sql-415"><span class="linenos">415</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNCACHE TABLE</span><span class="si">{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5051,15 +5059,15 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.cache_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.cache_sql-403"><a href="#Generator.cache_sql-403"><span class="linenos">403</span></a> <span class="k">def</span> <span class="nf">cache_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">Cache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.cache_sql-404"><a href="#Generator.cache_sql-404"><span class="linenos">404</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="s2">" LAZY"</span> <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">"lazy"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.cache_sql-405"><a href="#Generator.cache_sql-405"><span class="linenos">405</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> -</span><span id="Generator.cache_sql-406"><a href="#Generator.cache_sql-406"><span class="linenos">406</span></a> <span class="n">options</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">"options"</span><span class="p">)</span> -</span><span id="Generator.cache_sql-407"><a href="#Generator.cache_sql-407"><span class="linenos">407</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OPTIONS(</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">options</span><span class="p">[</span><span class="mi">0</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">options</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.cache_sql-408"><a href="#Generator.cache_sql-408"><span class="linenos">408</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator.cache_sql-409"><a href="#Generator.cache_sql-409"><span class="linenos">409</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.cache_sql-410"><a href="#Generator.cache_sql-410"><span class="linenos">410</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CACHE</span><span class="si">{</span><span class="n">lazy</span><span class="si">}</span><span class="s2"> TABLE </span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">options</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.cache_sql-411"><a href="#Generator.cache_sql-411"><span class="linenos">411</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.cache_sql-417"><a href="#Generator.cache_sql-417"><span class="linenos">417</span></a> <span class="k">def</span> <span class="nf">cache_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">Cache</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.cache_sql-418"><a href="#Generator.cache_sql-418"><span class="linenos">418</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="s2">" LAZY"</span> <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">"lazy"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.cache_sql-419"><a href="#Generator.cache_sql-419"><span class="linenos">419</span></a> <span class="n">table</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">"this"</span><span class="p">)</span> +</span><span id="Generator.cache_sql-420"><a href="#Generator.cache_sql-420"><span class="linenos">420</span></a> <span class="n">options</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">"options"</span><span class="p">)</span> +</span><span id="Generator.cache_sql-421"><a href="#Generator.cache_sql-421"><span class="linenos">421</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OPTIONS(</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">options</span><span class="p">[</span><span class="mi">0</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">options</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.cache_sql-422"><a href="#Generator.cache_sql-422"><span class="linenos">422</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator.cache_sql-423"><a href="#Generator.cache_sql-423"><span class="linenos">423</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.cache_sql-424"><a href="#Generator.cache_sql-424"><span class="linenos">424</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CACHE</span><span class="si">{</span><span class="n">lazy</span><span class="si">}</span><span class="s2"> TABLE </span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">options</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.cache_sql-425"><a href="#Generator.cache_sql-425"><span class="linenos">425</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -5077,11 +5085,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.characterset_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.characterset_sql-413"><a href="#Generator.characterset_sql-413"><span class="linenos">413</span></a> <span class="k">def</span> <span class="nf">characterset_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">CharacterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.characterset_sql-414"><a href="#Generator.characterset_sql-414"><span class="linenos">414</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">Cast</span><span class="p">):</span> -</span><span id="Generator.characterset_sql-415"><a href="#Generator.characterset_sql-415"><span class="linenos">415</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHAR CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.characterset_sql-416"><a href="#Generator.characterset_sql-416"><span class="linenos">416</span></a> <span class="n">default</span> <span class="o">=</span> <span class="s2">"DEFAULT "</span> <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">"default"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.characterset_sql-417"><a href="#Generator.characterset_sql-417"><span class="linenos">417</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.characterset_sql-427"><a href="#Generator.characterset_sql-427"><span class="linenos">427</span></a> <span class="k">def</span> <span class="nf">characterset_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">CharacterSet</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.characterset_sql-428"><a href="#Generator.characterset_sql-428"><span class="linenos">428</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">Cast</span><span class="p">):</span> +</span><span id="Generator.characterset_sql-429"><a href="#Generator.characterset_sql-429"><span class="linenos">429</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHAR CHARACTER SET </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.characterset_sql-430"><a href="#Generator.characterset_sql-430"><span class="linenos">430</span></a> <span class="n">default</span> <span class="o">=</span> <span class="s2">"DEFAULT "</span> <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">"default"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.characterset_sql-431"><a href="#Generator.characterset_sql-431"><span class="linenos">431</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">CHARACTER SET=</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5099,17 +5107,17 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.column_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.column_sql-419"><a href="#Generator.column_sql-419"><span class="linenos">419</span></a> <span class="k">def</span> <span class="nf">column_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">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.column_sql-420"><a href="#Generator.column_sql-420"><span class="linenos">420</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator.column_sql-421"><a href="#Generator.column_sql-421"><span class="linenos">421</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> -</span><span id="Generator.column_sql-422"><a href="#Generator.column_sql-422"><span class="linenos">422</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="Generator.column_sql-423"><a href="#Generator.column_sql-423"><span class="linenos">423</span></a> <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">"catalog"</span><span class="p">),</span> -</span><span id="Generator.column_sql-424"><a href="#Generator.column_sql-424"><span class="linenos">424</span></a> <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">"db"</span><span class="p">),</span> -</span><span id="Generator.column_sql-425"><a href="#Generator.column_sql-425"><span class="linenos">425</span></a> <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">"table"</span><span class="p">),</span> -</span><span id="Generator.column_sql-426"><a href="#Generator.column_sql-426"><span class="linenos">426</span></a> <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">"this"</span><span class="p">),</span> -</span><span id="Generator.column_sql-427"><a href="#Generator.column_sql-427"><span class="linenos">427</span></a> <span class="p">)</span> -</span><span id="Generator.column_sql-428"><a href="#Generator.column_sql-428"><span class="linenos">428</span></a> <span class="k">if</span> <span class="n">part</span> -</span><span id="Generator.column_sql-429"><a href="#Generator.column_sql-429"><span class="linenos">429</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.column_sql-433"><a href="#Generator.column_sql-433"><span class="linenos">433</span></a> <span class="k">def</span> <span class="nf">column_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">Column</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.column_sql-434"><a href="#Generator.column_sql-434"><span class="linenos">434</span></a> <span class="k">return</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator.column_sql-435"><a href="#Generator.column_sql-435"><span class="linenos">435</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">part</span><span class="p">)</span> +</span><span id="Generator.column_sql-436"><a href="#Generator.column_sql-436"><span class="linenos">436</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="Generator.column_sql-437"><a href="#Generator.column_sql-437"><span class="linenos">437</span></a> <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">"catalog"</span><span class="p">),</span> +</span><span id="Generator.column_sql-438"><a href="#Generator.column_sql-438"><span class="linenos">438</span></a> <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">"db"</span><span class="p">),</span> +</span><span id="Generator.column_sql-439"><a href="#Generator.column_sql-439"><span class="linenos">439</span></a> <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">"table"</span><span class="p">),</span> +</span><span id="Generator.column_sql-440"><a href="#Generator.column_sql-440"><span class="linenos">440</span></a> <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">"this"</span><span class="p">),</span> +</span><span id="Generator.column_sql-441"><a href="#Generator.column_sql-441"><span class="linenos">441</span></a> <span class="p">)</span> +</span><span id="Generator.column_sql-442"><a href="#Generator.column_sql-442"><span class="linenos">442</span></a> <span class="k">if</span> <span class="n">part</span> +</span><span id="Generator.column_sql-443"><a href="#Generator.column_sql-443"><span class="linenos">443</span></a> <span class="p">)</span> </span></pre></div> @@ -5127,15 +5135,15 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.columndef_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.columndef_sql-431"><a href="#Generator.columndef_sql-431"><span class="linenos">431</span></a> <span class="k">def</span> <span class="nf">columndef_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">ColumnDef</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.columndef_sql-432"><a href="#Generator.columndef_sql-432"><span class="linenos">432</span></a> <span class="n">column</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">"this"</span><span class="p">)</span> -</span><span id="Generator.columndef_sql-433"><a href="#Generator.columndef_sql-433"><span class="linenos">433</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="Generator.columndef_sql-434"><a href="#Generator.columndef_sql-434"><span class="linenos">434</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"constraints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.columndef_sql-435"><a href="#Generator.columndef_sql-435"><span class="linenos">435</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">"IF NOT EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.columndef_sql-436"><a href="#Generator.columndef_sql-436"><span class="linenos">436</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.columndef_sql-437"><a href="#Generator.columndef_sql-437"><span class="linenos">437</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">constraints</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.columndef_sql-438"><a href="#Generator.columndef_sql-438"><span class="linenos">438</span></a> -</span><span id="Generator.columndef_sql-439"><a href="#Generator.columndef_sql-439"><span class="linenos">439</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">column</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.columndef_sql-445"><a href="#Generator.columndef_sql-445"><span class="linenos">445</span></a> <span class="k">def</span> <span class="nf">columndef_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">ColumnDef</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.columndef_sql-446"><a href="#Generator.columndef_sql-446"><span class="linenos">446</span></a> <span class="n">column</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">"this"</span><span class="p">)</span> +</span><span id="Generator.columndef_sql-447"><a href="#Generator.columndef_sql-447"><span class="linenos">447</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="Generator.columndef_sql-448"><a href="#Generator.columndef_sql-448"><span class="linenos">448</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"constraints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.columndef_sql-449"><a href="#Generator.columndef_sql-449"><span class="linenos">449</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">"IF NOT EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.columndef_sql-450"><a href="#Generator.columndef_sql-450"><span class="linenos">450</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.columndef_sql-451"><a href="#Generator.columndef_sql-451"><span class="linenos">451</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">constraints</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.columndef_sql-452"><a href="#Generator.columndef_sql-452"><span class="linenos">452</span></a> +</span><span id="Generator.columndef_sql-453"><a href="#Generator.columndef_sql-453"><span class="linenos">453</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">column</span><span class="si">}{</span><span class="n">kind</span><span class="si">}{</span><span class="n">constraints</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5153,10 +5161,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.columnconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.columnconstraint_sql-441"><a href="#Generator.columnconstraint_sql-441"><span class="linenos">441</span></a> <span class="k">def</span> <span class="nf">columnconstraint_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">ColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.columnconstraint_sql-442"><a href="#Generator.columnconstraint_sql-442"><span class="linenos">442</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">"this"</span><span class="p">)</span> -</span><span id="Generator.columnconstraint_sql-443"><a href="#Generator.columnconstraint_sql-443"><span class="linenos">443</span></a> <span class="n">kind_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">)</span> -</span><span id="Generator.columnconstraint_sql-444"><a href="#Generator.columnconstraint_sql-444"><span class="linenos">444</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">kind_sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.columnconstraint_sql-455"><a href="#Generator.columnconstraint_sql-455"><span class="linenos">455</span></a> <span class="k">def</span> <span class="nf">columnconstraint_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">ColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.columnconstraint_sql-456"><a href="#Generator.columnconstraint_sql-456"><span class="linenos">456</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">"this"</span><span class="p">)</span> +</span><span id="Generator.columnconstraint_sql-457"><a href="#Generator.columnconstraint_sql-457"><span class="linenos">457</span></a> <span class="n">kind_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">)</span> +</span><span id="Generator.columnconstraint_sql-458"><a href="#Generator.columnconstraint_sql-458"><span class="linenos">458</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">kind_sql</span> </span></pre></div> @@ -5174,8 +5182,32 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.autoincrementcolumnconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.autoincrementcolumnconstraint_sql-446"><a href="#Generator.autoincrementcolumnconstraint_sql-446"><span class="linenos">446</span></a> <span class="k">def</span> <span class="nf">autoincrementcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.autoincrementcolumnconstraint_sql-447"><a href="#Generator.autoincrementcolumnconstraint_sql-447"><span class="linenos">447</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">token_sql</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.autoincrementcolumnconstraint_sql-460"><a href="#Generator.autoincrementcolumnconstraint_sql-460"><span class="linenos">460</span></a> <span class="k">def</span> <span class="nf">autoincrementcolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.autoincrementcolumnconstraint_sql-461"><a href="#Generator.autoincrementcolumnconstraint_sql-461"><span class="linenos">461</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">token_sql</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">)</span> +</span></pre></div> + + + + + </div> + <div id="Generator.compresscolumnconstraint_sql" class="classattr"> + <input id="Generator.compresscolumnconstraint_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">compresscolumnconstraint_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#CompressColumnConstraint">sqlglot.expressions.CompressColumnConstraint</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span> + + <label class="view-source-button" for="Generator.compresscolumnconstraint_sql-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Generator.compresscolumnconstraint_sql"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.compresscolumnconstraint_sql-463"><a href="#Generator.compresscolumnconstraint_sql-463"><span class="linenos">463</span></a> <span class="k">def</span> <span class="nf">compresscolumnconstraint_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">CompressColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.compresscolumnconstraint_sql-464"><a href="#Generator.compresscolumnconstraint_sql-464"><span class="linenos">464</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="nb">list</span><span class="p">):</span> +</span><span id="Generator.compresscolumnconstraint_sql-465"><a href="#Generator.compresscolumnconstraint_sql-465"><span class="linenos">465</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Generator.compresscolumnconstraint_sql-466"><a href="#Generator.compresscolumnconstraint_sql-466"><span class="linenos">466</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.compresscolumnconstraint_sql-467"><a href="#Generator.compresscolumnconstraint_sql-467"><span class="linenos">467</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">"this"</span><span class="p">)</span> +</span><span id="Generator.compresscolumnconstraint_sql-468"><a href="#Generator.compresscolumnconstraint_sql-468"><span class="linenos">468</span></a> +</span><span id="Generator.compresscolumnconstraint_sql-469"><a href="#Generator.compresscolumnconstraint_sql-469"><span class="linenos">469</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COMPRESS </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5193,30 +5225,30 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.generatedasidentitycolumnconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.generatedasidentitycolumnconstraint_sql-449"><a href="#Generator.generatedasidentitycolumnconstraint_sql-449"><span class="linenos">449</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-450"><a href="#Generator.generatedasidentitycolumnconstraint_sql-450"><span class="linenos">450</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">GeneratedAsIdentityColumnConstraint</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-451"><a href="#Generator.generatedasidentitycolumnconstraint_sql-451"><span class="linenos">451</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-452"><a href="#Generator.generatedasidentitycolumnconstraint_sql-452"><span class="linenos">452</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-453"><a href="#Generator.generatedasidentitycolumnconstraint_sql-453"><span class="linenos">453</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-454"><a href="#Generator.generatedasidentitycolumnconstraint_sql-454"><span class="linenos">454</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">" ALWAYS "</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">" BY DEFAULT "</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-455"><a href="#Generator.generatedasidentitycolumnconstraint_sql-455"><span class="linenos">455</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-456"><a href="#Generator.generatedasidentitycolumnconstraint_sql-456"><span class="linenos">456</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"START WITH </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-457"><a href="#Generator.generatedasidentitycolumnconstraint_sql-457"><span class="linenos">457</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-458"><a href="#Generator.generatedasidentitycolumnconstraint_sql-458"><span class="linenos">458</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT BY </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-459"><a href="#Generator.generatedasidentitycolumnconstraint_sql-459"><span class="linenos">459</span></a> <span class="n">minvalue</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">"minvalue"</span><span class="p">)</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-460"><a href="#Generator.generatedasidentitycolumnconstraint_sql-460"><span class="linenos">460</span></a> <span class="n">minvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MINVALUE </span><span class="si">{</span><span class="n">minvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">minvalue</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-461"><a href="#Generator.generatedasidentitycolumnconstraint_sql-461"><span class="linenos">461</span></a> <span class="n">maxvalue</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">"maxvalue"</span><span class="p">)</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-462"><a href="#Generator.generatedasidentitycolumnconstraint_sql-462"><span class="linenos">462</span></a> <span class="n">maxvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAXVALUE </span><span class="si">{</span><span class="n">maxvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">maxvalue</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-463"><a href="#Generator.generatedasidentitycolumnconstraint_sql-463"><span class="linenos">463</span></a> <span class="n">cycle</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">"cycle"</span><span class="p">)</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-464"><a href="#Generator.generatedasidentitycolumnconstraint_sql-464"><span class="linenos">464</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-465"><a href="#Generator.generatedasidentitycolumnconstraint_sql-465"><span class="linenos">465</span></a> <span class="k">if</span> <span class="n">cycle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-466"><a href="#Generator.generatedasidentitycolumnconstraint_sql-466"><span class="linenos">466</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' NO'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">cycle</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> CYCLE"</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-467"><a href="#Generator.generatedasidentitycolumnconstraint_sql-467"><span class="linenos">467</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="n">cycle_sql</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">increment</span> <span class="k">else</span> <span class="n">cycle_sql</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-468"><a href="#Generator.generatedasidentitycolumnconstraint_sql-468"><span class="linenos">468</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-469"><a href="#Generator.generatedasidentitycolumnconstraint_sql-469"><span class="linenos">469</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">or</span> <span class="n">increment</span> <span class="ow">or</span> <span class="n">cycle_sql</span><span class="p">:</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-470"><a href="#Generator.generatedasidentitycolumnconstraint_sql-470"><span class="linenos">470</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}{</span><span class="n">minvalue</span><span class="si">}{</span><span class="n">maxvalue</span><span class="si">}{</span><span class="n">cycle_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-471"><a href="#Generator.generatedasidentitycolumnconstraint_sql-471"><span class="linenos">471</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">sequence_opts</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator.generatedasidentitycolumnconstraint_sql-472"><a href="#Generator.generatedasidentitycolumnconstraint_sql-472"><span class="linenos">472</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"GENERATED</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">AS IDENTITY</span><span class="si">{</span><span class="n">sequence_opts</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.generatedasidentitycolumnconstraint_sql-471"><a href="#Generator.generatedasidentitycolumnconstraint_sql-471"><span class="linenos">471</span></a> <span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-472"><a href="#Generator.generatedasidentitycolumnconstraint_sql-472"><span class="linenos">472</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">GeneratedAsIdentityColumnConstraint</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-473"><a href="#Generator.generatedasidentitycolumnconstraint_sql-473"><span class="linenos">473</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-474"><a href="#Generator.generatedasidentitycolumnconstraint_sql-474"><span class="linenos">474</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-475"><a href="#Generator.generatedasidentitycolumnconstraint_sql-475"><span class="linenos">475</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-476"><a href="#Generator.generatedasidentitycolumnconstraint_sql-476"><span class="linenos">476</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">" ALWAYS "</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">" BY DEFAULT "</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-477"><a href="#Generator.generatedasidentitycolumnconstraint_sql-477"><span class="linenos">477</span></a> <span class="n">start</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">"start"</span><span class="p">)</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-478"><a href="#Generator.generatedasidentitycolumnconstraint_sql-478"><span class="linenos">478</span></a> <span class="n">start</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"START WITH </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">start</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-479"><a href="#Generator.generatedasidentitycolumnconstraint_sql-479"><span class="linenos">479</span></a> <span class="n">increment</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">"increment"</span><span class="p">)</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-480"><a href="#Generator.generatedasidentitycolumnconstraint_sql-480"><span class="linenos">480</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INCREMENT BY </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">increment</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-481"><a href="#Generator.generatedasidentitycolumnconstraint_sql-481"><span class="linenos">481</span></a> <span class="n">minvalue</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">"minvalue"</span><span class="p">)</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-482"><a href="#Generator.generatedasidentitycolumnconstraint_sql-482"><span class="linenos">482</span></a> <span class="n">minvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MINVALUE </span><span class="si">{</span><span class="n">minvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">minvalue</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-483"><a href="#Generator.generatedasidentitycolumnconstraint_sql-483"><span class="linenos">483</span></a> <span class="n">maxvalue</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">"maxvalue"</span><span class="p">)</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-484"><a href="#Generator.generatedasidentitycolumnconstraint_sql-484"><span class="linenos">484</span></a> <span class="n">maxvalue</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAXVALUE </span><span class="si">{</span><span class="n">maxvalue</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">maxvalue</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-485"><a href="#Generator.generatedasidentitycolumnconstraint_sql-485"><span class="linenos">485</span></a> <span class="n">cycle</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">"cycle"</span><span class="p">)</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-486"><a href="#Generator.generatedasidentitycolumnconstraint_sql-486"><span class="linenos">486</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-487"><a href="#Generator.generatedasidentitycolumnconstraint_sql-487"><span class="linenos">487</span></a> <span class="k">if</span> <span class="n">cycle</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-488"><a href="#Generator.generatedasidentitycolumnconstraint_sql-488"><span class="linenos">488</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">' NO'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">cycle</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2"> CYCLE"</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-489"><a href="#Generator.generatedasidentitycolumnconstraint_sql-489"><span class="linenos">489</span></a> <span class="n">cycle_sql</span> <span class="o">=</span> <span class="n">cycle_sql</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">start</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">increment</span> <span class="k">else</span> <span class="n">cycle_sql</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-490"><a href="#Generator.generatedasidentitycolumnconstraint_sql-490"><span class="linenos">490</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-491"><a href="#Generator.generatedasidentitycolumnconstraint_sql-491"><span class="linenos">491</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">or</span> <span class="n">increment</span> <span class="ow">or</span> <span class="n">cycle_sql</span><span class="p">:</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-492"><a href="#Generator.generatedasidentitycolumnconstraint_sql-492"><span class="linenos">492</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">start</span><span class="si">}{</span><span class="n">increment</span><span class="si">}{</span><span class="n">minvalue</span><span class="si">}{</span><span class="n">maxvalue</span><span class="si">}{</span><span class="n">cycle_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-493"><a href="#Generator.generatedasidentitycolumnconstraint_sql-493"><span class="linenos">493</span></a> <span class="n">sequence_opts</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">sequence_opts</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator.generatedasidentitycolumnconstraint_sql-494"><a href="#Generator.generatedasidentitycolumnconstraint_sql-494"><span class="linenos">494</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"GENERATED</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">AS IDENTITY</span><span class="si">{</span><span class="n">sequence_opts</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5234,8 +5266,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.notnullcolumnconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.notnullcolumnconstraint_sql-474"><a href="#Generator.notnullcolumnconstraint_sql-474"><span class="linenos">474</span></a> <span class="k">def</span> <span class="nf">notnullcolumnconstraint_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">NotNullColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.notnullcolumnconstraint_sql-475"><a href="#Generator.notnullcolumnconstraint_sql-475"><span class="linenos">475</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'allow_null'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'NOT '</span><span class="si">}</span><span class="s2">NULL"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.notnullcolumnconstraint_sql-496"><a href="#Generator.notnullcolumnconstraint_sql-496"><span class="linenos">496</span></a> <span class="k">def</span> <span class="nf">notnullcolumnconstraint_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">NotNullColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.notnullcolumnconstraint_sql-497"><a href="#Generator.notnullcolumnconstraint_sql-497"><span class="linenos">497</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'allow_null'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'NOT '</span><span class="si">}</span><span class="s2">NULL"</span> </span></pre></div> @@ -5253,11 +5285,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.primarykeycolumnconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.primarykeycolumnconstraint_sql-477"><a href="#Generator.primarykeycolumnconstraint_sql-477"><span class="linenos">477</span></a> <span class="k">def</span> <span class="nf">primarykeycolumnconstraint_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">PrimaryKeyColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.primarykeycolumnconstraint_sql-478"><a href="#Generator.primarykeycolumnconstraint_sql-478"><span class="linenos">478</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> -</span><span id="Generator.primarykeycolumnconstraint_sql-479"><a href="#Generator.primarykeycolumnconstraint_sql-479"><span class="linenos">479</span></a> <span class="k">if</span> <span class="n">desc</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.primarykeycolumnconstraint_sql-480"><a href="#Generator.primarykeycolumnconstraint_sql-480"><span class="linenos">480</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY</span><span class="si">{</span><span class="s1">' DESC'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">desc</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ASC'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.primarykeycolumnconstraint_sql-481"><a href="#Generator.primarykeycolumnconstraint_sql-481"><span class="linenos">481</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.primarykeycolumnconstraint_sql-499"><a href="#Generator.primarykeycolumnconstraint_sql-499"><span class="linenos">499</span></a> <span class="k">def</span> <span class="nf">primarykeycolumnconstraint_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">PrimaryKeyColumnConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.primarykeycolumnconstraint_sql-500"><a href="#Generator.primarykeycolumnconstraint_sql-500"><span class="linenos">500</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> +</span><span id="Generator.primarykeycolumnconstraint_sql-501"><a href="#Generator.primarykeycolumnconstraint_sql-501"><span class="linenos">501</span></a> <span class="k">if</span> <span class="n">desc</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.primarykeycolumnconstraint_sql-502"><a href="#Generator.primarykeycolumnconstraint_sql-502"><span class="linenos">502</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY</span><span class="si">{</span><span class="s1">' DESC'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">desc</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ASC'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.primarykeycolumnconstraint_sql-503"><a href="#Generator.primarykeycolumnconstraint_sql-503"><span class="linenos">503</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY"</span> </span></pre></div> @@ -5275,8 +5307,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.uniquecolumnconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.uniquecolumnconstraint_sql-483"><a href="#Generator.uniquecolumnconstraint_sql-483"><span class="linenos">483</span></a> <span class="k">def</span> <span class="nf">uniquecolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.uniquecolumnconstraint_sql-484"><a href="#Generator.uniquecolumnconstraint_sql-484"><span class="linenos">484</span></a> <span class="k">return</span> <span class="s2">"UNIQUE"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.uniquecolumnconstraint_sql-505"><a href="#Generator.uniquecolumnconstraint_sql-505"><span class="linenos">505</span></a> <span class="k">def</span> <span class="nf">uniquecolumnconstraint_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.uniquecolumnconstraint_sql-506"><a href="#Generator.uniquecolumnconstraint_sql-506"><span class="linenos">506</span></a> <span class="k">return</span> <span class="s2">"UNIQUE"</span> </span></pre></div> @@ -5294,143 +5326,114 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.create_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.create_sql-486"><a href="#Generator.create_sql-486"><span class="linenos">486</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.create_sql-487"><a href="#Generator.create_sql-487"><span class="linenos">487</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Generator.create_sql-488"><a href="#Generator.create_sql-488"><span class="linenos">488</span></a> <span class="n">properties</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">"properties"</span><span class="p">)</span> -</span><span id="Generator.create_sql-489"><a href="#Generator.create_sql-489"><span class="linenos">489</span></a> <span class="n">properties_exp</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> -</span><span id="Generator.create_sql-490"><a href="#Generator.create_sql-490"><span class="linenos">490</span></a> <span class="n">properties_locs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">locate_properties</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="p">{}</span> -</span><span id="Generator.create_sql-491"><a href="#Generator.create_sql-491"><span class="linenos">491</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">)</span> <span class="ow">or</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> -</span><span id="Generator.create_sql-492"><a href="#Generator.create_sql-492"><span class="linenos">492</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span> -</span><span id="Generator.create_sql-493"><a href="#Generator.create_sql-493"><span class="linenos">493</span></a> <span class="p">):</span> -</span><span id="Generator.create_sql-494"><a href="#Generator.create_sql-494"><span class="linenos">494</span></a> <span class="n">properties_exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="Generator.create_sql-495"><a href="#Generator.create_sql-495"><span class="linenos">495</span></a> <span class="s2">"properties"</span><span class="p">,</span> -</span><span id="Generator.create_sql-496"><a href="#Generator.create_sql-496"><span class="linenos">496</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> -</span><span id="Generator.create_sql-497"><a href="#Generator.create_sql-497"><span class="linenos">497</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> -</span><span id="Generator.create_sql-498"><a href="#Generator.create_sql-498"><span class="linenos">498</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">],</span> -</span><span id="Generator.create_sql-499"><a href="#Generator.create_sql-499"><span class="linenos">499</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">],</span> -</span><span id="Generator.create_sql-500"><a href="#Generator.create_sql-500"><span class="linenos">500</span></a> <span class="p">]</span> -</span><span id="Generator.create_sql-501"><a href="#Generator.create_sql-501"><span class="linenos">501</span></a> <span class="p">),</span> -</span><span id="Generator.create_sql-502"><a href="#Generator.create_sql-502"><span class="linenos">502</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-503"><a href="#Generator.create_sql-503"><span class="linenos">503</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">"TABLE"</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">):</span> -</span><span id="Generator.create_sql-504"><a href="#Generator.create_sql-504"><span class="linenos">504</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator.create_sql-505"><a href="#Generator.create_sql-505"><span class="linenos">505</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="Generator.create_sql-506"><a href="#Generator.create_sql-506"><span class="linenos">506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]),</span> -</span><span id="Generator.create_sql-507"><a href="#Generator.create_sql-507"><span class="linenos">507</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.create_sql-508"><a href="#Generator.create_sql-508"><span class="linenos">508</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-509"><a href="#Generator.create_sql-509"><span class="linenos">509</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator.create_sql-510"><a href="#Generator.create_sql-510"><span class="linenos">510</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this_name</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">this_properties</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.create_sql-511"><a href="#Generator.create_sql-511"><span class="linenos">511</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-512"><a href="#Generator.create_sql-512"><span class="linenos">512</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.create_sql-513"><a href="#Generator.create_sql-513"><span class="linenos">513</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">"this"</span><span class="p">)</span> -</span><span id="Generator.create_sql-514"><a href="#Generator.create_sql-514"><span class="linenos">514</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">properties_exp</span><span class="p">,</span> <span class="s2">"properties"</span><span class="p">)</span> -</span><span id="Generator.create_sql-515"><a href="#Generator.create_sql-515"><span class="linenos">515</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="s2">" BEGIN"</span> <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">"begin"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-516"><a href="#Generator.create_sql-516"><span class="linenos">516</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator.create_sql-517"><a href="#Generator.create_sql-517"><span class="linenos">517</span></a> <span class="k">if</span> <span class="n">expression_sql</span><span class="p">:</span> -</span><span id="Generator.create_sql-518"><a href="#Generator.create_sql-518"><span class="linenos">518</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">begin</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.create_sql-519"><a href="#Generator.create_sql-519"><span class="linenos">519</span></a> -</span><span id="Generator.create_sql-520"><a href="#Generator.create_sql-520"><span class="linenos">520</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">):</span> -</span><span id="Generator.create_sql-521"><a href="#Generator.create_sql-521"><span class="linenos">521</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">):</span> -</span><span id="Generator.create_sql-522"><a href="#Generator.create_sql-522"><span class="linenos">522</span></a> <span class="n">postalias_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="Generator.create_sql-523"><a href="#Generator.create_sql-523"><span class="linenos">523</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> -</span><span id="Generator.create_sql-524"><a href="#Generator.create_sql-524"><span class="linenos">524</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span> -</span><span id="Generator.create_sql-525"><a href="#Generator.create_sql-525"><span class="linenos">525</span></a> <span class="p">),</span> -</span><span id="Generator.create_sql-526"><a href="#Generator.create_sql-526"><span class="linenos">526</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.create_sql-527"><a href="#Generator.create_sql-527"><span class="linenos">527</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-528"><a href="#Generator.create_sql-528"><span class="linenos">528</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">postalias_props_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.create_sql-529"><a href="#Generator.create_sql-529"><span class="linenos">529</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.create_sql-530"><a href="#Generator.create_sql-530"><span class="linenos">530</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.create_sql-531"><a href="#Generator.create_sql-531"><span class="linenos">531</span></a> -</span><span id="Generator.create_sql-532"><a href="#Generator.create_sql-532"><span class="linenos">532</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-533"><a href="#Generator.create_sql-533"><span class="linenos">533</span></a> <span class="n">transient</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.create_sql-534"><a href="#Generator.create_sql-534"><span class="linenos">534</span></a> <span class="s2">" TRANSIENT"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CREATE_TRANSIENT</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"transient"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-535"><a href="#Generator.create_sql-535"><span class="linenos">535</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-536"><a href="#Generator.create_sql-536"><span class="linenos">536</span></a> <span class="n">external</span> <span class="o">=</span> <span class="s2">" EXTERNAL"</span> <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">"external"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-537"><a href="#Generator.create_sql-537"><span class="linenos">537</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="s2">" OR REPLACE"</span> <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">"replace"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-538"><a href="#Generator.create_sql-538"><span class="linenos">538</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF NOT EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-539"><a href="#Generator.create_sql-539"><span class="linenos">539</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-540"><a href="#Generator.create_sql-540"><span class="linenos">540</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="s2">" MATERIALIZED"</span> <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">"materialized"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-541"><a href="#Generator.create_sql-541"><span class="linenos">541</span></a> <span class="n">set_</span> <span class="o">=</span> <span class="s2">" SET"</span> <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">"set"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-542"><a href="#Generator.create_sql-542"><span class="linenos">542</span></a> <span class="n">multiset</span> <span class="o">=</span> <span class="s2">" MULTISET"</span> <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">"multiset"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-543"><a href="#Generator.create_sql-543"><span class="linenos">543</span></a> <span class="n">global_temporary</span> <span class="o">=</span> <span class="s2">" GLOBAL TEMPORARY"</span> <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">"global_temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-544"><a href="#Generator.create_sql-544"><span class="linenos">544</span></a> <span class="n">volatile</span> <span class="o">=</span> <span class="s2">" VOLATILE"</span> <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">"volatile"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-545"><a href="#Generator.create_sql-545"><span class="linenos">545</span></a> <span class="n">data</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">"data"</span><span class="p">)</span> -</span><span id="Generator.create_sql-546"><a href="#Generator.create_sql-546"><span class="linenos">546</span></a> <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.create_sql-547"><a href="#Generator.create_sql-547"><span class="linenos">547</span></a> <span class="n">data</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-548"><a href="#Generator.create_sql-548"><span class="linenos">548</span></a> <span class="k">elif</span> <span class="n">data</span><span class="p">:</span> -</span><span id="Generator.create_sql-549"><a href="#Generator.create_sql-549"><span class="linenos">549</span></a> <span class="n">data</span> <span class="o">=</span> <span class="s2">" WITH DATA"</span> -</span><span id="Generator.create_sql-550"><a href="#Generator.create_sql-550"><span class="linenos">550</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.create_sql-551"><a href="#Generator.create_sql-551"><span class="linenos">551</span></a> <span class="n">data</span> <span class="o">=</span> <span class="s2">" WITH NO DATA"</span> -</span><span id="Generator.create_sql-552"><a href="#Generator.create_sql-552"><span class="linenos">552</span></a> <span class="n">statistics</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">"statistics"</span><span class="p">)</span> -</span><span id="Generator.create_sql-553"><a href="#Generator.create_sql-553"><span class="linenos">553</span></a> <span class="k">if</span> <span class="n">statistics</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.create_sql-554"><a href="#Generator.create_sql-554"><span class="linenos">554</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-555"><a href="#Generator.create_sql-555"><span class="linenos">555</span></a> <span class="k">elif</span> <span class="n">statistics</span><span class="p">:</span> -</span><span id="Generator.create_sql-556"><a href="#Generator.create_sql-556"><span class="linenos">556</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="s2">" AND STATISTICS"</span> -</span><span id="Generator.create_sql-557"><a href="#Generator.create_sql-557"><span class="linenos">557</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.create_sql-558"><a href="#Generator.create_sql-558"><span class="linenos">558</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="s2">" AND NO STATISTICS"</span> -</span><span id="Generator.create_sql-559"><a href="#Generator.create_sql-559"><span class="linenos">559</span></a> <span class="n">no_primary_index</span> <span class="o">=</span> <span class="s2">" NO PRIMARY INDEX"</span> <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">"no_primary_index"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-560"><a href="#Generator.create_sql-560"><span class="linenos">560</span></a> -</span><span id="Generator.create_sql-561"><a href="#Generator.create_sql-561"><span class="linenos">561</span></a> <span class="n">indexes</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">"indexes"</span><span class="p">)</span> -</span><span id="Generator.create_sql-562"><a href="#Generator.create_sql-562"><span class="linenos">562</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-563"><a href="#Generator.create_sql-563"><span class="linenos">563</span></a> <span class="k">if</span> <span class="n">indexes</span><span class="p">:</span> -</span><span id="Generator.create_sql-564"><a href="#Generator.create_sql-564"><span class="linenos">564</span></a> <span class="n">indexes_sql</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator.create_sql-565"><a href="#Generator.create_sql-565"><span class="linenos">565</span></a> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="n">indexes</span><span class="p">:</span> -</span><span id="Generator.create_sql-566"><a href="#Generator.create_sql-566"><span class="linenos">566</span></a> <span class="n">ind_unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <span class="k">if</span> <span class="n">index</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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-567"><a href="#Generator.create_sql-567"><span class="linenos">567</span></a> <span class="n">ind_primary</span> <span class="o">=</span> <span class="s2">" PRIMARY"</span> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-568"><a href="#Generator.create_sql-568"><span class="linenos">568</span></a> <span class="n">ind_amp</span> <span class="o">=</span> <span class="s2">" AMP"</span> <span class="k">if</span> <span class="n">index</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">"amp"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-569"><a href="#Generator.create_sql-569"><span class="linenos">569</span></a> <span class="n">ind_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">index</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">index</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-570"><a href="#Generator.create_sql-570"><span class="linenos">570</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.create_sql-571"><a href="#Generator.create_sql-571"><span class="linenos">571</span></a> <span class="sa">f</span><span class="s1">' (</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">index</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="o">=</span><span class="s2">"columns"</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="s1">)'</span> -</span><span id="Generator.create_sql-572"><a href="#Generator.create_sql-572"><span class="linenos">572</span></a> <span class="k">if</span> <span class="n">index</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">"columns"</span><span class="p">)</span> -</span><span id="Generator.create_sql-573"><a href="#Generator.create_sql-573"><span class="linenos">573</span></a> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-574"><a href="#Generator.create_sql-574"><span class="linenos">574</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-575"><a href="#Generator.create_sql-575"><span class="linenos">575</span></a> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> -</span><span id="Generator.create_sql-576"><a href="#Generator.create_sql-576"><span class="linenos">576</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span> -</span><span id="Generator.create_sql-577"><a href="#Generator.create_sql-577"><span class="linenos">577</span></a> <span class="p">):</span> -</span><span id="Generator.create_sql-578"><a href="#Generator.create_sql-578"><span class="linenos">578</span></a> <span class="n">postindex_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="Generator.create_sql-579"><a href="#Generator.create_sql-579"><span class="linenos">579</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> -</span><span id="Generator.create_sql-580"><a href="#Generator.create_sql-580"><span class="linenos">580</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span> -</span><span id="Generator.create_sql-581"><a href="#Generator.create_sql-581"><span class="linenos">581</span></a> <span class="p">),</span> -</span><span id="Generator.create_sql-582"><a href="#Generator.create_sql-582"><span class="linenos">582</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.create_sql-583"><a href="#Generator.create_sql-583"><span class="linenos">583</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-584"><a href="#Generator.create_sql-584"><span class="linenos">584</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">postindex_props_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.create_sql-585"><a href="#Generator.create_sql-585"><span class="linenos">585</span></a> -</span><span id="Generator.create_sql-586"><a href="#Generator.create_sql-586"><span class="linenos">586</span></a> <span class="n">indexes_sql</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Generator.create_sql-587"><a href="#Generator.create_sql-587"><span class="linenos">587</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_unique</span><span class="si">}{</span><span class="n">ind_primary</span><span class="si">}{</span><span class="n">ind_amp</span><span class="si">}</span><span class="s2"> INDEX</span><span class="si">{</span><span class="n">ind_name</span><span class="si">}{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.create_sql-588"><a href="#Generator.create_sql-588"><span class="linenos">588</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-589"><a href="#Generator.create_sql-589"><span class="linenos">589</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">indexes_sql</span><span class="p">)</span> -</span><span id="Generator.create_sql-590"><a href="#Generator.create_sql-590"><span class="linenos">590</span></a> -</span><span id="Generator.create_sql-591"><a href="#Generator.create_sql-591"><span class="linenos">591</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-592"><a href="#Generator.create_sql-592"><span class="linenos">592</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">):</span> -</span><span id="Generator.create_sql-593"><a href="#Generator.create_sql-593"><span class="linenos">593</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> -</span><span id="Generator.create_sql-594"><a href="#Generator.create_sql-594"><span class="linenos">594</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]),</span> -</span><span id="Generator.create_sql-595"><a href="#Generator.create_sql-595"><span class="linenos">595</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> -</span><span id="Generator.create_sql-596"><a href="#Generator.create_sql-596"><span class="linenos">596</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> -</span><span id="Generator.create_sql-597"><a href="#Generator.create_sql-597"><span class="linenos">597</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.create_sql-598"><a href="#Generator.create_sql-598"><span class="linenos">598</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-599"><a href="#Generator.create_sql-599"><span class="linenos">599</span></a> -</span><span id="Generator.create_sql-600"><a href="#Generator.create_sql-600"><span class="linenos">600</span></a> <span class="n">modifiers</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator.create_sql-601"><a href="#Generator.create_sql-601"><span class="linenos">601</span></a> <span class="p">(</span> -</span><span id="Generator.create_sql-602"><a href="#Generator.create_sql-602"><span class="linenos">602</span></a> <span class="n">replace</span><span class="p">,</span> -</span><span id="Generator.create_sql-603"><a href="#Generator.create_sql-603"><span class="linenos">603</span></a> <span class="n">temporary</span><span class="p">,</span> -</span><span id="Generator.create_sql-604"><a href="#Generator.create_sql-604"><span class="linenos">604</span></a> <span class="n">transient</span><span class="p">,</span> -</span><span id="Generator.create_sql-605"><a href="#Generator.create_sql-605"><span class="linenos">605</span></a> <span class="n">external</span><span class="p">,</span> -</span><span id="Generator.create_sql-606"><a href="#Generator.create_sql-606"><span class="linenos">606</span></a> <span class="n">unique</span><span class="p">,</span> -</span><span id="Generator.create_sql-607"><a href="#Generator.create_sql-607"><span class="linenos">607</span></a> <span class="n">materialized</span><span class="p">,</span> -</span><span id="Generator.create_sql-608"><a href="#Generator.create_sql-608"><span class="linenos">608</span></a> <span class="n">set_</span><span class="p">,</span> -</span><span id="Generator.create_sql-609"><a href="#Generator.create_sql-609"><span class="linenos">609</span></a> <span class="n">multiset</span><span class="p">,</span> -</span><span id="Generator.create_sql-610"><a href="#Generator.create_sql-610"><span class="linenos">610</span></a> <span class="n">global_temporary</span><span class="p">,</span> -</span><span id="Generator.create_sql-611"><a href="#Generator.create_sql-611"><span class="linenos">611</span></a> <span class="n">volatile</span><span class="p">,</span> -</span><span id="Generator.create_sql-612"><a href="#Generator.create_sql-612"><span class="linenos">612</span></a> <span class="n">postcreate_props_sql</span><span class="p">,</span> -</span><span id="Generator.create_sql-613"><a href="#Generator.create_sql-613"><span class="linenos">613</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-614"><a href="#Generator.create_sql-614"><span class="linenos">614</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-615"><a href="#Generator.create_sql-615"><span class="linenos">615</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.create_sql-616"><a href="#Generator.create_sql-616"><span class="linenos">616</span></a> <span class="s2">" WITH NO SCHEMA BINDING"</span> <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">"no_schema_binding"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.create_sql-617"><a href="#Generator.create_sql-617"><span class="linenos">617</span></a> <span class="p">)</span> -</span><span id="Generator.create_sql-618"><a href="#Generator.create_sql-618"><span class="linenos">618</span></a> -</span><span id="Generator.create_sql-619"><a href="#Generator.create_sql-619"><span class="linenos">619</span></a> <span class="n">post_expression_modifiers</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">data</span><span class="p">,</span> <span class="n">statistics</span><span class="p">,</span> <span class="n">no_primary_index</span><span class="p">))</span> -</span><span id="Generator.create_sql-620"><a href="#Generator.create_sql-620"><span class="linenos">620</span></a> -</span><span id="Generator.create_sql-621"><a href="#Generator.create_sql-621"><span class="linenos">621</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREATE</span><span class="si">{</span><span class="n">modifiers</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">properties_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">post_expression_modifiers</span><span class="si">}{</span><span class="n">index_sql</span><span class="si">}{</span><span class="n">no_schema_binding</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.create_sql-622"><a href="#Generator.create_sql-622"><span class="linenos">622</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.create_sql-508"><a href="#Generator.create_sql-508"><span class="linenos">508</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.create_sql-509"><a href="#Generator.create_sql-509"><span class="linenos">509</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Generator.create_sql-510"><a href="#Generator.create_sql-510"><span class="linenos">510</span></a> <span class="n">properties</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">"properties"</span><span class="p">)</span> +</span><span id="Generator.create_sql-511"><a href="#Generator.create_sql-511"><span class="linenos">511</span></a> <span class="n">properties_exp</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span> +</span><span id="Generator.create_sql-512"><a href="#Generator.create_sql-512"><span class="linenos">512</span></a> <span class="n">properties_locs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">locate_properties</span><span class="p">(</span><span class="n">properties</span><span class="p">)</span> <span class="k">if</span> <span class="n">properties</span> <span class="k">else</span> <span class="p">{}</span> +</span><span id="Generator.create_sql-513"><a href="#Generator.create_sql-513"><span class="linenos">513</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">)</span> <span class="ow">or</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> +</span><span id="Generator.create_sql-514"><a href="#Generator.create_sql-514"><span class="linenos">514</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span> +</span><span id="Generator.create_sql-515"><a href="#Generator.create_sql-515"><span class="linenos">515</span></a> <span class="p">):</span> +</span><span id="Generator.create_sql-516"><a href="#Generator.create_sql-516"><span class="linenos">516</span></a> <span class="n">properties_exp</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="Generator.create_sql-517"><a href="#Generator.create_sql-517"><span class="linenos">517</span></a> <span class="s2">"properties"</span><span class="p">,</span> +</span><span id="Generator.create_sql-518"><a href="#Generator.create_sql-518"><span class="linenos">518</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="Generator.create_sql-519"><a href="#Generator.create_sql-519"><span class="linenos">519</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span> +</span><span id="Generator.create_sql-520"><a href="#Generator.create_sql-520"><span class="linenos">520</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">],</span> +</span><span id="Generator.create_sql-521"><a href="#Generator.create_sql-521"><span class="linenos">521</span></a> <span class="o">*</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">],</span> +</span><span id="Generator.create_sql-522"><a href="#Generator.create_sql-522"><span class="linenos">522</span></a> <span class="p">]</span> +</span><span id="Generator.create_sql-523"><a href="#Generator.create_sql-523"><span class="linenos">523</span></a> <span class="p">),</span> +</span><span id="Generator.create_sql-524"><a href="#Generator.create_sql-524"><span class="linenos">524</span></a> <span class="p">)</span> +</span><span id="Generator.create_sql-525"><a href="#Generator.create_sql-525"><span class="linenos">525</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="s2">"TABLE"</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">):</span> +</span><span id="Generator.create_sql-526"><a href="#Generator.create_sql-526"><span class="linenos">526</span></a> <span class="n">this_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator.create_sql-527"><a href="#Generator.create_sql-527"><span class="linenos">527</span></a> <span class="n">this_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator.create_sql-528"><a href="#Generator.create_sql-528"><span class="linenos">528</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]),</span> +</span><span id="Generator.create_sql-529"><a href="#Generator.create_sql-529"><span class="linenos">529</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.create_sql-530"><a href="#Generator.create_sql-530"><span class="linenos">530</span></a> <span class="p">)</span> +</span><span id="Generator.create_sql-531"><a href="#Generator.create_sql-531"><span class="linenos">531</span></a> <span class="n">this_schema</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator.create_sql-532"><a href="#Generator.create_sql-532"><span class="linenos">532</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this_name</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">this_properties</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_schema</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.create_sql-533"><a href="#Generator.create_sql-533"><span class="linenos">533</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-534"><a href="#Generator.create_sql-534"><span class="linenos">534</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.create_sql-535"><a href="#Generator.create_sql-535"><span class="linenos">535</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">"this"</span><span class="p">)</span> +</span><span id="Generator.create_sql-536"><a href="#Generator.create_sql-536"><span class="linenos">536</span></a> <span class="n">properties_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">properties_exp</span><span class="p">,</span> <span class="s2">"properties"</span><span class="p">)</span> +</span><span id="Generator.create_sql-537"><a href="#Generator.create_sql-537"><span class="linenos">537</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="s2">" BEGIN"</span> <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">"begin"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-538"><a href="#Generator.create_sql-538"><span class="linenos">538</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator.create_sql-539"><a href="#Generator.create_sql-539"><span class="linenos">539</span></a> <span class="k">if</span> <span class="n">expression_sql</span><span class="p">:</span> +</span><span id="Generator.create_sql-540"><a href="#Generator.create_sql-540"><span class="linenos">540</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">begin</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.create_sql-541"><a href="#Generator.create_sql-541"><span class="linenos">541</span></a> +</span><span id="Generator.create_sql-542"><a href="#Generator.create_sql-542"><span class="linenos">542</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">CREATE_FUNCTION_RETURN_AS</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">):</span> +</span><span id="Generator.create_sql-543"><a href="#Generator.create_sql-543"><span class="linenos">543</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">):</span> +</span><span id="Generator.create_sql-544"><a href="#Generator.create_sql-544"><span class="linenos">544</span></a> <span class="n">postalias_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator.create_sql-545"><a href="#Generator.create_sql-545"><span class="linenos">545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="Generator.create_sql-546"><a href="#Generator.create_sql-546"><span class="linenos">546</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span> +</span><span id="Generator.create_sql-547"><a href="#Generator.create_sql-547"><span class="linenos">547</span></a> <span class="p">),</span> +</span><span id="Generator.create_sql-548"><a href="#Generator.create_sql-548"><span class="linenos">548</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.create_sql-549"><a href="#Generator.create_sql-549"><span class="linenos">549</span></a> <span class="p">)</span> +</span><span id="Generator.create_sql-550"><a href="#Generator.create_sql-550"><span class="linenos">550</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">postalias_props_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.create_sql-551"><a href="#Generator.create_sql-551"><span class="linenos">551</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.create_sql-552"><a href="#Generator.create_sql-552"><span class="linenos">552</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.create_sql-553"><a href="#Generator.create_sql-553"><span class="linenos">553</span></a> +</span><span id="Generator.create_sql-554"><a href="#Generator.create_sql-554"><span class="linenos">554</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="s2">" OR REPLACE"</span> <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">"replace"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-555"><a href="#Generator.create_sql-555"><span class="linenos">555</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-556"><a href="#Generator.create_sql-556"><span class="linenos">556</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF NOT EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-557"><a href="#Generator.create_sql-557"><span class="linenos">557</span></a> +</span><span id="Generator.create_sql-558"><a href="#Generator.create_sql-558"><span class="linenos">558</span></a> <span class="n">indexes</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">"indexes"</span><span class="p">)</span> +</span><span id="Generator.create_sql-559"><a href="#Generator.create_sql-559"><span class="linenos">559</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-560"><a href="#Generator.create_sql-560"><span class="linenos">560</span></a> <span class="k">if</span> <span class="n">indexes</span><span class="p">:</span> +</span><span id="Generator.create_sql-561"><a href="#Generator.create_sql-561"><span class="linenos">561</span></a> <span class="n">indexes_sql</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator.create_sql-562"><a href="#Generator.create_sql-562"><span class="linenos">562</span></a> <span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="n">indexes</span><span class="p">:</span> +</span><span id="Generator.create_sql-563"><a href="#Generator.create_sql-563"><span class="linenos">563</span></a> <span class="n">ind_unique</span> <span class="o">=</span> <span class="s2">" UNIQUE"</span> <span class="k">if</span> <span class="n">index</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">"unique"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-564"><a href="#Generator.create_sql-564"><span class="linenos">564</span></a> <span class="n">ind_primary</span> <span class="o">=</span> <span class="s2">" PRIMARY"</span> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-565"><a href="#Generator.create_sql-565"><span class="linenos">565</span></a> <span class="n">ind_amp</span> <span class="o">=</span> <span class="s2">" AMP"</span> <span class="k">if</span> <span class="n">index</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">"amp"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-566"><a href="#Generator.create_sql-566"><span class="linenos">566</span></a> <span class="n">ind_name</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">index</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">index</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-567"><a href="#Generator.create_sql-567"><span class="linenos">567</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.create_sql-568"><a href="#Generator.create_sql-568"><span class="linenos">568</span></a> <span class="sa">f</span><span class="s1">' (</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">index</span><span class="p">,</span><span class="w"> </span><span class="n">key</span><span class="o">=</span><span class="s2">"columns"</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="s1">)'</span> +</span><span id="Generator.create_sql-569"><a href="#Generator.create_sql-569"><span class="linenos">569</span></a> <span class="k">if</span> <span class="n">index</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">"columns"</span><span class="p">)</span> +</span><span id="Generator.create_sql-570"><a href="#Generator.create_sql-570"><span class="linenos">570</span></a> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-571"><a href="#Generator.create_sql-571"><span class="linenos">571</span></a> <span class="p">)</span> +</span><span id="Generator.create_sql-572"><a href="#Generator.create_sql-572"><span class="linenos">572</span></a> <span class="k">if</span> <span class="n">index</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">"primary"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span> +</span><span id="Generator.create_sql-573"><a href="#Generator.create_sql-573"><span class="linenos">573</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span> +</span><span id="Generator.create_sql-574"><a href="#Generator.create_sql-574"><span class="linenos">574</span></a> <span class="p">):</span> +</span><span id="Generator.create_sql-575"><a href="#Generator.create_sql-575"><span class="linenos">575</span></a> <span class="n">postindex_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator.create_sql-576"><a href="#Generator.create_sql-576"><span class="linenos">576</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="Generator.create_sql-577"><a href="#Generator.create_sql-577"><span class="linenos">577</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span> +</span><span id="Generator.create_sql-578"><a href="#Generator.create_sql-578"><span class="linenos">578</span></a> <span class="p">),</span> +</span><span id="Generator.create_sql-579"><a href="#Generator.create_sql-579"><span class="linenos">579</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.create_sql-580"><a href="#Generator.create_sql-580"><span class="linenos">580</span></a> <span class="p">)</span> +</span><span id="Generator.create_sql-581"><a href="#Generator.create_sql-581"><span class="linenos">581</span></a> <span class="n">ind_columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">postindex_props_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.create_sql-582"><a href="#Generator.create_sql-582"><span class="linenos">582</span></a> +</span><span id="Generator.create_sql-583"><a href="#Generator.create_sql-583"><span class="linenos">583</span></a> <span class="n">indexes_sql</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Generator.create_sql-584"><a href="#Generator.create_sql-584"><span class="linenos">584</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">ind_unique</span><span class="si">}{</span><span class="n">ind_primary</span><span class="si">}{</span><span class="n">ind_amp</span><span class="si">}</span><span class="s2"> INDEX</span><span class="si">{</span><span class="n">ind_name</span><span class="si">}{</span><span class="n">ind_columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.create_sql-585"><a href="#Generator.create_sql-585"><span class="linenos">585</span></a> <span class="p">)</span> +</span><span id="Generator.create_sql-586"><a href="#Generator.create_sql-586"><span class="linenos">586</span></a> <span class="n">index_sql</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">indexes_sql</span><span class="p">)</span> +</span><span id="Generator.create_sql-587"><a href="#Generator.create_sql-587"><span class="linenos">587</span></a> +</span><span id="Generator.create_sql-588"><a href="#Generator.create_sql-588"><span class="linenos">588</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-589"><a href="#Generator.create_sql-589"><span class="linenos">589</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">):</span> +</span><span id="Generator.create_sql-590"><a href="#Generator.create_sql-590"><span class="linenos">590</span></a> <span class="n">postcreate_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator.create_sql-591"><a href="#Generator.create_sql-591"><span class="linenos">591</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]),</span> +</span><span id="Generator.create_sql-592"><a href="#Generator.create_sql-592"><span class="linenos">592</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="Generator.create_sql-593"><a href="#Generator.create_sql-593"><span class="linenos">593</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="Generator.create_sql-594"><a href="#Generator.create_sql-594"><span class="linenos">594</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.create_sql-595"><a href="#Generator.create_sql-595"><span class="linenos">595</span></a> <span class="p">)</span> +</span><span id="Generator.create_sql-596"><a href="#Generator.create_sql-596"><span class="linenos">596</span></a> +</span><span id="Generator.create_sql-597"><a href="#Generator.create_sql-597"><span class="linenos">597</span></a> <span class="n">modifiers</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">replace</span><span class="p">,</span> <span class="n">unique</span><span class="p">,</span> <span class="n">postcreate_props_sql</span><span class="p">))</span> +</span><span id="Generator.create_sql-598"><a href="#Generator.create_sql-598"><span class="linenos">598</span></a> +</span><span id="Generator.create_sql-599"><a href="#Generator.create_sql-599"><span class="linenos">599</span></a> <span class="n">postexpression_props_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-600"><a href="#Generator.create_sql-600"><span class="linenos">600</span></a> <span class="k">if</span> <span class="n">properties_locs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">):</span> +</span><span id="Generator.create_sql-601"><a href="#Generator.create_sql-601"><span class="linenos">601</span></a> <span class="n">postexpression_props_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span> +</span><span id="Generator.create_sql-602"><a href="#Generator.create_sql-602"><span class="linenos">602</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span> +</span><span id="Generator.create_sql-603"><a href="#Generator.create_sql-603"><span class="linenos">603</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">]</span> +</span><span id="Generator.create_sql-604"><a href="#Generator.create_sql-604"><span class="linenos">604</span></a> <span class="p">),</span> +</span><span id="Generator.create_sql-605"><a href="#Generator.create_sql-605"><span class="linenos">605</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="Generator.create_sql-606"><a href="#Generator.create_sql-606"><span class="linenos">606</span></a> <span class="n">prefix</span><span class="o">=</span><span class="s2">" "</span><span class="p">,</span> +</span><span id="Generator.create_sql-607"><a href="#Generator.create_sql-607"><span class="linenos">607</span></a> <span class="n">wrapped</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.create_sql-608"><a href="#Generator.create_sql-608"><span class="linenos">608</span></a> <span class="p">)</span> +</span><span id="Generator.create_sql-609"><a href="#Generator.create_sql-609"><span class="linenos">609</span></a> +</span><span id="Generator.create_sql-610"><a href="#Generator.create_sql-610"><span class="linenos">610</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.create_sql-611"><a href="#Generator.create_sql-611"><span class="linenos">611</span></a> <span class="s2">" WITH NO SCHEMA BINDING"</span> <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">"no_schema_binding"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.create_sql-612"><a href="#Generator.create_sql-612"><span class="linenos">612</span></a> <span class="p">)</span> +</span><span id="Generator.create_sql-613"><a href="#Generator.create_sql-613"><span class="linenos">613</span></a> +</span><span id="Generator.create_sql-614"><a href="#Generator.create_sql-614"><span class="linenos">614</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"CREATE</span><span class="si">{</span><span class="n">modifiers</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">properties_sql</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">postexpression_props_sql</span><span class="si">}{</span><span class="n">index_sql</span><span class="si">}{</span><span class="n">no_schema_binding</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.create_sql-615"><a href="#Generator.create_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">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_sql</span><span class="p">)</span> </span></pre></div> @@ -5448,8 +5451,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.describe_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.describe_sql-624"><a href="#Generator.describe_sql-624"><span class="linenos">624</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.describe_sql-625"><a href="#Generator.describe_sql-625"><span class="linenos">625</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.describe_sql-617"><a href="#Generator.describe_sql-617"><span class="linenos">617</span></a> <span class="k">def</span> <span class="nf">describe_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">Describe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.describe_sql-618"><a href="#Generator.describe_sql-618"><span class="linenos">618</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DESCRIBE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5467,11 +5470,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.prepend_ctes"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.prepend_ctes-627"><a href="#Generator.prepend_ctes-627"><span class="linenos">627</span></a> <span class="k">def</span> <span class="nf">prepend_ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.prepend_ctes-628"><a href="#Generator.prepend_ctes-628"><span class="linenos">628</span></a> <span class="n">with_</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">"with"</span><span class="p">)</span> -</span><span id="Generator.prepend_ctes-629"><a href="#Generator.prepend_ctes-629"><span class="linenos">629</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> -</span><span id="Generator.prepend_ctes-630"><a href="#Generator.prepend_ctes-630"><span class="linenos">630</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">with_</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.prepend_ctes-631"><a href="#Generator.prepend_ctes-631"><span class="linenos">631</span></a> <span class="k">return</span> <span class="n">sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.prepend_ctes-620"><a href="#Generator.prepend_ctes-620"><span class="linenos">620</span></a> <span class="k">def</span> <span class="nf">prepend_ctes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.prepend_ctes-621"><a href="#Generator.prepend_ctes-621"><span class="linenos">621</span></a> <span class="n">with_</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">"with"</span><span class="p">)</span> +</span><span id="Generator.prepend_ctes-622"><a href="#Generator.prepend_ctes-622"><span class="linenos">622</span></a> <span class="k">if</span> <span class="n">with_</span><span class="p">:</span> +</span><span id="Generator.prepend_ctes-623"><a href="#Generator.prepend_ctes-623"><span class="linenos">623</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">with_</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.prepend_ctes-624"><a href="#Generator.prepend_ctes-624"><span class="linenos">624</span></a> <span class="k">return</span> <span class="n">sql</span> </span></pre></div> @@ -5489,11 +5492,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.with_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.with_sql-633"><a href="#Generator.with_sql-633"><span class="linenos">633</span></a> <span class="k">def</span> <span class="nf">with_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">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.with_sql-634"><a href="#Generator.with_sql-634"><span class="linenos">634</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.with_sql-635"><a href="#Generator.with_sql-635"><span class="linenos">635</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="s2">"RECURSIVE "</span> <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">"recursive"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.with_sql-636"><a href="#Generator.with_sql-636"><span class="linenos">636</span></a> -</span><span id="Generator.with_sql-637"><a href="#Generator.with_sql-637"><span class="linenos">637</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH </span><span class="si">{</span><span class="n">recursive</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.with_sql-626"><a href="#Generator.with_sql-626"><span class="linenos">626</span></a> <span class="k">def</span> <span class="nf">with_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">With</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.with_sql-627"><a href="#Generator.with_sql-627"><span class="linenos">627</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.with_sql-628"><a href="#Generator.with_sql-628"><span class="linenos">628</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="s2">"RECURSIVE "</span> <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">"recursive"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.with_sql-629"><a href="#Generator.with_sql-629"><span class="linenos">629</span></a> +</span><span id="Generator.with_sql-630"><a href="#Generator.with_sql-630"><span class="linenos">630</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH </span><span class="si">{</span><span class="n">recursive</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5511,9 +5514,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.cte_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.cte_sql-639"><a href="#Generator.cte_sql-639"><span class="linenos">639</span></a> <span class="k">def</span> <span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.cte_sql-640"><a href="#Generator.cte_sql-640"><span class="linenos">640</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator.cte_sql-641"><a href="#Generator.cte_sql-641"><span class="linenos">641</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.cte_sql-632"><a href="#Generator.cte_sql-632"><span class="linenos">632</span></a> <span class="k">def</span> <span class="nf">cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.cte_sql-633"><a href="#Generator.cte_sql-633"><span class="linenos">633</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.cte_sql-634"><a href="#Generator.cte_sql-634"><span class="linenos">634</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5531,11 +5534,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.tablealias_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.tablealias_sql-643"><a href="#Generator.tablealias_sql-643"><span class="linenos">643</span></a> <span class="k">def</span> <span class="nf">tablealias_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">TableAlias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.tablealias_sql-644"><a href="#Generator.tablealias_sql-644"><span class="linenos">644</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator.tablealias_sql-645"><a href="#Generator.tablealias_sql-645"><span class="linenos">645</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.tablealias_sql-646"><a href="#Generator.tablealias_sql-646"><span class="linenos">646</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.tablealias_sql-647"><a href="#Generator.tablealias_sql-647"><span class="linenos">647</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.tablealias_sql-636"><a href="#Generator.tablealias_sql-636"><span class="linenos">636</span></a> <span class="k">def</span> <span class="nf">tablealias_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">TableAlias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.tablealias_sql-637"><a href="#Generator.tablealias_sql-637"><span class="linenos">637</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator.tablealias_sql-638"><a href="#Generator.tablealias_sql-638"><span class="linenos">638</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.tablealias_sql-639"><a href="#Generator.tablealias_sql-639"><span class="linenos">639</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.tablealias_sql-640"><a href="#Generator.tablealias_sql-640"><span class="linenos">640</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">alias</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5553,8 +5556,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.bitstring_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitstring_sql-649"><a href="#Generator.bitstring_sql-649"><span class="linenos">649</span></a> <span class="k">def</span> <span class="nf">bitstring_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">BitString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.bitstring_sql-650"><a href="#Generator.bitstring_sql-650"><span class="linenos">650</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitstring_sql-642"><a href="#Generator.bitstring_sql-642"><span class="linenos">642</span></a> <span class="k">def</span> <span class="nf">bitstring_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">BitString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.bitstring_sql-643"><a href="#Generator.bitstring_sql-643"><span class="linenos">643</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> </span></pre></div> @@ -5572,8 +5575,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.hexstring_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.hexstring_sql-652"><a href="#Generator.hexstring_sql-652"><span class="linenos">652</span></a> <span class="k">def</span> <span class="nf">hexstring_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">HexString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.hexstring_sql-653"><a href="#Generator.hexstring_sql-653"><span class="linenos">653</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.hexstring_sql-645"><a href="#Generator.hexstring_sql-645"><span class="linenos">645</span></a> <span class="k">def</span> <span class="nf">hexstring_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">HexString</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.hexstring_sql-646"><a href="#Generator.hexstring_sql-646"><span class="linenos">646</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> </span></pre></div> @@ -5591,24 +5594,24 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.datatype_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.datatype_sql-655"><a href="#Generator.datatype_sql-655"><span class="linenos">655</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.datatype_sql-656"><a href="#Generator.datatype_sql-656"><span class="linenos">656</span></a> <span class="n">type_value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> -</span><span id="Generator.datatype_sql-657"><a href="#Generator.datatype_sql-657"><span class="linenos">657</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_value</span><span class="p">,</span> <span class="n">type_value</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> -</span><span id="Generator.datatype_sql-658"><a href="#Generator.datatype_sql-658"><span class="linenos">658</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.datatype_sql-659"><a href="#Generator.datatype_sql-659"><span class="linenos">659</span></a> <span class="n">interior</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.datatype_sql-660"><a href="#Generator.datatype_sql-660"><span class="linenos">660</span></a> <span class="n">values</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.datatype_sql-661"><a href="#Generator.datatype_sql-661"><span class="linenos">661</span></a> <span class="k">if</span> <span class="n">interior</span><span class="p">:</span> -</span><span id="Generator.datatype_sql-662"><a href="#Generator.datatype_sql-662"><span class="linenos">662</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">"nested"</span><span class="p">):</span> -</span><span id="Generator.datatype_sql-663"><a href="#Generator.datatype_sql-663"><span class="linenos">663</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="n">interior</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.datatype_sql-664"><a href="#Generator.datatype_sql-664"><span class="linenos">664</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">"values"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.datatype_sql-665"><a href="#Generator.datatype_sql-665"><span class="linenos">665</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="s2">"]"</span><span class="p">)</span> <span class="k">if</span> <span class="n">type_value</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">ARRAY</span> <span class="k">else</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> -</span><span id="Generator.datatype_sql-666"><a href="#Generator.datatype_sql-666"><span class="linenos">666</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.datatype_sql-667"><a href="#Generator.datatype_sql-667"><span class="linenos">667</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'values'</span><span class="p">)</span><span class="si">}{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.datatype_sql-668"><a href="#Generator.datatype_sql-668"><span class="linenos">668</span></a> <span class="p">)</span> -</span><span id="Generator.datatype_sql-669"><a href="#Generator.datatype_sql-669"><span class="linenos">669</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.datatype_sql-670"><a href="#Generator.datatype_sql-670"><span class="linenos">670</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">interior</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator.datatype_sql-671"><a href="#Generator.datatype_sql-671"><span class="linenos">671</span></a> -</span><span id="Generator.datatype_sql-672"><a href="#Generator.datatype_sql-672"><span class="linenos">672</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}{</span><span class="n">nested</span><span class="si">}{</span><span class="n">values</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.datatype_sql-648"><a href="#Generator.datatype_sql-648"><span class="linenos">648</span></a> <span class="k">def</span> <span class="nf">datatype_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.datatype_sql-649"><a href="#Generator.datatype_sql-649"><span class="linenos">649</span></a> <span class="n">type_value</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> +</span><span id="Generator.datatype_sql-650"><a href="#Generator.datatype_sql-650"><span class="linenos">650</span></a> <span class="n">type_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">type_value</span><span class="p">,</span> <span class="n">type_value</span><span class="o">.</span><span class="n">value</span><span class="p">)</span> +</span><span id="Generator.datatype_sql-651"><a href="#Generator.datatype_sql-651"><span class="linenos">651</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.datatype_sql-652"><a href="#Generator.datatype_sql-652"><span class="linenos">652</span></a> <span class="n">interior</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.datatype_sql-653"><a href="#Generator.datatype_sql-653"><span class="linenos">653</span></a> <span class="n">values</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.datatype_sql-654"><a href="#Generator.datatype_sql-654"><span class="linenos">654</span></a> <span class="k">if</span> <span class="n">interior</span><span class="p">:</span> +</span><span id="Generator.datatype_sql-655"><a href="#Generator.datatype_sql-655"><span class="linenos">655</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">"nested"</span><span class="p">):</span> +</span><span id="Generator.datatype_sql-656"><a href="#Generator.datatype_sql-656"><span class="linenos">656</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="n">interior</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">STRUCT_DELIMITER</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.datatype_sql-657"><a href="#Generator.datatype_sql-657"><span class="linenos">657</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">"values"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.datatype_sql-658"><a href="#Generator.datatype_sql-658"><span class="linenos">658</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"["</span><span class="p">,</span> <span class="s2">"]"</span><span class="p">)</span> <span class="k">if</span> <span class="n">type_value</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">ARRAY</span> <span class="k">else</span> <span class="p">(</span><span class="s2">"("</span><span class="p">,</span> <span class="s2">")"</span><span class="p">)</span> +</span><span id="Generator.datatype_sql-659"><a href="#Generator.datatype_sql-659"><span class="linenos">659</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.datatype_sql-660"><a href="#Generator.datatype_sql-660"><span class="linenos">660</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'values'</span><span class="p">)</span><span class="si">}{</span><span class="n">delimiters</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.datatype_sql-661"><a href="#Generator.datatype_sql-661"><span class="linenos">661</span></a> <span class="p">)</span> +</span><span id="Generator.datatype_sql-662"><a href="#Generator.datatype_sql-662"><span class="linenos">662</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.datatype_sql-663"><a href="#Generator.datatype_sql-663"><span class="linenos">663</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">interior</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator.datatype_sql-664"><a href="#Generator.datatype_sql-664"><span class="linenos">664</span></a> +</span><span id="Generator.datatype_sql-665"><a href="#Generator.datatype_sql-665"><span class="linenos">665</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">type_sql</span><span class="si">}{</span><span class="n">nested</span><span class="si">}{</span><span class="n">values</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5626,11 +5629,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.directory_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.directory_sql-674"><a href="#Generator.directory_sql-674"><span class="linenos">674</span></a> <span class="k">def</span> <span class="nf">directory_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">Directory</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.directory_sql-675"><a href="#Generator.directory_sql-675"><span class="linenos">675</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.directory_sql-676"><a href="#Generator.directory_sql-676"><span class="linenos">676</span></a> <span class="n">row_format</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">"row_format"</span><span class="p">)</span> -</span><span id="Generator.directory_sql-677"><a href="#Generator.directory_sql-677"><span class="linenos">677</span></a> <span class="n">row_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">row_format</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.directory_sql-678"><a href="#Generator.directory_sql-678"><span class="linenos">678</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">local</span><span class="si">}</span><span class="s2">DIRECTORY </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.directory_sql-667"><a href="#Generator.directory_sql-667"><span class="linenos">667</span></a> <span class="k">def</span> <span class="nf">directory_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">Directory</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.directory_sql-668"><a href="#Generator.directory_sql-668"><span class="linenos">668</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.directory_sql-669"><a href="#Generator.directory_sql-669"><span class="linenos">669</span></a> <span class="n">row_format</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">"row_format"</span><span class="p">)</span> +</span><span id="Generator.directory_sql-670"><a href="#Generator.directory_sql-670"><span class="linenos">670</span></a> <span class="n">row_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">row_format</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.directory_sql-671"><a href="#Generator.directory_sql-671"><span class="linenos">671</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">local</span><span class="si">}</span><span class="s2">DIRECTORY </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">row_format</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5648,17 +5651,17 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.delete_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.delete_sql-680"><a href="#Generator.delete_sql-680"><span class="linenos">680</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.delete_sql-681"><a href="#Generator.delete_sql-681"><span class="linenos">681</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">"this"</span><span class="p">)</span> -</span><span id="Generator.delete_sql-682"><a href="#Generator.delete_sql-682"><span class="linenos">682</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.delete_sql-683"><a href="#Generator.delete_sql-683"><span class="linenos">683</span></a> <span class="n">using_sql</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.delete_sql-684"><a href="#Generator.delete_sql-684"><span class="linenos">684</span></a> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'using'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">', USING '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.delete_sql-685"><a href="#Generator.delete_sql-685"><span class="linenos">685</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">"using"</span><span class="p">)</span> -</span><span id="Generator.delete_sql-686"><a href="#Generator.delete_sql-686"><span class="linenos">686</span></a> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.delete_sql-687"><a href="#Generator.delete_sql-687"><span class="linenos">687</span></a> <span class="p">)</span> -</span><span id="Generator.delete_sql-688"><a href="#Generator.delete_sql-688"><span class="linenos">688</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="Generator.delete_sql-689"><a href="#Generator.delete_sql-689"><span class="linenos">689</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"DELETE</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">using_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.delete_sql-690"><a href="#Generator.delete_sql-690"><span class="linenos">690</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.delete_sql-673"><a href="#Generator.delete_sql-673"><span class="linenos">673</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.delete_sql-674"><a href="#Generator.delete_sql-674"><span class="linenos">674</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">"this"</span><span class="p">)</span> +</span><span id="Generator.delete_sql-675"><a href="#Generator.delete_sql-675"><span class="linenos">675</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FROM </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.delete_sql-676"><a href="#Generator.delete_sql-676"><span class="linenos">676</span></a> <span class="n">using_sql</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.delete_sql-677"><a href="#Generator.delete_sql-677"><span class="linenos">677</span></a> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'using'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">', USING '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.delete_sql-678"><a href="#Generator.delete_sql-678"><span class="linenos">678</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">"using"</span><span class="p">)</span> +</span><span id="Generator.delete_sql-679"><a href="#Generator.delete_sql-679"><span class="linenos">679</span></a> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.delete_sql-680"><a href="#Generator.delete_sql-680"><span class="linenos">680</span></a> <span class="p">)</span> +</span><span id="Generator.delete_sql-681"><a href="#Generator.delete_sql-681"><span class="linenos">681</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="Generator.delete_sql-682"><a href="#Generator.delete_sql-682"><span class="linenos">682</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"DELETE</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">using_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.delete_sql-683"><a href="#Generator.delete_sql-683"><span class="linenos">683</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -5676,14 +5679,14 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.drop_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.drop_sql-692"><a href="#Generator.drop_sql-692"><span class="linenos">692</span></a> <span class="k">def</span> <span class="nf">drop_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">Drop</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.drop_sql-693"><a href="#Generator.drop_sql-693"><span class="linenos">693</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">"this"</span><span class="p">)</span> -</span><span id="Generator.drop_sql-694"><a href="#Generator.drop_sql-694"><span class="linenos">694</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">"kind"</span><span class="p">]</span> -</span><span id="Generator.drop_sql-695"><a href="#Generator.drop_sql-695"><span class="linenos">695</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator.drop_sql-696"><a href="#Generator.drop_sql-696"><span class="linenos">696</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.drop_sql-697"><a href="#Generator.drop_sql-697"><span class="linenos">697</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="s2">" MATERIALIZED"</span> <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">"materialized"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.drop_sql-698"><a href="#Generator.drop_sql-698"><span class="linenos">698</span></a> <span class="n">cascade</span> <span class="o">=</span> <span class="s2">" CASCADE"</span> <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">"cascade"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.drop_sql-699"><a href="#Generator.drop_sql-699"><span class="linenos">699</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">temporary</span><span class="si">}{</span><span class="n">materialized</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">cascade</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.drop_sql-685"><a href="#Generator.drop_sql-685"><span class="linenos">685</span></a> <span class="k">def</span> <span class="nf">drop_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">Drop</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.drop_sql-686"><a href="#Generator.drop_sql-686"><span class="linenos">686</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">"this"</span><span class="p">)</span> +</span><span id="Generator.drop_sql-687"><a href="#Generator.drop_sql-687"><span class="linenos">687</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">"kind"</span><span class="p">]</span> +</span><span id="Generator.drop_sql-688"><a href="#Generator.drop_sql-688"><span class="linenos">688</span></a> <span class="n">exists_sql</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator.drop_sql-689"><a href="#Generator.drop_sql-689"><span class="linenos">689</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.drop_sql-690"><a href="#Generator.drop_sql-690"><span class="linenos">690</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="s2">" MATERIALIZED"</span> <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">"materialized"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.drop_sql-691"><a href="#Generator.drop_sql-691"><span class="linenos">691</span></a> <span class="n">cascade</span> <span class="o">=</span> <span class="s2">" CASCADE"</span> <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">"cascade"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.drop_sql-692"><a href="#Generator.drop_sql-692"><span class="linenos">692</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">temporary</span><span class="si">}{</span><span class="n">materialized</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">exists_sql</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">cascade</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5701,11 +5704,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.except_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.except_sql-701"><a href="#Generator.except_sql-701"><span class="linenos">701</span></a> <span class="k">def</span> <span class="nf">except_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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.except_sql-702"><a href="#Generator.except_sql-702"><span class="linenos">702</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> -</span><span id="Generator.except_sql-703"><a href="#Generator.except_sql-703"><span class="linenos">703</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator.except_sql-704"><a href="#Generator.except_sql-704"><span class="linenos">704</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> -</span><span id="Generator.except_sql-705"><a href="#Generator.except_sql-705"><span class="linenos">705</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.except_sql-694"><a href="#Generator.except_sql-694"><span class="linenos">694</span></a> <span class="k">def</span> <span class="nf">except_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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.except_sql-695"><a href="#Generator.except_sql-695"><span class="linenos">695</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> +</span><span id="Generator.except_sql-696"><a href="#Generator.except_sql-696"><span class="linenos">696</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator.except_sql-697"><a href="#Generator.except_sql-697"><span class="linenos">697</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">except_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> +</span><span id="Generator.except_sql-698"><a href="#Generator.except_sql-698"><span class="linenos">698</span></a> <span class="p">)</span> </span></pre></div> @@ -5723,8 +5726,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.except_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.except_op-707"><a href="#Generator.except_op-707"><span class="linenos">707</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.except_op-708"><a href="#Generator.except_op-708"><span class="linenos">708</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.except_op-700"><a href="#Generator.except_op-700"><span class="linenos">700</span></a> <span class="k">def</span> <span class="nf">except_op</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">Except</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.except_op-701"><a href="#Generator.except_op-701"><span class="linenos">701</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXCEPT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5742,12 +5745,12 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.fetch_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.fetch_sql-710"><a href="#Generator.fetch_sql-710"><span class="linenos">710</span></a> <span class="k">def</span> <span class="nf">fetch_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">Fetch</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.fetch_sql-711"><a href="#Generator.fetch_sql-711"><span class="linenos">711</span></a> <span class="n">direction</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">"direction"</span><span class="p">)</span> -</span><span id="Generator.fetch_sql-712"><a href="#Generator.fetch_sql-712"><span class="linenos">712</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">direction</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.fetch_sql-713"><a href="#Generator.fetch_sql-713"><span class="linenos">713</span></a> <span class="n">count</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">"count"</span><span class="p">)</span> -</span><span id="Generator.fetch_sql-714"><a href="#Generator.fetch_sql-714"><span class="linenos">714</span></a> <span class="n">count</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">count</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">count</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.fetch_sql-715"><a href="#Generator.fetch_sql-715"><span class="linenos">715</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FETCH'</span><span class="p">)</span><span class="si">}{</span><span class="n">direction</span><span class="si">}{</span><span class="n">count</span><span class="si">}</span><span class="s2"> ROWS ONLY"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.fetch_sql-703"><a href="#Generator.fetch_sql-703"><span class="linenos">703</span></a> <span class="k">def</span> <span class="nf">fetch_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">Fetch</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.fetch_sql-704"><a href="#Generator.fetch_sql-704"><span class="linenos">704</span></a> <span class="n">direction</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">"direction"</span><span class="p">)</span> +</span><span id="Generator.fetch_sql-705"><a href="#Generator.fetch_sql-705"><span class="linenos">705</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">direction</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.fetch_sql-706"><a href="#Generator.fetch_sql-706"><span class="linenos">706</span></a> <span class="n">count</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">"count"</span><span class="p">)</span> +</span><span id="Generator.fetch_sql-707"><a href="#Generator.fetch_sql-707"><span class="linenos">707</span></a> <span class="n">count</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">count</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">count</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.fetch_sql-708"><a href="#Generator.fetch_sql-708"><span class="linenos">708</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FETCH'</span><span class="p">)</span><span class="si">}{</span><span class="n">direction</span><span class="si">}{</span><span class="n">count</span><span class="si">}</span><span class="s2"> ROWS ONLY"</span> </span></pre></div> @@ -5765,10 +5768,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.filter_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.filter_sql-717"><a href="#Generator.filter_sql-717"><span class="linenos">717</span></a> <span class="k">def</span> <span class="nf">filter_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">Filter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.filter_sql-718"><a href="#Generator.filter_sql-718"><span class="linenos">718</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">"this"</span><span class="p">)</span> -</span><span id="Generator.filter_sql-719"><a href="#Generator.filter_sql-719"><span class="linenos">719</span></a> <span class="n">where</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">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># where has a leading space</span> -</span><span id="Generator.filter_sql-720"><a href="#Generator.filter_sql-720"><span class="linenos">720</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FILTER(</span><span class="si">{</span><span class="n">where</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.filter_sql-710"><a href="#Generator.filter_sql-710"><span class="linenos">710</span></a> <span class="k">def</span> <span class="nf">filter_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">Filter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.filter_sql-711"><a href="#Generator.filter_sql-711"><span class="linenos">711</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">"this"</span><span class="p">)</span> +</span><span id="Generator.filter_sql-712"><a href="#Generator.filter_sql-712"><span class="linenos">712</span></a> <span class="n">where</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">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># where has a leading space</span> +</span><span id="Generator.filter_sql-713"><a href="#Generator.filter_sql-713"><span class="linenos">713</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FILTER(</span><span class="si">{</span><span class="n">where</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -5786,10 +5789,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.hint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.hint_sql-722"><a href="#Generator.hint_sql-722"><span class="linenos">722</span></a> <span class="k">def</span> <span class="nf">hint_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">Hint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.hint_sql-723"><a href="#Generator.hint_sql-723"><span class="linenos">723</span></a> <span class="k">if</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">"this"</span><span class="p">):</span> -</span><span id="Generator.hint_sql-724"><a href="#Generator.hint_sql-724"><span class="linenos">724</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Hints are not supported"</span><span class="p">)</span> -</span><span id="Generator.hint_sql-725"><a href="#Generator.hint_sql-725"><span class="linenos">725</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.hint_sql-715"><a href="#Generator.hint_sql-715"><span class="linenos">715</span></a> <span class="k">def</span> <span class="nf">hint_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">Hint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.hint_sql-716"><a href="#Generator.hint_sql-716"><span class="linenos">716</span></a> <span class="k">if</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">"this"</span><span class="p">):</span> +</span><span id="Generator.hint_sql-717"><a href="#Generator.hint_sql-717"><span class="linenos">717</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Hints are not supported"</span><span class="p">)</span> +</span><span id="Generator.hint_sql-718"><a href="#Generator.hint_sql-718"><span class="linenos">718</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -5807,11 +5810,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.index_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.index_sql-727"><a href="#Generator.index_sql-727"><span class="linenos">727</span></a> <span class="k">def</span> <span class="nf">index_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">Index</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.index_sql-728"><a href="#Generator.index_sql-728"><span class="linenos">728</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">"this"</span><span class="p">)</span> -</span><span id="Generator.index_sql-729"><a href="#Generator.index_sql-729"><span class="linenos">729</span></a> <span class="n">table</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">"table"</span><span class="p">)</span> -</span><span id="Generator.index_sql-730"><a href="#Generator.index_sql-730"><span class="linenos">730</span></a> <span class="n">columns</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">"columns"</span><span class="p">)</span> -</span><span id="Generator.index_sql-731"><a href="#Generator.index_sql-731"><span class="linenos">731</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.index_sql-720"><a href="#Generator.index_sql-720"><span class="linenos">720</span></a> <span class="k">def</span> <span class="nf">index_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">Index</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.index_sql-721"><a href="#Generator.index_sql-721"><span class="linenos">721</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">"this"</span><span class="p">)</span> +</span><span id="Generator.index_sql-722"><a href="#Generator.index_sql-722"><span class="linenos">722</span></a> <span class="n">table</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">"table"</span><span class="p">)</span> +</span><span id="Generator.index_sql-723"><a href="#Generator.index_sql-723"><span class="linenos">723</span></a> <span class="n">columns</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">"columns"</span><span class="p">)</span> +</span><span id="Generator.index_sql-724"><a href="#Generator.index_sql-724"><span class="linenos">724</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> ON </span><span class="si">{</span><span class="n">table</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5829,13 +5832,13 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.identifier_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.identifier_sql-733"><a href="#Generator.identifier_sql-733"><span class="linenos">733</span></a> <span class="k">def</span> <span class="nf">identifier_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">Identifier</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.identifier_sql-734"><a href="#Generator.identifier_sql-734"><span class="linenos">734</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> -</span><span id="Generator.identifier_sql-735"><a href="#Generator.identifier_sql-735"><span class="linenos">735</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">else</span> <span class="n">text</span> -</span><span id="Generator.identifier_sql-736"><a href="#Generator.identifier_sql-736"><span class="linenos">736</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span><span class="p">)</span> -</span><span id="Generator.identifier_sql-737"><a href="#Generator.identifier_sql-737"><span class="linenos">737</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">"quoted"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span><span class="p">:</span> -</span><span id="Generator.identifier_sql-738"><a href="#Generator.identifier_sql-738"><span class="linenos">738</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.identifier_sql-739"><a href="#Generator.identifier_sql-739"><span class="linenos">739</span></a> <span class="k">return</span> <span class="n">text</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.identifier_sql-726"><a href="#Generator.identifier_sql-726"><span class="linenos">726</span></a> <span class="k">def</span> <span class="nf">identifier_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">Identifier</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.identifier_sql-727"><a href="#Generator.identifier_sql-727"><span class="linenos">727</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> +</span><span id="Generator.identifier_sql-728"><a href="#Generator.identifier_sql-728"><span class="linenos">728</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">normalize</span> <span class="k">else</span> <span class="n">text</span> +</span><span id="Generator.identifier_sql-729"><a href="#Generator.identifier_sql-729"><span class="linenos">729</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_identifier_end</span><span class="p">)</span> +</span><span id="Generator.identifier_sql-730"><a href="#Generator.identifier_sql-730"><span class="linenos">730</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">"quoted"</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">identify</span><span class="p">:</span> +</span><span id="Generator.identifier_sql-731"><a href="#Generator.identifier_sql-731"><span class="linenos">731</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.identifier_sql-732"><a href="#Generator.identifier_sql-732"><span class="linenos">732</span></a> <span class="k">return</span> <span class="n">text</span> </span></pre></div> @@ -5853,8 +5856,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.national_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.national_sql-741"><a href="#Generator.national_sql-741"><span class="linenos">741</span></a> <span class="k">def</span> <span class="nf">national_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">National</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.national_sql-742"><a href="#Generator.national_sql-742"><span class="linenos">742</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"N</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.national_sql-734"><a href="#Generator.national_sql-734"><span class="linenos">734</span></a> <span class="k">def</span> <span class="nf">national_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">National</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.national_sql-735"><a href="#Generator.national_sql-735"><span class="linenos">735</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"N</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -5872,8 +5875,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.partition_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.partition_sql-744"><a href="#Generator.partition_sql-744"><span class="linenos">744</span></a> <span class="k">def</span> <span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.partition_sql-745"><a href="#Generator.partition_sql-745"><span class="linenos">745</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.partition_sql-737"><a href="#Generator.partition_sql-737"><span class="linenos">737</span></a> <span class="k">def</span> <span class="nf">partition_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.partition_sql-738"><a href="#Generator.partition_sql-738"><span class="linenos">738</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -5891,20 +5894,20 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.properties_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.properties_sql-747"><a href="#Generator.properties_sql-747"><span class="linenos">747</span></a> <span class="k">def</span> <span class="nf">properties_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">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.properties_sql-748"><a href="#Generator.properties_sql-748"><span class="linenos">748</span></a> <span class="n">root_properties</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator.properties_sql-749"><a href="#Generator.properties_sql-749"><span class="linenos">749</span></a> <span class="n">with_properties</span> <span class="o">=</span> <span class="p">[]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.properties_sql-740"><a href="#Generator.properties_sql-740"><span class="linenos">740</span></a> <span class="k">def</span> <span class="nf">properties_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">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.properties_sql-741"><a href="#Generator.properties_sql-741"><span class="linenos">741</span></a> <span class="n">root_properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator.properties_sql-742"><a href="#Generator.properties_sql-742"><span class="linenos">742</span></a> <span class="n">with_properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator.properties_sql-743"><a href="#Generator.properties_sql-743"><span class="linenos">743</span></a> +</span><span id="Generator.properties_sql-744"><a href="#Generator.properties_sql-744"><span class="linenos">744</span></a> <span class="k">for</span> <span class="n">p</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="Generator.properties_sql-745"><a href="#Generator.properties_sql-745"><span class="linenos">745</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> +</span><span id="Generator.properties_sql-746"><a href="#Generator.properties_sql-746"><span class="linenos">746</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> +</span><span id="Generator.properties_sql-747"><a href="#Generator.properties_sql-747"><span class="linenos">747</span></a> <span class="n">with_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator.properties_sql-748"><a href="#Generator.properties_sql-748"><span class="linenos">748</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> +</span><span id="Generator.properties_sql-749"><a href="#Generator.properties_sql-749"><span class="linenos">749</span></a> <span class="n">root_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> </span><span id="Generator.properties_sql-750"><a href="#Generator.properties_sql-750"><span class="linenos">750</span></a> -</span><span id="Generator.properties_sql-751"><a href="#Generator.properties_sql-751"><span class="linenos">751</span></a> <span class="k">for</span> <span class="n">p</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="Generator.properties_sql-752"><a href="#Generator.properties_sql-752"><span class="linenos">752</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> -</span><span id="Generator.properties_sql-753"><a href="#Generator.properties_sql-753"><span class="linenos">753</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> -</span><span id="Generator.properties_sql-754"><a href="#Generator.properties_sql-754"><span class="linenos">754</span></a> <span class="n">with_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator.properties_sql-755"><a href="#Generator.properties_sql-755"><span class="linenos">755</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> -</span><span id="Generator.properties_sql-756"><a href="#Generator.properties_sql-756"><span class="linenos">756</span></a> <span class="n">root_properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator.properties_sql-757"><a href="#Generator.properties_sql-757"><span class="linenos">757</span></a> -</span><span id="Generator.properties_sql-758"><a href="#Generator.properties_sql-758"><span class="linenos">758</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">root_properties</span><span class="p">(</span> -</span><span id="Generator.properties_sql-759"><a href="#Generator.properties_sql-759"><span class="linenos">759</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">root_properties</span><span class="p">)</span> -</span><span id="Generator.properties_sql-760"><a href="#Generator.properties_sql-760"><span class="linenos">760</span></a> <span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_properties</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">with_properties</span><span class="p">))</span> +</span><span id="Generator.properties_sql-751"><a href="#Generator.properties_sql-751"><span class="linenos">751</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">root_properties</span><span class="p">(</span> +</span><span id="Generator.properties_sql-752"><a href="#Generator.properties_sql-752"><span class="linenos">752</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">root_properties</span><span class="p">)</span> +</span><span id="Generator.properties_sql-753"><a href="#Generator.properties_sql-753"><span class="linenos">753</span></a> <span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">with_properties</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">(</span><span class="n">expressions</span><span class="o">=</span><span class="n">with_properties</span><span class="p">))</span> </span></pre></div> @@ -5922,10 +5925,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.root_properties"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.root_properties-762"><a href="#Generator.root_properties-762"><span class="linenos">762</span></a> <span class="k">def</span> <span class="nf">root_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.root_properties-763"><a href="#Generator.root_properties-763"><span class="linenos">763</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="Generator.root_properties-764"><a href="#Generator.root_properties-764"><span class="linenos">764</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator.root_properties-765"><a href="#Generator.root_properties-765"><span class="linenos">765</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.root_properties-755"><a href="#Generator.root_properties-755"><span class="linenos">755</span></a> <span class="k">def</span> <span class="nf">root_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.root_properties-756"><a href="#Generator.root_properties-756"><span class="linenos">756</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Generator.root_properties-757"><a href="#Generator.root_properties-757"><span class="linenos">757</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator.root_properties-758"><a href="#Generator.root_properties-758"><span class="linenos">758</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -5943,19 +5946,19 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.properties"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.properties-767"><a href="#Generator.properties-767"><span class="linenos">767</span></a> <span class="k">def</span> <span class="nf">properties</span><span class="p">(</span> -</span><span id="Generator.properties-768"><a href="#Generator.properties-768"><span class="linenos">768</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator.properties-769"><a href="#Generator.properties-769"><span class="linenos">769</span></a> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> -</span><span id="Generator.properties-770"><a href="#Generator.properties-770"><span class="linenos">770</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator.properties-771"><a href="#Generator.properties-771"><span class="linenos">771</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> -</span><span id="Generator.properties-772"><a href="#Generator.properties-772"><span class="linenos">772</span></a> <span class="n">suffix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator.properties-773"><a href="#Generator.properties-773"><span class="linenos">773</span></a> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Generator.properties-774"><a href="#Generator.properties-774"><span class="linenos">774</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.properties-775"><a href="#Generator.properties-775"><span class="linenos">775</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="Generator.properties-776"><a href="#Generator.properties-776"><span class="linenos">776</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator.properties-777"><a href="#Generator.properties-777"><span class="linenos">777</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="k">if</span> <span class="n">wrapped</span> <span class="k">else</span> <span class="n">expressions</span> -</span><span id="Generator.properties-778"><a href="#Generator.properties-778"><span class="linenos">778</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="s1">' '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">suffix</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.properties-779"><a href="#Generator.properties-779"><span class="linenos">779</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.properties-760"><a href="#Generator.properties-760"><span class="linenos">760</span></a> <span class="k">def</span> <span class="nf">properties</span><span class="p">(</span> +</span><span id="Generator.properties-761"><a href="#Generator.properties-761"><span class="linenos">761</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator.properties-762"><a href="#Generator.properties-762"><span class="linenos">762</span></a> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> +</span><span id="Generator.properties-763"><a href="#Generator.properties-763"><span class="linenos">763</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator.properties-764"><a href="#Generator.properties-764"><span class="linenos">764</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> +</span><span id="Generator.properties-765"><a href="#Generator.properties-765"><span class="linenos">765</span></a> <span class="n">suffix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator.properties-766"><a href="#Generator.properties-766"><span class="linenos">766</span></a> <span class="n">wrapped</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Generator.properties-767"><a href="#Generator.properties-767"><span class="linenos">767</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.properties-768"><a href="#Generator.properties-768"><span class="linenos">768</span></a> <span class="k">if</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Generator.properties-769"><a href="#Generator.properties-769"><span class="linenos">769</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator.properties-770"><a href="#Generator.properties-770"><span class="linenos">770</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="k">if</span> <span class="n">wrapped</span> <span class="k">else</span> <span class="n">expressions</span> +</span><span id="Generator.properties-771"><a href="#Generator.properties-771"><span class="linenos">771</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="s1">' '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="ow">and</span><span class="w"> </span><span class="n">prefix</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="s1">' '</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">suffix</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.properties-772"><a href="#Generator.properties-772"><span class="linenos">772</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -5973,8 +5976,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.with_properties"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.with_properties-781"><a href="#Generator.with_properties-781"><span class="linenos">781</span></a> <span class="k">def</span> <span class="nf">with_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.with_properties-782"><a href="#Generator.with_properties-782"><span class="linenos">782</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.with_properties-774"><a href="#Generator.with_properties-774"><span class="linenos">774</span></a> <span class="k">def</span> <span class="nf">with_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.with_properties-775"><a href="#Generator.with_properties-775"><span class="linenos">775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">properties</span><span class="p">(</span><span class="n">properties</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">))</span> </span></pre></div> @@ -5992,31 +5995,33 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.locate_properties"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.locate_properties-784"><a href="#Generator.locate_properties-784"><span class="linenos">784</span></a> <span class="k">def</span> <span class="nf">locate_properties</span><span class="p">(</span> -</span><span id="Generator.locate_properties-785"><a href="#Generator.locate_properties-785"><span class="linenos">785</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span> -</span><span id="Generator.locate_properties-786"><a href="#Generator.locate_properties-786"><span class="linenos">786</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</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="p">,</span> <span class="nb">list</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="Generator.locate_properties-787"><a href="#Generator.locate_properties-787"><span class="linenos">787</span></a> <span class="n">properties_locs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="p">,</span> <span class="nb">list</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Generator.locate_properties-788"><a href="#Generator.locate_properties-788"><span class="linenos">788</span></a> <span class="n">key</span><span class="p">:</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</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><span id="Generator.locate_properties-789"><a href="#Generator.locate_properties-789"><span class="linenos">789</span></a> <span class="p">}</span> -</span><span id="Generator.locate_properties-790"><a href="#Generator.locate_properties-790"><span class="linenos">790</span></a> -</span><span id="Generator.locate_properties-791"><a href="#Generator.locate_properties-791"><span class="linenos">791</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> -</span><span id="Generator.locate_properties-792"><a href="#Generator.locate_properties-792"><span class="linenos">792</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> -</span><span id="Generator.locate_properties-793"><a href="#Generator.locate_properties-793"><span class="linenos">793</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">:</span> -</span><span id="Generator.locate_properties-794"><a href="#Generator.locate_properties-794"><span class="linenos">794</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator.locate_properties-795"><a href="#Generator.locate_properties-795"><span class="linenos">795</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">:</span> -</span><span id="Generator.locate_properties-796"><a href="#Generator.locate_properties-796"><span class="linenos">796</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator.locate_properties-797"><a href="#Generator.locate_properties-797"><span class="linenos">797</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> -</span><span id="Generator.locate_properties-798"><a href="#Generator.locate_properties-798"><span class="linenos">798</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator.locate_properties-799"><a href="#Generator.locate_properties-799"><span class="linenos">799</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> -</span><span id="Generator.locate_properties-800"><a href="#Generator.locate_properties-800"><span class="linenos">800</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator.locate_properties-801"><a href="#Generator.locate_properties-801"><span class="linenos">801</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">:</span> -</span><span id="Generator.locate_properties-802"><a href="#Generator.locate_properties-802"><span class="linenos">802</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator.locate_properties-803"><a href="#Generator.locate_properties-803"><span class="linenos">803</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">:</span> -</span><span id="Generator.locate_properties-804"><a href="#Generator.locate_properties-804"><span class="linenos">804</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> -</span><span id="Generator.locate_properties-805"><a href="#Generator.locate_properties-805"><span class="linenos">805</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</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="Generator.locate_properties-806"><a href="#Generator.locate_properties-806"><span class="linenos">806</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">p</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.locate_properties-807"><a href="#Generator.locate_properties-807"><span class="linenos">807</span></a> -</span><span id="Generator.locate_properties-808"><a href="#Generator.locate_properties-808"><span class="linenos">808</span></a> <span class="k">return</span> <span class="n">properties_locs</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.locate_properties-777"><a href="#Generator.locate_properties-777"><span class="linenos">777</span></a> <span class="k">def</span> <span class="nf">locate_properties</span><span class="p">(</span> +</span><span id="Generator.locate_properties-778"><a href="#Generator.locate_properties-778"><span class="linenos">778</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">properties</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span> +</span><span id="Generator.locate_properties-779"><a href="#Generator.locate_properties-779"><span class="linenos">779</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</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="p">,</span> <span class="nb">list</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="Generator.locate_properties-780"><a href="#Generator.locate_properties-780"><span class="linenos">780</span></a> <span class="n">properties_locs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="p">,</span> <span class="nb">list</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Generator.locate_properties-781"><a href="#Generator.locate_properties-781"><span class="linenos">781</span></a> <span class="n">key</span><span class="p">:</span> <span class="p">[]</span> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</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><span id="Generator.locate_properties-782"><a href="#Generator.locate_properties-782"><span class="linenos">782</span></a> <span class="p">}</span> +</span><span id="Generator.locate_properties-783"><a href="#Generator.locate_properties-783"><span class="linenos">783</span></a> +</span><span id="Generator.locate_properties-784"><a href="#Generator.locate_properties-784"><span class="linenos">784</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span> +</span><span id="Generator.locate_properties-785"><a href="#Generator.locate_properties-785"><span class="linenos">785</span></a> <span class="n">p_loc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="vm">__class__</span><span class="p">]</span> +</span><span id="Generator.locate_properties-786"><a href="#Generator.locate_properties-786"><span class="linenos">786</span></a> <span class="k">if</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">:</span> +</span><span id="Generator.locate_properties-787"><a href="#Generator.locate_properties-787"><span class="linenos">787</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_NAME</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator.locate_properties-788"><a href="#Generator.locate_properties-788"><span class="linenos">788</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">:</span> +</span><span id="Generator.locate_properties-789"><a href="#Generator.locate_properties-789"><span class="linenos">789</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_INDEX</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator.locate_properties-790"><a href="#Generator.locate_properties-790"><span class="linenos">790</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">:</span> +</span><span id="Generator.locate_properties-791"><a href="#Generator.locate_properties-791"><span class="linenos">791</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator.locate_properties-792"><a href="#Generator.locate_properties-792"><span class="linenos">792</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">:</span> +</span><span id="Generator.locate_properties-793"><a href="#Generator.locate_properties-793"><span class="linenos">793</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_WITH</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator.locate_properties-794"><a href="#Generator.locate_properties-794"><span class="linenos">794</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">:</span> +</span><span id="Generator.locate_properties-795"><a href="#Generator.locate_properties-795"><span class="linenos">795</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator.locate_properties-796"><a href="#Generator.locate_properties-796"><span class="linenos">796</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">:</span> +</span><span id="Generator.locate_properties-797"><a href="#Generator.locate_properties-797"><span class="linenos">797</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_ALIAS</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator.locate_properties-798"><a href="#Generator.locate_properties-798"><span class="linenos">798</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">:</span> +</span><span id="Generator.locate_properties-799"><a href="#Generator.locate_properties-799"><span class="linenos">799</span></a> <span class="n">properties_locs</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_EXPRESSION</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Generator.locate_properties-800"><a href="#Generator.locate_properties-800"><span class="linenos">800</span></a> <span class="k">elif</span> <span class="n">p_loc</span> <span class="o">==</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="Generator.locate_properties-801"><a href="#Generator.locate_properties-801"><span class="linenos">801</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">p</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.locate_properties-802"><a href="#Generator.locate_properties-802"><span class="linenos">802</span></a> +</span><span id="Generator.locate_properties-803"><a href="#Generator.locate_properties-803"><span class="linenos">803</span></a> <span class="k">return</span> <span class="n">properties_locs</span> </span></pre></div> @@ -6034,16 +6039,16 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.property_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.property_sql-810"><a href="#Generator.property_sql-810"><span class="linenos">810</span></a> <span class="k">def</span> <span class="nf">property_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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.property_sql-811"><a href="#Generator.property_sql-811"><span class="linenos">811</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span> -</span><span id="Generator.property_sql-812"><a href="#Generator.property_sql-812"><span class="linenos">812</span></a> <span class="k">if</span> <span class="n">property_cls</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> -</span><span id="Generator.property_sql-813"><a href="#Generator.property_sql-813"><span class="linenos">813</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.property_sql-814"><a href="#Generator.property_sql-814"><span class="linenos">814</span></a> -</span><span id="Generator.property_sql-815"><a href="#Generator.property_sql-815"><span class="linenos">815</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">property_cls</span><span class="p">)</span> -</span><span id="Generator.property_sql-816"><a href="#Generator.property_sql-816"><span class="linenos">816</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> -</span><span id="Generator.property_sql-817"><a href="#Generator.property_sql-817"><span class="linenos">817</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.property_sql-818"><a href="#Generator.property_sql-818"><span class="linenos">818</span></a> -</span><span id="Generator.property_sql-819"><a href="#Generator.property_sql-819"><span class="linenos">819</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.property_sql-805"><a href="#Generator.property_sql-805"><span class="linenos">805</span></a> <span class="k">def</span> <span class="nf">property_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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.property_sql-806"><a href="#Generator.property_sql-806"><span class="linenos">806</span></a> <span class="n">property_cls</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span> +</span><span id="Generator.property_sql-807"><a href="#Generator.property_sql-807"><span class="linenos">807</span></a> <span class="k">if</span> <span class="n">property_cls</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">:</span> +</span><span id="Generator.property_sql-808"><a href="#Generator.property_sql-808"><span class="linenos">808</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.property_sql-809"><a href="#Generator.property_sql-809"><span class="linenos">809</span></a> +</span><span id="Generator.property_sql-810"><a href="#Generator.property_sql-810"><span class="linenos">810</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">property_cls</span><span class="p">)</span> +</span><span id="Generator.property_sql-811"><a href="#Generator.property_sql-811"><span class="linenos">811</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> +</span><span id="Generator.property_sql-812"><a href="#Generator.property_sql-812"><span class="linenos">812</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.property_sql-813"><a href="#Generator.property_sql-813"><span class="linenos">813</span></a> +</span><span id="Generator.property_sql-814"><a href="#Generator.property_sql-814"><span class="linenos">814</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2">=</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6061,10 +6066,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.likeproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.likeproperty_sql-821"><a href="#Generator.likeproperty_sql-821"><span class="linenos">821</span></a> <span class="k">def</span> <span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.likeproperty_sql-822"><a href="#Generator.likeproperty_sql-822"><span class="linenos">822</span></a> <span class="n">options</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <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="Generator.likeproperty_sql-823"><a href="#Generator.likeproperty_sql-823"><span class="linenos">823</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.likeproperty_sql-824"><a href="#Generator.likeproperty_sql-824"><span class="linenos">824</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LIKE </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.likeproperty_sql-816"><a href="#Generator.likeproperty_sql-816"><span class="linenos">816</span></a> <span class="k">def</span> <span class="nf">likeproperty_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.likeproperty_sql-817"><a href="#Generator.likeproperty_sql-817"><span class="linenos">817</span></a> <span class="n">options</span> <span class="o">=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">'value'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <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="Generator.likeproperty_sql-818"><a href="#Generator.likeproperty_sql-818"><span class="linenos">818</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.likeproperty_sql-819"><a href="#Generator.likeproperty_sql-819"><span class="linenos">819</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LIKE </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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6082,10 +6087,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.fallbackproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.fallbackproperty_sql-826"><a href="#Generator.fallbackproperty_sql-826"><span class="linenos">826</span></a> <span class="k">def</span> <span class="nf">fallbackproperty_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">FallbackProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.fallbackproperty_sql-827"><a href="#Generator.fallbackproperty_sql-827"><span class="linenos">827</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.fallbackproperty_sql-828"><a href="#Generator.fallbackproperty_sql-828"><span class="linenos">828</span></a> <span class="n">protection</span> <span class="o">=</span> <span class="s2">" PROTECTION"</span> <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">"protection"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.fallbackproperty_sql-829"><a href="#Generator.fallbackproperty_sql-829"><span class="linenos">829</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}</span><span class="s2">FALLBACK</span><span class="si">{</span><span class="n">protection</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.fallbackproperty_sql-821"><a href="#Generator.fallbackproperty_sql-821"><span class="linenos">821</span></a> <span class="k">def</span> <span class="nf">fallbackproperty_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">FallbackProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.fallbackproperty_sql-822"><a href="#Generator.fallbackproperty_sql-822"><span class="linenos">822</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.fallbackproperty_sql-823"><a href="#Generator.fallbackproperty_sql-823"><span class="linenos">823</span></a> <span class="n">protection</span> <span class="o">=</span> <span class="s2">" PROTECTION"</span> <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">"protection"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.fallbackproperty_sql-824"><a href="#Generator.fallbackproperty_sql-824"><span class="linenos">824</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}</span><span class="s2">FALLBACK</span><span class="si">{</span><span class="n">protection</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6103,11 +6108,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.journalproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.journalproperty_sql-831"><a href="#Generator.journalproperty_sql-831"><span class="linenos">831</span></a> <span class="k">def</span> <span class="nf">journalproperty_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">JournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.journalproperty_sql-832"><a href="#Generator.journalproperty_sql-832"><span class="linenos">832</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.journalproperty_sql-833"><a href="#Generator.journalproperty_sql-833"><span class="linenos">833</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.journalproperty_sql-834"><a href="#Generator.journalproperty_sql-834"><span class="linenos">834</span></a> <span class="n">before</span> <span class="o">=</span> <span class="s2">"BEFORE "</span> <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">"before"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.journalproperty_sql-835"><a href="#Generator.journalproperty_sql-835"><span class="linenos">835</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">before</span><span class="si">}</span><span class="s2">JOURNAL"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.journalproperty_sql-826"><a href="#Generator.journalproperty_sql-826"><span class="linenos">826</span></a> <span class="k">def</span> <span class="nf">journalproperty_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">JournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.journalproperty_sql-827"><a href="#Generator.journalproperty_sql-827"><span class="linenos">827</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.journalproperty_sql-828"><a href="#Generator.journalproperty_sql-828"><span class="linenos">828</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.journalproperty_sql-829"><a href="#Generator.journalproperty_sql-829"><span class="linenos">829</span></a> <span class="n">before</span> <span class="o">=</span> <span class="s2">"BEFORE "</span> <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">"before"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.journalproperty_sql-830"><a href="#Generator.journalproperty_sql-830"><span class="linenos">830</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">before</span><span class="si">}</span><span class="s2">JOURNAL"</span> </span></pre></div> @@ -6125,10 +6130,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.freespaceproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.freespaceproperty_sql-837"><a href="#Generator.freespaceproperty_sql-837"><span class="linenos">837</span></a> <span class="k">def</span> <span class="nf">freespaceproperty_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">FreespaceProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.freespaceproperty_sql-838"><a href="#Generator.freespaceproperty_sql-838"><span class="linenos">838</span></a> <span class="n">freespace</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">"this"</span><span class="p">)</span> -</span><span id="Generator.freespaceproperty_sql-839"><a href="#Generator.freespaceproperty_sql-839"><span class="linenos">839</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.freespaceproperty_sql-840"><a href="#Generator.freespaceproperty_sql-840"><span class="linenos">840</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FREESPACE=</span><span class="si">{</span><span class="n">freespace</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.freespaceproperty_sql-832"><a href="#Generator.freespaceproperty_sql-832"><span class="linenos">832</span></a> <span class="k">def</span> <span class="nf">freespaceproperty_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">FreespaceProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.freespaceproperty_sql-833"><a href="#Generator.freespaceproperty_sql-833"><span class="linenos">833</span></a> <span class="n">freespace</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">"this"</span><span class="p">)</span> +</span><span id="Generator.freespaceproperty_sql-834"><a href="#Generator.freespaceproperty_sql-834"><span class="linenos">834</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.freespaceproperty_sql-835"><a href="#Generator.freespaceproperty_sql-835"><span class="linenos">835</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FREESPACE=</span><span class="si">{</span><span class="n">freespace</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6146,13 +6151,13 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.afterjournalproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.afterjournalproperty_sql-842"><a href="#Generator.afterjournalproperty_sql-842"><span class="linenos">842</span></a> <span class="k">def</span> <span class="nf">afterjournalproperty_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">AfterJournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.afterjournalproperty_sql-843"><a href="#Generator.afterjournalproperty_sql-843"><span class="linenos">843</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.afterjournalproperty_sql-844"><a href="#Generator.afterjournalproperty_sql-844"><span class="linenos">844</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.afterjournalproperty_sql-845"><a href="#Generator.afterjournalproperty_sql-845"><span class="linenos">845</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.afterjournalproperty_sql-846"><a href="#Generator.afterjournalproperty_sql-846"><span class="linenos">846</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">"local"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.afterjournalproperty_sql-847"><a href="#Generator.afterjournalproperty_sql-847"><span class="linenos">847</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"NOT LOCAL "</span> -</span><span id="Generator.afterjournalproperty_sql-848"><a href="#Generator.afterjournalproperty_sql-848"><span class="linenos">848</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">local</span><span class="si">}</span><span class="s2">AFTER JOURNAL"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.afterjournalproperty_sql-837"><a href="#Generator.afterjournalproperty_sql-837"><span class="linenos">837</span></a> <span class="k">def</span> <span class="nf">afterjournalproperty_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">AfterJournalProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.afterjournalproperty_sql-838"><a href="#Generator.afterjournalproperty_sql-838"><span class="linenos">838</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">"NO "</span> <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">"no"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.afterjournalproperty_sql-839"><a href="#Generator.afterjournalproperty_sql-839"><span class="linenos">839</span></a> <span class="n">dual</span> <span class="o">=</span> <span class="s2">"DUAL "</span> <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">"dual"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.afterjournalproperty_sql-840"><a href="#Generator.afterjournalproperty_sql-840"><span class="linenos">840</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.afterjournalproperty_sql-841"><a href="#Generator.afterjournalproperty_sql-841"><span class="linenos">841</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">"local"</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.afterjournalproperty_sql-842"><a href="#Generator.afterjournalproperty_sql-842"><span class="linenos">842</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">"LOCAL "</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">"NOT LOCAL "</span> +</span><span id="Generator.afterjournalproperty_sql-843"><a href="#Generator.afterjournalproperty_sql-843"><span class="linenos">843</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">dual</span><span class="si">}{</span><span class="n">local</span><span class="si">}</span><span class="s2">AFTER JOURNAL"</span> </span></pre></div> @@ -6170,14 +6175,14 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.checksumproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.checksumproperty_sql-850"><a href="#Generator.checksumproperty_sql-850"><span class="linenos">850</span></a> <span class="k">def</span> <span class="nf">checksumproperty_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">ChecksumProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.checksumproperty_sql-851"><a href="#Generator.checksumproperty_sql-851"><span class="linenos">851</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">"default"</span><span class="p">):</span> -</span><span id="Generator.checksumproperty_sql-852"><a href="#Generator.checksumproperty_sql-852"><span class="linenos">852</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> -</span><span id="Generator.checksumproperty_sql-853"><a href="#Generator.checksumproperty_sql-853"><span class="linenos">853</span></a> <span class="k">elif</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">"on"</span><span class="p">):</span> -</span><span id="Generator.checksumproperty_sql-854"><a href="#Generator.checksumproperty_sql-854"><span class="linenos">854</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ON"</span> -</span><span id="Generator.checksumproperty_sql-855"><a href="#Generator.checksumproperty_sql-855"><span class="linenos">855</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.checksumproperty_sql-856"><a href="#Generator.checksumproperty_sql-856"><span class="linenos">856</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"OFF"</span> -</span><span id="Generator.checksumproperty_sql-857"><a href="#Generator.checksumproperty_sql-857"><span class="linenos">857</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECKSUM=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.checksumproperty_sql-845"><a href="#Generator.checksumproperty_sql-845"><span class="linenos">845</span></a> <span class="k">def</span> <span class="nf">checksumproperty_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">ChecksumProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.checksumproperty_sql-846"><a href="#Generator.checksumproperty_sql-846"><span class="linenos">846</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">"default"</span><span class="p">):</span> +</span><span id="Generator.checksumproperty_sql-847"><a href="#Generator.checksumproperty_sql-847"><span class="linenos">847</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> +</span><span id="Generator.checksumproperty_sql-848"><a href="#Generator.checksumproperty_sql-848"><span class="linenos">848</span></a> <span class="k">elif</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">"on"</span><span class="p">):</span> +</span><span id="Generator.checksumproperty_sql-849"><a href="#Generator.checksumproperty_sql-849"><span class="linenos">849</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ON"</span> +</span><span id="Generator.checksumproperty_sql-850"><a href="#Generator.checksumproperty_sql-850"><span class="linenos">850</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.checksumproperty_sql-851"><a href="#Generator.checksumproperty_sql-851"><span class="linenos">851</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"OFF"</span> +</span><span id="Generator.checksumproperty_sql-852"><a href="#Generator.checksumproperty_sql-852"><span class="linenos">852</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECKSUM=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6195,14 +6200,14 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.mergeblockratioproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.mergeblockratioproperty_sql-859"><a href="#Generator.mergeblockratioproperty_sql-859"><span class="linenos">859</span></a> <span class="k">def</span> <span class="nf">mergeblockratioproperty_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">MergeBlockRatioProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.mergeblockratioproperty_sql-860"><a href="#Generator.mergeblockratioproperty_sql-860"><span class="linenos">860</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">"no"</span><span class="p">):</span> -</span><span id="Generator.mergeblockratioproperty_sql-861"><a href="#Generator.mergeblockratioproperty_sql-861"><span class="linenos">861</span></a> <span class="k">return</span> <span class="s2">"NO MERGEBLOCKRATIO"</span> -</span><span id="Generator.mergeblockratioproperty_sql-862"><a href="#Generator.mergeblockratioproperty_sql-862"><span class="linenos">862</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">"default"</span><span class="p">):</span> -</span><span id="Generator.mergeblockratioproperty_sql-863"><a href="#Generator.mergeblockratioproperty_sql-863"><span class="linenos">863</span></a> <span class="k">return</span> <span class="s2">"DEFAULT MERGEBLOCKRATIO"</span> -</span><span id="Generator.mergeblockratioproperty_sql-864"><a href="#Generator.mergeblockratioproperty_sql-864"><span class="linenos">864</span></a> -</span><span id="Generator.mergeblockratioproperty_sql-865"><a href="#Generator.mergeblockratioproperty_sql-865"><span class="linenos">865</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.mergeblockratioproperty_sql-866"><a href="#Generator.mergeblockratioproperty_sql-866"><span class="linenos">866</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGEBLOCKRATIO=</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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.mergeblockratioproperty_sql-854"><a href="#Generator.mergeblockratioproperty_sql-854"><span class="linenos">854</span></a> <span class="k">def</span> <span class="nf">mergeblockratioproperty_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">MergeBlockRatioProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.mergeblockratioproperty_sql-855"><a href="#Generator.mergeblockratioproperty_sql-855"><span class="linenos">855</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">"no"</span><span class="p">):</span> +</span><span id="Generator.mergeblockratioproperty_sql-856"><a href="#Generator.mergeblockratioproperty_sql-856"><span class="linenos">856</span></a> <span class="k">return</span> <span class="s2">"NO MERGEBLOCKRATIO"</span> +</span><span id="Generator.mergeblockratioproperty_sql-857"><a href="#Generator.mergeblockratioproperty_sql-857"><span class="linenos">857</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">"default"</span><span class="p">):</span> +</span><span id="Generator.mergeblockratioproperty_sql-858"><a href="#Generator.mergeblockratioproperty_sql-858"><span class="linenos">858</span></a> <span class="k">return</span> <span class="s2">"DEFAULT MERGEBLOCKRATIO"</span> +</span><span id="Generator.mergeblockratioproperty_sql-859"><a href="#Generator.mergeblockratioproperty_sql-859"><span class="linenos">859</span></a> +</span><span id="Generator.mergeblockratioproperty_sql-860"><a href="#Generator.mergeblockratioproperty_sql-860"><span class="linenos">860</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="s2">" PERCENT"</span> <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">"percent"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.mergeblockratioproperty_sql-861"><a href="#Generator.mergeblockratioproperty_sql-861"><span class="linenos">861</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGEBLOCKRATIO=</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">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">percent</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6220,21 +6225,21 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.datablocksizeproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.datablocksizeproperty_sql-868"><a href="#Generator.datablocksizeproperty_sql-868"><span class="linenos">868</span></a> <span class="k">def</span> <span class="nf">datablocksizeproperty_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">DataBlocksizeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.datablocksizeproperty_sql-869"><a href="#Generator.datablocksizeproperty_sql-869"><span class="linenos">869</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="Generator.datablocksizeproperty_sql-870"><a href="#Generator.datablocksizeproperty_sql-870"><span class="linenos">870</span></a> <span class="nb">min</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">"min"</span><span class="p">)</span> -</span><span id="Generator.datablocksizeproperty_sql-871"><a href="#Generator.datablocksizeproperty_sql-871"><span class="linenos">871</span></a> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">min</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.datablocksizeproperty_sql-872"><a href="#Generator.datablocksizeproperty_sql-872"><span class="linenos">872</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="Generator.datablocksizeproperty_sql-873"><a href="#Generator.datablocksizeproperty_sql-873"><span class="linenos">873</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> -</span><span id="Generator.datablocksizeproperty_sql-874"><a href="#Generator.datablocksizeproperty_sql-874"><span class="linenos">874</span></a> <span class="k">elif</span> <span class="nb">min</span><span class="p">:</span> -</span><span id="Generator.datablocksizeproperty_sql-875"><a href="#Generator.datablocksizeproperty_sql-875"><span class="linenos">875</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MINIMUM"</span> -</span><span id="Generator.datablocksizeproperty_sql-876"><a href="#Generator.datablocksizeproperty_sql-876"><span class="linenos">876</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.datablocksizeproperty_sql-877"><a href="#Generator.datablocksizeproperty_sql-877"><span class="linenos">877</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MAXIMUM"</span> -</span><span id="Generator.datablocksizeproperty_sql-878"><a href="#Generator.datablocksizeproperty_sql-878"><span class="linenos">878</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2"> DATABLOCKSIZE"</span> -</span><span id="Generator.datablocksizeproperty_sql-879"><a href="#Generator.datablocksizeproperty_sql-879"><span class="linenos">879</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.datablocksizeproperty_sql-880"><a href="#Generator.datablocksizeproperty_sql-880"><span class="linenos">880</span></a> <span class="n">units</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">"units"</span><span class="p">)</span> -</span><span id="Generator.datablocksizeproperty_sql-881"><a href="#Generator.datablocksizeproperty_sql-881"><span class="linenos">881</span></a> <span class="n">units</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">units</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.datablocksizeproperty_sql-882"><a href="#Generator.datablocksizeproperty_sql-882"><span class="linenos">882</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATABLOCKSIZE=</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">'size'</span><span class="p">)</span><span class="si">}{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.datablocksizeproperty_sql-863"><a href="#Generator.datablocksizeproperty_sql-863"><span class="linenos">863</span></a> <span class="k">def</span> <span class="nf">datablocksizeproperty_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">DataBlocksizeProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.datablocksizeproperty_sql-864"><a href="#Generator.datablocksizeproperty_sql-864"><span class="linenos">864</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="Generator.datablocksizeproperty_sql-865"><a href="#Generator.datablocksizeproperty_sql-865"><span class="linenos">865</span></a> <span class="nb">min</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">"min"</span><span class="p">)</span> +</span><span id="Generator.datablocksizeproperty_sql-866"><a href="#Generator.datablocksizeproperty_sql-866"><span class="linenos">866</span></a> <span class="k">if</span> <span class="n">default</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">or</span> <span class="nb">min</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.datablocksizeproperty_sql-867"><a href="#Generator.datablocksizeproperty_sql-867"><span class="linenos">867</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="Generator.datablocksizeproperty_sql-868"><a href="#Generator.datablocksizeproperty_sql-868"><span class="linenos">868</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> +</span><span id="Generator.datablocksizeproperty_sql-869"><a href="#Generator.datablocksizeproperty_sql-869"><span class="linenos">869</span></a> <span class="k">elif</span> <span class="nb">min</span><span class="p">:</span> +</span><span id="Generator.datablocksizeproperty_sql-870"><a href="#Generator.datablocksizeproperty_sql-870"><span class="linenos">870</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MINIMUM"</span> +</span><span id="Generator.datablocksizeproperty_sql-871"><a href="#Generator.datablocksizeproperty_sql-871"><span class="linenos">871</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.datablocksizeproperty_sql-872"><a href="#Generator.datablocksizeproperty_sql-872"><span class="linenos">872</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MAXIMUM"</span> +</span><span id="Generator.datablocksizeproperty_sql-873"><a href="#Generator.datablocksizeproperty_sql-873"><span class="linenos">873</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2"> DATABLOCKSIZE"</span> +</span><span id="Generator.datablocksizeproperty_sql-874"><a href="#Generator.datablocksizeproperty_sql-874"><span class="linenos">874</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.datablocksizeproperty_sql-875"><a href="#Generator.datablocksizeproperty_sql-875"><span class="linenos">875</span></a> <span class="n">units</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">"units"</span><span class="p">)</span> +</span><span id="Generator.datablocksizeproperty_sql-876"><a href="#Generator.datablocksizeproperty_sql-876"><span class="linenos">876</span></a> <span class="n">units</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">units</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.datablocksizeproperty_sql-877"><a href="#Generator.datablocksizeproperty_sql-877"><span class="linenos">877</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DATABLOCKSIZE=</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">'size'</span><span class="p">)</span><span class="si">}{</span><span class="n">units</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6252,24 +6257,24 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.blockcompressionproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.blockcompressionproperty_sql-884"><a href="#Generator.blockcompressionproperty_sql-884"><span class="linenos">884</span></a> <span class="k">def</span> <span class="nf">blockcompressionproperty_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">BlockCompressionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.blockcompressionproperty_sql-885"><a href="#Generator.blockcompressionproperty_sql-885"><span class="linenos">885</span></a> <span class="n">autotemp</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">"autotemp"</span><span class="p">)</span> -</span><span id="Generator.blockcompressionproperty_sql-886"><a href="#Generator.blockcompressionproperty_sql-886"><span class="linenos">886</span></a> <span class="n">always</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">"always"</span><span class="p">)</span> -</span><span id="Generator.blockcompressionproperty_sql-887"><a href="#Generator.blockcompressionproperty_sql-887"><span class="linenos">887</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="Generator.blockcompressionproperty_sql-888"><a href="#Generator.blockcompressionproperty_sql-888"><span class="linenos">888</span></a> <span class="n">manual</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">"manual"</span><span class="p">)</span> -</span><span id="Generator.blockcompressionproperty_sql-889"><a href="#Generator.blockcompressionproperty_sql-889"><span class="linenos">889</span></a> <span class="n">never</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">"never"</span><span class="p">)</span> -</span><span id="Generator.blockcompressionproperty_sql-890"><a href="#Generator.blockcompressionproperty_sql-890"><span class="linenos">890</span></a> -</span><span id="Generator.blockcompressionproperty_sql-891"><a href="#Generator.blockcompressionproperty_sql-891"><span class="linenos">891</span></a> <span class="k">if</span> <span class="n">autotemp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.blockcompressionproperty_sql-892"><a href="#Generator.blockcompressionproperty_sql-892"><span class="linenos">892</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"AUTOTEMP(</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">autotemp</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator.blockcompressionproperty_sql-893"><a href="#Generator.blockcompressionproperty_sql-893"><span class="linenos">893</span></a> <span class="k">elif</span> <span class="n">always</span><span class="p">:</span> -</span><span id="Generator.blockcompressionproperty_sql-894"><a href="#Generator.blockcompressionproperty_sql-894"><span class="linenos">894</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ALWAYS"</span> -</span><span id="Generator.blockcompressionproperty_sql-895"><a href="#Generator.blockcompressionproperty_sql-895"><span class="linenos">895</span></a> <span class="k">elif</span> <span class="n">default</span><span class="p">:</span> -</span><span id="Generator.blockcompressionproperty_sql-896"><a href="#Generator.blockcompressionproperty_sql-896"><span class="linenos">896</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> -</span><span id="Generator.blockcompressionproperty_sql-897"><a href="#Generator.blockcompressionproperty_sql-897"><span class="linenos">897</span></a> <span class="k">elif</span> <span class="n">manual</span><span class="p">:</span> -</span><span id="Generator.blockcompressionproperty_sql-898"><a href="#Generator.blockcompressionproperty_sql-898"><span class="linenos">898</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MANUAL"</span> -</span><span id="Generator.blockcompressionproperty_sql-899"><a href="#Generator.blockcompressionproperty_sql-899"><span class="linenos">899</span></a> <span class="k">elif</span> <span class="n">never</span><span class="p">:</span> -</span><span id="Generator.blockcompressionproperty_sql-900"><a href="#Generator.blockcompressionproperty_sql-900"><span class="linenos">900</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"NEVER"</span> -</span><span id="Generator.blockcompressionproperty_sql-901"><a href="#Generator.blockcompressionproperty_sql-901"><span class="linenos">901</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"BLOCKCOMPRESSION=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.blockcompressionproperty_sql-879"><a href="#Generator.blockcompressionproperty_sql-879"><span class="linenos">879</span></a> <span class="k">def</span> <span class="nf">blockcompressionproperty_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">BlockCompressionProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.blockcompressionproperty_sql-880"><a href="#Generator.blockcompressionproperty_sql-880"><span class="linenos">880</span></a> <span class="n">autotemp</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">"autotemp"</span><span class="p">)</span> +</span><span id="Generator.blockcompressionproperty_sql-881"><a href="#Generator.blockcompressionproperty_sql-881"><span class="linenos">881</span></a> <span class="n">always</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">"always"</span><span class="p">)</span> +</span><span id="Generator.blockcompressionproperty_sql-882"><a href="#Generator.blockcompressionproperty_sql-882"><span class="linenos">882</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="Generator.blockcompressionproperty_sql-883"><a href="#Generator.blockcompressionproperty_sql-883"><span class="linenos">883</span></a> <span class="n">manual</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">"manual"</span><span class="p">)</span> +</span><span id="Generator.blockcompressionproperty_sql-884"><a href="#Generator.blockcompressionproperty_sql-884"><span class="linenos">884</span></a> <span class="n">never</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">"never"</span><span class="p">)</span> +</span><span id="Generator.blockcompressionproperty_sql-885"><a href="#Generator.blockcompressionproperty_sql-885"><span class="linenos">885</span></a> +</span><span id="Generator.blockcompressionproperty_sql-886"><a href="#Generator.blockcompressionproperty_sql-886"><span class="linenos">886</span></a> <span class="k">if</span> <span class="n">autotemp</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.blockcompressionproperty_sql-887"><a href="#Generator.blockcompressionproperty_sql-887"><span class="linenos">887</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"AUTOTEMP(</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">autotemp</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator.blockcompressionproperty_sql-888"><a href="#Generator.blockcompressionproperty_sql-888"><span class="linenos">888</span></a> <span class="k">elif</span> <span class="n">always</span><span class="p">:</span> +</span><span id="Generator.blockcompressionproperty_sql-889"><a href="#Generator.blockcompressionproperty_sql-889"><span class="linenos">889</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"ALWAYS"</span> +</span><span id="Generator.blockcompressionproperty_sql-890"><a href="#Generator.blockcompressionproperty_sql-890"><span class="linenos">890</span></a> <span class="k">elif</span> <span class="n">default</span><span class="p">:</span> +</span><span id="Generator.blockcompressionproperty_sql-891"><a href="#Generator.blockcompressionproperty_sql-891"><span class="linenos">891</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"DEFAULT"</span> +</span><span id="Generator.blockcompressionproperty_sql-892"><a href="#Generator.blockcompressionproperty_sql-892"><span class="linenos">892</span></a> <span class="k">elif</span> <span class="n">manual</span><span class="p">:</span> +</span><span id="Generator.blockcompressionproperty_sql-893"><a href="#Generator.blockcompressionproperty_sql-893"><span class="linenos">893</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"MANUAL"</span> +</span><span id="Generator.blockcompressionproperty_sql-894"><a href="#Generator.blockcompressionproperty_sql-894"><span class="linenos">894</span></a> <span class="k">elif</span> <span class="n">never</span><span class="p">:</span> +</span><span id="Generator.blockcompressionproperty_sql-895"><a href="#Generator.blockcompressionproperty_sql-895"><span class="linenos">895</span></a> <span class="nb">property</span> <span class="o">=</span> <span class="s2">"NEVER"</span> +</span><span id="Generator.blockcompressionproperty_sql-896"><a href="#Generator.blockcompressionproperty_sql-896"><span class="linenos">896</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"BLOCKCOMPRESSION=</span><span class="si">{</span><span class="nb">property</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6287,20 +6292,20 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.isolatedloadingproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.isolatedloadingproperty_sql-903"><a href="#Generator.isolatedloadingproperty_sql-903"><span class="linenos">903</span></a> <span class="k">def</span> <span class="nf">isolatedloadingproperty_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">IsolatedLoadingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.isolatedloadingproperty_sql-904"><a href="#Generator.isolatedloadingproperty_sql-904"><span class="linenos">904</span></a> <span class="n">no</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">"no"</span><span class="p">)</span> -</span><span id="Generator.isolatedloadingproperty_sql-905"><a href="#Generator.isolatedloadingproperty_sql-905"><span class="linenos">905</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">" NO"</span> <span class="k">if</span> <span class="n">no</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.isolatedloadingproperty_sql-906"><a href="#Generator.isolatedloadingproperty_sql-906"><span class="linenos">906</span></a> <span class="n">concurrent</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">"concurrent"</span><span class="p">)</span> -</span><span id="Generator.isolatedloadingproperty_sql-907"><a href="#Generator.isolatedloadingproperty_sql-907"><span class="linenos">907</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="s2">" CONCURRENT"</span> <span class="k">if</span> <span class="n">concurrent</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.isolatedloadingproperty_sql-908"><a href="#Generator.isolatedloadingproperty_sql-908"><span class="linenos">908</span></a> -</span><span id="Generator.isolatedloadingproperty_sql-909"><a href="#Generator.isolatedloadingproperty_sql-909"><span class="linenos">909</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.isolatedloadingproperty_sql-910"><a href="#Generator.isolatedloadingproperty_sql-910"><span class="linenos">910</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">"for_all"</span><span class="p">):</span> -</span><span id="Generator.isolatedloadingproperty_sql-911"><a href="#Generator.isolatedloadingproperty_sql-911"><span class="linenos">911</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR ALL"</span> -</span><span id="Generator.isolatedloadingproperty_sql-912"><a href="#Generator.isolatedloadingproperty_sql-912"><span class="linenos">912</span></a> <span class="k">elif</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">"for_insert"</span><span class="p">):</span> -</span><span id="Generator.isolatedloadingproperty_sql-913"><a href="#Generator.isolatedloadingproperty_sql-913"><span class="linenos">913</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR INSERT"</span> -</span><span id="Generator.isolatedloadingproperty_sql-914"><a href="#Generator.isolatedloadingproperty_sql-914"><span class="linenos">914</span></a> <span class="k">elif</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">"for_none"</span><span class="p">):</span> -</span><span id="Generator.isolatedloadingproperty_sql-915"><a href="#Generator.isolatedloadingproperty_sql-915"><span class="linenos">915</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR NONE"</span> -</span><span id="Generator.isolatedloadingproperty_sql-916"><a href="#Generator.isolatedloadingproperty_sql-916"><span class="linenos">916</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">concurrent</span><span class="si">}</span><span class="s2"> ISOLATED LOADING</span><span class="si">{</span><span class="n">for_</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.isolatedloadingproperty_sql-898"><a href="#Generator.isolatedloadingproperty_sql-898"><span class="linenos">898</span></a> <span class="k">def</span> <span class="nf">isolatedloadingproperty_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">IsolatedLoadingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.isolatedloadingproperty_sql-899"><a href="#Generator.isolatedloadingproperty_sql-899"><span class="linenos">899</span></a> <span class="n">no</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">"no"</span><span class="p">)</span> +</span><span id="Generator.isolatedloadingproperty_sql-900"><a href="#Generator.isolatedloadingproperty_sql-900"><span class="linenos">900</span></a> <span class="n">no</span> <span class="o">=</span> <span class="s2">" NO"</span> <span class="k">if</span> <span class="n">no</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.isolatedloadingproperty_sql-901"><a href="#Generator.isolatedloadingproperty_sql-901"><span class="linenos">901</span></a> <span class="n">concurrent</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">"concurrent"</span><span class="p">)</span> +</span><span id="Generator.isolatedloadingproperty_sql-902"><a href="#Generator.isolatedloadingproperty_sql-902"><span class="linenos">902</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="s2">" CONCURRENT"</span> <span class="k">if</span> <span class="n">concurrent</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.isolatedloadingproperty_sql-903"><a href="#Generator.isolatedloadingproperty_sql-903"><span class="linenos">903</span></a> +</span><span id="Generator.isolatedloadingproperty_sql-904"><a href="#Generator.isolatedloadingproperty_sql-904"><span class="linenos">904</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.isolatedloadingproperty_sql-905"><a href="#Generator.isolatedloadingproperty_sql-905"><span class="linenos">905</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">"for_all"</span><span class="p">):</span> +</span><span id="Generator.isolatedloadingproperty_sql-906"><a href="#Generator.isolatedloadingproperty_sql-906"><span class="linenos">906</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR ALL"</span> +</span><span id="Generator.isolatedloadingproperty_sql-907"><a href="#Generator.isolatedloadingproperty_sql-907"><span class="linenos">907</span></a> <span class="k">elif</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">"for_insert"</span><span class="p">):</span> +</span><span id="Generator.isolatedloadingproperty_sql-908"><a href="#Generator.isolatedloadingproperty_sql-908"><span class="linenos">908</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR INSERT"</span> +</span><span id="Generator.isolatedloadingproperty_sql-909"><a href="#Generator.isolatedloadingproperty_sql-909"><span class="linenos">909</span></a> <span class="k">elif</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">"for_none"</span><span class="p">):</span> +</span><span id="Generator.isolatedloadingproperty_sql-910"><a href="#Generator.isolatedloadingproperty_sql-910"><span class="linenos">910</span></a> <span class="n">for_</span> <span class="o">=</span> <span class="s2">" FOR NONE"</span> +</span><span id="Generator.isolatedloadingproperty_sql-911"><a href="#Generator.isolatedloadingproperty_sql-911"><span class="linenos">911</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WITH</span><span class="si">{</span><span class="n">no</span><span class="si">}{</span><span class="n">concurrent</span><span class="si">}</span><span class="s2"> ISOLATED LOADING</span><span class="si">{</span><span class="n">for_</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6318,13 +6323,37 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.lockingproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lockingproperty_sql-918"><a href="#Generator.lockingproperty_sql-918"><span class="linenos">918</span></a> <span class="k">def</span> <span class="nf">lockingproperty_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">LockingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.lockingproperty_sql-919"><a href="#Generator.lockingproperty_sql-919"><span class="linenos">919</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="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> -</span><span id="Generator.lockingproperty_sql-920"><a href="#Generator.lockingproperty_sql-920"><span class="linenos">920</span></a> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.lockingproperty_sql-921"><a href="#Generator.lockingproperty_sql-921"><span class="linenos">921</span></a> <span class="n">for_or_in</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">"for_or_in"</span><span class="p">)</span> -</span><span id="Generator.lockingproperty_sql-922"><a href="#Generator.lockingproperty_sql-922"><span class="linenos">922</span></a> <span class="n">lock_type</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">"lock_type"</span><span class="p">)</span> -</span><span id="Generator.lockingproperty_sql-923"><a href="#Generator.lockingproperty_sql-923"><span class="linenos">923</span></a> <span class="n">override</span> <span class="o">=</span> <span class="s2">" OVERRIDE"</span> <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">"override"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.lockingproperty_sql-924"><a href="#Generator.lockingproperty_sql-924"><span class="linenos">924</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOCKING </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">for_or_in</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}{</span><span class="n">override</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lockingproperty_sql-913"><a href="#Generator.lockingproperty_sql-913"><span class="linenos">913</span></a> <span class="k">def</span> <span class="nf">lockingproperty_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">LockingProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.lockingproperty_sql-914"><a href="#Generator.lockingproperty_sql-914"><span class="linenos">914</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="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> +</span><span id="Generator.lockingproperty_sql-915"><a href="#Generator.lockingproperty_sql-915"><span class="linenos">915</span></a> <span class="n">this</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.lockingproperty_sql-916"><a href="#Generator.lockingproperty_sql-916"><span class="linenos">916</span></a> <span class="n">for_or_in</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">"for_or_in"</span><span class="p">)</span> +</span><span id="Generator.lockingproperty_sql-917"><a href="#Generator.lockingproperty_sql-917"><span class="linenos">917</span></a> <span class="n">lock_type</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">"lock_type"</span><span class="p">)</span> +</span><span id="Generator.lockingproperty_sql-918"><a href="#Generator.lockingproperty_sql-918"><span class="linenos">918</span></a> <span class="n">override</span> <span class="o">=</span> <span class="s2">" OVERRIDE"</span> <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">"override"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.lockingproperty_sql-919"><a href="#Generator.lockingproperty_sql-919"><span class="linenos">919</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOCKING </span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">for_or_in</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}{</span><span class="n">override</span><span class="si">}</span><span class="s2">"</span> +</span></pre></div> + + + + + </div> + <div id="Generator.withdataproperty_sql" class="classattr"> + <input id="Generator.withdataproperty_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">withdataproperty_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#WithDataProperty">sqlglot.expressions.WithDataProperty</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span> + + <label class="view-source-button" for="Generator.withdataproperty_sql-view-source"><span>View Source</span></label> + + </div> + <a class="headerlink" href="#Generator.withdataproperty_sql"></a> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.withdataproperty_sql-921"><a href="#Generator.withdataproperty_sql-921"><span class="linenos">921</span></a> <span class="k">def</span> <span class="nf">withdataproperty_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">WithDataProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.withdataproperty_sql-922"><a href="#Generator.withdataproperty_sql-922"><span class="linenos">922</span></a> <span class="n">data_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"WITH </span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'no'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">DATA"</span> +</span><span id="Generator.withdataproperty_sql-923"><a href="#Generator.withdataproperty_sql-923"><span class="linenos">923</span></a> <span class="n">statistics</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">"statistics"</span><span class="p">)</span> +</span><span id="Generator.withdataproperty_sql-924"><a href="#Generator.withdataproperty_sql-924"><span class="linenos">924</span></a> <span class="n">statistics_sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.withdataproperty_sql-925"><a href="#Generator.withdataproperty_sql-925"><span class="linenos">925</span></a> <span class="k">if</span> <span class="n">statistics</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.withdataproperty_sql-926"><a href="#Generator.withdataproperty_sql-926"><span class="linenos">926</span></a> <span class="n">statistics_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AND </span><span class="si">{</span><span class="s1">'NO '</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="ow">not</span><span class="w"> </span><span class="n">statistics</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">STATISTICS"</span> +</span><span id="Generator.withdataproperty_sql-927"><a href="#Generator.withdataproperty_sql-927"><span class="linenos">927</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">data_sql</span><span class="si">}{</span><span class="n">statistics_sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6342,26 +6371,26 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.insert_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.insert_sql-926"><a href="#Generator.insert_sql-926"><span class="linenos">926</span></a> <span class="k">def</span> <span class="nf">insert_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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.insert_sql-927"><a href="#Generator.insert_sql-927"><span class="linenos">927</span></a> <span class="n">overwrite</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">"overwrite"</span><span class="p">)</span> -</span><span id="Generator.insert_sql-928"><a href="#Generator.insert_sql-928"><span class="linenos">928</span></a> -</span><span id="Generator.insert_sql-929"><a href="#Generator.insert_sql-929"><span class="linenos">929</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">Directory</span><span class="p">):</span> -</span><span id="Generator.insert_sql-930"><a href="#Generator.insert_sql-930"><span class="linenos">930</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> -</span><span id="Generator.insert_sql-931"><a href="#Generator.insert_sql-931"><span class="linenos">931</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.insert_sql-932"><a href="#Generator.insert_sql-932"><span class="linenos">932</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE TABLE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> -</span><span id="Generator.insert_sql-933"><a href="#Generator.insert_sql-933"><span class="linenos">933</span></a> -</span><span id="Generator.insert_sql-934"><a href="#Generator.insert_sql-934"><span class="linenos">934</span></a> <span class="n">alternative</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">"alternative"</span><span class="p">)</span> -</span><span id="Generator.insert_sql-935"><a href="#Generator.insert_sql-935"><span class="linenos">935</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OR </span><span class="si">{</span><span class="n">alternative</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">alternative</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator.insert_sql-936"><a href="#Generator.insert_sql-936"><span class="linenos">936</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.insert_sql-937"><a href="#Generator.insert_sql-937"><span class="linenos">937</span></a> -</span><span id="Generator.insert_sql-938"><a href="#Generator.insert_sql-938"><span class="linenos">938</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator.insert_sql-939"><a href="#Generator.insert_sql-939"><span class="linenos">939</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.insert_sql-940"><a href="#Generator.insert_sql-940"><span class="linenos">940</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">"partition"</span><span class="p">)</span> <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">"partition"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.insert_sql-941"><a href="#Generator.insert_sql-941"><span class="linenos">941</span></a> <span class="p">)</span> -</span><span id="Generator.insert_sql-942"><a href="#Generator.insert_sql-942"><span class="linenos">942</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator.insert_sql-943"><a href="#Generator.insert_sql-943"><span class="linenos">943</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="k">if</span> <span class="n">partition_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.insert_sql-944"><a href="#Generator.insert_sql-944"><span class="linenos">944</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT</span><span class="si">{</span><span class="n">alternative</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">exists</span><span class="si">}{</span><span class="n">partition_sql</span><span class="si">}{</span><span class="n">sep</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.insert_sql-945"><a href="#Generator.insert_sql-945"><span class="linenos">945</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.insert_sql-929"><a href="#Generator.insert_sql-929"><span class="linenos">929</span></a> <span class="k">def</span> <span class="nf">insert_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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.insert_sql-930"><a href="#Generator.insert_sql-930"><span class="linenos">930</span></a> <span class="n">overwrite</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">"overwrite"</span><span class="p">)</span> +</span><span id="Generator.insert_sql-931"><a href="#Generator.insert_sql-931"><span class="linenos">931</span></a> +</span><span id="Generator.insert_sql-932"><a href="#Generator.insert_sql-932"><span class="linenos">932</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">Directory</span><span class="p">):</span> +</span><span id="Generator.insert_sql-933"><a href="#Generator.insert_sql-933"><span class="linenos">933</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> +</span><span id="Generator.insert_sql-934"><a href="#Generator.insert_sql-934"><span class="linenos">934</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.insert_sql-935"><a href="#Generator.insert_sql-935"><span class="linenos">935</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">"OVERWRITE TABLE "</span> <span class="k">if</span> <span class="n">overwrite</span> <span class="k">else</span> <span class="s2">"INTO "</span> +</span><span id="Generator.insert_sql-936"><a href="#Generator.insert_sql-936"><span class="linenos">936</span></a> +</span><span id="Generator.insert_sql-937"><a href="#Generator.insert_sql-937"><span class="linenos">937</span></a> <span class="n">alternative</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">"alternative"</span><span class="p">)</span> +</span><span id="Generator.insert_sql-938"><a href="#Generator.insert_sql-938"><span class="linenos">938</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" OR </span><span class="si">{</span><span class="n">alternative</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">alternative</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator.insert_sql-939"><a href="#Generator.insert_sql-939"><span class="linenos">939</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.insert_sql-940"><a href="#Generator.insert_sql-940"><span class="linenos">940</span></a> +</span><span id="Generator.insert_sql-941"><a href="#Generator.insert_sql-941"><span class="linenos">941</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator.insert_sql-942"><a href="#Generator.insert_sql-942"><span class="linenos">942</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.insert_sql-943"><a href="#Generator.insert_sql-943"><span class="linenos">943</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">"partition"</span><span class="p">)</span> <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">"partition"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.insert_sql-944"><a href="#Generator.insert_sql-944"><span class="linenos">944</span></a> <span class="p">)</span> +</span><span id="Generator.insert_sql-945"><a href="#Generator.insert_sql-945"><span class="linenos">945</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator.insert_sql-946"><a href="#Generator.insert_sql-946"><span class="linenos">946</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span> <span class="k">if</span> <span class="n">partition_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.insert_sql-947"><a href="#Generator.insert_sql-947"><span class="linenos">947</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT</span><span class="si">{</span><span class="n">alternative</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">exists</span><span class="si">}{</span><span class="n">partition_sql</span><span class="si">}{</span><span class="n">sep</span><span class="si">}{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.insert_sql-948"><a href="#Generator.insert_sql-948"><span class="linenos">948</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -6379,11 +6408,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.intersect_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.intersect_sql-947"><a href="#Generator.intersect_sql-947"><span class="linenos">947</span></a> <span class="k">def</span> <span class="nf">intersect_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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.intersect_sql-948"><a href="#Generator.intersect_sql-948"><span class="linenos">948</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> -</span><span id="Generator.intersect_sql-949"><a href="#Generator.intersect_sql-949"><span class="linenos">949</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator.intersect_sql-950"><a href="#Generator.intersect_sql-950"><span class="linenos">950</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> -</span><span id="Generator.intersect_sql-951"><a href="#Generator.intersect_sql-951"><span class="linenos">951</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.intersect_sql-950"><a href="#Generator.intersect_sql-950"><span class="linenos">950</span></a> <span class="k">def</span> <span class="nf">intersect_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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.intersect_sql-951"><a href="#Generator.intersect_sql-951"><span class="linenos">951</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> +</span><span id="Generator.intersect_sql-952"><a href="#Generator.intersect_sql-952"><span class="linenos">952</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator.intersect_sql-953"><a href="#Generator.intersect_sql-953"><span class="linenos">953</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">intersect_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> +</span><span id="Generator.intersect_sql-954"><a href="#Generator.intersect_sql-954"><span class="linenos">954</span></a> <span class="p">)</span> </span></pre></div> @@ -6401,8 +6430,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.intersect_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.intersect_op-953"><a href="#Generator.intersect_op-953"><span class="linenos">953</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.intersect_op-954"><a href="#Generator.intersect_op-954"><span class="linenos">954</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.intersect_op-956"><a href="#Generator.intersect_op-956"><span class="linenos">956</span></a> <span class="k">def</span> <span class="nf">intersect_op</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">Intersect</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.intersect_op-957"><a href="#Generator.intersect_op-957"><span class="linenos">957</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERSECT</span><span class="si">{</span><span class="s1">''</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'distinct'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">' ALL'</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6420,8 +6449,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.introducer_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.introducer_sql-956"><a href="#Generator.introducer_sql-956"><span class="linenos">956</span></a> <span class="k">def</span> <span class="nf">introducer_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">Introducer</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.introducer_sql-957"><a href="#Generator.introducer_sql-957"><span class="linenos">957</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.introducer_sql-959"><a href="#Generator.introducer_sql-959"><span class="linenos">959</span></a> <span class="k">def</span> <span class="nf">introducer_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">Introducer</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.introducer_sql-960"><a href="#Generator.introducer_sql-960"><span class="linenos">960</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6439,8 +6468,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.pseudotype_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.pseudotype_sql-959"><a href="#Generator.pseudotype_sql-959"><span class="linenos">959</span></a> <span class="k">def</span> <span class="nf">pseudotype_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">PseudoType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.pseudotype_sql-960"><a href="#Generator.pseudotype_sql-960"><span class="linenos">960</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.pseudotype_sql-962"><a href="#Generator.pseudotype_sql-962"><span class="linenos">962</span></a> <span class="k">def</span> <span class="nf">pseudotype_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">PseudoType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.pseudotype_sql-963"><a href="#Generator.pseudotype_sql-963"><span class="linenos">963</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> </span></pre></div> @@ -6458,20 +6487,20 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.rowformatdelimitedproperty_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.rowformatdelimitedproperty_sql-962"><a href="#Generator.rowformatdelimitedproperty_sql-962"><span class="linenos">962</span></a> <span class="k">def</span> <span class="nf">rowformatdelimitedproperty_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">RowFormatDelimitedProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-963"><a href="#Generator.rowformatdelimitedproperty_sql-963"><span class="linenos">963</span></a> <span class="n">fields</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">"fields"</span><span class="p">)</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-964"><a href="#Generator.rowformatdelimitedproperty_sql-964"><span class="linenos">964</span></a> <span class="n">fields</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FIELDS TERMINATED BY </span><span class="si">{</span><span class="n">fields</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">fields</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-965"><a href="#Generator.rowformatdelimitedproperty_sql-965"><span class="linenos">965</span></a> <span class="n">escaped</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">"escaped"</span><span class="p">)</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-966"><a href="#Generator.rowformatdelimitedproperty_sql-966"><span class="linenos">966</span></a> <span class="n">escaped</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ESCAPED BY </span><span class="si">{</span><span class="n">escaped</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">escaped</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-967"><a href="#Generator.rowformatdelimitedproperty_sql-967"><span class="linenos">967</span></a> <span class="n">items</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">"collection_items"</span><span class="p">)</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-968"><a href="#Generator.rowformatdelimitedproperty_sql-968"><span class="linenos">968</span></a> <span class="n">items</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLECTION ITEMS TERMINATED BY </span><span class="si">{</span><span class="n">items</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">items</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-969"><a href="#Generator.rowformatdelimitedproperty_sql-969"><span class="linenos">969</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_keys"</span><span class="p">)</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-970"><a href="#Generator.rowformatdelimitedproperty_sql-970"><span class="linenos">970</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAP KEYS TERMINATED BY </span><span class="si">{</span><span class="n">keys</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-971"><a href="#Generator.rowformatdelimitedproperty_sql-971"><span class="linenos">971</span></a> <span class="n">lines</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">"lines"</span><span class="p">)</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-972"><a href="#Generator.rowformatdelimitedproperty_sql-972"><span class="linenos">972</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" LINES TERMINATED BY </span><span class="si">{</span><span class="n">lines</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">lines</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-973"><a href="#Generator.rowformatdelimitedproperty_sql-973"><span class="linenos">973</span></a> <span class="n">null</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">"null"</span><span class="p">)</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-974"><a href="#Generator.rowformatdelimitedproperty_sql-974"><span class="linenos">974</span></a> <span class="n">null</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" NULL DEFINED AS </span><span class="si">{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">null</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.rowformatdelimitedproperty_sql-975"><a href="#Generator.rowformatdelimitedproperty_sql-975"><span class="linenos">975</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROW FORMAT DELIMITED</span><span class="si">{</span><span class="n">fields</span><span class="si">}{</span><span class="n">escaped</span><span class="si">}{</span><span class="n">items</span><span class="si">}{</span><span class="n">keys</span><span class="si">}{</span><span class="n">lines</span><span class="si">}{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.rowformatdelimitedproperty_sql-965"><a href="#Generator.rowformatdelimitedproperty_sql-965"><span class="linenos">965</span></a> <span class="k">def</span> <span class="nf">rowformatdelimitedproperty_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">RowFormatDelimitedProperty</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-966"><a href="#Generator.rowformatdelimitedproperty_sql-966"><span class="linenos">966</span></a> <span class="n">fields</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">"fields"</span><span class="p">)</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-967"><a href="#Generator.rowformatdelimitedproperty_sql-967"><span class="linenos">967</span></a> <span class="n">fields</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" FIELDS TERMINATED BY </span><span class="si">{</span><span class="n">fields</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">fields</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-968"><a href="#Generator.rowformatdelimitedproperty_sql-968"><span class="linenos">968</span></a> <span class="n">escaped</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">"escaped"</span><span class="p">)</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-969"><a href="#Generator.rowformatdelimitedproperty_sql-969"><span class="linenos">969</span></a> <span class="n">escaped</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ESCAPED BY </span><span class="si">{</span><span class="n">escaped</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">escaped</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-970"><a href="#Generator.rowformatdelimitedproperty_sql-970"><span class="linenos">970</span></a> <span class="n">items</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">"collection_items"</span><span class="p">)</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-971"><a href="#Generator.rowformatdelimitedproperty_sql-971"><span class="linenos">971</span></a> <span class="n">items</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLECTION ITEMS TERMINATED BY </span><span class="si">{</span><span class="n">items</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">items</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-972"><a href="#Generator.rowformatdelimitedproperty_sql-972"><span class="linenos">972</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"map_keys"</span><span class="p">)</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-973"><a href="#Generator.rowformatdelimitedproperty_sql-973"><span class="linenos">973</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" MAP KEYS TERMINATED BY </span><span class="si">{</span><span class="n">keys</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">keys</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-974"><a href="#Generator.rowformatdelimitedproperty_sql-974"><span class="linenos">974</span></a> <span class="n">lines</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">"lines"</span><span class="p">)</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-975"><a href="#Generator.rowformatdelimitedproperty_sql-975"><span class="linenos">975</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" LINES TERMINATED BY </span><span class="si">{</span><span class="n">lines</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">lines</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-976"><a href="#Generator.rowformatdelimitedproperty_sql-976"><span class="linenos">976</span></a> <span class="n">null</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">"null"</span><span class="p">)</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-977"><a href="#Generator.rowformatdelimitedproperty_sql-977"><span class="linenos">977</span></a> <span class="n">null</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" NULL DEFINED AS </span><span class="si">{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">null</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.rowformatdelimitedproperty_sql-978"><a href="#Generator.rowformatdelimitedproperty_sql-978"><span class="linenos">978</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROW FORMAT DELIMITED</span><span class="si">{</span><span class="n">fields</span><span class="si">}{</span><span class="n">escaped</span><span class="si">}{</span><span class="n">items</span><span class="si">}{</span><span class="n">keys</span><span class="si">}{</span><span class="n">lines</span><span class="si">}{</span><span class="n">null</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6489,32 +6518,28 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.table_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.table_sql-977"><a href="#Generator.table_sql-977"><span class="linenos"> 977</span></a> <span class="k">def</span> <span class="nf">table_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">Table</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" AS "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.table_sql-978"><a href="#Generator.table_sql-978"><span class="linenos"> 978</span></a> <span class="n">table</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator.table_sql-979"><a href="#Generator.table_sql-979"><span class="linenos"> 979</span></a> <span class="n">part</span> -</span><span id="Generator.table_sql-980"><a href="#Generator.table_sql-980"><span class="linenos"> 980</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">[</span> -</span><span id="Generator.table_sql-981"><a href="#Generator.table_sql-981"><span class="linenos"> 981</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">"catalog"</span><span class="p">),</span> -</span><span id="Generator.table_sql-982"><a href="#Generator.table_sql-982"><span class="linenos"> 982</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">"db"</span><span class="p">),</span> -</span><span id="Generator.table_sql-983"><a href="#Generator.table_sql-983"><span class="linenos"> 983</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">"this"</span><span class="p">),</span> -</span><span id="Generator.table_sql-984"><a href="#Generator.table_sql-984"><span class="linenos"> 984</span></a> <span class="p">]</span> -</span><span id="Generator.table_sql-985"><a href="#Generator.table_sql-985"><span class="linenos"> 985</span></a> <span class="k">if</span> <span class="n">part</span> -</span><span id="Generator.table_sql-986"><a href="#Generator.table_sql-986"><span class="linenos"> 986</span></a> <span class="p">)</span> -</span><span id="Generator.table_sql-987"><a href="#Generator.table_sql-987"><span class="linenos"> 987</span></a> -</span><span id="Generator.table_sql-988"><a href="#Generator.table_sql-988"><span class="linenos"> 988</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator.table_sql-989"><a href="#Generator.table_sql-989"><span class="linenos"> 989</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.table_sql-990"><a href="#Generator.table_sql-990"><span class="linenos"> 990</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"hints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">", "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.table_sql-991"><a href="#Generator.table_sql-991"><span class="linenos"> 991</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">hints</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">hints</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.table_sql-992"><a href="#Generator.table_sql-992"><span class="linenos"> 992</span></a> <span class="n">laterals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Generator.table_sql-993"><a href="#Generator.table_sql-993"><span class="linenos"> 993</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Generator.table_sql-994"><a href="#Generator.table_sql-994"><span class="linenos"> 994</span></a> <span class="n">pivots</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Generator.table_sql-995"><a href="#Generator.table_sql-995"><span class="linenos"> 995</span></a> <span class="n">system_time</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">"system_time"</span><span class="p">)</span> -</span><span id="Generator.table_sql-996"><a href="#Generator.table_sql-996"><span class="linenos"> 996</span></a> <span class="n">system_time</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'system_time'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">system_time</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.table_sql-997"><a href="#Generator.table_sql-997"><span class="linenos"> 997</span></a> -</span><span id="Generator.table_sql-998"><a href="#Generator.table_sql-998"><span class="linenos"> 998</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="n">pivots</span><span class="p">:</span> -</span><span id="Generator.table_sql-999"><a href="#Generator.table_sql-999"><span class="linenos"> 999</span></a> <span class="n">pivots</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">pivots</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.table_sql-1000"><a href="#Generator.table_sql-1000"><span class="linenos">1000</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.table_sql-1001"><a href="#Generator.table_sql-1001"><span class="linenos">1001</span></a> -</span><span id="Generator.table_sql-1002"><a href="#Generator.table_sql-1002"><span class="linenos">1002</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">system_time</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">hints</span><span class="si">}{</span><span class="n">laterals</span><span class="si">}{</span><span class="n">joins</span><span class="si">}{</span><span class="n">pivots</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.table_sql-980"><a href="#Generator.table_sql-980"><span class="linenos"> 980</span></a> <span class="k">def</span> <span class="nf">table_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">Table</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">" AS "</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.table_sql-981"><a href="#Generator.table_sql-981"><span class="linenos"> 981</span></a> <span class="n">table</span> <span class="o">=</span> <span class="s2">"."</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator.table_sql-982"><a href="#Generator.table_sql-982"><span class="linenos"> 982</span></a> <span class="n">part</span> +</span><span id="Generator.table_sql-983"><a href="#Generator.table_sql-983"><span class="linenos"> 983</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="p">[</span> +</span><span id="Generator.table_sql-984"><a href="#Generator.table_sql-984"><span class="linenos"> 984</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">"catalog"</span><span class="p">),</span> +</span><span id="Generator.table_sql-985"><a href="#Generator.table_sql-985"><span class="linenos"> 985</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">"db"</span><span class="p">),</span> +</span><span id="Generator.table_sql-986"><a href="#Generator.table_sql-986"><span class="linenos"> 986</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">"this"</span><span class="p">),</span> +</span><span id="Generator.table_sql-987"><a href="#Generator.table_sql-987"><span class="linenos"> 987</span></a> <span class="p">]</span> +</span><span id="Generator.table_sql-988"><a href="#Generator.table_sql-988"><span class="linenos"> 988</span></a> <span class="k">if</span> <span class="n">part</span> +</span><span id="Generator.table_sql-989"><a href="#Generator.table_sql-989"><span class="linenos"> 989</span></a> <span class="p">)</span> +</span><span id="Generator.table_sql-990"><a href="#Generator.table_sql-990"><span class="linenos"> 990</span></a> +</span><span id="Generator.table_sql-991"><a href="#Generator.table_sql-991"><span class="linenos"> 991</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.table_sql-992"><a href="#Generator.table_sql-992"><span class="linenos"> 992</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.table_sql-993"><a href="#Generator.table_sql-993"><span class="linenos"> 993</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"hints"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">", "</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.table_sql-994"><a href="#Generator.table_sql-994"><span class="linenos"> 994</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH (</span><span class="si">{</span><span class="n">hints</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">hints</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.table_sql-995"><a href="#Generator.table_sql-995"><span class="linenos"> 995</span></a> <span class="n">laterals</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Generator.table_sql-996"><a href="#Generator.table_sql-996"><span class="linenos"> 996</span></a> <span class="n">joins</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Generator.table_sql-997"><a href="#Generator.table_sql-997"><span class="linenos"> 997</span></a> <span class="n">pivots</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Generator.table_sql-998"><a href="#Generator.table_sql-998"><span class="linenos"> 998</span></a> <span class="n">system_time</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">"system_time"</span><span class="p">)</span> +</span><span id="Generator.table_sql-999"><a href="#Generator.table_sql-999"><span class="linenos"> 999</span></a> <span class="n">system_time</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'system_time'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">system_time</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.table_sql-1000"><a href="#Generator.table_sql-1000"><span class="linenos">1000</span></a> +</span><span id="Generator.table_sql-1001"><a href="#Generator.table_sql-1001"><span class="linenos">1001</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">table</span><span class="si">}{</span><span class="n">system_time</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">hints</span><span class="si">}{</span><span class="n">laterals</span><span class="si">}{</span><span class="n">joins</span><span class="si">}{</span><span class="n">pivots</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6532,28 +6557,28 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.tablesample_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.tablesample_sql-1004"><a href="#Generator.tablesample_sql-1004"><span class="linenos">1004</span></a> <span class="k">def</span> <span class="nf">tablesample_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">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.tablesample_sql-1005"><a href="#Generator.tablesample_sql-1005"><span class="linenos">1005</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> -</span><span id="Generator.tablesample_sql-1006"><a href="#Generator.tablesample_sql-1006"><span class="linenos">1006</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="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1007"><a href="#Generator.tablesample_sql-1007"><span class="linenos">1007</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="s1">'alias'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.tablesample_sql-1008"><a href="#Generator.tablesample_sql-1008"><span class="linenos">1008</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.tablesample_sql-1009"><a href="#Generator.tablesample_sql-1009"><span class="linenos">1009</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">"this"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1010"><a href="#Generator.tablesample_sql-1010"><span class="linenos">1010</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.tablesample_sql-1011"><a href="#Generator.tablesample_sql-1011"><span class="linenos">1011</span></a> <span class="n">method</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">"method"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1012"><a href="#Generator.tablesample_sql-1012"><span class="linenos">1012</span></a> <span class="n">method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">method</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">method</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.tablesample_sql-1013"><a href="#Generator.tablesample_sql-1013"><span class="linenos">1013</span></a> <span class="n">numerator</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">"bucket_numerator"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1014"><a href="#Generator.tablesample_sql-1014"><span class="linenos">1014</span></a> <span class="n">denominator</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">"bucket_denominator"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1015"><a href="#Generator.tablesample_sql-1015"><span class="linenos">1015</span></a> <span class="n">field</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">"bucket_field"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1016"><a href="#Generator.tablesample_sql-1016"><span class="linenos">1016</span></a> <span class="n">field</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">field</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.tablesample_sql-1017"><a href="#Generator.tablesample_sql-1017"><span class="linenos">1017</span></a> <span class="n">bucket</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"BUCKET </span><span class="si">{</span><span class="n">numerator</span><span class="si">}</span><span class="s2"> OUT OF </span><span class="si">{</span><span class="n">denominator</span><span class="si">}{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">numerator</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.tablesample_sql-1018"><a href="#Generator.tablesample_sql-1018"><span class="linenos">1018</span></a> <span class="n">percent</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">"percent"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1019"><a href="#Generator.tablesample_sql-1019"><span class="linenos">1019</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">percent</span><span class="si">}</span><span class="s2"> PERCENT"</span> <span class="k">if</span> <span class="n">percent</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.tablesample_sql-1020"><a href="#Generator.tablesample_sql-1020"><span class="linenos">1020</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1021"><a href="#Generator.tablesample_sql-1021"><span class="linenos">1021</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">rows</span><span class="si">}</span><span class="s2"> ROWS"</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.tablesample_sql-1022"><a href="#Generator.tablesample_sql-1022"><span class="linenos">1022</span></a> <span class="n">size</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">"size"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1023"><a href="#Generator.tablesample_sql-1023"><span class="linenos">1023</span></a> <span class="n">seed</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">"seed"</span><span class="p">)</span> -</span><span id="Generator.tablesample_sql-1024"><a href="#Generator.tablesample_sql-1024"><span class="linenos">1024</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SEED (</span><span class="si">{</span><span class="n">seed</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">seed</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.tablesample_sql-1025"><a href="#Generator.tablesample_sql-1025"><span class="linenos">1025</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TABLESAMPLE</span><span class="si">{</span><span class="n">method</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">bucket</span><span class="si">}{</span><span class="n">percent</span><span class="si">}{</span><span class="n">rows</span><span class="si">}{</span><span class="n">size</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">seed</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.tablesample_sql-1003"><a href="#Generator.tablesample_sql-1003"><span class="linenos">1003</span></a> <span class="k">def</span> <span class="nf">tablesample_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">TableSample</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.tablesample_sql-1004"><a href="#Generator.tablesample_sql-1004"><span class="linenos">1004</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">alias</span><span class="p">:</span> +</span><span id="Generator.tablesample_sql-1005"><a href="#Generator.tablesample_sql-1005"><span class="linenos">1005</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="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1006"><a href="#Generator.tablesample_sql-1006"><span class="linenos">1006</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="s1">'alias'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.tablesample_sql-1007"><a href="#Generator.tablesample_sql-1007"><span class="linenos">1007</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.tablesample_sql-1008"><a href="#Generator.tablesample_sql-1008"><span class="linenos">1008</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">"this"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1009"><a href="#Generator.tablesample_sql-1009"><span class="linenos">1009</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.tablesample_sql-1010"><a href="#Generator.tablesample_sql-1010"><span class="linenos">1010</span></a> <span class="n">method</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">"method"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1011"><a href="#Generator.tablesample_sql-1011"><span class="linenos">1011</span></a> <span class="n">method</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">method</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">method</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.tablesample_sql-1012"><a href="#Generator.tablesample_sql-1012"><span class="linenos">1012</span></a> <span class="n">numerator</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">"bucket_numerator"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1013"><a href="#Generator.tablesample_sql-1013"><span class="linenos">1013</span></a> <span class="n">denominator</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">"bucket_denominator"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1014"><a href="#Generator.tablesample_sql-1014"><span class="linenos">1014</span></a> <span class="n">field</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">"bucket_field"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1015"><a href="#Generator.tablesample_sql-1015"><span class="linenos">1015</span></a> <span class="n">field</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">field</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.tablesample_sql-1016"><a href="#Generator.tablesample_sql-1016"><span class="linenos">1016</span></a> <span class="n">bucket</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"BUCKET </span><span class="si">{</span><span class="n">numerator</span><span class="si">}</span><span class="s2"> OUT OF </span><span class="si">{</span><span class="n">denominator</span><span class="si">}{</span><span class="n">field</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">numerator</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.tablesample_sql-1017"><a href="#Generator.tablesample_sql-1017"><span class="linenos">1017</span></a> <span class="n">percent</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">"percent"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1018"><a href="#Generator.tablesample_sql-1018"><span class="linenos">1018</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">percent</span><span class="si">}</span><span class="s2"> PERCENT"</span> <span class="k">if</span> <span class="n">percent</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.tablesample_sql-1019"><a href="#Generator.tablesample_sql-1019"><span class="linenos">1019</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1020"><a href="#Generator.tablesample_sql-1020"><span class="linenos">1020</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">rows</span><span class="si">}</span><span class="s2"> ROWS"</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.tablesample_sql-1021"><a href="#Generator.tablesample_sql-1021"><span class="linenos">1021</span></a> <span class="n">size</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">"size"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1022"><a href="#Generator.tablesample_sql-1022"><span class="linenos">1022</span></a> <span class="n">seed</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">"seed"</span><span class="p">)</span> +</span><span id="Generator.tablesample_sql-1023"><a href="#Generator.tablesample_sql-1023"><span class="linenos">1023</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SEED (</span><span class="si">{</span><span class="n">seed</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">seed</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.tablesample_sql-1024"><a href="#Generator.tablesample_sql-1024"><span class="linenos">1024</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TABLESAMPLE</span><span class="si">{</span><span class="n">method</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">bucket</span><span class="si">}{</span><span class="n">percent</span><span class="si">}{</span><span class="n">rows</span><span class="si">}{</span><span class="n">size</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">seed</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6571,13 +6596,15 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.pivot_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.pivot_sql-1027"><a href="#Generator.pivot_sql-1027"><span class="linenos">1027</span></a> <span class="k">def</span> <span class="nf">pivot_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">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.pivot_sql-1028"><a href="#Generator.pivot_sql-1028"><span class="linenos">1028</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">"this"</span><span class="p">)</span> -</span><span id="Generator.pivot_sql-1029"><a href="#Generator.pivot_sql-1029"><span class="linenos">1029</span></a> <span class="n">unpivot</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">"unpivot"</span><span class="p">)</span> -</span><span id="Generator.pivot_sql-1030"><a href="#Generator.pivot_sql-1030"><span class="linenos">1030</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="s2">"UNPIVOT"</span> <span class="k">if</span> <span class="n">unpivot</span> <span class="k">else</span> <span class="s2">"PIVOT"</span> -</span><span id="Generator.pivot_sql-1031"><a href="#Generator.pivot_sql-1031"><span class="linenos">1031</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> -</span><span id="Generator.pivot_sql-1032"><a href="#Generator.pivot_sql-1032"><span class="linenos">1032</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> -</span><span id="Generator.pivot_sql-1033"><a href="#Generator.pivot_sql-1033"><span class="linenos">1033</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">direction</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2"> FOR </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.pivot_sql-1026"><a href="#Generator.pivot_sql-1026"><span class="linenos">1026</span></a> <span class="k">def</span> <span class="nf">pivot_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">Pivot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.pivot_sql-1027"><a href="#Generator.pivot_sql-1027"><span class="linenos">1027</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">"this"</span><span class="p">)</span> +</span><span id="Generator.pivot_sql-1028"><a href="#Generator.pivot_sql-1028"><span class="linenos">1028</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.pivot_sql-1029"><a href="#Generator.pivot_sql-1029"><span class="linenos">1029</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.pivot_sql-1030"><a href="#Generator.pivot_sql-1030"><span class="linenos">1030</span></a> <span class="n">unpivot</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">"unpivot"</span><span class="p">)</span> +</span><span id="Generator.pivot_sql-1031"><a href="#Generator.pivot_sql-1031"><span class="linenos">1031</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="s2">"UNPIVOT"</span> <span class="k">if</span> <span class="n">unpivot</span> <span class="k">else</span> <span class="s2">"PIVOT"</span> +</span><span id="Generator.pivot_sql-1032"><a href="#Generator.pivot_sql-1032"><span class="linenos">1032</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> +</span><span id="Generator.pivot_sql-1033"><a href="#Generator.pivot_sql-1033"><span class="linenos">1033</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> +</span><span id="Generator.pivot_sql-1034"><a href="#Generator.pivot_sql-1034"><span class="linenos">1034</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">direction</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2"> FOR </span><span class="si">{</span><span class="n">field</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6595,8 +6622,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.tuple_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.tuple_sql-1035"><a href="#Generator.tuple_sql-1035"><span class="linenos">1035</span></a> <span class="k">def</span> <span class="nf">tuple_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">Tuple</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.tuple_sql-1036"><a href="#Generator.tuple_sql-1036"><span class="linenos">1036</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.tuple_sql-1036"><a href="#Generator.tuple_sql-1036"><span class="linenos">1036</span></a> <span class="k">def</span> <span class="nf">tuple_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">Tuple</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.tuple_sql-1037"><a href="#Generator.tuple_sql-1037"><span class="linenos">1037</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -6614,13 +6641,13 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.update_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.update_sql-1038"><a href="#Generator.update_sql-1038"><span class="linenos">1038</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.update_sql-1039"><a href="#Generator.update_sql-1039"><span class="linenos">1039</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">"this"</span><span class="p">)</span> -</span><span id="Generator.update_sql-1040"><a href="#Generator.update_sql-1040"><span class="linenos">1040</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.update_sql-1041"><a href="#Generator.update_sql-1041"><span class="linenos">1041</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> -</span><span id="Generator.update_sql-1042"><a href="#Generator.update_sql-1042"><span class="linenos">1042</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> -</span><span id="Generator.update_sql-1043"><a href="#Generator.update_sql-1043"><span class="linenos">1043</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.update_sql-1044"><a href="#Generator.update_sql-1044"><span class="linenos">1044</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.update_sql-1039"><a href="#Generator.update_sql-1039"><span class="linenos">1039</span></a> <span class="k">def</span> <span class="nf">update_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">Update</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.update_sql-1040"><a href="#Generator.update_sql-1040"><span class="linenos">1040</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">"this"</span><span class="p">)</span> +</span><span id="Generator.update_sql-1041"><a href="#Generator.update_sql-1041"><span class="linenos">1041</span></a> <span class="n">set_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.update_sql-1042"><a href="#Generator.update_sql-1042"><span class="linenos">1042</span></a> <span class="n">from_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"from"</span><span class="p">)</span> +</span><span id="Generator.update_sql-1043"><a href="#Generator.update_sql-1043"><span class="linenos">1043</span></a> <span class="n">where_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"where"</span><span class="p">)</span> +</span><span id="Generator.update_sql-1044"><a href="#Generator.update_sql-1044"><span class="linenos">1044</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET </span><span class="si">{</span><span class="n">set_sql</span><span class="si">}{</span><span class="n">from_sql</span><span class="si">}{</span><span class="n">where_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.update_sql-1045"><a href="#Generator.update_sql-1045"><span class="linenos">1045</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -6638,16 +6665,16 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.values_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.values_sql-1046"><a href="#Generator.values_sql-1046"><span class="linenos">1046</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.values_sql-1047"><a href="#Generator.values_sql-1047"><span class="linenos">1047</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.values_sql-1048"><a href="#Generator.values_sql-1048"><span class="linenos">1048</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator.values_sql-1049"><a href="#Generator.values_sql-1049"><span class="linenos">1049</span></a> <span class="n">values</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"VALUES</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">args</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.values_sql-1050"><a href="#Generator.values_sql-1050"><span class="linenos">1050</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.values_sql-1051"><a href="#Generator.values_sql-1051"><span class="linenos">1051</span></a> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator.values_sql-1052"><a href="#Generator.values_sql-1052"><span class="linenos">1052</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WRAP_DERIVED_VALUES</span> <span class="ow">and</span> <span class="p">(</span><span class="n">alias</span> <span class="ow">or</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">From</span><span class="p">))</span> -</span><span id="Generator.values_sql-1053"><a href="#Generator.values_sql-1053"><span class="linenos">1053</span></a> <span class="k">else</span> <span class="n">values</span> -</span><span id="Generator.values_sql-1054"><a href="#Generator.values_sql-1054"><span class="linenos">1054</span></a> <span class="p">)</span> -</span><span id="Generator.values_sql-1055"><a href="#Generator.values_sql-1055"><span class="linenos">1055</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">values</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.values_sql-1047"><a href="#Generator.values_sql-1047"><span class="linenos">1047</span></a> <span class="k">def</span> <span class="nf">values_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.values_sql-1048"><a href="#Generator.values_sql-1048"><span class="linenos">1048</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.values_sql-1049"><a href="#Generator.values_sql-1049"><span class="linenos">1049</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.values_sql-1050"><a href="#Generator.values_sql-1050"><span class="linenos">1050</span></a> <span class="n">values</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"VALUES</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="n">args</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.values_sql-1051"><a href="#Generator.values_sql-1051"><span class="linenos">1051</span></a> <span class="n">values</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.values_sql-1052"><a href="#Generator.values_sql-1052"><span class="linenos">1052</span></a> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator.values_sql-1053"><a href="#Generator.values_sql-1053"><span class="linenos">1053</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">WRAP_DERIVED_VALUES</span> <span class="ow">and</span> <span class="p">(</span><span class="n">alias</span> <span class="ow">or</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">From</span><span class="p">))</span> +</span><span id="Generator.values_sql-1054"><a href="#Generator.values_sql-1054"><span class="linenos">1054</span></a> <span class="k">else</span> <span class="n">values</span> +</span><span id="Generator.values_sql-1055"><a href="#Generator.values_sql-1055"><span class="linenos">1055</span></a> <span class="p">)</span> +</span><span id="Generator.values_sql-1056"><a href="#Generator.values_sql-1056"><span class="linenos">1056</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">values</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">values</span> </span></pre></div> @@ -6665,8 +6692,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.var_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.var_sql-1057"><a href="#Generator.var_sql-1057"><span class="linenos">1057</span></a> <span class="k">def</span> <span class="nf">var_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">Var</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.var_sql-1058"><a href="#Generator.var_sql-1058"><span class="linenos">1058</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.var_sql-1058"><a href="#Generator.var_sql-1058"><span class="linenos">1058</span></a> <span class="k">def</span> <span class="nf">var_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">Var</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.var_sql-1059"><a href="#Generator.var_sql-1059"><span class="linenos">1059</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> </span></pre></div> @@ -6684,10 +6711,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.into_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.into_sql-1060"><a href="#Generator.into_sql-1060"><span class="linenos">1060</span></a> <span class="k">def</span> <span class="nf">into_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">Into</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.into_sql-1061"><a href="#Generator.into_sql-1061"><span class="linenos">1061</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.into_sql-1062"><a href="#Generator.into_sql-1062"><span class="linenos">1062</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="s2">" UNLOGGED"</span> <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">"unlogged"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.into_sql-1063"><a href="#Generator.into_sql-1063"><span class="linenos">1063</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'INTO'</span><span class="p">)</span><span class="si">}{</span><span class="n">temporary</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">unlogged</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.into_sql-1061"><a href="#Generator.into_sql-1061"><span class="linenos">1061</span></a> <span class="k">def</span> <span class="nf">into_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">Into</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.into_sql-1062"><a href="#Generator.into_sql-1062"><span class="linenos">1062</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="s2">" TEMPORARY"</span> <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">"temporary"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.into_sql-1063"><a href="#Generator.into_sql-1063"><span class="linenos">1063</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="s2">" UNLOGGED"</span> <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">"unlogged"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.into_sql-1064"><a href="#Generator.into_sql-1064"><span class="linenos">1064</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'INTO'</span><span class="p">)</span><span class="si">}{</span><span class="n">temporary</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="n">unlogged</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6705,9 +6732,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.from_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.from_sql-1065"><a href="#Generator.from_sql-1065"><span class="linenos">1065</span></a> <span class="k">def</span> <span class="nf">from_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">From</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.from_sql-1066"><a href="#Generator.from_sql-1066"><span class="linenos">1066</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.from_sql-1067"><a href="#Generator.from_sql-1067"><span class="linenos">1067</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FROM'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.from_sql-1066"><a href="#Generator.from_sql-1066"><span class="linenos">1066</span></a> <span class="k">def</span> <span class="nf">from_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">From</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.from_sql-1067"><a href="#Generator.from_sql-1067"><span class="linenos">1067</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.from_sql-1068"><a href="#Generator.from_sql-1068"><span class="linenos">1068</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'FROM'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6725,33 +6752,33 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.group_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.group_sql-1069"><a href="#Generator.group_sql-1069"><span class="linenos">1069</span></a> <span class="k">def</span> <span class="nf">group_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">Group</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.group_sql-1070"><a href="#Generator.group_sql-1070"><span class="linenos">1070</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"GROUP BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.group_sql-1071"><a href="#Generator.group_sql-1071"><span class="linenos">1071</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"grouping_sets"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator.group_sql-1072"><a href="#Generator.group_sql-1072"><span class="linenos">1072</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.group_sql-1073"><a href="#Generator.group_sql-1073"><span class="linenos">1073</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'GROUPING SETS'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">grouping_sets</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.group_sql-1074"><a href="#Generator.group_sql-1074"><span class="linenos">1074</span></a> <span class="p">)</span> -</span><span id="Generator.group_sql-1075"><a href="#Generator.group_sql-1075"><span class="linenos">1075</span></a> -</span><span id="Generator.group_sql-1076"><a href="#Generator.group_sql-1076"><span class="linenos">1076</span></a> <span class="n">cube</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">"cube"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="Generator.group_sql-1077"><a href="#Generator.group_sql-1077"><span class="linenos">1077</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">cube</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Generator.group_sql-1078"><a href="#Generator.group_sql-1078"><span class="linenos">1078</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.group_sql-1079"><a href="#Generator.group_sql-1079"><span class="linenos">1079</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.group_sql-1080"><a href="#Generator.group_sql-1080"><span class="linenos">1080</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"cube"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator.group_sql-1081"><a href="#Generator.group_sql-1081"><span class="linenos">1081</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">cube_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">cube_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.group_sql-1082"><a href="#Generator.group_sql-1082"><span class="linenos">1082</span></a> -</span><span id="Generator.group_sql-1083"><a href="#Generator.group_sql-1083"><span class="linenos">1083</span></a> <span class="n">rollup</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">"rollup"</span><span class="p">,</span> <span class="p">[])</span> -</span><span id="Generator.group_sql-1084"><a href="#Generator.group_sql-1084"><span class="linenos">1084</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">rollup</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Generator.group_sql-1085"><a href="#Generator.group_sql-1085"><span class="linenos">1085</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.group_sql-1086"><a href="#Generator.group_sql-1086"><span class="linenos">1086</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.group_sql-1087"><a href="#Generator.group_sql-1087"><span class="linenos">1087</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"rollup"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator.group_sql-1088"><a href="#Generator.group_sql-1088"><span class="linenos">1088</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">rollup_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">rollup_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.group_sql-1089"><a href="#Generator.group_sql-1089"><span class="linenos">1089</span></a> -</span><span id="Generator.group_sql-1090"><a href="#Generator.group_sql-1090"><span class="linenos">1090</span></a> <span class="n">groupings</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">,</span> <span class="n">cube_sql</span><span class="p">,</span> <span class="n">rollup_sql</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">","</span><span class="p">)</span> -</span><span id="Generator.group_sql-1091"><a href="#Generator.group_sql-1091"><span class="linenos">1091</span></a> -</span><span id="Generator.group_sql-1092"><a href="#Generator.group_sql-1092"><span class="linenos">1092</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">"expressions"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">groupings</span><span class="p">:</span> -</span><span id="Generator.group_sql-1093"><a href="#Generator.group_sql-1093"><span class="linenos">1093</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}</span><span class="s2">,"</span> -</span><span id="Generator.group_sql-1094"><a href="#Generator.group_sql-1094"><span class="linenos">1094</span></a> -</span><span id="Generator.group_sql-1095"><a href="#Generator.group_sql-1095"><span class="linenos">1095</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="n">groupings</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.group_sql-1070"><a href="#Generator.group_sql-1070"><span class="linenos">1070</span></a> <span class="k">def</span> <span class="nf">group_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">Group</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.group_sql-1071"><a href="#Generator.group_sql-1071"><span class="linenos">1071</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"GROUP BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.group_sql-1072"><a href="#Generator.group_sql-1072"><span class="linenos">1072</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"grouping_sets"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator.group_sql-1073"><a href="#Generator.group_sql-1073"><span class="linenos">1073</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.group_sql-1074"><a href="#Generator.group_sql-1074"><span class="linenos">1074</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'GROUPING SETS'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">grouping_sets</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.group_sql-1075"><a href="#Generator.group_sql-1075"><span class="linenos">1075</span></a> <span class="p">)</span> +</span><span id="Generator.group_sql-1076"><a href="#Generator.group_sql-1076"><span class="linenos">1076</span></a> +</span><span id="Generator.group_sql-1077"><a href="#Generator.group_sql-1077"><span class="linenos">1077</span></a> <span class="n">cube</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">"cube"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="Generator.group_sql-1078"><a href="#Generator.group_sql-1078"><span class="linenos">1078</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">cube</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Generator.group_sql-1079"><a href="#Generator.group_sql-1079"><span class="linenos">1079</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.group_sql-1080"><a href="#Generator.group_sql-1080"><span class="linenos">1080</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.group_sql-1081"><a href="#Generator.group_sql-1081"><span class="linenos">1081</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"cube"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator.group_sql-1082"><a href="#Generator.group_sql-1082"><span class="linenos">1082</span></a> <span class="n">cube_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'CUBE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">cube_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">cube_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.group_sql-1083"><a href="#Generator.group_sql-1083"><span class="linenos">1083</span></a> +</span><span id="Generator.group_sql-1084"><a href="#Generator.group_sql-1084"><span class="linenos">1084</span></a> <span class="n">rollup</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">"rollup"</span><span class="p">,</span> <span class="p">[])</span> +</span><span id="Generator.group_sql-1085"><a href="#Generator.group_sql-1085"><span class="linenos">1085</span></a> <span class="k">if</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">rollup</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Generator.group_sql-1086"><a href="#Generator.group_sql-1086"><span class="linenos">1086</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WITH ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.group_sql-1087"><a href="#Generator.group_sql-1087"><span class="linenos">1087</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.group_sql-1088"><a href="#Generator.group_sql-1088"><span class="linenos">1088</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"rollup"</span><span class="p">,</span> <span class="n">indent</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator.group_sql-1089"><a href="#Generator.group_sql-1089"><span class="linenos">1089</span></a> <span class="n">rollup_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'ROLLUP'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">rollup_sql</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">rollup_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.group_sql-1090"><a href="#Generator.group_sql-1090"><span class="linenos">1090</span></a> +</span><span id="Generator.group_sql-1091"><a href="#Generator.group_sql-1091"><span class="linenos">1091</span></a> <span class="n">groupings</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">,</span> <span class="n">cube_sql</span><span class="p">,</span> <span class="n">rollup_sql</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">","</span><span class="p">)</span> +</span><span id="Generator.group_sql-1092"><a href="#Generator.group_sql-1092"><span class="linenos">1092</span></a> +</span><span id="Generator.group_sql-1093"><a href="#Generator.group_sql-1093"><span class="linenos">1093</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">"expressions"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">groupings</span><span class="p">:</span> +</span><span id="Generator.group_sql-1094"><a href="#Generator.group_sql-1094"><span class="linenos">1094</span></a> <span class="n">group_by</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}</span><span class="s2">,"</span> +</span><span id="Generator.group_sql-1095"><a href="#Generator.group_sql-1095"><span class="linenos">1095</span></a> +</span><span id="Generator.group_sql-1096"><a href="#Generator.group_sql-1096"><span class="linenos">1096</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">group_by</span><span class="si">}{</span><span class="n">groupings</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6769,9 +6796,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.having_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.having_sql-1097"><a href="#Generator.having_sql-1097"><span class="linenos">1097</span></a> <span class="k">def</span> <span class="nf">having_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">Having</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.having_sql-1098"><a href="#Generator.having_sql-1098"><span class="linenos">1098</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> -</span><span id="Generator.having_sql-1099"><a href="#Generator.having_sql-1099"><span class="linenos">1099</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'HAVING'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.having_sql-1098"><a href="#Generator.having_sql-1098"><span class="linenos">1098</span></a> <span class="k">def</span> <span class="nf">having_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">Having</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.having_sql-1099"><a href="#Generator.having_sql-1099"><span class="linenos">1099</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> +</span><span id="Generator.having_sql-1100"><a href="#Generator.having_sql-1100"><span class="linenos">1100</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'HAVING'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6789,36 +6816,36 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.join_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.join_sql-1101"><a href="#Generator.join_sql-1101"><span class="linenos">1101</span></a> <span class="k">def</span> <span class="nf">join_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">Join</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.join_sql-1102"><a href="#Generator.join_sql-1102"><span class="linenos">1102</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span> -</span><span id="Generator.join_sql-1103"><a href="#Generator.join_sql-1103"><span class="linenos">1103</span></a> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator.join_sql-1104"><a href="#Generator.join_sql-1104"><span class="linenos">1104</span></a> <span class="n">op</span> -</span><span id="Generator.join_sql-1105"><a href="#Generator.join_sql-1105"><span class="linenos">1105</span></a> <span class="k">for</span> <span class="n">op</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="Generator.join_sql-1106"><a href="#Generator.join_sql-1106"><span class="linenos">1106</span></a> <span class="s2">"NATURAL"</span> <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">"natural"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.join_sql-1107"><a href="#Generator.join_sql-1107"><span class="linenos">1107</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">side</span><span class="p">,</span> -</span><span id="Generator.join_sql-1108"><a href="#Generator.join_sql-1108"><span class="linenos">1108</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Generator.join_sql-1109"><a href="#Generator.join_sql-1109"><span class="linenos">1109</span></a> <span class="s2">"JOIN"</span><span class="p">,</span> -</span><span id="Generator.join_sql-1110"><a href="#Generator.join_sql-1110"><span class="linenos">1110</span></a> <span class="p">)</span> -</span><span id="Generator.join_sql-1111"><a href="#Generator.join_sql-1111"><span class="linenos">1111</span></a> <span class="k">if</span> <span class="n">op</span> -</span><span id="Generator.join_sql-1112"><a href="#Generator.join_sql-1112"><span class="linenos">1112</span></a> <span class="p">)</span> -</span><span id="Generator.join_sql-1113"><a href="#Generator.join_sql-1113"><span class="linenos">1113</span></a> <span class="p">)</span> -</span><span id="Generator.join_sql-1114"><a href="#Generator.join_sql-1114"><span class="linenos">1114</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">)</span> -</span><span id="Generator.join_sql-1115"><a href="#Generator.join_sql-1115"><span class="linenos">1115</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> -</span><span id="Generator.join_sql-1116"><a href="#Generator.join_sql-1116"><span class="linenos">1116</span></a> -</span><span id="Generator.join_sql-1117"><a href="#Generator.join_sql-1117"><span class="linenos">1117</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">on_sql</span> <span class="ow">and</span> <span class="n">using</span><span class="p">:</span> -</span><span id="Generator.join_sql-1118"><a href="#Generator.join_sql-1118"><span class="linenos">1118</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="o">*</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">column</span><span class="p">)</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">using</span><span class="p">))</span> -</span><span id="Generator.join_sql-1119"><a href="#Generator.join_sql-1119"><span class="linenos">1119</span></a> -</span><span id="Generator.join_sql-1120"><a href="#Generator.join_sql-1120"><span class="linenos">1120</span></a> <span class="k">if</span> <span class="n">on_sql</span><span class="p">:</span> -</span><span id="Generator.join_sql-1121"><a href="#Generator.join_sql-1121"><span class="linenos">1121</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">on_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.join_sql-1122"><a href="#Generator.join_sql-1122"><span class="linenos">1122</span></a> <span class="n">space</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator.join_sql-1123"><a href="#Generator.join_sql-1123"><span class="linenos">1123</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> -</span><span id="Generator.join_sql-1124"><a href="#Generator.join_sql-1124"><span class="linenos">1124</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">USING (</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator.join_sql-1125"><a href="#Generator.join_sql-1125"><span class="linenos">1125</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.join_sql-1126"><a href="#Generator.join_sql-1126"><span class="linenos">1126</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">ON </span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.join_sql-1127"><a href="#Generator.join_sql-1127"><span class="linenos">1127</span></a> -</span><span id="Generator.join_sql-1128"><a href="#Generator.join_sql-1128"><span class="linenos">1128</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator.join_sql-1129"><a href="#Generator.join_sql-1129"><span class="linenos">1129</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator.join_sql-1130"><a href="#Generator.join_sql-1130"><span class="linenos">1130</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">op_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_sql</span><span class="si">}{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.join_sql-1102"><a href="#Generator.join_sql-1102"><span class="linenos">1102</span></a> <span class="k">def</span> <span class="nf">join_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">Join</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.join_sql-1103"><a href="#Generator.join_sql-1103"><span class="linenos">1103</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span> +</span><span id="Generator.join_sql-1104"><a href="#Generator.join_sql-1104"><span class="linenos">1104</span></a> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator.join_sql-1105"><a href="#Generator.join_sql-1105"><span class="linenos">1105</span></a> <span class="n">op</span> +</span><span id="Generator.join_sql-1106"><a href="#Generator.join_sql-1106"><span class="linenos">1106</span></a> <span class="k">for</span> <span class="n">op</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="Generator.join_sql-1107"><a href="#Generator.join_sql-1107"><span class="linenos">1107</span></a> <span class="s2">"NATURAL"</span> <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">"natural"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.join_sql-1108"><a href="#Generator.join_sql-1108"><span class="linenos">1108</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">side</span><span class="p">,</span> +</span><span id="Generator.join_sql-1109"><a href="#Generator.join_sql-1109"><span class="linenos">1109</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Generator.join_sql-1110"><a href="#Generator.join_sql-1110"><span class="linenos">1110</span></a> <span class="s2">"JOIN"</span><span class="p">,</span> +</span><span id="Generator.join_sql-1111"><a href="#Generator.join_sql-1111"><span class="linenos">1111</span></a> <span class="p">)</span> +</span><span id="Generator.join_sql-1112"><a href="#Generator.join_sql-1112"><span class="linenos">1112</span></a> <span class="k">if</span> <span class="n">op</span> +</span><span id="Generator.join_sql-1113"><a href="#Generator.join_sql-1113"><span class="linenos">1113</span></a> <span class="p">)</span> +</span><span id="Generator.join_sql-1114"><a href="#Generator.join_sql-1114"><span class="linenos">1114</span></a> <span class="p">)</span> +</span><span id="Generator.join_sql-1115"><a href="#Generator.join_sql-1115"><span class="linenos">1115</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"on"</span><span class="p">)</span> +</span><span id="Generator.join_sql-1116"><a href="#Generator.join_sql-1116"><span class="linenos">1116</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> +</span><span id="Generator.join_sql-1117"><a href="#Generator.join_sql-1117"><span class="linenos">1117</span></a> +</span><span id="Generator.join_sql-1118"><a href="#Generator.join_sql-1118"><span class="linenos">1118</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">on_sql</span> <span class="ow">and</span> <span class="n">using</span><span class="p">:</span> +</span><span id="Generator.join_sql-1119"><a href="#Generator.join_sql-1119"><span class="linenos">1119</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="o">*</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">column</span><span class="p">)</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">using</span><span class="p">))</span> +</span><span id="Generator.join_sql-1120"><a href="#Generator.join_sql-1120"><span class="linenos">1120</span></a> +</span><span id="Generator.join_sql-1121"><a href="#Generator.join_sql-1121"><span class="linenos">1121</span></a> <span class="k">if</span> <span class="n">on_sql</span><span class="p">:</span> +</span><span id="Generator.join_sql-1122"><a href="#Generator.join_sql-1122"><span class="linenos">1122</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">on_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.join_sql-1123"><a href="#Generator.join_sql-1123"><span class="linenos">1123</span></a> <span class="n">space</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator.join_sql-1124"><a href="#Generator.join_sql-1124"><span class="linenos">1124</span></a> <span class="k">if</span> <span class="n">using</span><span class="p">:</span> +</span><span id="Generator.join_sql-1125"><a href="#Generator.join_sql-1125"><span class="linenos">1125</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">USING (</span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator.join_sql-1126"><a href="#Generator.join_sql-1126"><span class="linenos">1126</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.join_sql-1127"><a href="#Generator.join_sql-1127"><span class="linenos">1127</span></a> <span class="n">on_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">space</span><span class="si">}</span><span class="s2">ON </span><span class="si">{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.join_sql-1128"><a href="#Generator.join_sql-1128"><span class="linenos">1128</span></a> +</span><span id="Generator.join_sql-1129"><a href="#Generator.join_sql-1129"><span class="linenos">1129</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator.join_sql-1130"><a href="#Generator.join_sql-1130"><span class="linenos">1130</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator.join_sql-1131"><a href="#Generator.join_sql-1131"><span class="linenos">1131</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}{</span><span class="n">op_sql</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">this_sql</span><span class="si">}{</span><span class="n">on_sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6836,10 +6863,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.lambda_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lambda_sql-1132"><a href="#Generator.lambda_sql-1132"><span class="linenos">1132</span></a> <span class="k">def</span> <span class="nf">lambda_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">Lambda</span><span class="p">,</span> <span class="n">arrow_sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"->"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.lambda_sql-1133"><a href="#Generator.lambda_sql-1133"><span class="linenos">1133</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.lambda_sql-1134"><a href="#Generator.lambda_sql-1134"><span class="linenos">1134</span></a> <span class="n">args</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">))</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">args</span> -</span><span id="Generator.lambda_sql-1135"><a href="#Generator.lambda_sql-1135"><span class="linenos">1135</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">arrow_sep</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lambda_sql-1133"><a href="#Generator.lambda_sql-1133"><span class="linenos">1133</span></a> <span class="k">def</span> <span class="nf">lambda_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">Lambda</span><span class="p">,</span> <span class="n">arrow_sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">"->"</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.lambda_sql-1134"><a href="#Generator.lambda_sql-1134"><span class="linenos">1134</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.lambda_sql-1135"><a href="#Generator.lambda_sql-1135"><span class="linenos">1135</span></a> <span class="n">args</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">","</span><span class="p">))</span> <span class="o">></span> <span class="mi">1</span> <span class="k">else</span> <span class="n">args</span> +</span><span id="Generator.lambda_sql-1136"><a href="#Generator.lambda_sql-1136"><span class="linenos">1136</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">arrow_sep</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6857,23 +6884,23 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.lateral_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lateral_sql-1137"><a href="#Generator.lateral_sql-1137"><span class="linenos">1137</span></a> <span class="k">def</span> <span class="nf">lateral_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">Lateral</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.lateral_sql-1138"><a href="#Generator.lateral_sql-1138"><span class="linenos">1138</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">"this"</span><span class="p">)</span> -</span><span id="Generator.lateral_sql-1139"><a href="#Generator.lateral_sql-1139"><span class="linenos">1139</span></a> -</span><span id="Generator.lateral_sql-1140"><a href="#Generator.lateral_sql-1140"><span class="linenos">1140</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">Subquery</span><span class="p">):</span> -</span><span id="Generator.lateral_sql-1141"><a href="#Generator.lateral_sql-1141"><span class="linenos">1141</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.lateral_sql-1142"><a href="#Generator.lateral_sql-1142"><span class="linenos">1142</span></a> -</span><span id="Generator.lateral_sql-1143"><a href="#Generator.lateral_sql-1143"><span class="linenos">1143</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">"view"</span><span class="p">):</span> -</span><span id="Generator.lateral_sql-1144"><a href="#Generator.lateral_sql-1144"><span class="linenos">1144</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="p">[</span><span class="s2">"alias"</span><span class="p">]</span> -</span><span id="Generator.lateral_sql-1145"><a href="#Generator.lateral_sql-1145"><span class="linenos">1145</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.lateral_sql-1146"><a href="#Generator.lateral_sql-1146"><span class="linenos">1146</span></a> <span class="n">table</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">alias</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.lateral_sql-1147"><a href="#Generator.lateral_sql-1147"><span class="linenos">1147</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.lateral_sql-1148"><a href="#Generator.lateral_sql-1148"><span class="linenos">1148</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"LATERAL VIEW</span><span class="si">{</span><span class="s1">' OUTER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'outer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.lateral_sql-1149"><a href="#Generator.lateral_sql-1149"><span class="linenos">1149</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">table</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.lateral_sql-1150"><a href="#Generator.lateral_sql-1150"><span class="linenos">1150</span></a> -</span><span id="Generator.lateral_sql-1151"><a href="#Generator.lateral_sql-1151"><span class="linenos">1151</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator.lateral_sql-1152"><a href="#Generator.lateral_sql-1152"><span class="linenos">1152</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.lateral_sql-1153"><a href="#Generator.lateral_sql-1153"><span class="linenos">1153</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lateral_sql-1138"><a href="#Generator.lateral_sql-1138"><span class="linenos">1138</span></a> <span class="k">def</span> <span class="nf">lateral_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">Lateral</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.lateral_sql-1139"><a href="#Generator.lateral_sql-1139"><span class="linenos">1139</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">"this"</span><span class="p">)</span> +</span><span id="Generator.lateral_sql-1140"><a href="#Generator.lateral_sql-1140"><span class="linenos">1140</span></a> +</span><span id="Generator.lateral_sql-1141"><a href="#Generator.lateral_sql-1141"><span class="linenos">1141</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">Subquery</span><span class="p">):</span> +</span><span id="Generator.lateral_sql-1142"><a href="#Generator.lateral_sql-1142"><span class="linenos">1142</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.lateral_sql-1143"><a href="#Generator.lateral_sql-1143"><span class="linenos">1143</span></a> +</span><span id="Generator.lateral_sql-1144"><a href="#Generator.lateral_sql-1144"><span class="linenos">1144</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">"view"</span><span class="p">):</span> +</span><span id="Generator.lateral_sql-1145"><a href="#Generator.lateral_sql-1145"><span class="linenos">1145</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="p">[</span><span class="s2">"alias"</span><span class="p">]</span> +</span><span id="Generator.lateral_sql-1146"><a href="#Generator.lateral_sql-1146"><span class="linenos">1146</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">alias</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"columns"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.lateral_sql-1147"><a href="#Generator.lateral_sql-1147"><span class="linenos">1147</span></a> <span class="n">table</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">alias</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.lateral_sql-1148"><a href="#Generator.lateral_sql-1148"><span class="linenos">1148</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.lateral_sql-1149"><a href="#Generator.lateral_sql-1149"><span class="linenos">1149</span></a> <span class="n">op_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"LATERAL VIEW</span><span class="si">{</span><span class="s1">' OUTER'</span><span class="w"> </span><span class="k">if</span><span class="w"> </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="s1">'outer'</span><span class="p">)</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.lateral_sql-1150"><a href="#Generator.lateral_sql-1150"><span class="linenos">1150</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op_sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">table</span><span class="si">}{</span><span class="n">columns</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.lateral_sql-1151"><a href="#Generator.lateral_sql-1151"><span class="linenos">1151</span></a> +</span><span id="Generator.lateral_sql-1152"><a href="#Generator.lateral_sql-1152"><span class="linenos">1152</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.lateral_sql-1153"><a href="#Generator.lateral_sql-1153"><span class="linenos">1153</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.lateral_sql-1154"><a href="#Generator.lateral_sql-1154"><span class="linenos">1154</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LATERAL </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6891,9 +6918,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.limit_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.limit_sql-1155"><a href="#Generator.limit_sql-1155"><span class="linenos">1155</span></a> <span class="k">def</span> <span class="nf">limit_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">Limit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.limit_sql-1156"><a href="#Generator.limit_sql-1156"><span class="linenos">1156</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">"this"</span><span class="p">)</span> -</span><span id="Generator.limit_sql-1157"><a href="#Generator.limit_sql-1157"><span class="linenos">1157</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'LIMIT'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.limit_sql-1156"><a href="#Generator.limit_sql-1156"><span class="linenos">1156</span></a> <span class="k">def</span> <span class="nf">limit_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">Limit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.limit_sql-1157"><a href="#Generator.limit_sql-1157"><span class="linenos">1157</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">"this"</span><span class="p">)</span> +</span><span id="Generator.limit_sql-1158"><a href="#Generator.limit_sql-1158"><span class="linenos">1158</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'LIMIT'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6911,9 +6938,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.offset_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.offset_sql-1159"><a href="#Generator.offset_sql-1159"><span class="linenos">1159</span></a> <span class="k">def</span> <span class="nf">offset_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">Offset</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.offset_sql-1160"><a href="#Generator.offset_sql-1160"><span class="linenos">1160</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">"this"</span><span class="p">)</span> -</span><span id="Generator.offset_sql-1161"><a href="#Generator.offset_sql-1161"><span class="linenos">1161</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'OFFSET'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.offset_sql-1160"><a href="#Generator.offset_sql-1160"><span class="linenos">1160</span></a> <span class="k">def</span> <span class="nf">offset_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">Offset</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.offset_sql-1161"><a href="#Generator.offset_sql-1161"><span class="linenos">1161</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">"this"</span><span class="p">)</span> +</span><span id="Generator.offset_sql-1162"><a href="#Generator.offset_sql-1162"><span class="linenos">1162</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'OFFSET'</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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -6931,13 +6958,13 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.lock_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lock_sql-1163"><a href="#Generator.lock_sql-1163"><span class="linenos">1163</span></a> <span class="k">def</span> <span class="nf">lock_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">Lock</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.lock_sql-1164"><a href="#Generator.lock_sql-1164"><span class="linenos">1164</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">LOCKING_READS_SUPPORTED</span><span class="p">:</span> -</span><span id="Generator.lock_sql-1165"><a href="#Generator.lock_sql-1165"><span class="linenos">1165</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"UPDATE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"update"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">"SHARE"</span> -</span><span id="Generator.lock_sql-1166"><a href="#Generator.lock_sql-1166"><span class="linenos">1166</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"FOR </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.lock_sql-1167"><a href="#Generator.lock_sql-1167"><span class="linenos">1167</span></a> -</span><span id="Generator.lock_sql-1168"><a href="#Generator.lock_sql-1168"><span class="linenos">1168</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Locking reads using 'FOR UPDATE/SHARE' are not supported"</span><span class="p">)</span> -</span><span id="Generator.lock_sql-1169"><a href="#Generator.lock_sql-1169"><span class="linenos">1169</span></a> <span class="k">return</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lock_sql-1164"><a href="#Generator.lock_sql-1164"><span class="linenos">1164</span></a> <span class="k">def</span> <span class="nf">lock_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">Lock</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.lock_sql-1165"><a href="#Generator.lock_sql-1165"><span class="linenos">1165</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">LOCKING_READS_SUPPORTED</span><span class="p">:</span> +</span><span id="Generator.lock_sql-1166"><a href="#Generator.lock_sql-1166"><span class="linenos">1166</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"UPDATE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"update"</span><span class="p">]</span> <span class="k">else</span> <span class="s2">"SHARE"</span> +</span><span id="Generator.lock_sql-1167"><a href="#Generator.lock_sql-1167"><span class="linenos">1167</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"FOR </span><span class="si">{</span><span class="n">lock_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.lock_sql-1168"><a href="#Generator.lock_sql-1168"><span class="linenos">1168</span></a> +</span><span id="Generator.lock_sql-1169"><a href="#Generator.lock_sql-1169"><span class="linenos">1169</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Locking reads using 'FOR UPDATE/SHARE' are not supported"</span><span class="p">)</span> +</span><span id="Generator.lock_sql-1170"><a href="#Generator.lock_sql-1170"><span class="linenos">1170</span></a> <span class="k">return</span> <span class="s2">""</span> </span></pre></div> @@ -6955,14 +6982,14 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.literal_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.literal_sql-1171"><a href="#Generator.literal_sql-1171"><span class="linenos">1171</span></a> <span class="k">def</span> <span class="nf">literal_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">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.literal_sql-1172"><a href="#Generator.literal_sql-1172"><span class="linenos">1172</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="Generator.literal_sql-1173"><a href="#Generator.literal_sql-1173"><span class="linenos">1173</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> -</span><span id="Generator.literal_sql-1174"><a href="#Generator.literal_sql-1174"><span class="linenos">1174</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span><span class="p">)</span> -</span><span id="Generator.literal_sql-1175"><a href="#Generator.literal_sql-1175"><span class="linenos">1175</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator.literal_sql-1176"><a href="#Generator.literal_sql-1176"><span class="linenos">1176</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">)</span> -</span><span id="Generator.literal_sql-1177"><a href="#Generator.literal_sql-1177"><span class="linenos">1177</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.literal_sql-1178"><a href="#Generator.literal_sql-1178"><span class="linenos">1178</span></a> <span class="k">return</span> <span class="n">text</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.literal_sql-1172"><a href="#Generator.literal_sql-1172"><span class="linenos">1172</span></a> <span class="k">def</span> <span class="nf">literal_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">Literal</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.literal_sql-1173"><a href="#Generator.literal_sql-1173"><span class="linenos">1173</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="Generator.literal_sql-1174"><a href="#Generator.literal_sql-1174"><span class="linenos">1174</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span> +</span><span id="Generator.literal_sql-1175"><a href="#Generator.literal_sql-1175"><span class="linenos">1175</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_escaped_quote_end</span><span class="p">)</span> +</span><span id="Generator.literal_sql-1176"><a href="#Generator.literal_sql-1176"><span class="linenos">1176</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator.literal_sql-1177"><a href="#Generator.literal_sql-1177"><span class="linenos">1177</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">SENTINEL_LINE_BREAK</span><span class="p">)</span> +</span><span id="Generator.literal_sql-1178"><a href="#Generator.literal_sql-1178"><span class="linenos">1178</span></a> <span class="n">text</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_start</span><span class="si">}{</span><span class="n">text</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">quote_end</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.literal_sql-1179"><a href="#Generator.literal_sql-1179"><span class="linenos">1179</span></a> <span class="k">return</span> <span class="n">text</span> </span></pre></div> @@ -6980,18 +7007,18 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.loaddata_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.loaddata_sql-1180"><a href="#Generator.loaddata_sql-1180"><span class="linenos">1180</span></a> <span class="k">def</span> <span class="nf">loaddata_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">LoadData</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.loaddata_sql-1181"><a href="#Generator.loaddata_sql-1181"><span class="linenos">1181</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">" LOCAL"</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.loaddata_sql-1182"><a href="#Generator.loaddata_sql-1182"><span class="linenos">1182</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPATH </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">'inpath'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.loaddata_sql-1183"><a href="#Generator.loaddata_sql-1183"><span class="linenos">1183</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="s2">" OVERWRITE"</span> <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">"overwrite"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.loaddata_sql-1184"><a href="#Generator.loaddata_sql-1184"><span class="linenos">1184</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO TABLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.loaddata_sql-1185"><a href="#Generator.loaddata_sql-1185"><span class="linenos">1185</span></a> <span class="n">partition</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">"partition"</span><span class="p">)</span> -</span><span id="Generator.loaddata_sql-1186"><a href="#Generator.loaddata_sql-1186"><span class="linenos">1186</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.loaddata_sql-1187"><a href="#Generator.loaddata_sql-1187"><span class="linenos">1187</span></a> <span class="n">input_format</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">"input_format"</span><span class="p">)</span> -</span><span id="Generator.loaddata_sql-1188"><a href="#Generator.loaddata_sql-1188"><span class="linenos">1188</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPUTFORMAT </span><span class="si">{</span><span class="n">input_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">input_format</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.loaddata_sql-1189"><a href="#Generator.loaddata_sql-1189"><span class="linenos">1189</span></a> <span class="n">serde</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">"serde"</span><span class="p">)</span> -</span><span id="Generator.loaddata_sql-1190"><a href="#Generator.loaddata_sql-1190"><span class="linenos">1190</span></a> <span class="n">serde</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SERDE </span><span class="si">{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">serde</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.loaddata_sql-1191"><a href="#Generator.loaddata_sql-1191"><span class="linenos">1191</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOAD DATA</span><span class="si">{</span><span class="n">local</span><span class="si">}{</span><span class="n">inpath</span><span class="si">}{</span><span class="n">overwrite</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">partition</span><span class="si">}{</span><span class="n">input_format</span><span class="si">}{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.loaddata_sql-1181"><a href="#Generator.loaddata_sql-1181"><span class="linenos">1181</span></a> <span class="k">def</span> <span class="nf">loaddata_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">LoadData</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.loaddata_sql-1182"><a href="#Generator.loaddata_sql-1182"><span class="linenos">1182</span></a> <span class="n">local</span> <span class="o">=</span> <span class="s2">" LOCAL"</span> <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">"local"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.loaddata_sql-1183"><a href="#Generator.loaddata_sql-1183"><span class="linenos">1183</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPATH </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">'inpath'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.loaddata_sql-1184"><a href="#Generator.loaddata_sql-1184"><span class="linenos">1184</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="s2">" OVERWRITE"</span> <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">"overwrite"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.loaddata_sql-1185"><a href="#Generator.loaddata_sql-1185"><span class="linenos">1185</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INTO TABLE </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.loaddata_sql-1186"><a href="#Generator.loaddata_sql-1186"><span class="linenos">1186</span></a> <span class="n">partition</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">"partition"</span><span class="p">)</span> +</span><span id="Generator.loaddata_sql-1187"><a href="#Generator.loaddata_sql-1187"><span class="linenos">1187</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.loaddata_sql-1188"><a href="#Generator.loaddata_sql-1188"><span class="linenos">1188</span></a> <span class="n">input_format</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">"input_format"</span><span class="p">)</span> +</span><span id="Generator.loaddata_sql-1189"><a href="#Generator.loaddata_sql-1189"><span class="linenos">1189</span></a> <span class="n">input_format</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" INPUTFORMAT </span><span class="si">{</span><span class="n">input_format</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">input_format</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.loaddata_sql-1190"><a href="#Generator.loaddata_sql-1190"><span class="linenos">1190</span></a> <span class="n">serde</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">"serde"</span><span class="p">)</span> +</span><span id="Generator.loaddata_sql-1191"><a href="#Generator.loaddata_sql-1191"><span class="linenos">1191</span></a> <span class="n">serde</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" SERDE </span><span class="si">{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">serde</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.loaddata_sql-1192"><a href="#Generator.loaddata_sql-1192"><span class="linenos">1192</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"LOAD DATA</span><span class="si">{</span><span class="n">local</span><span class="si">}{</span><span class="n">inpath</span><span class="si">}{</span><span class="n">overwrite</span><span class="si">}{</span><span class="n">this</span><span class="si">}{</span><span class="n">partition</span><span class="si">}{</span><span class="n">input_format</span><span class="si">}{</span><span class="n">serde</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7009,8 +7036,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.null_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.null_sql-1193"><a href="#Generator.null_sql-1193"><span class="linenos">1193</span></a> <span class="k">def</span> <span class="nf">null_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.null_sql-1194"><a href="#Generator.null_sql-1194"><span class="linenos">1194</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.null_sql-1194"><a href="#Generator.null_sql-1194"><span class="linenos">1194</span></a> <span class="k">def</span> <span class="nf">null_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.null_sql-1195"><a href="#Generator.null_sql-1195"><span class="linenos">1195</span></a> <span class="k">return</span> <span class="s2">"NULL"</span> </span></pre></div> @@ -7028,8 +7055,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.boolean_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.boolean_sql-1196"><a href="#Generator.boolean_sql-1196"><span class="linenos">1196</span></a> <span class="k">def</span> <span class="nf">boolean_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">Boolean</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.boolean_sql-1197"><a href="#Generator.boolean_sql-1197"><span class="linenos">1197</span></a> <span class="k">return</span> <span class="s2">"TRUE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">"FALSE"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.boolean_sql-1197"><a href="#Generator.boolean_sql-1197"><span class="linenos">1197</span></a> <span class="k">def</span> <span class="nf">boolean_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">Boolean</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.boolean_sql-1198"><a href="#Generator.boolean_sql-1198"><span class="linenos">1198</span></a> <span class="k">return</span> <span class="s2">"TRUE"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span> <span class="k">else</span> <span class="s2">"FALSE"</span> </span></pre></div> @@ -7047,10 +7074,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.order_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.order_sql-1199"><a href="#Generator.order_sql-1199"><span class="linenos">1199</span></a> <span class="k">def</span> <span class="nf">order_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">Order</span><span class="p">,</span> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.order_sql-1200"><a href="#Generator.order_sql-1200"><span class="linenos">1200</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">"this"</span><span class="p">)</span> -</span><span id="Generator.order_sql-1201"><a href="#Generator.order_sql-1201"><span class="linenos">1201</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">this</span> -</span><span id="Generator.order_sql-1202"><a href="#Generator.order_sql-1202"><span class="linenos">1202</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">ORDER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">this</span> <span class="ow">or</span> <span class="n">flat</span><span class="p">)</span> <span class="c1"># type: ignore</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.order_sql-1200"><a href="#Generator.order_sql-1200"><span class="linenos">1200</span></a> <span class="k">def</span> <span class="nf">order_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">Order</span><span class="p">,</span> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.order_sql-1201"><a href="#Generator.order_sql-1201"><span class="linenos">1201</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">"this"</span><span class="p">)</span> +</span><span id="Generator.order_sql-1202"><a href="#Generator.order_sql-1202"><span class="linenos">1202</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="n">this</span> +</span><span id="Generator.order_sql-1203"><a href="#Generator.order_sql-1203"><span class="linenos">1203</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">ORDER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">this</span> <span class="ow">or</span> <span class="n">flat</span><span class="p">)</span> <span class="c1"># type: ignore</span> </span></pre></div> @@ -7068,8 +7095,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.cluster_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.cluster_sql-1204"><a href="#Generator.cluster_sql-1204"><span class="linenos">1204</span></a> <span class="k">def</span> <span class="nf">cluster_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">Cluster</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.cluster_sql-1205"><a href="#Generator.cluster_sql-1205"><span class="linenos">1205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.cluster_sql-1205"><a href="#Generator.cluster_sql-1205"><span class="linenos">1205</span></a> <span class="k">def</span> <span class="nf">cluster_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">Cluster</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.cluster_sql-1206"><a href="#Generator.cluster_sql-1206"><span class="linenos">1206</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"CLUSTER BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -7087,8 +7114,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.distribute_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.distribute_sql-1207"><a href="#Generator.distribute_sql-1207"><span class="linenos">1207</span></a> <span class="k">def</span> <span class="nf">distribute_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">Distribute</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.distribute_sql-1208"><a href="#Generator.distribute_sql-1208"><span class="linenos">1208</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"DISTRIBUTE BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.distribute_sql-1208"><a href="#Generator.distribute_sql-1208"><span class="linenos">1208</span></a> <span class="k">def</span> <span class="nf">distribute_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">Distribute</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.distribute_sql-1209"><a href="#Generator.distribute_sql-1209"><span class="linenos">1209</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"DISTRIBUTE BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -7106,8 +7133,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.sort_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sort_sql-1210"><a href="#Generator.sort_sql-1210"><span class="linenos">1210</span></a> <span class="k">def</span> <span class="nf">sort_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">Sort</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.sort_sql-1211"><a href="#Generator.sort_sql-1211"><span class="linenos">1211</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"SORT BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sort_sql-1211"><a href="#Generator.sort_sql-1211"><span class="linenos">1211</span></a> <span class="k">def</span> <span class="nf">sort_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">Sort</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.sort_sql-1212"><a href="#Generator.sort_sql-1212"><span class="linenos">1212</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op_expressions</span><span class="p">(</span><span class="s2">"SORT BY"</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> </span></pre></div> @@ -7125,36 +7152,36 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.ordered_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.ordered_sql-1213"><a href="#Generator.ordered_sql-1213"><span class="linenos">1213</span></a> <span class="k">def</span> <span class="nf">ordered_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">Ordered</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.ordered_sql-1214"><a href="#Generator.ordered_sql-1214"><span class="linenos">1214</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> -</span><span id="Generator.ordered_sql-1215"><a href="#Generator.ordered_sql-1215"><span class="linenos">1215</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> -</span><span id="Generator.ordered_sql-1216"><a href="#Generator.ordered_sql-1216"><span class="linenos">1216</span></a> -</span><span id="Generator.ordered_sql-1217"><a href="#Generator.ordered_sql-1217"><span class="linenos">1217</span></a> <span class="n">nulls_first</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">"nulls_first"</span><span class="p">)</span> -</span><span id="Generator.ordered_sql-1218"><a href="#Generator.ordered_sql-1218"><span class="linenos">1218</span></a> <span class="n">nulls_last</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">nulls_first</span> -</span><span id="Generator.ordered_sql-1219"><a href="#Generator.ordered_sql-1219"><span class="linenos">1219</span></a> <span class="n">nulls_are_large</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_large"</span> -</span><span id="Generator.ordered_sql-1220"><a href="#Generator.ordered_sql-1220"><span class="linenos">1220</span></a> <span class="n">nulls_are_small</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span> -</span><span id="Generator.ordered_sql-1221"><a href="#Generator.ordered_sql-1221"><span class="linenos">1221</span></a> <span class="n">nulls_are_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_last"</span> -</span><span id="Generator.ordered_sql-1222"><a href="#Generator.ordered_sql-1222"><span class="linenos">1222</span></a> -</span><span id="Generator.ordered_sql-1223"><a href="#Generator.ordered_sql-1223"><span class="linenos">1223</span></a> <span class="n">sort_order</span> <span class="o">=</span> <span class="s2">" DESC"</span> <span class="k">if</span> <span class="n">desc</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.ordered_sql-1224"><a href="#Generator.ordered_sql-1224"><span class="linenos">1224</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.ordered_sql-1225"><a href="#Generator.ordered_sql-1225"><span class="linenos">1225</span></a> <span class="k">if</span> <span class="n">nulls_first</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="Generator.ordered_sql-1226"><a href="#Generator.ordered_sql-1226"><span class="linenos">1226</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="n">nulls_are_last</span> -</span><span id="Generator.ordered_sql-1227"><a href="#Generator.ordered_sql-1227"><span class="linenos">1227</span></a> <span class="p">):</span> -</span><span id="Generator.ordered_sql-1228"><a href="#Generator.ordered_sql-1228"><span class="linenos">1228</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS FIRST"</span> -</span><span id="Generator.ordered_sql-1229"><a href="#Generator.ordered_sql-1229"><span class="linenos">1229</span></a> <span class="k">elif</span> <span class="p">(</span> -</span><span id="Generator.ordered_sql-1230"><a href="#Generator.ordered_sql-1230"><span class="linenos">1230</span></a> <span class="n">nulls_last</span> -</span><span id="Generator.ordered_sql-1231"><a href="#Generator.ordered_sql-1231"><span class="linenos">1231</span></a> <span class="ow">and</span> <span class="p">((</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">))</span> -</span><span id="Generator.ordered_sql-1232"><a href="#Generator.ordered_sql-1232"><span class="linenos">1232</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">nulls_are_last</span> -</span><span id="Generator.ordered_sql-1233"><a href="#Generator.ordered_sql-1233"><span class="linenos">1233</span></a> <span class="p">):</span> -</span><span id="Generator.ordered_sql-1234"><a href="#Generator.ordered_sql-1234"><span class="linenos">1234</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS LAST"</span> -</span><span id="Generator.ordered_sql-1235"><a href="#Generator.ordered_sql-1235"><span class="linenos">1235</span></a> -</span><span id="Generator.ordered_sql-1236"><a href="#Generator.ordered_sql-1236"><span class="linenos">1236</span></a> <span class="k">if</span> <span class="n">nulls_sort_change</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">NULL_ORDERING_SUPPORTED</span><span class="p">:</span> -</span><span id="Generator.ordered_sql-1237"><a href="#Generator.ordered_sql-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span> -</span><span id="Generator.ordered_sql-1238"><a href="#Generator.ordered_sql-1238"><span class="linenos">1238</span></a> <span class="s2">"Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"</span> -</span><span id="Generator.ordered_sql-1239"><a href="#Generator.ordered_sql-1239"><span class="linenos">1239</span></a> <span class="p">)</span> -</span><span id="Generator.ordered_sql-1240"><a href="#Generator.ordered_sql-1240"><span class="linenos">1240</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.ordered_sql-1241"><a href="#Generator.ordered_sql-1241"><span class="linenos">1241</span></a> -</span><span id="Generator.ordered_sql-1242"><a href="#Generator.ordered_sql-1242"><span class="linenos">1242</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">sort_order</span><span class="si">}{</span><span class="n">nulls_sort_change</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.ordered_sql-1214"><a href="#Generator.ordered_sql-1214"><span class="linenos">1214</span></a> <span class="k">def</span> <span class="nf">ordered_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">Ordered</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.ordered_sql-1215"><a href="#Generator.ordered_sql-1215"><span class="linenos">1215</span></a> <span class="n">desc</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">"desc"</span><span class="p">)</span> +</span><span id="Generator.ordered_sql-1216"><a href="#Generator.ordered_sql-1216"><span class="linenos">1216</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> +</span><span id="Generator.ordered_sql-1217"><a href="#Generator.ordered_sql-1217"><span class="linenos">1217</span></a> +</span><span id="Generator.ordered_sql-1218"><a href="#Generator.ordered_sql-1218"><span class="linenos">1218</span></a> <span class="n">nulls_first</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">"nulls_first"</span><span class="p">)</span> +</span><span id="Generator.ordered_sql-1219"><a href="#Generator.ordered_sql-1219"><span class="linenos">1219</span></a> <span class="n">nulls_last</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">nulls_first</span> +</span><span id="Generator.ordered_sql-1220"><a href="#Generator.ordered_sql-1220"><span class="linenos">1220</span></a> <span class="n">nulls_are_large</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_large"</span> +</span><span id="Generator.ordered_sql-1221"><a href="#Generator.ordered_sql-1221"><span class="linenos">1221</span></a> <span class="n">nulls_are_small</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span> +</span><span id="Generator.ordered_sql-1222"><a href="#Generator.ordered_sql-1222"><span class="linenos">1222</span></a> <span class="n">nulls_are_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_last"</span> +</span><span id="Generator.ordered_sql-1223"><a href="#Generator.ordered_sql-1223"><span class="linenos">1223</span></a> +</span><span id="Generator.ordered_sql-1224"><a href="#Generator.ordered_sql-1224"><span class="linenos">1224</span></a> <span class="n">sort_order</span> <span class="o">=</span> <span class="s2">" DESC"</span> <span class="k">if</span> <span class="n">desc</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.ordered_sql-1225"><a href="#Generator.ordered_sql-1225"><span class="linenos">1225</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.ordered_sql-1226"><a href="#Generator.ordered_sql-1226"><span class="linenos">1226</span></a> <span class="k">if</span> <span class="n">nulls_first</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="Generator.ordered_sql-1227"><a href="#Generator.ordered_sql-1227"><span class="linenos">1227</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="n">nulls_are_last</span> +</span><span id="Generator.ordered_sql-1228"><a href="#Generator.ordered_sql-1228"><span class="linenos">1228</span></a> <span class="p">):</span> +</span><span id="Generator.ordered_sql-1229"><a href="#Generator.ordered_sql-1229"><span class="linenos">1229</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS FIRST"</span> +</span><span id="Generator.ordered_sql-1230"><a href="#Generator.ordered_sql-1230"><span class="linenos">1230</span></a> <span class="k">elif</span> <span class="p">(</span> +</span><span id="Generator.ordered_sql-1231"><a href="#Generator.ordered_sql-1231"><span class="linenos">1231</span></a> <span class="n">nulls_last</span> +</span><span id="Generator.ordered_sql-1232"><a href="#Generator.ordered_sql-1232"><span class="linenos">1232</span></a> <span class="ow">and</span> <span class="p">((</span><span class="n">asc</span> <span class="ow">and</span> <span class="n">nulls_are_small</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="n">nulls_are_large</span><span class="p">))</span> +</span><span id="Generator.ordered_sql-1233"><a href="#Generator.ordered_sql-1233"><span class="linenos">1233</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="n">nulls_are_last</span> +</span><span id="Generator.ordered_sql-1234"><a href="#Generator.ordered_sql-1234"><span class="linenos">1234</span></a> <span class="p">):</span> +</span><span id="Generator.ordered_sql-1235"><a href="#Generator.ordered_sql-1235"><span class="linenos">1235</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">" NULLS LAST"</span> +</span><span id="Generator.ordered_sql-1236"><a href="#Generator.ordered_sql-1236"><span class="linenos">1236</span></a> +</span><span id="Generator.ordered_sql-1237"><a href="#Generator.ordered_sql-1237"><span class="linenos">1237</span></a> <span class="k">if</span> <span class="n">nulls_sort_change</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">NULL_ORDERING_SUPPORTED</span><span class="p">:</span> +</span><span id="Generator.ordered_sql-1238"><a href="#Generator.ordered_sql-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span> +</span><span id="Generator.ordered_sql-1239"><a href="#Generator.ordered_sql-1239"><span class="linenos">1239</span></a> <span class="s2">"Sorting in an ORDER BY on NULLS FIRST/NULLS LAST is not supported by this dialect"</span> +</span><span id="Generator.ordered_sql-1240"><a href="#Generator.ordered_sql-1240"><span class="linenos">1240</span></a> <span class="p">)</span> +</span><span id="Generator.ordered_sql-1241"><a href="#Generator.ordered_sql-1241"><span class="linenos">1241</span></a> <span class="n">nulls_sort_change</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.ordered_sql-1242"><a href="#Generator.ordered_sql-1242"><span class="linenos">1242</span></a> +</span><span id="Generator.ordered_sql-1243"><a href="#Generator.ordered_sql-1243"><span class="linenos">1243</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">sort_order</span><span class="si">}{</span><span class="n">nulls_sort_change</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7172,31 +7199,31 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.matchrecognize_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.matchrecognize_sql-1244"><a href="#Generator.matchrecognize_sql-1244"><span class="linenos">1244</span></a> <span class="k">def</span> <span class="nf">matchrecognize_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">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.matchrecognize_sql-1245"><a href="#Generator.matchrecognize_sql-1245"><span class="linenos">1245</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.matchrecognize_sql-1246"><a href="#Generator.matchrecognize_sql-1246"><span class="linenos">1246</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> -</span><span id="Generator.matchrecognize_sql-1247"><a href="#Generator.matchrecognize_sql-1247"><span class="linenos">1247</span></a> <span class="n">measures</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">"measures"</span><span class="p">)</span> -</span><span id="Generator.matchrecognize_sql-1248"><a href="#Generator.matchrecognize_sql-1248"><span class="linenos">1248</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"MEASURES </span><span class="si">{</span><span class="n">measures</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">measures</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.matchrecognize_sql-1249"><a href="#Generator.matchrecognize_sql-1249"><span class="linenos">1249</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> -</span><span id="Generator.matchrecognize_sql-1250"><a href="#Generator.matchrecognize_sql-1250"><span class="linenos">1250</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">rows</span><span class="p">)</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.matchrecognize_sql-1251"><a href="#Generator.matchrecognize_sql-1251"><span class="linenos">1251</span></a> <span class="n">after</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">"after"</span><span class="p">)</span> -</span><span id="Generator.matchrecognize_sql-1252"><a href="#Generator.matchrecognize_sql-1252"><span class="linenos">1252</span></a> <span class="n">after</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">after</span><span class="p">)</span> <span class="k">if</span> <span class="n">after</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.matchrecognize_sql-1253"><a href="#Generator.matchrecognize_sql-1253"><span class="linenos">1253</span></a> <span class="n">pattern</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">"pattern"</span><span class="p">)</span> -</span><span id="Generator.matchrecognize_sql-1254"><a href="#Generator.matchrecognize_sql-1254"><span class="linenos">1254</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"PATTERN (</span><span class="si">{</span><span class="n">pattern</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> <span class="k">if</span> <span class="n">pattern</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.matchrecognize_sql-1255"><a href="#Generator.matchrecognize_sql-1255"><span class="linenos">1255</span></a> <span class="n">define</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">"define"</span><span class="p">)</span> -</span><span id="Generator.matchrecognize_sql-1256"><a href="#Generator.matchrecognize_sql-1256"><span class="linenos">1256</span></a> <span class="n">define</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"DEFINE </span><span class="si">{</span><span class="n">define</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">define</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.matchrecognize_sql-1257"><a href="#Generator.matchrecognize_sql-1257"><span class="linenos">1257</span></a> <span class="n">body</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> -</span><span id="Generator.matchrecognize_sql-1258"><a href="#Generator.matchrecognize_sql-1258"><span class="linenos">1258</span></a> <span class="p">(</span> -</span><span id="Generator.matchrecognize_sql-1259"><a href="#Generator.matchrecognize_sql-1259"><span class="linenos">1259</span></a> <span class="n">partition</span><span class="p">,</span> -</span><span id="Generator.matchrecognize_sql-1260"><a href="#Generator.matchrecognize_sql-1260"><span class="linenos">1260</span></a> <span class="n">order</span><span class="p">,</span> -</span><span id="Generator.matchrecognize_sql-1261"><a href="#Generator.matchrecognize_sql-1261"><span class="linenos">1261</span></a> <span class="n">measures</span><span class="p">,</span> -</span><span id="Generator.matchrecognize_sql-1262"><a href="#Generator.matchrecognize_sql-1262"><span class="linenos">1262</span></a> <span class="n">rows</span><span class="p">,</span> -</span><span id="Generator.matchrecognize_sql-1263"><a href="#Generator.matchrecognize_sql-1263"><span class="linenos">1263</span></a> <span class="n">after</span><span class="p">,</span> -</span><span id="Generator.matchrecognize_sql-1264"><a href="#Generator.matchrecognize_sql-1264"><span class="linenos">1264</span></a> <span class="n">pattern</span><span class="p">,</span> -</span><span id="Generator.matchrecognize_sql-1265"><a href="#Generator.matchrecognize_sql-1265"><span class="linenos">1265</span></a> <span class="n">define</span><span class="p">,</span> -</span><span id="Generator.matchrecognize_sql-1266"><a href="#Generator.matchrecognize_sql-1266"><span class="linenos">1266</span></a> <span class="p">)</span> -</span><span id="Generator.matchrecognize_sql-1267"><a href="#Generator.matchrecognize_sql-1267"><span class="linenos">1267</span></a> <span class="p">)</span> -</span><span id="Generator.matchrecognize_sql-1268"><a href="#Generator.matchrecognize_sql-1268"><span class="linenos">1268</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'MATCH_RECOGNIZE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">body</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.matchrecognize_sql-1245"><a href="#Generator.matchrecognize_sql-1245"><span class="linenos">1245</span></a> <span class="k">def</span> <span class="nf">matchrecognize_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">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.matchrecognize_sql-1246"><a href="#Generator.matchrecognize_sql-1246"><span class="linenos">1246</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.matchrecognize_sql-1247"><a href="#Generator.matchrecognize_sql-1247"><span class="linenos">1247</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> +</span><span id="Generator.matchrecognize_sql-1248"><a href="#Generator.matchrecognize_sql-1248"><span class="linenos">1248</span></a> <span class="n">measures</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">"measures"</span><span class="p">)</span> +</span><span id="Generator.matchrecognize_sql-1249"><a href="#Generator.matchrecognize_sql-1249"><span class="linenos">1249</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"MEASURES </span><span class="si">{</span><span class="n">measures</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">measures</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.matchrecognize_sql-1250"><a href="#Generator.matchrecognize_sql-1250"><span class="linenos">1250</span></a> <span class="n">rows</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">"rows"</span><span class="p">)</span> +</span><span id="Generator.matchrecognize_sql-1251"><a href="#Generator.matchrecognize_sql-1251"><span class="linenos">1251</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">rows</span><span class="p">)</span> <span class="k">if</span> <span class="n">rows</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.matchrecognize_sql-1252"><a href="#Generator.matchrecognize_sql-1252"><span class="linenos">1252</span></a> <span class="n">after</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">"after"</span><span class="p">)</span> +</span><span id="Generator.matchrecognize_sql-1253"><a href="#Generator.matchrecognize_sql-1253"><span class="linenos">1253</span></a> <span class="n">after</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">after</span><span class="p">)</span> <span class="k">if</span> <span class="n">after</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.matchrecognize_sql-1254"><a href="#Generator.matchrecognize_sql-1254"><span class="linenos">1254</span></a> <span class="n">pattern</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">"pattern"</span><span class="p">)</span> +</span><span id="Generator.matchrecognize_sql-1255"><a href="#Generator.matchrecognize_sql-1255"><span class="linenos">1255</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"PATTERN (</span><span class="si">{</span><span class="n">pattern</span><span class="si">}</span><span class="s2">)"</span><span class="p">)</span> <span class="k">if</span> <span class="n">pattern</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.matchrecognize_sql-1256"><a href="#Generator.matchrecognize_sql-1256"><span class="linenos">1256</span></a> <span class="n">define</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">"define"</span><span class="p">)</span> +</span><span id="Generator.matchrecognize_sql-1257"><a href="#Generator.matchrecognize_sql-1257"><span class="linenos">1257</span></a> <span class="n">define</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="sa">f</span><span class="s2">"DEFINE </span><span class="si">{</span><span class="n">define</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> <span class="k">if</span> <span class="n">define</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.matchrecognize_sql-1258"><a href="#Generator.matchrecognize_sql-1258"><span class="linenos">1258</span></a> <span class="n">body</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span> +</span><span id="Generator.matchrecognize_sql-1259"><a href="#Generator.matchrecognize_sql-1259"><span class="linenos">1259</span></a> <span class="p">(</span> +</span><span id="Generator.matchrecognize_sql-1260"><a href="#Generator.matchrecognize_sql-1260"><span class="linenos">1260</span></a> <span class="n">partition</span><span class="p">,</span> +</span><span id="Generator.matchrecognize_sql-1261"><a href="#Generator.matchrecognize_sql-1261"><span class="linenos">1261</span></a> <span class="n">order</span><span class="p">,</span> +</span><span id="Generator.matchrecognize_sql-1262"><a href="#Generator.matchrecognize_sql-1262"><span class="linenos">1262</span></a> <span class="n">measures</span><span class="p">,</span> +</span><span id="Generator.matchrecognize_sql-1263"><a href="#Generator.matchrecognize_sql-1263"><span class="linenos">1263</span></a> <span class="n">rows</span><span class="p">,</span> +</span><span id="Generator.matchrecognize_sql-1264"><a href="#Generator.matchrecognize_sql-1264"><span class="linenos">1264</span></a> <span class="n">after</span><span class="p">,</span> +</span><span id="Generator.matchrecognize_sql-1265"><a href="#Generator.matchrecognize_sql-1265"><span class="linenos">1265</span></a> <span class="n">pattern</span><span class="p">,</span> +</span><span id="Generator.matchrecognize_sql-1266"><a href="#Generator.matchrecognize_sql-1266"><span class="linenos">1266</span></a> <span class="n">define</span><span class="p">,</span> +</span><span id="Generator.matchrecognize_sql-1267"><a href="#Generator.matchrecognize_sql-1267"><span class="linenos">1267</span></a> <span class="p">)</span> +</span><span id="Generator.matchrecognize_sql-1268"><a href="#Generator.matchrecognize_sql-1268"><span class="linenos">1268</span></a> <span class="p">)</span> +</span><span id="Generator.matchrecognize_sql-1269"><a href="#Generator.matchrecognize_sql-1269"><span class="linenos">1269</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'MATCH_RECOGNIZE'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">body</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7214,28 +7241,28 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.query_modifiers"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.query_modifiers-1270"><a href="#Generator.query_modifiers-1270"><span class="linenos">1270</span></a> <span class="k">def</span> <span class="nf">query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">sqls</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.query_modifiers-1271"><a href="#Generator.query_modifiers-1271"><span class="linenos">1271</span></a> <span class="k">return</span> <span class="n">csv</span><span class="p">(</span> -</span><span id="Generator.query_modifiers-1272"><a href="#Generator.query_modifiers-1272"><span class="linenos">1272</span></a> <span class="o">*</span><span class="n">sqls</span><span class="p">,</span> -</span><span id="Generator.query_modifiers-1273"><a href="#Generator.query_modifiers-1273"><span class="linenos">1273</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> -</span><span id="Generator.query_modifiers-1274"><a href="#Generator.query_modifiers-1274"><span class="linenos">1274</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">"match"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1275"><a href="#Generator.query_modifiers-1275"><span class="linenos">1275</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"laterals"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> -</span><span id="Generator.query_modifiers-1276"><a href="#Generator.query_modifiers-1276"><span class="linenos">1276</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">"where"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1277"><a href="#Generator.query_modifiers-1277"><span class="linenos">1277</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">"group"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1278"><a href="#Generator.query_modifiers-1278"><span class="linenos">1278</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">"having"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1279"><a href="#Generator.query_modifiers-1279"><span class="linenos">1279</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">"qualify"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1280"><a href="#Generator.query_modifiers-1280"><span class="linenos">1280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WINDOW "</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"windows"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.query_modifiers-1281"><a href="#Generator.query_modifiers-1281"><span class="linenos">1281</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">"windows"</span><span class="p">)</span> -</span><span id="Generator.query_modifiers-1282"><a href="#Generator.query_modifiers-1282"><span class="linenos">1282</span></a> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator.query_modifiers-1283"><a href="#Generator.query_modifiers-1283"><span class="linenos">1283</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">"distribute"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1284"><a href="#Generator.query_modifiers-1284"><span class="linenos">1284</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">"sort"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1285"><a href="#Generator.query_modifiers-1285"><span class="linenos">1285</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">"cluster"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1286"><a href="#Generator.query_modifiers-1286"><span class="linenos">1286</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">"order"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1287"><a href="#Generator.query_modifiers-1287"><span class="linenos">1287</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">"limit"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1288"><a href="#Generator.query_modifiers-1288"><span class="linenos">1288</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">"offset"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1289"><a href="#Generator.query_modifiers-1289"><span class="linenos">1289</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">"lock"</span><span class="p">),</span> -</span><span id="Generator.query_modifiers-1290"><a href="#Generator.query_modifiers-1290"><span class="linenos">1290</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> -</span><span id="Generator.query_modifiers-1291"><a href="#Generator.query_modifiers-1291"><span class="linenos">1291</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.query_modifiers-1271"><a href="#Generator.query_modifiers-1271"><span class="linenos">1271</span></a> <span class="k">def</span> <span class="nf">query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">sqls</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.query_modifiers-1272"><a href="#Generator.query_modifiers-1272"><span class="linenos">1272</span></a> <span class="k">return</span> <span class="n">csv</span><span class="p">(</span> +</span><span id="Generator.query_modifiers-1273"><a href="#Generator.query_modifiers-1273"><span class="linenos">1273</span></a> <span class="o">*</span><span class="n">sqls</span><span class="p">,</span> +</span><span id="Generator.query_modifiers-1274"><a href="#Generator.query_modifiers-1274"><span class="linenos">1274</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> +</span><span id="Generator.query_modifiers-1275"><a href="#Generator.query_modifiers-1275"><span class="linenos">1275</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">"match"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1276"><a href="#Generator.query_modifiers-1276"><span class="linenos">1276</span></a> <span class="o">*</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">sql</span><span class="p">)</span> <span class="k">for</span> <span class="n">sql</span> <span class="ow">in</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">"laterals"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]],</span> +</span><span id="Generator.query_modifiers-1277"><a href="#Generator.query_modifiers-1277"><span class="linenos">1277</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">"where"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1278"><a href="#Generator.query_modifiers-1278"><span class="linenos">1278</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">"group"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1279"><a href="#Generator.query_modifiers-1279"><span class="linenos">1279</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">"having"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1280"><a href="#Generator.query_modifiers-1280"><span class="linenos">1280</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">"qualify"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1281"><a href="#Generator.query_modifiers-1281"><span class="linenos">1281</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s2">"WINDOW "</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"windows"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.query_modifiers-1282"><a href="#Generator.query_modifiers-1282"><span class="linenos">1282</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">"windows"</span><span class="p">)</span> +</span><span id="Generator.query_modifiers-1283"><a href="#Generator.query_modifiers-1283"><span class="linenos">1283</span></a> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator.query_modifiers-1284"><a href="#Generator.query_modifiers-1284"><span class="linenos">1284</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">"distribute"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1285"><a href="#Generator.query_modifiers-1285"><span class="linenos">1285</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">"sort"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1286"><a href="#Generator.query_modifiers-1286"><span class="linenos">1286</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">"cluster"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1287"><a href="#Generator.query_modifiers-1287"><span class="linenos">1287</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">"order"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1288"><a href="#Generator.query_modifiers-1288"><span class="linenos">1288</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">"limit"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1289"><a href="#Generator.query_modifiers-1289"><span class="linenos">1289</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">"offset"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1290"><a href="#Generator.query_modifiers-1290"><span class="linenos">1290</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">"lock"</span><span class="p">),</span> +</span><span id="Generator.query_modifiers-1291"><a href="#Generator.query_modifiers-1291"><span class="linenos">1291</span></a> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">,</span> +</span><span id="Generator.query_modifiers-1292"><a href="#Generator.query_modifiers-1292"><span class="linenos">1292</span></a> <span class="p">)</span> </span></pre></div> @@ -7253,19 +7280,19 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.select_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.select_sql-1293"><a href="#Generator.select_sql-1293"><span class="linenos">1293</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.select_sql-1294"><a href="#Generator.select_sql-1294"><span class="linenos">1294</span></a> <span class="n">hint</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">"hint"</span><span class="p">)</span> -</span><span id="Generator.select_sql-1295"><a href="#Generator.select_sql-1295"><span class="linenos">1295</span></a> <span class="n">distinct</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">"distinct"</span><span class="p">)</span> -</span><span id="Generator.select_sql-1296"><a href="#Generator.select_sql-1296"><span class="linenos">1296</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">distinct</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.select_sql-1297"><a href="#Generator.select_sql-1297"><span class="linenos">1297</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.select_sql-1298"><a href="#Generator.select_sql-1298"><span class="linenos">1298</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="n">expressions</span> -</span><span id="Generator.select_sql-1299"><a href="#Generator.select_sql-1299"><span class="linenos">1299</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> -</span><span id="Generator.select_sql-1300"><a href="#Generator.select_sql-1300"><span class="linenos">1300</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator.select_sql-1301"><a href="#Generator.select_sql-1301"><span class="linenos">1301</span></a> <span class="sa">f</span><span class="s2">"SELECT</span><span class="si">{</span><span class="n">hint</span><span class="si">}{</span><span class="n">distinct</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Generator.select_sql-1302"><a href="#Generator.select_sql-1302"><span class="linenos">1302</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">"into"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Generator.select_sql-1303"><a href="#Generator.select_sql-1303"><span class="linenos">1303</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">"from"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Generator.select_sql-1304"><a href="#Generator.select_sql-1304"><span class="linenos">1304</span></a> <span class="p">)</span> -</span><span id="Generator.select_sql-1305"><a href="#Generator.select_sql-1305"><span class="linenos">1305</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.select_sql-1294"><a href="#Generator.select_sql-1294"><span class="linenos">1294</span></a> <span class="k">def</span> <span class="nf">select_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">Select</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.select_sql-1295"><a href="#Generator.select_sql-1295"><span class="linenos">1295</span></a> <span class="n">hint</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">"hint"</span><span class="p">)</span> +</span><span id="Generator.select_sql-1296"><a href="#Generator.select_sql-1296"><span class="linenos">1296</span></a> <span class="n">distinct</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">"distinct"</span><span class="p">)</span> +</span><span id="Generator.select_sql-1297"><a href="#Generator.select_sql-1297"><span class="linenos">1297</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">distinct</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">distinct</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.select_sql-1298"><a href="#Generator.select_sql-1298"><span class="linenos">1298</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.select_sql-1299"><a href="#Generator.select_sql-1299"><span class="linenos">1299</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="n">expressions</span> +</span><span id="Generator.select_sql-1300"><a href="#Generator.select_sql-1300"><span class="linenos">1300</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> +</span><span id="Generator.select_sql-1301"><a href="#Generator.select_sql-1301"><span class="linenos">1301</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator.select_sql-1302"><a href="#Generator.select_sql-1302"><span class="linenos">1302</span></a> <span class="sa">f</span><span class="s2">"SELECT</span><span class="si">{</span><span class="n">hint</span><span class="si">}{</span><span class="n">distinct</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Generator.select_sql-1303"><a href="#Generator.select_sql-1303"><span class="linenos">1303</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">"into"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Generator.select_sql-1304"><a href="#Generator.select_sql-1304"><span class="linenos">1304</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">"from"</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Generator.select_sql-1305"><a href="#Generator.select_sql-1305"><span class="linenos">1305</span></a> <span class="p">)</span> +</span><span id="Generator.select_sql-1306"><a href="#Generator.select_sql-1306"><span class="linenos">1306</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -7283,11 +7310,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.schema_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.schema_sql-1307"><a href="#Generator.schema_sql-1307"><span class="linenos">1307</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">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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.schema_sql-1308"><a href="#Generator.schema_sql-1308"><span class="linenos">1308</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">"this"</span><span class="p">)</span> -</span><span id="Generator.schema_sql-1309"><a href="#Generator.schema_sql-1309"><span class="linenos">1309</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.schema_sql-1310"><a href="#Generator.schema_sql-1310"><span class="linenos">1310</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.schema_sql-1311"><a href="#Generator.schema_sql-1311"><span class="linenos">1311</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.schema_sql-1308"><a href="#Generator.schema_sql-1308"><span class="linenos">1308</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">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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.schema_sql-1309"><a href="#Generator.schema_sql-1309"><span class="linenos">1309</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">"this"</span><span class="p">)</span> +</span><span id="Generator.schema_sql-1310"><a href="#Generator.schema_sql-1310"><span class="linenos">1310</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.schema_sql-1311"><a href="#Generator.schema_sql-1311"><span class="linenos">1311</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">(</span><span class="s1">''</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.schema_sql-1312"><a href="#Generator.schema_sql-1312"><span class="linenos">1312</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7305,12 +7332,12 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.star_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.star_sql-1313"><a href="#Generator.star_sql-1313"><span class="linenos">1313</span></a> <span class="k">def</span> <span class="nf">star_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">Star</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.star_sql-1314"><a href="#Generator.star_sql-1314"><span class="linenos">1314</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"except"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.star_sql-1315"><a href="#Generator.star_sql-1315"><span class="linenos">1315</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'except'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">except_</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">except_</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.star_sql-1316"><a href="#Generator.star_sql-1316"><span class="linenos">1316</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"replace"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.star_sql-1317"><a href="#Generator.star_sql-1317"><span class="linenos">1317</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'replace'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">replace</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.star_sql-1318"><a href="#Generator.star_sql-1318"><span class="linenos">1318</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"*</span><span class="si">{</span><span class="n">except_</span><span class="si">}{</span><span class="n">replace</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.star_sql-1314"><a href="#Generator.star_sql-1314"><span class="linenos">1314</span></a> <span class="k">def</span> <span class="nf">star_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">Star</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.star_sql-1315"><a href="#Generator.star_sql-1315"><span class="linenos">1315</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"except"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.star_sql-1316"><a href="#Generator.star_sql-1316"><span class="linenos">1316</span></a> <span class="n">except_</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'except'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">except_</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">except_</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.star_sql-1317"><a href="#Generator.star_sql-1317"><span class="linenos">1317</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"replace"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.star_sql-1318"><a href="#Generator.star_sql-1318"><span class="linenos">1318</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">[</span><span class="s1">'replace'</span><span class="p">])</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">replace</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.star_sql-1319"><a href="#Generator.star_sql-1319"><span class="linenos">1319</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"*</span><span class="si">{</span><span class="n">except_</span><span class="si">}{</span><span class="n">replace</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7328,8 +7355,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.structkwarg_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.structkwarg_sql-1320"><a href="#Generator.structkwarg_sql-1320"><span class="linenos">1320</span></a> <span class="k">def</span> <span class="nf">structkwarg_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">StructKwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.structkwarg_sql-1321"><a href="#Generator.structkwarg_sql-1321"><span class="linenos">1321</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.structkwarg_sql-1321"><a href="#Generator.structkwarg_sql-1321"><span class="linenos">1321</span></a> <span class="k">def</span> <span class="nf">structkwarg_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">StructKwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.structkwarg_sql-1322"><a href="#Generator.structkwarg_sql-1322"><span class="linenos">1322</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7347,10 +7374,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.parameter_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.parameter_sql-1323"><a href="#Generator.parameter_sql-1323"><span class="linenos">1323</span></a> <span class="k">def</span> <span class="nf">parameter_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">Parameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.parameter_sql-1324"><a href="#Generator.parameter_sql-1324"><span class="linenos">1324</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">"this"</span><span class="p">)</span> -</span><span id="Generator.parameter_sql-1325"><a href="#Generator.parameter_sql-1325"><span class="linenos">1325</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.parameter_sql-1326"><a href="#Generator.parameter_sql-1326"><span class="linenos">1326</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">PARAMETER_TOKEN</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.parameter_sql-1324"><a href="#Generator.parameter_sql-1324"><span class="linenos">1324</span></a> <span class="k">def</span> <span class="nf">parameter_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">Parameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.parameter_sql-1325"><a href="#Generator.parameter_sql-1325"><span class="linenos">1325</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">"this"</span><span class="p">)</span> +</span><span id="Generator.parameter_sql-1326"><a href="#Generator.parameter_sql-1326"><span class="linenos">1326</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="se">{{</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="se">}}</span><span class="s2">"</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.parameter_sql-1327"><a href="#Generator.parameter_sql-1327"><span class="linenos">1327</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">PARAMETER_TOKEN</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7368,12 +7395,12 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.sessionparameter_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sessionparameter_sql-1328"><a href="#Generator.sessionparameter_sql-1328"><span class="linenos">1328</span></a> <span class="k">def</span> <span class="nf">sessionparameter_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">SessionParameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.sessionparameter_sql-1329"><a href="#Generator.sessionparameter_sql-1329"><span class="linenos">1329</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">"this"</span><span class="p">)</span> -</span><span id="Generator.sessionparameter_sql-1330"><a href="#Generator.sessionparameter_sql-1330"><span class="linenos">1330</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> -</span><span id="Generator.sessionparameter_sql-1331"><a href="#Generator.sessionparameter_sql-1331"><span class="linenos">1331</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Generator.sessionparameter_sql-1332"><a href="#Generator.sessionparameter_sql-1332"><span class="linenos">1332</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">."</span> -</span><span id="Generator.sessionparameter_sql-1333"><a href="#Generator.sessionparameter_sql-1333"><span class="linenos">1333</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"@@</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sessionparameter_sql-1329"><a href="#Generator.sessionparameter_sql-1329"><span class="linenos">1329</span></a> <span class="k">def</span> <span class="nf">sessionparameter_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">SessionParameter</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.sessionparameter_sql-1330"><a href="#Generator.sessionparameter_sql-1330"><span class="linenos">1330</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">"this"</span><span class="p">)</span> +</span><span id="Generator.sessionparameter_sql-1331"><a href="#Generator.sessionparameter_sql-1331"><span class="linenos">1331</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"kind"</span><span class="p">)</span> +</span><span id="Generator.sessionparameter_sql-1332"><a href="#Generator.sessionparameter_sql-1332"><span class="linenos">1332</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Generator.sessionparameter_sql-1333"><a href="#Generator.sessionparameter_sql-1333"><span class="linenos">1333</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">."</span> +</span><span id="Generator.sessionparameter_sql-1334"><a href="#Generator.sessionparameter_sql-1334"><span class="linenos">1334</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"@@</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7391,8 +7418,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.placeholder_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.placeholder_sql-1335"><a href="#Generator.placeholder_sql-1335"><span class="linenos">1335</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.placeholder_sql-1336"><a href="#Generator.placeholder_sql-1336"><span class="linenos">1336</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">":</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">"?"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.placeholder_sql-1336"><a href="#Generator.placeholder_sql-1336"><span class="linenos">1336</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.placeholder_sql-1337"><a href="#Generator.placeholder_sql-1337"><span class="linenos">1337</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">":</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">"?"</span> </span></pre></div> @@ -7410,17 +7437,17 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.subquery_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.subquery_sql-1338"><a href="#Generator.subquery_sql-1338"><span class="linenos">1338</span></a> <span class="k">def</span> <span class="nf">subquery_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">Subquery</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.subquery_sql-1339"><a href="#Generator.subquery_sql-1339"><span class="linenos">1339</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator.subquery_sql-1340"><a href="#Generator.subquery_sql-1340"><span class="linenos">1340</span></a> -</span><span id="Generator.subquery_sql-1341"><a href="#Generator.subquery_sql-1341"><span class="linenos">1341</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> -</span><span id="Generator.subquery_sql-1342"><a href="#Generator.subquery_sql-1342"><span class="linenos">1342</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator.subquery_sql-1343"><a href="#Generator.subquery_sql-1343"><span class="linenos">1343</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> -</span><span id="Generator.subquery_sql-1344"><a href="#Generator.subquery_sql-1344"><span class="linenos">1344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">),</span> -</span><span id="Generator.subquery_sql-1345"><a href="#Generator.subquery_sql-1345"><span class="linenos">1345</span></a> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator.subquery_sql-1346"><a href="#Generator.subquery_sql-1346"><span class="linenos">1346</span></a> <span class="p">)</span> -</span><span id="Generator.subquery_sql-1347"><a href="#Generator.subquery_sql-1347"><span class="linenos">1347</span></a> -</span><span id="Generator.subquery_sql-1348"><a href="#Generator.subquery_sql-1348"><span class="linenos">1348</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.subquery_sql-1339"><a href="#Generator.subquery_sql-1339"><span class="linenos">1339</span></a> <span class="k">def</span> <span class="nf">subquery_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">Subquery</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.subquery_sql-1340"><a href="#Generator.subquery_sql-1340"><span class="linenos">1340</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.subquery_sql-1341"><a href="#Generator.subquery_sql-1341"><span class="linenos">1341</span></a> +</span><span id="Generator.subquery_sql-1342"><a href="#Generator.subquery_sql-1342"><span class="linenos">1342</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> +</span><span id="Generator.subquery_sql-1343"><a href="#Generator.subquery_sql-1343"><span class="linenos">1343</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator.subquery_sql-1344"><a href="#Generator.subquery_sql-1344"><span class="linenos">1344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">),</span> +</span><span id="Generator.subquery_sql-1345"><a href="#Generator.subquery_sql-1345"><span class="linenos">1345</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">),</span> +</span><span id="Generator.subquery_sql-1346"><a href="#Generator.subquery_sql-1346"><span class="linenos">1346</span></a> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator.subquery_sql-1347"><a href="#Generator.subquery_sql-1347"><span class="linenos">1347</span></a> <span class="p">)</span> +</span><span id="Generator.subquery_sql-1348"><a href="#Generator.subquery_sql-1348"><span class="linenos">1348</span></a> +</span><span id="Generator.subquery_sql-1349"><a href="#Generator.subquery_sql-1349"><span class="linenos">1349</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -7438,9 +7465,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.qualify_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.qualify_sql-1350"><a href="#Generator.qualify_sql-1350"><span class="linenos">1350</span></a> <span class="k">def</span> <span class="nf">qualify_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">Qualify</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.qualify_sql-1351"><a href="#Generator.qualify_sql-1351"><span class="linenos">1351</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> -</span><span id="Generator.qualify_sql-1352"><a href="#Generator.qualify_sql-1352"><span class="linenos">1352</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'QUALIFY'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.qualify_sql-1351"><a href="#Generator.qualify_sql-1351"><span class="linenos">1351</span></a> <span class="k">def</span> <span class="nf">qualify_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">Qualify</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.qualify_sql-1352"><a href="#Generator.qualify_sql-1352"><span class="linenos">1352</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> +</span><span id="Generator.qualify_sql-1353"><a href="#Generator.qualify_sql-1353"><span class="linenos">1353</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'QUALIFY'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7458,11 +7485,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.union_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.union_sql-1354"><a href="#Generator.union_sql-1354"><span class="linenos">1354</span></a> <span class="k">def</span> <span class="nf">union_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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.union_sql-1355"><a href="#Generator.union_sql-1355"><span class="linenos">1355</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> -</span><span id="Generator.union_sql-1356"><a href="#Generator.union_sql-1356"><span class="linenos">1356</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Generator.union_sql-1357"><a href="#Generator.union_sql-1357"><span class="linenos">1357</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">union_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> -</span><span id="Generator.union_sql-1358"><a href="#Generator.union_sql-1358"><span class="linenos">1358</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.union_sql-1355"><a href="#Generator.union_sql-1355"><span class="linenos">1355</span></a> <span class="k">def</span> <span class="nf">union_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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.union_sql-1356"><a href="#Generator.union_sql-1356"><span class="linenos">1356</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span> +</span><span id="Generator.union_sql-1357"><a href="#Generator.union_sql-1357"><span class="linenos">1357</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Generator.union_sql-1358"><a href="#Generator.union_sql-1358"><span class="linenos">1358</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">set_operation</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">union_op</span><span class="p">(</span><span class="n">expression</span><span class="p">)),</span> +</span><span id="Generator.union_sql-1359"><a href="#Generator.union_sql-1359"><span class="linenos">1359</span></a> <span class="p">)</span> </span></pre></div> @@ -7480,10 +7507,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.union_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.union_op-1360"><a href="#Generator.union_op-1360"><span class="linenos">1360</span></a> <span class="k">def</span> <span class="nf">union_op</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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.union_op-1361"><a href="#Generator.union_op-1361"><span class="linenos">1361</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">" DISTINCT"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPLICIT_UNION</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.union_op-1362"><a href="#Generator.union_op-1362"><span class="linenos">1362</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">kind</span> <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">"distinct"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" ALL"</span> -</span><span id="Generator.union_op-1363"><a href="#Generator.union_op-1363"><span class="linenos">1363</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNION</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.union_op-1361"><a href="#Generator.union_op-1361"><span class="linenos">1361</span></a> <span class="k">def</span> <span class="nf">union_op</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">Union</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.union_op-1362"><a href="#Generator.union_op-1362"><span class="linenos">1362</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">" DISTINCT"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPLICIT_UNION</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.union_op-1363"><a href="#Generator.union_op-1363"><span class="linenos">1363</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">kind</span> <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">"distinct"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" ALL"</span> +</span><span id="Generator.union_op-1364"><a href="#Generator.union_op-1364"><span class="linenos">1364</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNION</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7501,19 +7528,19 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.unnest_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.unnest_sql-1365"><a href="#Generator.unnest_sql-1365"><span class="linenos">1365</span></a> <span class="k">def</span> <span class="nf">unnest_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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.unnest_sql-1366"><a href="#Generator.unnest_sql-1366"><span class="linenos">1366</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.unnest_sql-1367"><a href="#Generator.unnest_sql-1367"><span class="linenos">1367</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator.unnest_sql-1368"><a href="#Generator.unnest_sql-1368"><span class="linenos">1368</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> -</span><span id="Generator.unnest_sql-1369"><a href="#Generator.unnest_sql-1369"><span class="linenos">1369</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> -</span><span id="Generator.unnest_sql-1370"><a href="#Generator.unnest_sql-1370"><span class="linenos">1370</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.unnest_sql-1371"><a href="#Generator.unnest_sql-1371"><span class="linenos">1371</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.unnest_sql-1372"><a href="#Generator.unnest_sql-1372"><span class="linenos">1372</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator.unnest_sql-1373"><a href="#Generator.unnest_sql-1373"><span class="linenos">1373</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">alias</span> -</span><span id="Generator.unnest_sql-1374"><a href="#Generator.unnest_sql-1374"><span class="linenos">1374</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="s2">" WITH ORDINALITY"</span> <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">"ordinality"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.unnest_sql-1375"><a href="#Generator.unnest_sql-1375"><span class="linenos">1375</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> -</span><span id="Generator.unnest_sql-1376"><a href="#Generator.unnest_sql-1376"><span class="linenos">1376</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH OFFSET AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.unnest_sql-1377"><a href="#Generator.unnest_sql-1377"><span class="linenos">1377</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNNEST(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">ordinality</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.unnest_sql-1366"><a href="#Generator.unnest_sql-1366"><span class="linenos">1366</span></a> <span class="k">def</span> <span class="nf">unnest_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">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.unnest_sql-1367"><a href="#Generator.unnest_sql-1367"><span class="linenos">1367</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.unnest_sql-1368"><a href="#Generator.unnest_sql-1368"><span class="linenos">1368</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.unnest_sql-1369"><a href="#Generator.unnest_sql-1369"><span class="linenos">1369</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> +</span><span id="Generator.unnest_sql-1370"><a href="#Generator.unnest_sql-1370"><span class="linenos">1370</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="n">alias</span><span class="o">.</span><span class="n">columns</span> +</span><span id="Generator.unnest_sql-1371"><a href="#Generator.unnest_sql-1371"><span class="linenos">1371</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.unnest_sql-1372"><a href="#Generator.unnest_sql-1372"><span class="linenos">1372</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.unnest_sql-1373"><a href="#Generator.unnest_sql-1373"><span class="linenos">1373</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.unnest_sql-1374"><a href="#Generator.unnest_sql-1374"><span class="linenos">1374</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">alias</span> <span class="k">else</span> <span class="n">alias</span> +</span><span id="Generator.unnest_sql-1375"><a href="#Generator.unnest_sql-1375"><span class="linenos">1375</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="s2">" WITH ORDINALITY"</span> <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">"ordinality"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.unnest_sql-1376"><a href="#Generator.unnest_sql-1376"><span class="linenos">1376</span></a> <span class="n">offset</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">"offset"</span><span class="p">)</span> +</span><span id="Generator.unnest_sql-1377"><a href="#Generator.unnest_sql-1377"><span class="linenos">1377</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" WITH OFFSET AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">offset</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">offset</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.unnest_sql-1378"><a href="#Generator.unnest_sql-1378"><span class="linenos">1378</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNNEST(</span><span class="si">{</span><span class="n">args</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">ordinality</span><span class="si">}{</span><span class="n">alias</span><span class="si">}{</span><span class="n">offset</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7531,9 +7558,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.where_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.where_sql-1379"><a href="#Generator.where_sql-1379"><span class="linenos">1379</span></a> <span class="k">def</span> <span class="nf">where_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">Where</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.where_sql-1380"><a href="#Generator.where_sql-1380"><span class="linenos">1380</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> -</span><span id="Generator.where_sql-1381"><a href="#Generator.where_sql-1381"><span class="linenos">1381</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WHERE'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.where_sql-1380"><a href="#Generator.where_sql-1380"><span class="linenos">1380</span></a> <span class="k">def</span> <span class="nf">where_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">Where</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.where_sql-1381"><a href="#Generator.where_sql-1381"><span class="linenos">1381</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">))</span> +</span><span id="Generator.where_sql-1382"><a href="#Generator.where_sql-1382"><span class="linenos">1382</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">'WHERE'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7551,28 +7578,28 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.window_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.window_sql-1383"><a href="#Generator.window_sql-1383"><span class="linenos">1383</span></a> <span class="k">def</span> <span class="nf">window_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">Window</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.window_sql-1384"><a href="#Generator.window_sql-1384"><span class="linenos">1384</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">"this"</span><span class="p">)</span> -</span><span id="Generator.window_sql-1385"><a href="#Generator.window_sql-1385"><span class="linenos">1385</span></a> -</span><span id="Generator.window_sql-1386"><a href="#Generator.window_sql-1386"><span class="linenos">1386</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.window_sql-1387"><a href="#Generator.window_sql-1387"><span class="linenos">1387</span></a> -</span><span id="Generator.window_sql-1388"><a href="#Generator.window_sql-1388"><span class="linenos">1388</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> -</span><span id="Generator.window_sql-1389"><a href="#Generator.window_sql-1389"><span class="linenos">1389</span></a> <span class="n">order_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">order_sql</span><span class="p">(</span><span class="n">order</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="n">order</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.window_sql-1390"><a href="#Generator.window_sql-1390"><span class="linenos">1390</span></a> -</span><span id="Generator.window_sql-1391"><a href="#Generator.window_sql-1391"><span class="linenos">1391</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="n">partition</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">partition</span> <span class="ow">and</span> <span class="n">order</span> <span class="k">else</span> <span class="n">partition</span> -</span><span id="Generator.window_sql-1392"><a href="#Generator.window_sql-1392"><span class="linenos">1392</span></a> -</span><span id="Generator.window_sql-1393"><a href="#Generator.window_sql-1393"><span class="linenos">1393</span></a> <span class="n">spec</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">"spec"</span><span class="p">)</span> -</span><span id="Generator.window_sql-1394"><a href="#Generator.window_sql-1394"><span class="linenos">1394</span></a> <span class="n">spec_sql</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">window_spec_sql</span><span class="p">(</span><span class="n">spec</span><span class="p">)</span> <span class="k">if</span> <span class="n">spec</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.window_sql-1395"><a href="#Generator.window_sql-1395"><span class="linenos">1395</span></a> -</span><span id="Generator.window_sql-1396"><a href="#Generator.window_sql-1396"><span class="linenos">1396</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator.window_sql-1397"><a href="#Generator.window_sql-1397"><span class="linenos">1397</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">'AS'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">arg_key</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'windows'</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'OVER'</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.window_sql-1398"><a href="#Generator.window_sql-1398"><span class="linenos">1398</span></a> -</span><span id="Generator.window_sql-1399"><a href="#Generator.window_sql-1399"><span class="linenos">1399</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">partition</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">order</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">spec</span> <span class="ow">and</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Generator.window_sql-1400"><a href="#Generator.window_sql-1400"><span class="linenos">1400</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.window_sql-1401"><a href="#Generator.window_sql-1401"><span class="linenos">1401</span></a> -</span><span id="Generator.window_sql-1402"><a href="#Generator.window_sql-1402"><span class="linenos">1402</span></a> <span class="n">window_args</span> <span class="o">=</span> <span class="n">alias</span> <span class="o">+</span> <span class="n">partition_sql</span> <span class="o">+</span> <span class="n">order_sql</span> <span class="o">+</span> <span class="n">spec_sql</span> -</span><span id="Generator.window_sql-1403"><a href="#Generator.window_sql-1403"><span class="linenos">1403</span></a> -</span><span id="Generator.window_sql-1404"><a href="#Generator.window_sql-1404"><span class="linenos">1404</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">window_args</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.window_sql-1384"><a href="#Generator.window_sql-1384"><span class="linenos">1384</span></a> <span class="k">def</span> <span class="nf">window_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">Window</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.window_sql-1385"><a href="#Generator.window_sql-1385"><span class="linenos">1385</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">"this"</span><span class="p">)</span> +</span><span id="Generator.window_sql-1386"><a href="#Generator.window_sql-1386"><span class="linenos">1386</span></a> +</span><span id="Generator.window_sql-1387"><a href="#Generator.window_sql-1387"><span class="linenos">1387</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">partition_by_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.window_sql-1388"><a href="#Generator.window_sql-1388"><span class="linenos">1388</span></a> +</span><span id="Generator.window_sql-1389"><a href="#Generator.window_sql-1389"><span class="linenos">1389</span></a> <span class="n">order</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">"order"</span><span class="p">)</span> +</span><span id="Generator.window_sql-1390"><a href="#Generator.window_sql-1390"><span class="linenos">1390</span></a> <span class="n">order_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">order_sql</span><span class="p">(</span><span class="n">order</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="k">if</span> <span class="n">order</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.window_sql-1391"><a href="#Generator.window_sql-1391"><span class="linenos">1391</span></a> +</span><span id="Generator.window_sql-1392"><a href="#Generator.window_sql-1392"><span class="linenos">1392</span></a> <span class="n">partition_sql</span> <span class="o">=</span> <span class="n">partition</span> <span class="o">+</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">partition</span> <span class="ow">and</span> <span class="n">order</span> <span class="k">else</span> <span class="n">partition</span> +</span><span id="Generator.window_sql-1393"><a href="#Generator.window_sql-1393"><span class="linenos">1393</span></a> +</span><span id="Generator.window_sql-1394"><a href="#Generator.window_sql-1394"><span class="linenos">1394</span></a> <span class="n">spec</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">"spec"</span><span class="p">)</span> +</span><span id="Generator.window_sql-1395"><a href="#Generator.window_sql-1395"><span class="linenos">1395</span></a> <span class="n">spec_sql</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">window_spec_sql</span><span class="p">(</span><span class="n">spec</span><span class="p">)</span> <span class="k">if</span> <span class="n">spec</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.window_sql-1396"><a href="#Generator.window_sql-1396"><span class="linenos">1396</span></a> +</span><span id="Generator.window_sql-1397"><a href="#Generator.window_sql-1397"><span class="linenos">1397</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.window_sql-1398"><a href="#Generator.window_sql-1398"><span class="linenos">1398</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="s1">'AS'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expression</span><span class="o">.</span><span class="n">arg_key</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s1">'windows'</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">'OVER'</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.window_sql-1399"><a href="#Generator.window_sql-1399"><span class="linenos">1399</span></a> +</span><span id="Generator.window_sql-1400"><a href="#Generator.window_sql-1400"><span class="linenos">1400</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">partition</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">order</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">spec</span> <span class="ow">and</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Generator.window_sql-1401"><a href="#Generator.window_sql-1401"><span class="linenos">1401</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">alias</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.window_sql-1402"><a href="#Generator.window_sql-1402"><span class="linenos">1402</span></a> +</span><span id="Generator.window_sql-1403"><a href="#Generator.window_sql-1403"><span class="linenos">1403</span></a> <span class="n">window_args</span> <span class="o">=</span> <span class="n">alias</span> <span class="o">+</span> <span class="n">partition_sql</span> <span class="o">+</span> <span class="n">order_sql</span> <span class="o">+</span> <span class="n">spec_sql</span> +</span><span id="Generator.window_sql-1404"><a href="#Generator.window_sql-1404"><span class="linenos">1404</span></a> +</span><span id="Generator.window_sql-1405"><a href="#Generator.window_sql-1405"><span class="linenos">1405</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> (</span><span class="si">{</span><span class="n">window_args</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -7590,9 +7617,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.partition_by_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.partition_by_sql-1406"><a href="#Generator.partition_by_sql-1406"><span class="linenos">1406</span></a> <span class="k">def</span> <span class="nf">partition_by_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">Window</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.partition_by_sql-1407"><a href="#Generator.partition_by_sql-1407"><span class="linenos">1407</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"partition_by"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.partition_by_sql-1408"><a href="#Generator.partition_by_sql-1408"><span class="linenos">1408</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.partition_by_sql-1407"><a href="#Generator.partition_by_sql-1407"><span class="linenos">1407</span></a> <span class="k">def</span> <span class="nf">partition_by_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">Window</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.partition_by_sql-1408"><a href="#Generator.partition_by_sql-1408"><span class="linenos">1408</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"partition_by"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.partition_by_sql-1409"><a href="#Generator.partition_by_sql-1409"><span class="linenos">1409</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PARTITION BY </span><span class="si">{</span><span class="n">partition</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">partition</span> <span class="k">else</span> <span class="s2">""</span> </span></pre></div> @@ -7610,14 +7637,14 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.window_spec_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.window_spec_sql-1410"><a href="#Generator.window_spec_sql-1410"><span class="linenos">1410</span></a> <span class="k">def</span> <span class="nf">window_spec_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">WindowSpec</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.window_spec_sql-1411"><a href="#Generator.window_spec_sql-1411"><span class="linenos">1411</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="Generator.window_spec_sql-1412"><a href="#Generator.window_spec_sql-1412"><span class="linenos">1412</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator.window_spec_sql-1413"><a href="#Generator.window_spec_sql-1413"><span class="linenos">1413</span></a> <span class="n">end</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.window_spec_sql-1414"><a href="#Generator.window_spec_sql-1414"><span class="linenos">1414</span></a> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator.window_spec_sql-1415"><a href="#Generator.window_spec_sql-1415"><span class="linenos">1415</span></a> <span class="ow">or</span> <span class="s2">"CURRENT ROW"</span> -</span><span id="Generator.window_spec_sql-1416"><a href="#Generator.window_spec_sql-1416"><span class="linenos">1416</span></a> <span class="p">)</span> -</span><span id="Generator.window_spec_sql-1417"><a href="#Generator.window_spec_sql-1417"><span class="linenos">1417</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.window_spec_sql-1411"><a href="#Generator.window_spec_sql-1411"><span class="linenos">1411</span></a> <span class="k">def</span> <span class="nf">window_spec_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">WindowSpec</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.window_spec_sql-1412"><a href="#Generator.window_spec_sql-1412"><span class="linenos">1412</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="Generator.window_spec_sql-1413"><a href="#Generator.window_spec_sql-1413"><span class="linenos">1413</span></a> <span class="n">start</span> <span class="o">=</span> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator.window_spec_sql-1414"><a href="#Generator.window_spec_sql-1414"><span class="linenos">1414</span></a> <span class="n">end</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.window_spec_sql-1415"><a href="#Generator.window_spec_sql-1415"><span class="linenos">1415</span></a> <span class="n">csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"end_side"</span><span class="p">),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator.window_spec_sql-1416"><a href="#Generator.window_spec_sql-1416"><span class="linenos">1416</span></a> <span class="ow">or</span> <span class="s2">"CURRENT ROW"</span> +</span><span id="Generator.window_spec_sql-1417"><a href="#Generator.window_spec_sql-1417"><span class="linenos">1417</span></a> <span class="p">)</span> +</span><span id="Generator.window_spec_sql-1418"><a href="#Generator.window_spec_sql-1418"><span class="linenos">1418</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">end</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7635,10 +7662,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.withingroup_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.withingroup_sql-1419"><a href="#Generator.withingroup_sql-1419"><span class="linenos">1419</span></a> <span class="k">def</span> <span class="nf">withingroup_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">WithinGroup</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.withingroup_sql-1420"><a href="#Generator.withingroup_sql-1420"><span class="linenos">1420</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">"this"</span><span class="p">)</span> -</span><span id="Generator.withingroup_sql-1421"><a href="#Generator.withingroup_sql-1421"><span class="linenos">1421</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># order has a leading space</span> -</span><span id="Generator.withingroup_sql-1422"><a href="#Generator.withingroup_sql-1422"><span class="linenos">1422</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> WITHIN GROUP (</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.withingroup_sql-1420"><a href="#Generator.withingroup_sql-1420"><span class="linenos">1420</span></a> <span class="k">def</span> <span class="nf">withingroup_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">WithinGroup</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.withingroup_sql-1421"><a href="#Generator.withingroup_sql-1421"><span class="linenos">1421</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">"this"</span><span class="p">)</span> +</span><span id="Generator.withingroup_sql-1422"><a href="#Generator.withingroup_sql-1422"><span class="linenos">1422</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)[</span><span class="mi">1</span><span class="p">:]</span> <span class="c1"># order has a leading space</span> +</span><span id="Generator.withingroup_sql-1423"><a href="#Generator.withingroup_sql-1423"><span class="linenos">1423</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> WITHIN GROUP (</span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -7656,11 +7683,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.between_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.between_sql-1424"><a href="#Generator.between_sql-1424"><span class="linenos">1424</span></a> <span class="k">def</span> <span class="nf">between_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">Between</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.between_sql-1425"><a href="#Generator.between_sql-1425"><span class="linenos">1425</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">"this"</span><span class="p">)</span> -</span><span id="Generator.between_sql-1426"><a href="#Generator.between_sql-1426"><span class="linenos">1426</span></a> <span class="n">low</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">"low"</span><span class="p">)</span> -</span><span id="Generator.between_sql-1427"><a href="#Generator.between_sql-1427"><span class="linenos">1427</span></a> <span class="n">high</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">"high"</span><span class="p">)</span> -</span><span id="Generator.between_sql-1428"><a href="#Generator.between_sql-1428"><span class="linenos">1428</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">low</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">high</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.between_sql-1425"><a href="#Generator.between_sql-1425"><span class="linenos">1425</span></a> <span class="k">def</span> <span class="nf">between_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">Between</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.between_sql-1426"><a href="#Generator.between_sql-1426"><span class="linenos">1426</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">"this"</span><span class="p">)</span> +</span><span id="Generator.between_sql-1427"><a href="#Generator.between_sql-1427"><span class="linenos">1427</span></a> <span class="n">low</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">"low"</span><span class="p">)</span> +</span><span id="Generator.between_sql-1428"><a href="#Generator.between_sql-1428"><span class="linenos">1428</span></a> <span class="n">high</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">"high"</span><span class="p">)</span> +</span><span id="Generator.between_sql-1429"><a href="#Generator.between_sql-1429"><span class="linenos">1429</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> BETWEEN </span><span class="si">{</span><span class="n">low</span><span class="si">}</span><span class="s2"> AND </span><span class="si">{</span><span class="n">high</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7678,11 +7705,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.bracket_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bracket_sql-1430"><a href="#Generator.bracket_sql-1430"><span class="linenos">1430</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.bracket_sql-1431"><a href="#Generator.bracket_sql-1431"><span class="linenos">1431</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> -</span><span id="Generator.bracket_sql-1432"><a href="#Generator.bracket_sql-1432"><span class="linenos">1432</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="Generator.bracket_sql-1433"><a href="#Generator.bracket_sql-1433"><span class="linenos">1433</span></a> -</span><span id="Generator.bracket_sql-1434"><a href="#Generator.bracket_sql-1434"><span class="linenos">1434</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bracket_sql-1431"><a href="#Generator.bracket_sql-1431"><span class="linenos">1431</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.bracket_sql-1432"><a href="#Generator.bracket_sql-1432"><span class="linenos">1432</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> +</span><span id="Generator.bracket_sql-1433"><a href="#Generator.bracket_sql-1433"><span class="linenos">1433</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="Generator.bracket_sql-1434"><a href="#Generator.bracket_sql-1434"><span class="linenos">1434</span></a> +</span><span id="Generator.bracket_sql-1435"><a href="#Generator.bracket_sql-1435"><span class="linenos">1435</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">[</span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">]"</span> </span></pre></div> @@ -7700,8 +7727,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.all_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.all_sql-1436"><a href="#Generator.all_sql-1436"><span class="linenos">1436</span></a> <span class="k">def</span> <span class="nf">all_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">All</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.all_sql-1437"><a href="#Generator.all_sql-1437"><span class="linenos">1437</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALL </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.all_sql-1437"><a href="#Generator.all_sql-1437"><span class="linenos">1437</span></a> <span class="k">def</span> <span class="nf">all_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">All</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.all_sql-1438"><a href="#Generator.all_sql-1438"><span class="linenos">1438</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALL </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7719,11 +7746,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.any_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.any_sql-1439"><a href="#Generator.any_sql-1439"><span class="linenos">1439</span></a> <span class="k">def</span> <span class="nf">any_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">Any</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.any_sql-1440"><a href="#Generator.any_sql-1440"><span class="linenos">1440</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">"this"</span><span class="p">)</span> -</span><span id="Generator.any_sql-1441"><a href="#Generator.any_sql-1441"><span class="linenos">1441</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">Subqueryable</span><span class="p">):</span> -</span><span id="Generator.any_sql-1442"><a href="#Generator.any_sql-1442"><span class="linenos">1442</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Generator.any_sql-1443"><a href="#Generator.any_sql-1443"><span class="linenos">1443</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ANY </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.any_sql-1440"><a href="#Generator.any_sql-1440"><span class="linenos">1440</span></a> <span class="k">def</span> <span class="nf">any_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">Any</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.any_sql-1441"><a href="#Generator.any_sql-1441"><span class="linenos">1441</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">"this"</span><span class="p">)</span> +</span><span id="Generator.any_sql-1442"><a href="#Generator.any_sql-1442"><span class="linenos">1442</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">Subqueryable</span><span class="p">):</span> +</span><span id="Generator.any_sql-1443"><a href="#Generator.any_sql-1443"><span class="linenos">1443</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Generator.any_sql-1444"><a href="#Generator.any_sql-1444"><span class="linenos">1444</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ANY </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7741,8 +7768,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.exists_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.exists_sql-1445"><a href="#Generator.exists_sql-1445"><span class="linenos">1445</span></a> <span class="k">def</span> <span class="nf">exists_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">Exists</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.exists_sql-1446"><a href="#Generator.exists_sql-1446"><span class="linenos">1446</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXISTS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.exists_sql-1446"><a href="#Generator.exists_sql-1446"><span class="linenos">1446</span></a> <span class="k">def</span> <span class="nf">exists_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">Exists</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.exists_sql-1447"><a href="#Generator.exists_sql-1447"><span class="linenos">1447</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXISTS</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7760,25 +7787,25 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.case_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.case_sql-1448"><a href="#Generator.case_sql-1448"><span class="linenos">1448</span></a> <span class="k">def</span> <span class="nf">case_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">Case</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.case_sql-1449"><a href="#Generator.case_sql-1449"><span class="linenos">1449</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">"this"</span><span class="p">)</span> -</span><span id="Generator.case_sql-1450"><a href="#Generator.case_sql-1450"><span class="linenos">1450</span></a> <span class="n">statements</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"CASE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"CASE"</span><span class="p">]</span> -</span><span id="Generator.case_sql-1451"><a href="#Generator.case_sql-1451"><span class="linenos">1451</span></a> -</span><span id="Generator.case_sql-1452"><a href="#Generator.case_sql-1452"><span class="linenos">1452</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">args</span><span class="p">[</span><span class="s2">"ifs"</span><span class="p">]:</span> -</span><span id="Generator.case_sql-1453"><a href="#Generator.case_sql-1453"><span class="linenos">1453</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WHEN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.case_sql-1454"><a href="#Generator.case_sql-1454"><span class="linenos">1454</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"THEN </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">'true'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.case_sql-1455"><a href="#Generator.case_sql-1455"><span class="linenos">1455</span></a> -</span><span id="Generator.case_sql-1456"><a href="#Generator.case_sql-1456"><span class="linenos">1456</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="Generator.case_sql-1457"><a href="#Generator.case_sql-1457"><span class="linenos">1457</span></a> -</span><span id="Generator.case_sql-1458"><a href="#Generator.case_sql-1458"><span class="linenos">1458</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="Generator.case_sql-1459"><a href="#Generator.case_sql-1459"><span class="linenos">1459</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ELSE </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.case_sql-1460"><a href="#Generator.case_sql-1460"><span class="linenos">1460</span></a> -</span><span id="Generator.case_sql-1461"><a href="#Generator.case_sql-1461"><span class="linenos">1461</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> -</span><span id="Generator.case_sql-1462"><a href="#Generator.case_sql-1462"><span class="linenos">1462</span></a> -</span><span id="Generator.case_sql-1463"><a href="#Generator.case_sql-1463"><span class="linenos">1463</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> -</span><span id="Generator.case_sql-1464"><a href="#Generator.case_sql-1464"><span class="linenos">1464</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">),</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.case_sql-1465"><a href="#Generator.case_sql-1465"><span class="linenos">1465</span></a> -</span><span id="Generator.case_sql-1466"><a href="#Generator.case_sql-1466"><span class="linenos">1466</span></a> <span class="k">return</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.case_sql-1449"><a href="#Generator.case_sql-1449"><span class="linenos">1449</span></a> <span class="k">def</span> <span class="nf">case_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">Case</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.case_sql-1450"><a href="#Generator.case_sql-1450"><span class="linenos">1450</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">"this"</span><span class="p">)</span> +</span><span id="Generator.case_sql-1451"><a href="#Generator.case_sql-1451"><span class="linenos">1451</span></a> <span class="n">statements</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">"CASE </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"CASE"</span><span class="p">]</span> +</span><span id="Generator.case_sql-1452"><a href="#Generator.case_sql-1452"><span class="linenos">1452</span></a> +</span><span id="Generator.case_sql-1453"><a href="#Generator.case_sql-1453"><span class="linenos">1453</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">args</span><span class="p">[</span><span class="s2">"ifs"</span><span class="p">]:</span> +</span><span id="Generator.case_sql-1454"><a href="#Generator.case_sql-1454"><span class="linenos">1454</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"WHEN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.case_sql-1455"><a href="#Generator.case_sql-1455"><span class="linenos">1455</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"THEN </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">'true'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.case_sql-1456"><a href="#Generator.case_sql-1456"><span class="linenos">1456</span></a> +</span><span id="Generator.case_sql-1457"><a href="#Generator.case_sql-1457"><span class="linenos">1457</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="Generator.case_sql-1458"><a href="#Generator.case_sql-1458"><span class="linenos">1458</span></a> +</span><span id="Generator.case_sql-1459"><a href="#Generator.case_sql-1459"><span class="linenos">1459</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="Generator.case_sql-1460"><a href="#Generator.case_sql-1460"><span class="linenos">1460</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ELSE </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.case_sql-1461"><a href="#Generator.case_sql-1461"><span class="linenos">1461</span></a> +</span><span id="Generator.case_sql-1462"><a href="#Generator.case_sql-1462"><span class="linenos">1462</span></a> <span class="n">statements</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"END"</span><span class="p">)</span> +</span><span id="Generator.case_sql-1463"><a href="#Generator.case_sql-1463"><span class="linenos">1463</span></a> +</span><span id="Generator.case_sql-1464"><a href="#Generator.case_sql-1464"><span class="linenos">1464</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> +</span><span id="Generator.case_sql-1465"><a href="#Generator.case_sql-1465"><span class="linenos">1465</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">),</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.case_sql-1466"><a href="#Generator.case_sql-1466"><span class="linenos">1466</span></a> +</span><span id="Generator.case_sql-1467"><a href="#Generator.case_sql-1467"><span class="linenos">1467</span></a> <span class="k">return</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">statements</span><span class="p">)</span> </span></pre></div> @@ -7796,10 +7823,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.constraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.constraint_sql-1468"><a href="#Generator.constraint_sql-1468"><span class="linenos">1468</span></a> <span class="k">def</span> <span class="nf">constraint_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">Constraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.constraint_sql-1469"><a href="#Generator.constraint_sql-1469"><span class="linenos">1469</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">"this"</span><span class="p">)</span> -</span><span id="Generator.constraint_sql-1470"><a href="#Generator.constraint_sql-1470"><span class="linenos">1470</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.constraint_sql-1471"><a href="#Generator.constraint_sql-1471"><span class="linenos">1471</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.constraint_sql-1469"><a href="#Generator.constraint_sql-1469"><span class="linenos">1469</span></a> <span class="k">def</span> <span class="nf">constraint_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">Constraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.constraint_sql-1470"><a href="#Generator.constraint_sql-1470"><span class="linenos">1470</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">"this"</span><span class="p">)</span> +</span><span id="Generator.constraint_sql-1471"><a href="#Generator.constraint_sql-1471"><span class="linenos">1471</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.constraint_sql-1472"><a href="#Generator.constraint_sql-1472"><span class="linenos">1472</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7817,10 +7844,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.extract_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.extract_sql-1473"><a href="#Generator.extract_sql-1473"><span class="linenos">1473</span></a> <span class="k">def</span> <span class="nf">extract_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">Extract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.extract_sql-1474"><a href="#Generator.extract_sql-1474"><span class="linenos">1474</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">"this"</span><span class="p">)</span> -</span><span id="Generator.extract_sql-1475"><a href="#Generator.extract_sql-1475"><span class="linenos">1475</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> -</span><span id="Generator.extract_sql-1476"><a href="#Generator.extract_sql-1476"><span class="linenos">1476</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXTRACT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.extract_sql-1474"><a href="#Generator.extract_sql-1474"><span class="linenos">1474</span></a> <span class="k">def</span> <span class="nf">extract_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">Extract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.extract_sql-1475"><a href="#Generator.extract_sql-1475"><span class="linenos">1475</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">"this"</span><span class="p">)</span> +</span><span id="Generator.extract_sql-1476"><a href="#Generator.extract_sql-1476"><span class="linenos">1476</span></a> <span class="n">expression_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span> +</span><span id="Generator.extract_sql-1477"><a href="#Generator.extract_sql-1477"><span class="linenos">1477</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"EXTRACT(</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">expression_sql</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -7838,15 +7865,15 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.trim_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.trim_sql-1478"><a href="#Generator.trim_sql-1478"><span class="linenos">1478</span></a> <span class="k">def</span> <span class="nf">trim_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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.trim_sql-1479"><a href="#Generator.trim_sql-1479"><span class="linenos">1479</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> -</span><span id="Generator.trim_sql-1480"><a href="#Generator.trim_sql-1480"><span class="linenos">1480</span></a> -</span><span id="Generator.trim_sql-1481"><a href="#Generator.trim_sql-1481"><span class="linenos">1481</span></a> <span class="k">if</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"LEADING"</span><span class="p">:</span> -</span><span id="Generator.trim_sql-1482"><a href="#Generator.trim_sql-1482"><span class="linenos">1482</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">"LTRIM"</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="Generator.trim_sql-1483"><a href="#Generator.trim_sql-1483"><span class="linenos">1483</span></a> <span class="k">elif</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"TRAILING"</span><span class="p">:</span> -</span><span id="Generator.trim_sql-1484"><a href="#Generator.trim_sql-1484"><span class="linenos">1484</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">"RTRIM"</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="Generator.trim_sql-1485"><a href="#Generator.trim_sql-1485"><span class="linenos">1485</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.trim_sql-1486"><a href="#Generator.trim_sql-1486"><span class="linenos">1486</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">"TRIM"</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> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.trim_sql-1479"><a href="#Generator.trim_sql-1479"><span class="linenos">1479</span></a> <span class="k">def</span> <span class="nf">trim_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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.trim_sql-1480"><a href="#Generator.trim_sql-1480"><span class="linenos">1480</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span> +</span><span id="Generator.trim_sql-1481"><a href="#Generator.trim_sql-1481"><span class="linenos">1481</span></a> +</span><span id="Generator.trim_sql-1482"><a href="#Generator.trim_sql-1482"><span class="linenos">1482</span></a> <span class="k">if</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"LEADING"</span><span class="p">:</span> +</span><span id="Generator.trim_sql-1483"><a href="#Generator.trim_sql-1483"><span class="linenos">1483</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">"LTRIM"</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="Generator.trim_sql-1484"><a href="#Generator.trim_sql-1484"><span class="linenos">1484</span></a> <span class="k">elif</span> <span class="n">trim_type</span> <span class="o">==</span> <span class="s2">"TRAILING"</span><span class="p">:</span> +</span><span id="Generator.trim_sql-1485"><a href="#Generator.trim_sql-1485"><span class="linenos">1485</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">"RTRIM"</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="Generator.trim_sql-1486"><a href="#Generator.trim_sql-1486"><span class="linenos">1486</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.trim_sql-1487"><a href="#Generator.trim_sql-1487"><span class="linenos">1487</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">"TRIM"</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></pre></div> @@ -7864,10 +7891,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.concat_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.concat_sql-1488"><a href="#Generator.concat_sql-1488"><span class="linenos">1488</span></a> <span class="k">def</span> <span class="nf">concat_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">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.concat_sql-1489"><a href="#Generator.concat_sql-1489"><span class="linenos">1489</span></a> <span class="k">if</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 class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Generator.concat_sql-1490"><a href="#Generator.concat_sql-1490"><span class="linenos">1490</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="Generator.concat_sql-1491"><a href="#Generator.concat_sql-1491"><span class="linenos">1491</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> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.concat_sql-1489"><a href="#Generator.concat_sql-1489"><span class="linenos">1489</span></a> <span class="k">def</span> <span class="nf">concat_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">Concat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.concat_sql-1490"><a href="#Generator.concat_sql-1490"><span class="linenos">1490</span></a> <span class="k">if</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 class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Generator.concat_sql-1491"><a href="#Generator.concat_sql-1491"><span class="linenos">1491</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="Generator.concat_sql-1492"><a href="#Generator.concat_sql-1492"><span class="linenos">1492</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></pre></div> @@ -7885,9 +7912,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.check_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.check_sql-1493"><a href="#Generator.check_sql-1493"><span class="linenos">1493</span></a> <span class="k">def</span> <span class="nf">check_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">Check</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.check_sql-1494"><a href="#Generator.check_sql-1494"><span class="linenos">1494</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="n">key</span><span class="o">=</span><span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator.check_sql-1495"><a href="#Generator.check_sql-1495"><span class="linenos">1495</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECK (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.check_sql-1494"><a href="#Generator.check_sql-1494"><span class="linenos">1494</span></a> <span class="k">def</span> <span class="nf">check_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">Check</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.check_sql-1495"><a href="#Generator.check_sql-1495"><span class="linenos">1495</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="n">key</span><span class="o">=</span><span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator.check_sql-1496"><a href="#Generator.check_sql-1496"><span class="linenos">1496</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CHECK (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -7905,15 +7932,15 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.foreignkey_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.foreignkey_sql-1497"><a href="#Generator.foreignkey_sql-1497"><span class="linenos">1497</span></a> <span class="k">def</span> <span class="nf">foreignkey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.foreignkey_sql-1498"><a href="#Generator.foreignkey_sql-1498"><span class="linenos">1498</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.foreignkey_sql-1499"><a href="#Generator.foreignkey_sql-1499"><span class="linenos">1499</span></a> <span class="n">reference</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">"reference"</span><span class="p">)</span> -</span><span id="Generator.foreignkey_sql-1500"><a href="#Generator.foreignkey_sql-1500"><span class="linenos">1500</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">reference</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">reference</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.foreignkey_sql-1501"><a href="#Generator.foreignkey_sql-1501"><span class="linenos">1501</span></a> <span class="n">delete</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">"delete"</span><span class="p">)</span> -</span><span id="Generator.foreignkey_sql-1502"><a href="#Generator.foreignkey_sql-1502"><span class="linenos">1502</span></a> <span class="n">delete</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON DELETE </span><span class="si">{</span><span class="n">delete</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">delete</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.foreignkey_sql-1503"><a href="#Generator.foreignkey_sql-1503"><span class="linenos">1503</span></a> <span class="n">update</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">"update"</span><span class="p">)</span> -</span><span id="Generator.foreignkey_sql-1504"><a href="#Generator.foreignkey_sql-1504"><span class="linenos">1504</span></a> <span class="n">update</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON UPDATE </span><span class="si">{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">update</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.foreignkey_sql-1505"><a href="#Generator.foreignkey_sql-1505"><span class="linenos">1505</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FOREIGN KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">reference</span><span class="si">}{</span><span class="n">delete</span><span class="si">}{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.foreignkey_sql-1498"><a href="#Generator.foreignkey_sql-1498"><span class="linenos">1498</span></a> <span class="k">def</span> <span class="nf">foreignkey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.foreignkey_sql-1499"><a href="#Generator.foreignkey_sql-1499"><span class="linenos">1499</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.foreignkey_sql-1500"><a href="#Generator.foreignkey_sql-1500"><span class="linenos">1500</span></a> <span class="n">reference</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">"reference"</span><span class="p">)</span> +</span><span id="Generator.foreignkey_sql-1501"><a href="#Generator.foreignkey_sql-1501"><span class="linenos">1501</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">reference</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">reference</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.foreignkey_sql-1502"><a href="#Generator.foreignkey_sql-1502"><span class="linenos">1502</span></a> <span class="n">delete</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">"delete"</span><span class="p">)</span> +</span><span id="Generator.foreignkey_sql-1503"><a href="#Generator.foreignkey_sql-1503"><span class="linenos">1503</span></a> <span class="n">delete</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON DELETE </span><span class="si">{</span><span class="n">delete</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">delete</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.foreignkey_sql-1504"><a href="#Generator.foreignkey_sql-1504"><span class="linenos">1504</span></a> <span class="n">update</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">"update"</span><span class="p">)</span> +</span><span id="Generator.foreignkey_sql-1505"><a href="#Generator.foreignkey_sql-1505"><span class="linenos">1505</span></a> <span class="n">update</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON UPDATE </span><span class="si">{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">update</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.foreignkey_sql-1506"><a href="#Generator.foreignkey_sql-1506"><span class="linenos">1506</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"FOREIGN KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">reference</span><span class="si">}{</span><span class="n">delete</span><span class="si">}{</span><span class="n">update</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7931,11 +7958,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.primarykey_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.primarykey_sql-1507"><a href="#Generator.primarykey_sql-1507"><span class="linenos">1507</span></a> <span class="k">def</span> <span class="nf">primarykey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.primarykey_sql-1508"><a href="#Generator.primarykey_sql-1508"><span class="linenos">1508</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.primarykey_sql-1509"><a href="#Generator.primarykey_sql-1509"><span class="linenos">1509</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator.primarykey_sql-1510"><a href="#Generator.primarykey_sql-1510"><span class="linenos">1510</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.primarykey_sql-1511"><a href="#Generator.primarykey_sql-1511"><span class="linenos">1511</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.primarykey_sql-1508"><a href="#Generator.primarykey_sql-1508"><span class="linenos">1508</span></a> <span class="k">def</span> <span class="nf">primarykey_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">ForeignKey</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.primarykey_sql-1509"><a href="#Generator.primarykey_sql-1509"><span class="linenos">1509</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.primarykey_sql-1510"><a href="#Generator.primarykey_sql-1510"><span class="linenos">1510</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator.primarykey_sql-1511"><a href="#Generator.primarykey_sql-1511"><span class="linenos">1511</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.primarykey_sql-1512"><a href="#Generator.primarykey_sql-1512"><span class="linenos">1512</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"PRIMARY KEY (</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -7953,9 +7980,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.unique_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.unique_sql-1513"><a href="#Generator.unique_sql-1513"><span class="linenos">1513</span></a> <span class="k">def</span> <span class="nf">unique_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">Unique</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.unique_sql-1514"><a href="#Generator.unique_sql-1514"><span class="linenos">1514</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> -</span><span id="Generator.unique_sql-1515"><a href="#Generator.unique_sql-1515"><span class="linenos">1515</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNIQUE (</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.unique_sql-1514"><a href="#Generator.unique_sql-1514"><span class="linenos">1514</span></a> <span class="k">def</span> <span class="nf">unique_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">Unique</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.unique_sql-1515"><a href="#Generator.unique_sql-1515"><span class="linenos">1515</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">key</span><span class="o">=</span><span class="s2">"expressions"</span><span class="p">)</span> +</span><span id="Generator.unique_sql-1516"><a href="#Generator.unique_sql-1516"><span class="linenos">1516</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"UNIQUE (</span><span class="si">{</span><span class="n">columns</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -7973,10 +8000,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.if_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.if_sql-1517"><a href="#Generator.if_sql-1517"><span class="linenos">1517</span></a> <span class="k">def</span> <span class="nf">if_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">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.if_sql-1518"><a href="#Generator.if_sql-1518"><span class="linenos">1518</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sql</span><span class="p">(</span> -</span><span id="Generator.if_sql-1519"><a href="#Generator.if_sql-1519"><span class="linenos">1519</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()],</span> <span class="n">default</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">"false"</span><span class="p">))</span> -</span><span id="Generator.if_sql-1520"><a href="#Generator.if_sql-1520"><span class="linenos">1520</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.if_sql-1518"><a href="#Generator.if_sql-1518"><span class="linenos">1518</span></a> <span class="k">def</span> <span class="nf">if_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">If</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.if_sql-1519"><a href="#Generator.if_sql-1519"><span class="linenos">1519</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">case_sql</span><span class="p">(</span> +</span><span id="Generator.if_sql-1520"><a href="#Generator.if_sql-1520"><span class="linenos">1520</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">(</span><span class="n">ifs</span><span class="o">=</span><span class="p">[</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()],</span> <span class="n">default</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">"false"</span><span class="p">))</span> +</span><span id="Generator.if_sql-1521"><a href="#Generator.if_sql-1521"><span class="linenos">1521</span></a> <span class="p">)</span> </span></pre></div> @@ -7994,22 +8021,22 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.in_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.in_sql-1522"><a href="#Generator.in_sql-1522"><span class="linenos">1522</span></a> <span class="k">def</span> <span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.in_sql-1523"><a href="#Generator.in_sql-1523"><span class="linenos">1523</span></a> <span class="n">query</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">"query"</span><span class="p">)</span> -</span><span id="Generator.in_sql-1524"><a href="#Generator.in_sql-1524"><span class="linenos">1524</span></a> <span class="n">unnest</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">"unnest"</span><span class="p">)</span> -</span><span id="Generator.in_sql-1525"><a href="#Generator.in_sql-1525"><span class="linenos">1525</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> -</span><span id="Generator.in_sql-1526"><a href="#Generator.in_sql-1526"><span class="linenos">1526</span></a> <span class="n">is_global</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"is_global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.in_sql-1527"><a href="#Generator.in_sql-1527"><span class="linenos">1527</span></a> -</span><span id="Generator.in_sql-1528"><a href="#Generator.in_sql-1528"><span class="linenos">1528</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> -</span><span id="Generator.in_sql-1529"><a href="#Generator.in_sql-1529"><span class="linenos">1529</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">query</span><span class="p">)</span> -</span><span id="Generator.in_sql-1530"><a href="#Generator.in_sql-1530"><span class="linenos">1530</span></a> <span class="k">elif</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="Generator.in_sql-1531"><a href="#Generator.in_sql-1531"><span class="linenos">1531</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_unnest_op</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> -</span><span id="Generator.in_sql-1532"><a href="#Generator.in_sql-1532"><span class="linenos">1532</span></a> <span class="k">elif</span> <span class="n">field</span><span class="p">:</span> -</span><span id="Generator.in_sql-1533"><a href="#Generator.in_sql-1533"><span class="linenos">1533</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> -</span><span id="Generator.in_sql-1534"><a href="#Generator.in_sql-1534"><span class="linenos">1534</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.in_sql-1535"><a href="#Generator.in_sql-1535"><span class="linenos">1535</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator.in_sql-1536"><a href="#Generator.in_sql-1536"><span class="linenos">1536</span></a> -</span><span id="Generator.in_sql-1537"><a href="#Generator.in_sql-1537"><span class="linenos">1537</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">is_global</span><span class="si">}</span><span class="s2"> IN </span><span class="si">{</span><span class="n">in_sql</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.in_sql-1523"><a href="#Generator.in_sql-1523"><span class="linenos">1523</span></a> <span class="k">def</span> <span class="nf">in_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">In</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.in_sql-1524"><a href="#Generator.in_sql-1524"><span class="linenos">1524</span></a> <span class="n">query</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">"query"</span><span class="p">)</span> +</span><span id="Generator.in_sql-1525"><a href="#Generator.in_sql-1525"><span class="linenos">1525</span></a> <span class="n">unnest</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">"unnest"</span><span class="p">)</span> +</span><span id="Generator.in_sql-1526"><a href="#Generator.in_sql-1526"><span class="linenos">1526</span></a> <span class="n">field</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">"field"</span><span class="p">)</span> +</span><span id="Generator.in_sql-1527"><a href="#Generator.in_sql-1527"><span class="linenos">1527</span></a> <span class="n">is_global</span> <span class="o">=</span> <span class="s2">" GLOBAL"</span> <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">"is_global"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.in_sql-1528"><a href="#Generator.in_sql-1528"><span class="linenos">1528</span></a> +</span><span id="Generator.in_sql-1529"><a href="#Generator.in_sql-1529"><span class="linenos">1529</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> +</span><span id="Generator.in_sql-1530"><a href="#Generator.in_sql-1530"><span class="linenos">1530</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">query</span><span class="p">)</span> +</span><span id="Generator.in_sql-1531"><a href="#Generator.in_sql-1531"><span class="linenos">1531</span></a> <span class="k">elif</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="Generator.in_sql-1532"><a href="#Generator.in_sql-1532"><span class="linenos">1532</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">in_unnest_op</span><span class="p">(</span><span class="n">unnest</span><span class="p">)</span> +</span><span id="Generator.in_sql-1533"><a href="#Generator.in_sql-1533"><span class="linenos">1533</span></a> <span class="k">elif</span> <span class="n">field</span><span class="p">:</span> +</span><span id="Generator.in_sql-1534"><a href="#Generator.in_sql-1534"><span class="linenos">1534</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">field</span><span class="p">)</span> +</span><span id="Generator.in_sql-1535"><a href="#Generator.in_sql-1535"><span class="linenos">1535</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.in_sql-1536"><a href="#Generator.in_sql-1536"><span class="linenos">1536</span></a> <span class="n">in_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator.in_sql-1537"><a href="#Generator.in_sql-1537"><span class="linenos">1537</span></a> +</span><span id="Generator.in_sql-1538"><a href="#Generator.in_sql-1538"><span class="linenos">1538</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">is_global</span><span class="si">}</span><span class="s2"> IN </span><span class="si">{</span><span class="n">in_sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8027,8 +8054,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.in_unnest_op"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.in_unnest_op-1539"><a href="#Generator.in_unnest_op-1539"><span class="linenos">1539</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.in_unnest_op-1540"><a href="#Generator.in_unnest_op-1540"><span class="linenos">1540</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(SELECT </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">unnest</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.in_unnest_op-1540"><a href="#Generator.in_unnest_op-1540"><span class="linenos">1540</span></a> <span class="k">def</span> <span class="nf">in_unnest_op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">unnest</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.in_unnest_op-1541"><a href="#Generator.in_unnest_op-1541"><span class="linenos">1541</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(SELECT </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">unnest</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -8046,19 +8073,19 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.interval_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.interval_sql-1542"><a href="#Generator.interval_sql-1542"><span class="linenos">1542</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">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.interval_sql-1543"><a href="#Generator.interval_sql-1543"><span class="linenos">1543</span></a> <span class="n">this</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">"this"</span><span class="p">)</span> -</span><span id="Generator.interval_sql-1544"><a href="#Generator.interval_sql-1544"><span class="linenos">1544</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Generator.interval_sql-1545"><a href="#Generator.interval_sql-1545"><span class="linenos">1545</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.interval_sql-1546"><a href="#Generator.interval_sql-1546"><span class="linenos">1546</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.interval_sql-1547"><a href="#Generator.interval_sql-1547"><span class="linenos">1547</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> -</span><span id="Generator.interval_sql-1548"><a href="#Generator.interval_sql-1548"><span class="linenos">1548</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> -</span><span id="Generator.interval_sql-1549"><a href="#Generator.interval_sql-1549"><span class="linenos">1549</span></a> <span class="p">)</span> -</span><span id="Generator.interval_sql-1550"><a href="#Generator.interval_sql-1550"><span class="linenos">1550</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.interval_sql-1551"><a href="#Generator.interval_sql-1551"><span class="linenos">1551</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Generator.interval_sql-1552"><a href="#Generator.interval_sql-1552"><span class="linenos">1552</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> -</span><span id="Generator.interval_sql-1553"><a href="#Generator.interval_sql-1553"><span class="linenos">1553</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">unit</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.interval_sql-1554"><a href="#Generator.interval_sql-1554"><span class="linenos">1554</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERVAL</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.interval_sql-1543"><a href="#Generator.interval_sql-1543"><span class="linenos">1543</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">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.interval_sql-1544"><a href="#Generator.interval_sql-1544"><span class="linenos">1544</span></a> <span class="n">this</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">"this"</span><span class="p">)</span> +</span><span id="Generator.interval_sql-1545"><a href="#Generator.interval_sql-1545"><span class="linenos">1545</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Generator.interval_sql-1546"><a href="#Generator.interval_sql-1546"><span class="linenos">1546</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.interval_sql-1547"><a href="#Generator.interval_sql-1547"><span class="linenos">1547</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.interval_sql-1548"><a href="#Generator.interval_sql-1548"><span class="linenos">1548</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span> +</span><span id="Generator.interval_sql-1549"><a href="#Generator.interval_sql-1549"><span class="linenos">1549</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">" (</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">)"</span> +</span><span id="Generator.interval_sql-1550"><a href="#Generator.interval_sql-1550"><span class="linenos">1550</span></a> <span class="p">)</span> +</span><span id="Generator.interval_sql-1551"><a href="#Generator.interval_sql-1551"><span class="linenos">1551</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.interval_sql-1552"><a href="#Generator.interval_sql-1552"><span class="linenos">1552</span></a> <span class="n">this</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Generator.interval_sql-1553"><a href="#Generator.interval_sql-1553"><span class="linenos">1553</span></a> <span class="n">unit</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">"unit"</span><span class="p">)</span> +</span><span id="Generator.interval_sql-1554"><a href="#Generator.interval_sql-1554"><span class="linenos">1554</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">unit</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.interval_sql-1555"><a href="#Generator.interval_sql-1555"><span class="linenos">1555</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"INTERVAL</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">unit</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8076,8 +8103,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.return_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.return_sql-1556"><a href="#Generator.return_sql-1556"><span class="linenos">1556</span></a> <span class="k">def</span> <span class="nf">return_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">Return</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.return_sql-1557"><a href="#Generator.return_sql-1557"><span class="linenos">1557</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RETURN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.return_sql-1557"><a href="#Generator.return_sql-1557"><span class="linenos">1557</span></a> <span class="k">def</span> <span class="nf">return_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">Return</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.return_sql-1558"><a href="#Generator.return_sql-1558"><span class="linenos">1558</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RETURN </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8095,13 +8122,13 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.reference_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.reference_sql-1559"><a href="#Generator.reference_sql-1559"><span class="linenos">1559</span></a> <span class="k">def</span> <span class="nf">reference_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">Reference</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.reference_sql-1560"><a href="#Generator.reference_sql-1560"><span class="linenos">1560</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">"this"</span><span class="p">)</span> -</span><span id="Generator.reference_sql-1561"><a href="#Generator.reference_sql-1561"><span class="linenos">1561</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.reference_sql-1562"><a href="#Generator.reference_sql-1562"><span class="linenos">1562</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.reference_sql-1563"><a href="#Generator.reference_sql-1563"><span class="linenos">1563</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Generator.reference_sql-1564"><a href="#Generator.reference_sql-1564"><span class="linenos">1564</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.reference_sql-1565"><a href="#Generator.reference_sql-1565"><span class="linenos">1565</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"REFERENCES </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.reference_sql-1560"><a href="#Generator.reference_sql-1560"><span class="linenos">1560</span></a> <span class="k">def</span> <span class="nf">reference_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">Reference</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.reference_sql-1561"><a href="#Generator.reference_sql-1561"><span class="linenos">1561</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">"this"</span><span class="p">)</span> +</span><span id="Generator.reference_sql-1562"><a href="#Generator.reference_sql-1562"><span class="linenos">1562</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.reference_sql-1563"><a href="#Generator.reference_sql-1563"><span class="linenos">1563</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">expressions</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.reference_sql-1564"><a href="#Generator.reference_sql-1564"><span class="linenos">1564</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"options"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Generator.reference_sql-1565"><a href="#Generator.reference_sql-1565"><span class="linenos">1565</span></a> <span class="n">options</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.reference_sql-1566"><a href="#Generator.reference_sql-1566"><span class="linenos">1566</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"REFERENCES </span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}{</span><span class="n">options</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8119,8 +8146,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.anonymous_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.anonymous_sql-1567"><a href="#Generator.anonymous_sql-1567"><span class="linenos">1567</span></a> <span class="k">def</span> <span class="nf">anonymous_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">Anonymous</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.anonymous_sql-1568"><a href="#Generator.anonymous_sql-1568"><span class="linenos">1568</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="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.anonymous_sql-1568"><a href="#Generator.anonymous_sql-1568"><span class="linenos">1568</span></a> <span class="k">def</span> <span class="nf">anonymous_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">Anonymous</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.anonymous_sql-1569"><a href="#Generator.anonymous_sql-1569"><span class="linenos">1569</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="n">expression</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="o">*</span><span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> </span></pre></div> @@ -8138,14 +8165,14 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.paren_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.paren_sql-1570"><a href="#Generator.paren_sql-1570"><span class="linenos">1570</span></a> <span class="k">def</span> <span class="nf">paren_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">Paren</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.paren_sql-1571"><a href="#Generator.paren_sql-1571"><span class="linenos">1571</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">unnest</span><span class="p">(),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> -</span><span id="Generator.paren_sql-1572"><a href="#Generator.paren_sql-1572"><span class="linenos">1572</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.paren_sql-1573"><a href="#Generator.paren_sql-1573"><span class="linenos">1573</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.paren_sql-1574"><a href="#Generator.paren_sql-1574"><span class="linenos">1574</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Generator.paren_sql-1575"><a href="#Generator.paren_sql-1575"><span class="linenos">1575</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.paren_sql-1576"><a href="#Generator.paren_sql-1576"><span class="linenos">1576</span></a> -</span><span id="Generator.paren_sql-1577"><a href="#Generator.paren_sql-1577"><span class="linenos">1577</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.paren_sql-1571"><a href="#Generator.paren_sql-1571"><span class="linenos">1571</span></a> <span class="k">def</span> <span class="nf">paren_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">Paren</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.paren_sql-1572"><a href="#Generator.paren_sql-1572"><span class="linenos">1572</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">unnest</span><span class="p">(),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span> +</span><span id="Generator.paren_sql-1573"><a href="#Generator.paren_sql-1573"><span class="linenos">1573</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.paren_sql-1574"><a href="#Generator.paren_sql-1574"><span class="linenos">1574</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.paren_sql-1575"><a href="#Generator.paren_sql-1575"><span class="linenos">1575</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)),</span> <span class="n">sep</span><span class="o">=</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Generator.paren_sql-1576"><a href="#Generator.paren_sql-1576"><span class="linenos">1576</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">sql</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="s1">')'</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.paren_sql-1577"><a href="#Generator.paren_sql-1577"><span class="linenos">1577</span></a> +</span><span id="Generator.paren_sql-1578"><a href="#Generator.paren_sql-1578"><span class="linenos">1578</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">prepend_ctes</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> </span></pre></div> @@ -8163,11 +8190,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.neg_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.neg_sql-1579"><a href="#Generator.neg_sql-1579"><span class="linenos">1579</span></a> <span class="k">def</span> <span class="nf">neg_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">Neg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.neg_sql-1580"><a href="#Generator.neg_sql-1580"><span class="linenos">1580</span></a> <span class="c1"># This makes sure we don't convert "- - 5" to "--5", which is a comment</span> -</span><span id="Generator.neg_sql-1581"><a href="#Generator.neg_sql-1581"><span class="linenos">1581</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> -</span><span id="Generator.neg_sql-1582"><a href="#Generator.neg_sql-1582"><span class="linenos">1582</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">this_sql</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"-"</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.neg_sql-1583"><a href="#Generator.neg_sql-1583"><span class="linenos">1583</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"-</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.neg_sql-1580"><a href="#Generator.neg_sql-1580"><span class="linenos">1580</span></a> <span class="k">def</span> <span class="nf">neg_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">Neg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.neg_sql-1581"><a href="#Generator.neg_sql-1581"><span class="linenos">1581</span></a> <span class="c1"># This makes sure we don't convert "- - 5" to "--5", which is a comment</span> +</span><span id="Generator.neg_sql-1582"><a href="#Generator.neg_sql-1582"><span class="linenos">1582</span></a> <span class="n">this_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span> +</span><span id="Generator.neg_sql-1583"><a href="#Generator.neg_sql-1583"><span class="linenos">1583</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">" "</span> <span class="k">if</span> <span class="n">this_sql</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"-"</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.neg_sql-1584"><a href="#Generator.neg_sql-1584"><span class="linenos">1584</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"-</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">this_sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8185,8 +8212,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.not_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.not_sql-1585"><a href="#Generator.not_sql-1585"><span class="linenos">1585</span></a> <span class="k">def</span> <span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.not_sql-1586"><a href="#Generator.not_sql-1586"><span class="linenos">1586</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"NOT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.not_sql-1586"><a href="#Generator.not_sql-1586"><span class="linenos">1586</span></a> <span class="k">def</span> <span class="nf">not_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.not_sql-1587"><a href="#Generator.not_sql-1587"><span class="linenos">1587</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"NOT </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">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8204,10 +8231,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.alias_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.alias_sql-1588"><a href="#Generator.alias_sql-1588"><span class="linenos">1588</span></a> <span class="k">def</span> <span class="nf">alias_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">Alias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.alias_sql-1589"><a href="#Generator.alias_sql-1589"><span class="linenos">1589</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> -</span><span id="Generator.alias_sql-1590"><a href="#Generator.alias_sql-1590"><span class="linenos">1590</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">to_sql</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.alias_sql-1591"><a href="#Generator.alias_sql-1591"><span class="linenos">1591</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.alias_sql-1589"><a href="#Generator.alias_sql-1589"><span class="linenos">1589</span></a> <span class="k">def</span> <span class="nf">alias_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">Alias</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.alias_sql-1590"><a href="#Generator.alias_sql-1590"><span class="linenos">1590</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"alias"</span><span class="p">)</span> +</span><span id="Generator.alias_sql-1591"><a href="#Generator.alias_sql-1591"><span class="linenos">1591</span></a> <span class="n">to_sql</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" AS </span><span class="si">{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">to_sql</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.alias_sql-1592"><a href="#Generator.alias_sql-1592"><span class="linenos">1592</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}{</span><span class="n">to_sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8225,8 +8252,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.aliases_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.aliases_sql-1593"><a href="#Generator.aliases_sql-1593"><span class="linenos">1593</span></a> <span class="k">def</span> <span class="nf">aliases_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">Aliases</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.aliases_sql-1594"><a href="#Generator.aliases_sql-1594"><span class="linenos">1594</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.aliases_sql-1594"><a href="#Generator.aliases_sql-1594"><span class="linenos">1594</span></a> <span class="k">def</span> <span class="nf">aliases_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">Aliases</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.aliases_sql-1595"><a href="#Generator.aliases_sql-1595"><span class="linenos">1595</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS (</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -8244,10 +8271,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.attimezone_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.attimezone_sql-1596"><a href="#Generator.attimezone_sql-1596"><span class="linenos">1596</span></a> <span class="k">def</span> <span class="nf">attimezone_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">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.attimezone_sql-1597"><a href="#Generator.attimezone_sql-1597"><span class="linenos">1597</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">"this"</span><span class="p">)</span> -</span><span id="Generator.attimezone_sql-1598"><a href="#Generator.attimezone_sql-1598"><span class="linenos">1598</span></a> <span class="n">zone</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">"zone"</span><span class="p">)</span> -</span><span id="Generator.attimezone_sql-1599"><a href="#Generator.attimezone_sql-1599"><span class="linenos">1599</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.attimezone_sql-1597"><a href="#Generator.attimezone_sql-1597"><span class="linenos">1597</span></a> <span class="k">def</span> <span class="nf">attimezone_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">AtTimeZone</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.attimezone_sql-1598"><a href="#Generator.attimezone_sql-1598"><span class="linenos">1598</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">"this"</span><span class="p">)</span> +</span><span id="Generator.attimezone_sql-1599"><a href="#Generator.attimezone_sql-1599"><span class="linenos">1599</span></a> <span class="n">zone</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">"zone"</span><span class="p">)</span> +</span><span id="Generator.attimezone_sql-1600"><a href="#Generator.attimezone_sql-1600"><span class="linenos">1600</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> AT TIME ZONE </span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8265,8 +8292,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.add_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.add_sql-1601"><a href="#Generator.add_sql-1601"><span class="linenos">1601</span></a> <span class="k">def</span> <span class="nf">add_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">Add</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.add_sql-1602"><a href="#Generator.add_sql-1602"><span class="linenos">1602</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.add_sql-1602"><a href="#Generator.add_sql-1602"><span class="linenos">1602</span></a> <span class="k">def</span> <span class="nf">add_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">Add</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.add_sql-1603"><a href="#Generator.add_sql-1603"><span class="linenos">1603</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> </span></pre></div> @@ -8284,8 +8311,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.and_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.and_sql-1604"><a href="#Generator.and_sql-1604"><span class="linenos">1604</span></a> <span class="k">def</span> <span class="nf">and_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">And</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.and_sql-1605"><a href="#Generator.and_sql-1605"><span class="linenos">1605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.and_sql-1605"><a href="#Generator.and_sql-1605"><span class="linenos">1605</span></a> <span class="k">def</span> <span class="nf">and_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">And</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.and_sql-1606"><a href="#Generator.and_sql-1606"><span class="linenos">1606</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"AND"</span><span class="p">)</span> </span></pre></div> @@ -8303,13 +8330,13 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.connector_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.connector_sql-1607"><a href="#Generator.connector_sql-1607"><span class="linenos">1607</span></a> <span class="k">def</span> <span class="nf">connector_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">Connector</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.connector_sql-1608"><a href="#Generator.connector_sql-1608"><span class="linenos">1608</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator.connector_sql-1609"><a href="#Generator.connector_sql-1609"><span class="linenos">1609</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">op</span><span class="p">)</span> -</span><span id="Generator.connector_sql-1610"><a href="#Generator.connector_sql-1610"><span class="linenos">1610</span></a> -</span><span id="Generator.connector_sql-1611"><a href="#Generator.connector_sql-1611"><span class="linenos">1611</span></a> <span class="n">sqls</span> <span class="o">=</span> <span class="nb">tuple</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="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">flatten</span><span class="p">(</span><span class="n">unnest</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> -</span><span id="Generator.connector_sql-1612"><a href="#Generator.connector_sql-1612"><span class="linenos">1612</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator.connector_sql-1613"><a href="#Generator.connector_sql-1613"><span class="linenos">1613</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.connector_sql-1608"><a href="#Generator.connector_sql-1608"><span class="linenos">1608</span></a> <span class="k">def</span> <span class="nf">connector_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">Connector</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.connector_sql-1609"><a href="#Generator.connector_sql-1609"><span class="linenos">1609</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator.connector_sql-1610"><a href="#Generator.connector_sql-1610"><span class="linenos">1610</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">op</span><span class="p">)</span> +</span><span id="Generator.connector_sql-1611"><a href="#Generator.connector_sql-1611"><span class="linenos">1611</span></a> +</span><span id="Generator.connector_sql-1612"><a href="#Generator.connector_sql-1612"><span class="linenos">1612</span></a> <span class="n">sqls</span> <span class="o">=</span> <span class="nb">tuple</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="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">flatten</span><span class="p">(</span><span class="n">unnest</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span> +</span><span id="Generator.connector_sql-1613"><a href="#Generator.connector_sql-1613"><span class="linenos">1613</span></a> <span class="n">sep</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator.connector_sql-1614"><a href="#Generator.connector_sql-1614"><span class="linenos">1614</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="si">}{</span><span class="n">op</span><span class="si">}</span><span class="s2"> "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">sqls</span><span class="p">)</span> </span></pre></div> @@ -8327,8 +8354,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.bitwiseand_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwiseand_sql-1615"><a href="#Generator.bitwiseand_sql-1615"><span class="linenos">1615</span></a> <span class="k">def</span> <span class="nf">bitwiseand_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">BitwiseAnd</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.bitwiseand_sql-1616"><a href="#Generator.bitwiseand_sql-1616"><span class="linenos">1616</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"&"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwiseand_sql-1616"><a href="#Generator.bitwiseand_sql-1616"><span class="linenos">1616</span></a> <span class="k">def</span> <span class="nf">bitwiseand_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">BitwiseAnd</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.bitwiseand_sql-1617"><a href="#Generator.bitwiseand_sql-1617"><span class="linenos">1617</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"&"</span><span class="p">)</span> </span></pre></div> @@ -8346,8 +8373,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.bitwiseleftshift_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwiseleftshift_sql-1618"><a href="#Generator.bitwiseleftshift_sql-1618"><span class="linenos">1618</span></a> <span class="k">def</span> <span class="nf">bitwiseleftshift_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">BitwiseLeftShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.bitwiseleftshift_sql-1619"><a href="#Generator.bitwiseleftshift_sql-1619"><span class="linenos">1619</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<<"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwiseleftshift_sql-1619"><a href="#Generator.bitwiseleftshift_sql-1619"><span class="linenos">1619</span></a> <span class="k">def</span> <span class="nf">bitwiseleftshift_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">BitwiseLeftShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.bitwiseleftshift_sql-1620"><a href="#Generator.bitwiseleftshift_sql-1620"><span class="linenos">1620</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<<"</span><span class="p">)</span> </span></pre></div> @@ -8365,8 +8392,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.bitwisenot_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwisenot_sql-1621"><a href="#Generator.bitwisenot_sql-1621"><span class="linenos">1621</span></a> <span class="k">def</span> <span class="nf">bitwisenot_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">BitwiseNot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.bitwisenot_sql-1622"><a href="#Generator.bitwisenot_sql-1622"><span class="linenos">1622</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"~</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwisenot_sql-1622"><a href="#Generator.bitwisenot_sql-1622"><span class="linenos">1622</span></a> <span class="k">def</span> <span class="nf">bitwisenot_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">BitwiseNot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.bitwisenot_sql-1623"><a href="#Generator.bitwisenot_sql-1623"><span class="linenos">1623</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"~</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8384,8 +8411,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.bitwiseor_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwiseor_sql-1624"><a href="#Generator.bitwiseor_sql-1624"><span class="linenos">1624</span></a> <span class="k">def</span> <span class="nf">bitwiseor_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">BitwiseOr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.bitwiseor_sql-1625"><a href="#Generator.bitwiseor_sql-1625"><span class="linenos">1625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"|"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwiseor_sql-1625"><a href="#Generator.bitwiseor_sql-1625"><span class="linenos">1625</span></a> <span class="k">def</span> <span class="nf">bitwiseor_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">BitwiseOr</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.bitwiseor_sql-1626"><a href="#Generator.bitwiseor_sql-1626"><span class="linenos">1626</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"|"</span><span class="p">)</span> </span></pre></div> @@ -8403,8 +8430,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.bitwiserightshift_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwiserightshift_sql-1627"><a href="#Generator.bitwiserightshift_sql-1627"><span class="linenos">1627</span></a> <span class="k">def</span> <span class="nf">bitwiserightshift_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">BitwiseRightShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.bitwiserightshift_sql-1628"><a href="#Generator.bitwiserightshift_sql-1628"><span class="linenos">1628</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">>"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwiserightshift_sql-1628"><a href="#Generator.bitwiserightshift_sql-1628"><span class="linenos">1628</span></a> <span class="k">def</span> <span class="nf">bitwiserightshift_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">BitwiseRightShift</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.bitwiserightshift_sql-1629"><a href="#Generator.bitwiserightshift_sql-1629"><span class="linenos">1629</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">>"</span><span class="p">)</span> </span></pre></div> @@ -8422,8 +8449,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.bitwisexor_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwisexor_sql-1630"><a href="#Generator.bitwisexor_sql-1630"><span class="linenos">1630</span></a> <span class="k">def</span> <span class="nf">bitwisexor_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">BitwiseXor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.bitwisexor_sql-1631"><a href="#Generator.bitwisexor_sql-1631"><span class="linenos">1631</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.bitwisexor_sql-1631"><a href="#Generator.bitwisexor_sql-1631"><span class="linenos">1631</span></a> <span class="k">def</span> <span class="nf">bitwisexor_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">BitwiseXor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.bitwisexor_sql-1632"><a href="#Generator.bitwisexor_sql-1632"><span class="linenos">1632</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"^"</span><span class="p">)</span> </span></pre></div> @@ -8441,8 +8468,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.cast_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.cast_sql-1633"><a href="#Generator.cast_sql-1633"><span class="linenos">1633</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.cast_sql-1634"><a href="#Generator.cast_sql-1634"><span class="linenos">1634</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.cast_sql-1634"><a href="#Generator.cast_sql-1634"><span class="linenos">1634</span></a> <span class="k">def</span> <span class="nf">cast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.cast_sql-1635"><a href="#Generator.cast_sql-1635"><span class="linenos">1635</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -8460,9 +8487,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.currentdate_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.currentdate_sql-1636"><a href="#Generator.currentdate_sql-1636"><span class="linenos">1636</span></a> <span class="k">def</span> <span class="nf">currentdate_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">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.currentdate_sql-1637"><a href="#Generator.currentdate_sql-1637"><span class="linenos">1637</span></a> <span class="n">zone</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">"this"</span><span class="p">)</span> -</span><span id="Generator.currentdate_sql-1638"><a href="#Generator.currentdate_sql-1638"><span class="linenos">1638</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE(</span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.currentdate_sql-1637"><a href="#Generator.currentdate_sql-1637"><span class="linenos">1637</span></a> <span class="k">def</span> <span class="nf">currentdate_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">CurrentDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.currentdate_sql-1638"><a href="#Generator.currentdate_sql-1638"><span class="linenos">1638</span></a> <span class="n">zone</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">"this"</span><span class="p">)</span> +</span><span id="Generator.currentdate_sql-1639"><a href="#Generator.currentdate_sql-1639"><span class="linenos">1639</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"CURRENT_DATE(</span><span class="si">{</span><span class="n">zone</span><span class="si">}</span><span class="s2">)"</span> <span class="k">if</span> <span class="n">zone</span> <span class="k">else</span> <span class="s2">"CURRENT_DATE"</span> </span></pre></div> @@ -8480,8 +8507,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.collate_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.collate_sql-1640"><a href="#Generator.collate_sql-1640"><span class="linenos">1640</span></a> <span class="k">def</span> <span class="nf">collate_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">Collate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.collate_sql-1641"><a href="#Generator.collate_sql-1641"><span class="linenos">1641</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"COLLATE"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.collate_sql-1641"><a href="#Generator.collate_sql-1641"><span class="linenos">1641</span></a> <span class="k">def</span> <span class="nf">collate_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">Collate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.collate_sql-1642"><a href="#Generator.collate_sql-1642"><span class="linenos">1642</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"COLLATE"</span><span class="p">)</span> </span></pre></div> @@ -8499,8 +8526,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.command_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.command_sql-1643"><a href="#Generator.command_sql-1643"><span class="linenos">1643</span></a> <span class="k">def</span> <span class="nf">command_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">Command</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.command_sql-1644"><a href="#Generator.command_sql-1644"><span class="linenos">1644</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s1">'expression'</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.command_sql-1644"><a href="#Generator.command_sql-1644"><span class="linenos">1644</span></a> <span class="k">def</span> <span class="nf">command_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">Command</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.command_sql-1645"><a href="#Generator.command_sql-1645"><span class="linenos">1645</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s1">'expression'</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8518,8 +8545,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.transaction_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.transaction_sql-1646"><a href="#Generator.transaction_sql-1646"><span class="linenos">1646</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.transaction_sql-1647"><a href="#Generator.transaction_sql-1647"><span class="linenos">1647</span></a> <span class="k">return</span> <span class="s2">"BEGIN"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.transaction_sql-1647"><a href="#Generator.transaction_sql-1647"><span class="linenos">1647</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="o">*</span><span class="n">_</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.transaction_sql-1648"><a href="#Generator.transaction_sql-1648"><span class="linenos">1648</span></a> <span class="k">return</span> <span class="s2">"BEGIN"</span> </span></pre></div> @@ -8537,12 +8564,12 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.commit_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.commit_sql-1649"><a href="#Generator.commit_sql-1649"><span class="linenos">1649</span></a> <span class="k">def</span> <span class="nf">commit_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">Commit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.commit_sql-1650"><a href="#Generator.commit_sql-1650"><span class="linenos">1650</span></a> <span class="n">chain</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">"chain"</span><span class="p">)</span> -</span><span id="Generator.commit_sql-1651"><a href="#Generator.commit_sql-1651"><span class="linenos">1651</span></a> <span class="k">if</span> <span class="n">chain</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.commit_sql-1652"><a href="#Generator.commit_sql-1652"><span class="linenos">1652</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="s2">" AND CHAIN"</span> <span class="k">if</span> <span class="n">chain</span> <span class="k">else</span> <span class="s2">" AND NO CHAIN"</span> -</span><span id="Generator.commit_sql-1653"><a href="#Generator.commit_sql-1653"><span class="linenos">1653</span></a> -</span><span id="Generator.commit_sql-1654"><a href="#Generator.commit_sql-1654"><span class="linenos">1654</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COMMIT</span><span class="si">{</span><span class="n">chain</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.commit_sql-1650"><a href="#Generator.commit_sql-1650"><span class="linenos">1650</span></a> <span class="k">def</span> <span class="nf">commit_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">Commit</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.commit_sql-1651"><a href="#Generator.commit_sql-1651"><span class="linenos">1651</span></a> <span class="n">chain</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">"chain"</span><span class="p">)</span> +</span><span id="Generator.commit_sql-1652"><a href="#Generator.commit_sql-1652"><span class="linenos">1652</span></a> <span class="k">if</span> <span class="n">chain</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.commit_sql-1653"><a href="#Generator.commit_sql-1653"><span class="linenos">1653</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="s2">" AND CHAIN"</span> <span class="k">if</span> <span class="n">chain</span> <span class="k">else</span> <span class="s2">" AND NO CHAIN"</span> +</span><span id="Generator.commit_sql-1654"><a href="#Generator.commit_sql-1654"><span class="linenos">1654</span></a> +</span><span id="Generator.commit_sql-1655"><a href="#Generator.commit_sql-1655"><span class="linenos">1655</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"COMMIT</span><span class="si">{</span><span class="n">chain</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8560,10 +8587,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.rollback_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.rollback_sql-1656"><a href="#Generator.rollback_sql-1656"><span class="linenos">1656</span></a> <span class="k">def</span> <span class="nf">rollback_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">Rollback</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.rollback_sql-1657"><a href="#Generator.rollback_sql-1657"><span class="linenos">1657</span></a> <span class="n">savepoint</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">"savepoint"</span><span class="p">)</span> -</span><span id="Generator.rollback_sql-1658"><a href="#Generator.rollback_sql-1658"><span class="linenos">1658</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" TO </span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">savepoint</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.rollback_sql-1659"><a href="#Generator.rollback_sql-1659"><span class="linenos">1659</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROLLBACK</span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.rollback_sql-1657"><a href="#Generator.rollback_sql-1657"><span class="linenos">1657</span></a> <span class="k">def</span> <span class="nf">rollback_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">Rollback</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.rollback_sql-1658"><a href="#Generator.rollback_sql-1658"><span class="linenos">1658</span></a> <span class="n">savepoint</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">"savepoint"</span><span class="p">)</span> +</span><span id="Generator.rollback_sql-1659"><a href="#Generator.rollback_sql-1659"><span class="linenos">1659</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" TO </span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">savepoint</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.rollback_sql-1660"><a href="#Generator.rollback_sql-1660"><span class="linenos">1660</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ROLLBACK</span><span class="si">{</span><span class="n">savepoint</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8581,25 +8608,25 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.altercolumn_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.altercolumn_sql-1661"><a href="#Generator.altercolumn_sql-1661"><span class="linenos">1661</span></a> <span class="k">def</span> <span class="nf">altercolumn_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">AlterColumn</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.altercolumn_sql-1662"><a href="#Generator.altercolumn_sql-1662"><span class="linenos">1662</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">"this"</span><span class="p">)</span> -</span><span id="Generator.altercolumn_sql-1663"><a href="#Generator.altercolumn_sql-1663"><span class="linenos">1663</span></a> -</span><span id="Generator.altercolumn_sql-1664"><a href="#Generator.altercolumn_sql-1664"><span class="linenos">1664</span></a> <span class="n">dtype</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">"dtype"</span><span class="p">)</span> -</span><span id="Generator.altercolumn_sql-1665"><a href="#Generator.altercolumn_sql-1665"><span class="linenos">1665</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="p">:</span> -</span><span id="Generator.altercolumn_sql-1666"><a href="#Generator.altercolumn_sql-1666"><span class="linenos">1666</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> -</span><span id="Generator.altercolumn_sql-1667"><a href="#Generator.altercolumn_sql-1667"><span class="linenos">1667</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.altercolumn_sql-1668"><a href="#Generator.altercolumn_sql-1668"><span class="linenos">1668</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> -</span><span id="Generator.altercolumn_sql-1669"><a href="#Generator.altercolumn_sql-1669"><span class="linenos">1669</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">using</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.altercolumn_sql-1670"><a href="#Generator.altercolumn_sql-1670"><span class="linenos">1670</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TYPE </span><span class="si">{</span><span class="n">dtype</span><span class="si">}{</span><span class="n">collate</span><span class="si">}{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.altercolumn_sql-1671"><a href="#Generator.altercolumn_sql-1671"><span class="linenos">1671</span></a> -</span><span id="Generator.altercolumn_sql-1672"><a href="#Generator.altercolumn_sql-1672"><span class="linenos">1672</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> -</span><span id="Generator.altercolumn_sql-1673"><a href="#Generator.altercolumn_sql-1673"><span class="linenos">1673</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="Generator.altercolumn_sql-1674"><a href="#Generator.altercolumn_sql-1674"><span class="linenos">1674</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET DEFAULT </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.altercolumn_sql-1675"><a href="#Generator.altercolumn_sql-1675"><span class="linenos">1675</span></a> -</span><span id="Generator.altercolumn_sql-1676"><a href="#Generator.altercolumn_sql-1676"><span class="linenos">1676</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">"drop"</span><span class="p">):</span> -</span><span id="Generator.altercolumn_sql-1677"><a href="#Generator.altercolumn_sql-1677"><span class="linenos">1677</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported ALTER COLUMN syntax"</span><span class="p">)</span> -</span><span id="Generator.altercolumn_sql-1678"><a href="#Generator.altercolumn_sql-1678"><span class="linenos">1678</span></a> -</span><span id="Generator.altercolumn_sql-1679"><a href="#Generator.altercolumn_sql-1679"><span class="linenos">1679</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> DROP DEFAULT"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.altercolumn_sql-1662"><a href="#Generator.altercolumn_sql-1662"><span class="linenos">1662</span></a> <span class="k">def</span> <span class="nf">altercolumn_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">AlterColumn</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.altercolumn_sql-1663"><a href="#Generator.altercolumn_sql-1663"><span class="linenos">1663</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">"this"</span><span class="p">)</span> +</span><span id="Generator.altercolumn_sql-1664"><a href="#Generator.altercolumn_sql-1664"><span class="linenos">1664</span></a> +</span><span id="Generator.altercolumn_sql-1665"><a href="#Generator.altercolumn_sql-1665"><span class="linenos">1665</span></a> <span class="n">dtype</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">"dtype"</span><span class="p">)</span> +</span><span id="Generator.altercolumn_sql-1666"><a href="#Generator.altercolumn_sql-1666"><span class="linenos">1666</span></a> <span class="k">if</span> <span class="n">dtype</span><span class="p">:</span> +</span><span id="Generator.altercolumn_sql-1667"><a href="#Generator.altercolumn_sql-1667"><span class="linenos">1667</span></a> <span class="n">collate</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">"collate"</span><span class="p">)</span> +</span><span id="Generator.altercolumn_sql-1668"><a href="#Generator.altercolumn_sql-1668"><span class="linenos">1668</span></a> <span class="n">collate</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collate</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collate</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.altercolumn_sql-1669"><a href="#Generator.altercolumn_sql-1669"><span class="linenos">1669</span></a> <span class="n">using</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">"using"</span><span class="p">)</span> +</span><span id="Generator.altercolumn_sql-1670"><a href="#Generator.altercolumn_sql-1670"><span class="linenos">1670</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" USING </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">using</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.altercolumn_sql-1671"><a href="#Generator.altercolumn_sql-1671"><span class="linenos">1671</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> TYPE </span><span class="si">{</span><span class="n">dtype</span><span class="si">}{</span><span class="n">collate</span><span class="si">}{</span><span class="n">using</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.altercolumn_sql-1672"><a href="#Generator.altercolumn_sql-1672"><span class="linenos">1672</span></a> +</span><span id="Generator.altercolumn_sql-1673"><a href="#Generator.altercolumn_sql-1673"><span class="linenos">1673</span></a> <span class="n">default</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">"default"</span><span class="p">)</span> +</span><span id="Generator.altercolumn_sql-1674"><a href="#Generator.altercolumn_sql-1674"><span class="linenos">1674</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="Generator.altercolumn_sql-1675"><a href="#Generator.altercolumn_sql-1675"><span class="linenos">1675</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> SET DEFAULT </span><span class="si">{</span><span class="n">default</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.altercolumn_sql-1676"><a href="#Generator.altercolumn_sql-1676"><span class="linenos">1676</span></a> +</span><span id="Generator.altercolumn_sql-1677"><a href="#Generator.altercolumn_sql-1677"><span class="linenos">1677</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">"drop"</span><span class="p">):</span> +</span><span id="Generator.altercolumn_sql-1678"><a href="#Generator.altercolumn_sql-1678"><span class="linenos">1678</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"Unsupported ALTER COLUMN syntax"</span><span class="p">)</span> +</span><span id="Generator.altercolumn_sql-1679"><a href="#Generator.altercolumn_sql-1679"><span class="linenos">1679</span></a> +</span><span id="Generator.altercolumn_sql-1680"><a href="#Generator.altercolumn_sql-1680"><span class="linenos">1680</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER COLUMN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> DROP DEFAULT"</span> </span></pre></div> @@ -8617,9 +8644,9 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.renametable_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.renametable_sql-1681"><a href="#Generator.renametable_sql-1681"><span class="linenos">1681</span></a> <span class="k">def</span> <span class="nf">renametable_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">RenameTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.renametable_sql-1682"><a href="#Generator.renametable_sql-1682"><span class="linenos">1682</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">"this"</span><span class="p">)</span> -</span><span id="Generator.renametable_sql-1683"><a href="#Generator.renametable_sql-1683"><span class="linenos">1683</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RENAME TO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.renametable_sql-1682"><a href="#Generator.renametable_sql-1682"><span class="linenos">1682</span></a> <span class="k">def</span> <span class="nf">renametable_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">RenameTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.renametable_sql-1683"><a href="#Generator.renametable_sql-1683"><span class="linenos">1683</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">"this"</span><span class="p">)</span> +</span><span id="Generator.renametable_sql-1684"><a href="#Generator.renametable_sql-1684"><span class="linenos">1684</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"RENAME TO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8637,20 +8664,20 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.altertable_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.altertable_sql-1685"><a href="#Generator.altertable_sql-1685"><span class="linenos">1685</span></a> <span class="k">def</span> <span class="nf">altertable_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">AlterTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.altertable_sql-1686"><a href="#Generator.altertable_sql-1686"><span class="linenos">1686</span></a> <span class="n">actions</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">"actions"</span><span class="p">]</span> -</span><span id="Generator.altertable_sql-1687"><a href="#Generator.altertable_sql-1687"><span class="linenos">1687</span></a> -</span><span id="Generator.altertable_sql-1688"><a href="#Generator.altertable_sql-1688"><span class="linenos">1688</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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="Generator.altertable_sql-1689"><a href="#Generator.altertable_sql-1689"><span class="linenos">1689</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMN "</span><span class="p">)</span> -</span><span id="Generator.altertable_sql-1690"><a href="#Generator.altertable_sql-1690"><span class="linenos">1690</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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="Generator.altertable_sql-1691"><a href="#Generator.altertable_sql-1691"><span class="linenos">1691</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMNS "</span><span class="p">)</span> -</span><span id="Generator.altertable_sql-1692"><a href="#Generator.altertable_sql-1692"><span class="linenos">1692</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">):</span> -</span><span id="Generator.altertable_sql-1693"><a href="#Generator.altertable_sql-1693"><span class="linenos">1693</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.altertable_sql-1694"><a href="#Generator.altertable_sql-1694"><span class="linenos">1694</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.altertable_sql-1695"><a href="#Generator.altertable_sql-1695"><span class="linenos">1695</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">)</span> -</span><span id="Generator.altertable_sql-1696"><a href="#Generator.altertable_sql-1696"><span class="linenos">1696</span></a> -</span><span id="Generator.altertable_sql-1697"><a href="#Generator.altertable_sql-1697"><span class="linenos">1697</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.altertable_sql-1698"><a href="#Generator.altertable_sql-1698"><span class="linenos">1698</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER TABLE</span><span class="si">{</span><span class="n">exists</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">actions</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.altertable_sql-1686"><a href="#Generator.altertable_sql-1686"><span class="linenos">1686</span></a> <span class="k">def</span> <span class="nf">altertable_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">AlterTable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.altertable_sql-1687"><a href="#Generator.altertable_sql-1687"><span class="linenos">1687</span></a> <span class="n">actions</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">"actions"</span><span class="p">]</span> +</span><span id="Generator.altertable_sql-1688"><a href="#Generator.altertable_sql-1688"><span class="linenos">1688</span></a> +</span><span id="Generator.altertable_sql-1689"><a href="#Generator.altertable_sql-1689"><span class="linenos">1689</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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="Generator.altertable_sql-1690"><a href="#Generator.altertable_sql-1690"><span class="linenos">1690</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMN "</span><span class="p">)</span> +</span><span id="Generator.altertable_sql-1691"><a href="#Generator.altertable_sql-1691"><span class="linenos">1691</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</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="Generator.altertable_sql-1692"><a href="#Generator.altertable_sql-1692"><span class="linenos">1692</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"ADD COLUMNS "</span><span class="p">)</span> +</span><span id="Generator.altertable_sql-1693"><a href="#Generator.altertable_sql-1693"><span class="linenos">1693</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">actions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">):</span> +</span><span id="Generator.altertable_sql-1694"><a href="#Generator.altertable_sql-1694"><span class="linenos">1694</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.altertable_sql-1695"><a href="#Generator.altertable_sql-1695"><span class="linenos">1695</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.altertable_sql-1696"><a href="#Generator.altertable_sql-1696"><span class="linenos">1696</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"actions"</span><span class="p">)</span> +</span><span id="Generator.altertable_sql-1697"><a href="#Generator.altertable_sql-1697"><span class="linenos">1697</span></a> +</span><span id="Generator.altertable_sql-1698"><a href="#Generator.altertable_sql-1698"><span class="linenos">1698</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS"</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.altertable_sql-1699"><a href="#Generator.altertable_sql-1699"><span class="linenos">1699</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"ALTER TABLE</span><span class="si">{</span><span class="n">exists</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">actions</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8668,10 +8695,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.droppartition_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.droppartition_sql-1700"><a href="#Generator.droppartition_sql-1700"><span class="linenos">1700</span></a> <span class="k">def</span> <span class="nf">droppartition_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">DropPartition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.droppartition_sql-1701"><a href="#Generator.droppartition_sql-1701"><span class="linenos">1701</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.droppartition_sql-1702"><a href="#Generator.droppartition_sql-1702"><span class="linenos">1702</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> -</span><span id="Generator.droppartition_sql-1703"><a href="#Generator.droppartition_sql-1703"><span class="linenos">1703</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.droppartition_sql-1701"><a href="#Generator.droppartition_sql-1701"><span class="linenos">1701</span></a> <span class="k">def</span> <span class="nf">droppartition_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">DropPartition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.droppartition_sql-1702"><a href="#Generator.droppartition_sql-1702"><span class="linenos">1702</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.droppartition_sql-1703"><a href="#Generator.droppartition_sql-1703"><span class="linenos">1703</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="s2">" IF EXISTS "</span> <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">"exists"</span><span class="p">)</span> <span class="k">else</span> <span class="s2">" "</span> +</span><span id="Generator.droppartition_sql-1704"><a href="#Generator.droppartition_sql-1704"><span class="linenos">1704</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DROP</span><span class="si">{</span><span class="n">exists</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8689,16 +8716,16 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.addconstraint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.addconstraint_sql-1705"><a href="#Generator.addconstraint_sql-1705"><span class="linenos">1705</span></a> <span class="k">def</span> <span class="nf">addconstraint_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">AddConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.addconstraint_sql-1706"><a href="#Generator.addconstraint_sql-1706"><span class="linenos">1706</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">"this"</span><span class="p">)</span> -</span><span id="Generator.addconstraint_sql-1707"><a href="#Generator.addconstraint_sql-1707"><span class="linenos">1707</span></a> <span class="n">expression_</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">"expression"</span><span class="p">)</span> -</span><span id="Generator.addconstraint_sql-1708"><a href="#Generator.addconstraint_sql-1708"><span class="linenos">1708</span></a> <span class="n">add_constraint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ADD CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"ADD"</span> -</span><span id="Generator.addconstraint_sql-1709"><a href="#Generator.addconstraint_sql-1709"><span class="linenos">1709</span></a> -</span><span id="Generator.addconstraint_sql-1710"><a href="#Generator.addconstraint_sql-1710"><span class="linenos">1710</span></a> <span class="n">enforced</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">"enforced"</span><span class="p">)</span> -</span><span id="Generator.addconstraint_sql-1711"><a href="#Generator.addconstraint_sql-1711"><span class="linenos">1711</span></a> <span class="k">if</span> <span class="n">enforced</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Generator.addconstraint_sql-1712"><a href="#Generator.addconstraint_sql-1712"><span class="linenos">1712</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> CHECK (</span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="s1">' ENFORCED'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">enforced</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.addconstraint_sql-1713"><a href="#Generator.addconstraint_sql-1713"><span class="linenos">1713</span></a> -</span><span id="Generator.addconstraint_sql-1714"><a href="#Generator.addconstraint_sql-1714"><span class="linenos">1714</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.addconstraint_sql-1706"><a href="#Generator.addconstraint_sql-1706"><span class="linenos">1706</span></a> <span class="k">def</span> <span class="nf">addconstraint_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">AddConstraint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.addconstraint_sql-1707"><a href="#Generator.addconstraint_sql-1707"><span class="linenos">1707</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">"this"</span><span class="p">)</span> +</span><span id="Generator.addconstraint_sql-1708"><a href="#Generator.addconstraint_sql-1708"><span class="linenos">1708</span></a> <span class="n">expression_</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">"expression"</span><span class="p">)</span> +</span><span id="Generator.addconstraint_sql-1709"><a href="#Generator.addconstraint_sql-1709"><span class="linenos">1709</span></a> <span class="n">add_constraint</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ADD CONSTRAINT </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">"ADD"</span> +</span><span id="Generator.addconstraint_sql-1710"><a href="#Generator.addconstraint_sql-1710"><span class="linenos">1710</span></a> +</span><span id="Generator.addconstraint_sql-1711"><a href="#Generator.addconstraint_sql-1711"><span class="linenos">1711</span></a> <span class="n">enforced</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">"enforced"</span><span class="p">)</span> +</span><span id="Generator.addconstraint_sql-1712"><a href="#Generator.addconstraint_sql-1712"><span class="linenos">1712</span></a> <span class="k">if</span> <span class="n">enforced</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Generator.addconstraint_sql-1713"><a href="#Generator.addconstraint_sql-1713"><span class="linenos">1713</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> CHECK (</span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">)</span><span class="si">{</span><span class="s1">' ENFORCED'</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">enforced</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.addconstraint_sql-1714"><a href="#Generator.addconstraint_sql-1714"><span class="linenos">1714</span></a> +</span><span id="Generator.addconstraint_sql-1715"><a href="#Generator.addconstraint_sql-1715"><span class="linenos">1715</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">add_constraint</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expression_</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8716,13 +8743,13 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.distinct_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.distinct_sql-1716"><a href="#Generator.distinct_sql-1716"><span class="linenos">1716</span></a> <span class="k">def</span> <span class="nf">distinct_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">Distinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.distinct_sql-1717"><a href="#Generator.distinct_sql-1717"><span class="linenos">1717</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.distinct_sql-1718"><a href="#Generator.distinct_sql-1718"><span class="linenos">1718</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.distinct_sql-1719"><a href="#Generator.distinct_sql-1719"><span class="linenos">1719</span></a> -</span><span id="Generator.distinct_sql-1720"><a href="#Generator.distinct_sql-1720"><span class="linenos">1720</span></a> <span class="n">on</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">"on"</span><span class="p">)</span> -</span><span id="Generator.distinct_sql-1721"><a href="#Generator.distinct_sql-1721"><span class="linenos">1721</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">on</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.distinct_sql-1722"><a href="#Generator.distinct_sql-1722"><span class="linenos">1722</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DISTINCT</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.distinct_sql-1717"><a href="#Generator.distinct_sql-1717"><span class="linenos">1717</span></a> <span class="k">def</span> <span class="nf">distinct_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">Distinct</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.distinct_sql-1718"><a href="#Generator.distinct_sql-1718"><span class="linenos">1718</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.distinct_sql-1719"><a href="#Generator.distinct_sql-1719"><span class="linenos">1719</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.distinct_sql-1720"><a href="#Generator.distinct_sql-1720"><span class="linenos">1720</span></a> +</span><span id="Generator.distinct_sql-1721"><a href="#Generator.distinct_sql-1721"><span class="linenos">1721</span></a> <span class="n">on</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">"on"</span><span class="p">)</span> +</span><span id="Generator.distinct_sql-1722"><a href="#Generator.distinct_sql-1722"><span class="linenos">1722</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">on</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.distinct_sql-1723"><a href="#Generator.distinct_sql-1723"><span class="linenos">1723</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"DISTINCT</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">on</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8740,8 +8767,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.ignorenulls_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.ignorenulls_sql-1724"><a href="#Generator.ignorenulls_sql-1724"><span class="linenos">1724</span></a> <span class="k">def</span> <span class="nf">ignorenulls_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">IgnoreNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.ignorenulls_sql-1725"><a href="#Generator.ignorenulls_sql-1725"><span class="linenos">1725</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> IGNORE NULLS"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.ignorenulls_sql-1725"><a href="#Generator.ignorenulls_sql-1725"><span class="linenos">1725</span></a> <span class="k">def</span> <span class="nf">ignorenulls_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">IgnoreNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.ignorenulls_sql-1726"><a href="#Generator.ignorenulls_sql-1726"><span class="linenos">1726</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> IGNORE NULLS"</span> </span></pre></div> @@ -8759,8 +8786,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.respectnulls_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.respectnulls_sql-1727"><a href="#Generator.respectnulls_sql-1727"><span class="linenos">1727</span></a> <span class="k">def</span> <span class="nf">respectnulls_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">RespectNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.respectnulls_sql-1728"><a href="#Generator.respectnulls_sql-1728"><span class="linenos">1728</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> RESPECT NULLS"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.respectnulls_sql-1728"><a href="#Generator.respectnulls_sql-1728"><span class="linenos">1728</span></a> <span class="k">def</span> <span class="nf">respectnulls_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">RespectNulls</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.respectnulls_sql-1729"><a href="#Generator.respectnulls_sql-1729"><span class="linenos">1729</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> RESPECT NULLS"</span> </span></pre></div> @@ -8778,13 +8805,13 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.intdiv_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.intdiv_sql-1730"><a href="#Generator.intdiv_sql-1730"><span class="linenos">1730</span></a> <span class="k">def</span> <span class="nf">intdiv_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">IntDiv</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.intdiv_sql-1731"><a href="#Generator.intdiv_sql-1731"><span class="linenos">1731</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="Generator.intdiv_sql-1732"><a href="#Generator.intdiv_sql-1732"><span class="linenos">1732</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">(</span> -</span><span id="Generator.intdiv_sql-1733"><a href="#Generator.intdiv_sql-1733"><span class="linenos">1733</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">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="o">.</span><span class="n">expression</span><span class="p">),</span> -</span><span id="Generator.intdiv_sql-1734"><a href="#Generator.intdiv_sql-1734"><span class="linenos">1734</span></a> <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="p">(</span><span class="n">this</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">INT</span><span class="p">),</span> -</span><span id="Generator.intdiv_sql-1735"><a href="#Generator.intdiv_sql-1735"><span class="linenos">1735</span></a> <span class="p">)</span> -</span><span id="Generator.intdiv_sql-1736"><a href="#Generator.intdiv_sql-1736"><span class="linenos">1736</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.intdiv_sql-1731"><a href="#Generator.intdiv_sql-1731"><span class="linenos">1731</span></a> <span class="k">def</span> <span class="nf">intdiv_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">IntDiv</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.intdiv_sql-1732"><a href="#Generator.intdiv_sql-1732"><span class="linenos">1732</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="Generator.intdiv_sql-1733"><a href="#Generator.intdiv_sql-1733"><span class="linenos">1733</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">(</span> +</span><span id="Generator.intdiv_sql-1734"><a href="#Generator.intdiv_sql-1734"><span class="linenos">1734</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">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="o">.</span><span class="n">expression</span><span class="p">),</span> +</span><span id="Generator.intdiv_sql-1735"><a href="#Generator.intdiv_sql-1735"><span class="linenos">1735</span></a> <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="p">(</span><span class="n">this</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">INT</span><span class="p">),</span> +</span><span id="Generator.intdiv_sql-1736"><a href="#Generator.intdiv_sql-1736"><span class="linenos">1736</span></a> <span class="p">)</span> +</span><span id="Generator.intdiv_sql-1737"><a href="#Generator.intdiv_sql-1737"><span class="linenos">1737</span></a> <span class="p">)</span> </span></pre></div> @@ -8802,8 +8829,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.dpipe_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.dpipe_sql-1738"><a href="#Generator.dpipe_sql-1738"><span class="linenos">1738</span></a> <span class="k">def</span> <span class="nf">dpipe_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">DPipe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.dpipe_sql-1739"><a href="#Generator.dpipe_sql-1739"><span class="linenos">1739</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.dpipe_sql-1739"><a href="#Generator.dpipe_sql-1739"><span class="linenos">1739</span></a> <span class="k">def</span> <span class="nf">dpipe_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">DPipe</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.dpipe_sql-1740"><a href="#Generator.dpipe_sql-1740"><span class="linenos">1740</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"||"</span><span class="p">)</span> </span></pre></div> @@ -8821,8 +8848,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.div_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.div_sql-1741"><a href="#Generator.div_sql-1741"><span class="linenos">1741</span></a> <span class="k">def</span> <span class="nf">div_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">Div</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.div_sql-1742"><a href="#Generator.div_sql-1742"><span class="linenos">1742</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.div_sql-1742"><a href="#Generator.div_sql-1742"><span class="linenos">1742</span></a> <span class="k">def</span> <span class="nf">div_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">Div</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.div_sql-1743"><a href="#Generator.div_sql-1743"><span class="linenos">1743</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"/"</span><span class="p">)</span> </span></pre></div> @@ -8840,8 +8867,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.distance_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.distance_sql-1744"><a href="#Generator.distance_sql-1744"><span class="linenos">1744</span></a> <span class="k">def</span> <span class="nf">distance_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">Distance</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.distance_sql-1745"><a href="#Generator.distance_sql-1745"><span class="linenos">1745</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<->"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.distance_sql-1745"><a href="#Generator.distance_sql-1745"><span class="linenos">1745</span></a> <span class="k">def</span> <span class="nf">distance_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">Distance</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.distance_sql-1746"><a href="#Generator.distance_sql-1746"><span class="linenos">1746</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<->"</span><span class="p">)</span> </span></pre></div> @@ -8859,8 +8886,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.dot_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.dot_sql-1747"><a href="#Generator.dot_sql-1747"><span class="linenos">1747</span></a> <span class="k">def</span> <span class="nf">dot_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">Dot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.dot_sql-1748"><a href="#Generator.dot_sql-1748"><span class="linenos">1748</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.dot_sql-1748"><a href="#Generator.dot_sql-1748"><span class="linenos">1748</span></a> <span class="k">def</span> <span class="nf">dot_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">Dot</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.dot_sql-1749"><a href="#Generator.dot_sql-1749"><span class="linenos">1749</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -8878,8 +8905,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.eq_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.eq_sql-1750"><a href="#Generator.eq_sql-1750"><span class="linenos">1750</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.eq_sql-1751"><a href="#Generator.eq_sql-1751"><span class="linenos">1751</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.eq_sql-1751"><a href="#Generator.eq_sql-1751"><span class="linenos">1751</span></a> <span class="k">def</span> <span class="nf">eq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.eq_sql-1752"><a href="#Generator.eq_sql-1752"><span class="linenos">1752</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"="</span><span class="p">)</span> </span></pre></div> @@ -8897,8 +8924,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.escape_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.escape_sql-1753"><a href="#Generator.escape_sql-1753"><span class="linenos">1753</span></a> <span class="k">def</span> <span class="nf">escape_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">Escape</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.escape_sql-1754"><a href="#Generator.escape_sql-1754"><span class="linenos">1754</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ESCAPE"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.escape_sql-1754"><a href="#Generator.escape_sql-1754"><span class="linenos">1754</span></a> <span class="k">def</span> <span class="nf">escape_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">Escape</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.escape_sql-1755"><a href="#Generator.escape_sql-1755"><span class="linenos">1755</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ESCAPE"</span><span class="p">)</span> </span></pre></div> @@ -8916,8 +8943,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.glob_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.glob_sql-1756"><a href="#Generator.glob_sql-1756"><span class="linenos">1756</span></a> <span class="k">def</span> <span class="nf">glob_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">Glob</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.glob_sql-1757"><a href="#Generator.glob_sql-1757"><span class="linenos">1757</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"GLOB"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.glob_sql-1757"><a href="#Generator.glob_sql-1757"><span class="linenos">1757</span></a> <span class="k">def</span> <span class="nf">glob_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">Glob</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.glob_sql-1758"><a href="#Generator.glob_sql-1758"><span class="linenos">1758</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"GLOB"</span><span class="p">)</span> </span></pre></div> @@ -8935,8 +8962,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.gt_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.gt_sql-1759"><a href="#Generator.gt_sql-1759"><span class="linenos">1759</span></a> <span class="k">def</span> <span class="nf">gt_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">GT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.gt_sql-1760"><a href="#Generator.gt_sql-1760"><span class="linenos">1760</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.gt_sql-1760"><a href="#Generator.gt_sql-1760"><span class="linenos">1760</span></a> <span class="k">def</span> <span class="nf">gt_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">GT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.gt_sql-1761"><a href="#Generator.gt_sql-1761"><span class="linenos">1761</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">"</span><span class="p">)</span> </span></pre></div> @@ -8954,8 +8981,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.gte_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.gte_sql-1762"><a href="#Generator.gte_sql-1762"><span class="linenos">1762</span></a> <span class="k">def</span> <span class="nf">gte_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">GTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.gte_sql-1763"><a href="#Generator.gte_sql-1763"><span class="linenos">1763</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">="</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.gte_sql-1763"><a href="#Generator.gte_sql-1763"><span class="linenos">1763</span></a> <span class="k">def</span> <span class="nf">gte_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">GTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.gte_sql-1764"><a href="#Generator.gte_sql-1764"><span class="linenos">1764</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">">="</span><span class="p">)</span> </span></pre></div> @@ -8973,8 +9000,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.ilike_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.ilike_sql-1765"><a href="#Generator.ilike_sql-1765"><span class="linenos">1765</span></a> <span class="k">def</span> <span class="nf">ilike_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">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.ilike_sql-1766"><a href="#Generator.ilike_sql-1766"><span class="linenos">1766</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.ilike_sql-1766"><a href="#Generator.ilike_sql-1766"><span class="linenos">1766</span></a> <span class="k">def</span> <span class="nf">ilike_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">ILike</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.ilike_sql-1767"><a href="#Generator.ilike_sql-1767"><span class="linenos">1767</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"ILIKE"</span><span class="p">)</span> </span></pre></div> @@ -8992,8 +9019,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.is_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.is_sql-1768"><a href="#Generator.is_sql-1768"><span class="linenos">1768</span></a> <span class="k">def</span> <span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.is_sql-1769"><a href="#Generator.is_sql-1769"><span class="linenos">1769</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.is_sql-1769"><a href="#Generator.is_sql-1769"><span class="linenos">1769</span></a> <span class="k">def</span> <span class="nf">is_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.is_sql-1770"><a href="#Generator.is_sql-1770"><span class="linenos">1770</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS"</span><span class="p">)</span> </span></pre></div> @@ -9011,8 +9038,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.like_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.like_sql-1771"><a href="#Generator.like_sql-1771"><span class="linenos">1771</span></a> <span class="k">def</span> <span class="nf">like_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">Like</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.like_sql-1772"><a href="#Generator.like_sql-1772"><span class="linenos">1772</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.like_sql-1772"><a href="#Generator.like_sql-1772"><span class="linenos">1772</span></a> <span class="k">def</span> <span class="nf">like_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">Like</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.like_sql-1773"><a href="#Generator.like_sql-1773"><span class="linenos">1773</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">)</span> </span></pre></div> @@ -9030,8 +9057,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.similarto_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.similarto_sql-1774"><a href="#Generator.similarto_sql-1774"><span class="linenos">1774</span></a> <span class="k">def</span> <span class="nf">similarto_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">SimilarTo</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.similarto_sql-1775"><a href="#Generator.similarto_sql-1775"><span class="linenos">1775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"SIMILAR TO"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.similarto_sql-1775"><a href="#Generator.similarto_sql-1775"><span class="linenos">1775</span></a> <span class="k">def</span> <span class="nf">similarto_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">SimilarTo</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.similarto_sql-1776"><a href="#Generator.similarto_sql-1776"><span class="linenos">1776</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"SIMILAR TO"</span><span class="p">)</span> </span></pre></div> @@ -9049,8 +9076,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.lt_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lt_sql-1777"><a href="#Generator.lt_sql-1777"><span class="linenos">1777</span></a> <span class="k">def</span> <span class="nf">lt_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">LT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.lt_sql-1778"><a href="#Generator.lt_sql-1778"><span class="linenos">1778</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lt_sql-1778"><a href="#Generator.lt_sql-1778"><span class="linenos">1778</span></a> <span class="k">def</span> <span class="nf">lt_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">LT</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.lt_sql-1779"><a href="#Generator.lt_sql-1779"><span class="linenos">1779</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<"</span><span class="p">)</span> </span></pre></div> @@ -9068,8 +9095,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.lte_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lte_sql-1780"><a href="#Generator.lte_sql-1780"><span class="linenos">1780</span></a> <span class="k">def</span> <span class="nf">lte_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">LTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.lte_sql-1781"><a href="#Generator.lte_sql-1781"><span class="linenos">1781</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<="</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.lte_sql-1781"><a href="#Generator.lte_sql-1781"><span class="linenos">1781</span></a> <span class="k">def</span> <span class="nf">lte_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">LTE</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.lte_sql-1782"><a href="#Generator.lte_sql-1782"><span class="linenos">1782</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<="</span><span class="p">)</span> </span></pre></div> @@ -9087,8 +9114,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.mod_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.mod_sql-1783"><a href="#Generator.mod_sql-1783"><span class="linenos">1783</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.mod_sql-1784"><a href="#Generator.mod_sql-1784"><span class="linenos">1784</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"%"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.mod_sql-1784"><a href="#Generator.mod_sql-1784"><span class="linenos">1784</span></a> <span class="k">def</span> <span class="nf">mod_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">Mod</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.mod_sql-1785"><a href="#Generator.mod_sql-1785"><span class="linenos">1785</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"%"</span><span class="p">)</span> </span></pre></div> @@ -9106,8 +9133,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.mul_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.mul_sql-1786"><a href="#Generator.mul_sql-1786"><span class="linenos">1786</span></a> <span class="k">def</span> <span class="nf">mul_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">Mul</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.mul_sql-1787"><a href="#Generator.mul_sql-1787"><span class="linenos">1787</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.mul_sql-1787"><a href="#Generator.mul_sql-1787"><span class="linenos">1787</span></a> <span class="k">def</span> <span class="nf">mul_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">Mul</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.mul_sql-1788"><a href="#Generator.mul_sql-1788"><span class="linenos">1788</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"*"</span><span class="p">)</span> </span></pre></div> @@ -9125,8 +9152,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.neq_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.neq_sql-1789"><a href="#Generator.neq_sql-1789"><span class="linenos">1789</span></a> <span class="k">def</span> <span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.neq_sql-1790"><a href="#Generator.neq_sql-1790"><span class="linenos">1790</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<>"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.neq_sql-1790"><a href="#Generator.neq_sql-1790"><span class="linenos">1790</span></a> <span class="k">def</span> <span class="nf">neq_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.neq_sql-1791"><a href="#Generator.neq_sql-1791"><span class="linenos">1791</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"<>"</span><span class="p">)</span> </span></pre></div> @@ -9144,8 +9171,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.nullsafeeq_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.nullsafeeq_sql-1792"><a href="#Generator.nullsafeeq_sql-1792"><span class="linenos">1792</span></a> <span class="k">def</span> <span class="nf">nullsafeeq_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">NullSafeEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.nullsafeeq_sql-1793"><a href="#Generator.nullsafeeq_sql-1793"><span class="linenos">1793</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS NOT DISTINCT FROM"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.nullsafeeq_sql-1793"><a href="#Generator.nullsafeeq_sql-1793"><span class="linenos">1793</span></a> <span class="k">def</span> <span class="nf">nullsafeeq_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">NullSafeEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.nullsafeeq_sql-1794"><a href="#Generator.nullsafeeq_sql-1794"><span class="linenos">1794</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS NOT DISTINCT FROM"</span><span class="p">)</span> </span></pre></div> @@ -9163,8 +9190,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.nullsafeneq_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.nullsafeneq_sql-1795"><a href="#Generator.nullsafeneq_sql-1795"><span class="linenos">1795</span></a> <span class="k">def</span> <span class="nf">nullsafeneq_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">NullSafeNEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.nullsafeneq_sql-1796"><a href="#Generator.nullsafeneq_sql-1796"><span class="linenos">1796</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS DISTINCT FROM"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.nullsafeneq_sql-1796"><a href="#Generator.nullsafeneq_sql-1796"><span class="linenos">1796</span></a> <span class="k">def</span> <span class="nf">nullsafeneq_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">NullSafeNEQ</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.nullsafeneq_sql-1797"><a href="#Generator.nullsafeneq_sql-1797"><span class="linenos">1797</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"IS DISTINCT FROM"</span><span class="p">)</span> </span></pre></div> @@ -9182,8 +9209,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.or_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.or_sql-1798"><a href="#Generator.or_sql-1798"><span class="linenos">1798</span></a> <span class="k">def</span> <span class="nf">or_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">Or</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.or_sql-1799"><a href="#Generator.or_sql-1799"><span class="linenos">1799</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"OR"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.or_sql-1799"><a href="#Generator.or_sql-1799"><span class="linenos">1799</span></a> <span class="k">def</span> <span class="nf">or_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">Or</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.or_sql-1800"><a href="#Generator.or_sql-1800"><span class="linenos">1800</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">connector_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"OR"</span><span class="p">)</span> </span></pre></div> @@ -9201,8 +9228,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.slice_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.slice_sql-1801"><a href="#Generator.slice_sql-1801"><span class="linenos">1801</span></a> <span class="k">def</span> <span class="nf">slice_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">Slice</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.slice_sql-1802"><a href="#Generator.slice_sql-1802"><span class="linenos">1802</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">":"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.slice_sql-1802"><a href="#Generator.slice_sql-1802"><span class="linenos">1802</span></a> <span class="k">def</span> <span class="nf">slice_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">Slice</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.slice_sql-1803"><a href="#Generator.slice_sql-1803"><span class="linenos">1803</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">":"</span><span class="p">)</span> </span></pre></div> @@ -9220,8 +9247,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.sub_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sub_sql-1804"><a href="#Generator.sub_sql-1804"><span class="linenos">1804</span></a> <span class="k">def</span> <span class="nf">sub_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">Sub</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.sub_sql-1805"><a href="#Generator.sub_sql-1805"><span class="linenos">1805</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.sub_sql-1805"><a href="#Generator.sub_sql-1805"><span class="linenos">1805</span></a> <span class="k">def</span> <span class="nf">sub_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">Sub</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.sub_sql-1806"><a href="#Generator.sub_sql-1806"><span class="linenos">1806</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> </span></pre></div> @@ -9239,8 +9266,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.trycast_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.trycast_sql-1807"><a href="#Generator.trycast_sql-1807"><span class="linenos">1807</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.trycast_sql-1808"><a href="#Generator.trycast_sql-1808"><span class="linenos">1808</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRY_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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.trycast_sql-1808"><a href="#Generator.trycast_sql-1808"><span class="linenos">1808</span></a> <span class="k">def</span> <span class="nf">trycast_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.trycast_sql-1809"><a href="#Generator.trycast_sql-1809"><span class="linenos">1809</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRY_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">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'to'</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -9258,12 +9285,12 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.use_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.use_sql-1810"><a href="#Generator.use_sql-1810"><span class="linenos">1810</span></a> <span class="k">def</span> <span class="nf">use_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">Use</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.use_sql-1811"><a href="#Generator.use_sql-1811"><span class="linenos">1811</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> -</span><span id="Generator.use_sql-1812"><a href="#Generator.use_sql-1812"><span class="linenos">1812</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.use_sql-1813"><a href="#Generator.use_sql-1813"><span class="linenos">1813</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">"this"</span><span class="p">)</span> -</span><span id="Generator.use_sql-1814"><a href="#Generator.use_sql-1814"><span class="linenos">1814</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.use_sql-1815"><a href="#Generator.use_sql-1815"><span class="linenos">1815</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"USE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.use_sql-1811"><a href="#Generator.use_sql-1811"><span class="linenos">1811</span></a> <span class="k">def</span> <span class="nf">use_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">Use</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.use_sql-1812"><a href="#Generator.use_sql-1812"><span class="linenos">1812</span></a> <span class="n">kind</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">"kind"</span><span class="p">)</span> +</span><span id="Generator.use_sql-1813"><a href="#Generator.use_sql-1813"><span class="linenos">1813</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">kind</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">kind</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.use_sql-1814"><a href="#Generator.use_sql-1814"><span class="linenos">1814</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">"this"</span><span class="p">)</span> +</span><span id="Generator.use_sql-1815"><a href="#Generator.use_sql-1815"><span class="linenos">1815</span></a> <span class="n">this</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">this</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.use_sql-1816"><a href="#Generator.use_sql-1816"><span class="linenos">1816</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"USE</span><span class="si">{</span><span class="n">kind</span><span class="si">}{</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -9281,8 +9308,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.binary"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.binary-1817"><a href="#Generator.binary-1817"><span class="linenos">1817</span></a> <span class="k">def</span> <span class="nf">binary</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">Binary</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.binary-1818"><a href="#Generator.binary-1818"><span class="linenos">1818</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.binary-1818"><a href="#Generator.binary-1818"><span class="linenos">1818</span></a> <span class="k">def</span> <span class="nf">binary</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">Binary</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.binary-1819"><a href="#Generator.binary-1819"><span class="linenos">1819</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -9300,16 +9327,16 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.function_fallback_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.function_fallback_sql-1820"><a href="#Generator.function_fallback_sql-1820"><span class="linenos">1820</span></a> <span class="k">def</span> <span class="nf">function_fallback_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">Func</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.function_fallback_sql-1821"><a href="#Generator.function_fallback_sql-1821"><span class="linenos">1821</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator.function_fallback_sql-1822"><a href="#Generator.function_fallback_sql-1822"><span class="linenos">1822</span></a> <span class="k">for</span> <span class="n">arg_value</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> -</span><span id="Generator.function_fallback_sql-1823"><a href="#Generator.function_fallback_sql-1823"><span class="linenos">1823</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg_value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="Generator.function_fallback_sql-1824"><a href="#Generator.function_fallback_sql-1824"><span class="linenos">1824</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">arg_value</span><span class="p">:</span> -</span><span id="Generator.function_fallback_sql-1825"><a href="#Generator.function_fallback_sql-1825"><span class="linenos">1825</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="Generator.function_fallback_sql-1826"><a href="#Generator.function_fallback_sql-1826"><span class="linenos">1826</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.function_fallback_sql-1827"><a href="#Generator.function_fallback_sql-1827"><span class="linenos">1827</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arg_value</span><span class="p">)</span> -</span><span id="Generator.function_fallback_sql-1828"><a href="#Generator.function_fallback_sql-1828"><span class="linenos">1828</span></a> -</span><span id="Generator.function_fallback_sql-1829"><a href="#Generator.function_fallback_sql-1829"><span class="linenos">1829</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="n">expression</span><span class="o">.</span><span class="n">sql_name</span><span class="p">(),</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.function_fallback_sql-1821"><a href="#Generator.function_fallback_sql-1821"><span class="linenos">1821</span></a> <span class="k">def</span> <span class="nf">function_fallback_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">Func</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.function_fallback_sql-1822"><a href="#Generator.function_fallback_sql-1822"><span class="linenos">1822</span></a> <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator.function_fallback_sql-1823"><a href="#Generator.function_fallback_sql-1823"><span class="linenos">1823</span></a> <span class="k">for</span> <span class="n">arg_value</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">values</span><span class="p">():</span> +</span><span id="Generator.function_fallback_sql-1824"><a href="#Generator.function_fallback_sql-1824"><span class="linenos">1824</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg_value</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="Generator.function_fallback_sql-1825"><a href="#Generator.function_fallback_sql-1825"><span class="linenos">1825</span></a> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">arg_value</span><span class="p">:</span> +</span><span id="Generator.function_fallback_sql-1826"><a href="#Generator.function_fallback_sql-1826"><span class="linenos">1826</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="Generator.function_fallback_sql-1827"><a href="#Generator.function_fallback_sql-1827"><span class="linenos">1827</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.function_fallback_sql-1828"><a href="#Generator.function_fallback_sql-1828"><span class="linenos">1828</span></a> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arg_value</span><span class="p">)</span> +</span><span id="Generator.function_fallback_sql-1829"><a href="#Generator.function_fallback_sql-1829"><span class="linenos">1829</span></a> +</span><span id="Generator.function_fallback_sql-1830"><a href="#Generator.function_fallback_sql-1830"><span class="linenos">1830</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="n">expression</span><span class="o">.</span><span class="n">sql_name</span><span class="p">(),</span> <span class="o">*</span><span class="n">args</span><span class="p">)</span> </span></pre></div> @@ -9327,8 +9354,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.func"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.func-1831"><a href="#Generator.func-1831"><span class="linenos">1831</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.func-1832"><a href="#Generator.func-1832"><span class="linenos">1832</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="n">name</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_args</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.func-1832"><a href="#Generator.func-1832"><span class="linenos">1832</span></a> <span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.func-1833"><a href="#Generator.func-1833"><span class="linenos">1833</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="n">name</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_args</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -9346,11 +9373,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.format_args"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.format_args-1834"><a href="#Generator.format_args-1834"><span class="linenos">1834</span></a> <span class="k">def</span> <span class="nf">format_args</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.format_args-1835"><a href="#Generator.format_args-1835"><span class="linenos">1835</span></a> <span class="n">arg_sqls</span> <span class="o">=</span> <span class="nb">tuple</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">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span> <span class="k">if</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Generator.format_args-1836"><a href="#Generator.format_args-1836"><span class="linenos">1836</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> -</span><span id="Generator.format_args-1837"><a href="#Generator.format_args-1837"><span class="linenos">1837</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="sa">f</span><span class="s2">",</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.format_args-1838"><a href="#Generator.format_args-1838"><span class="linenos">1838</span></a> <span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.format_args-1835"><a href="#Generator.format_args-1835"><span class="linenos">1835</span></a> <span class="k">def</span> <span class="nf">format_args</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.format_args-1836"><a href="#Generator.format_args-1836"><span class="linenos">1836</span></a> <span class="n">arg_sqls</span> <span class="o">=</span> <span class="nb">tuple</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">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span> <span class="k">if</span> <span class="n">arg</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Generator.format_args-1837"><a href="#Generator.format_args-1837"><span class="linenos">1837</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">text_width</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">_max_text_width</span><span class="p">:</span> +</span><span id="Generator.format_args-1838"><a href="#Generator.format_args-1838"><span class="linenos">1838</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> <span class="sa">f</span><span class="s2">",</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">skip_last</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.format_args-1839"><a href="#Generator.format_args-1839"><span class="linenos">1839</span></a> <span class="k">return</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">arg_sqls</span><span class="p">)</span> </span></pre></div> @@ -9368,8 +9395,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.text_width"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.text_width-1840"><a href="#Generator.text_width-1840"><span class="linenos">1840</span></a> <span class="k">def</span> <span class="nf">text_width</span><span class="p">(</span><span class="bp">self</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">Iterable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="Generator.text_width-1841"><a href="#Generator.text_width-1841"><span class="linenos">1841</span></a> <span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.text_width-1841"><a href="#Generator.text_width-1841"><span class="linenos">1841</span></a> <span class="k">def</span> <span class="nf">text_width</span><span class="p">(</span><span class="bp">self</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">Iterable</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="Generator.text_width-1842"><a href="#Generator.text_width-1842"><span class="linenos">1842</span></a> <span class="k">return</span> <span class="nb">sum</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">)</span> </span></pre></div> @@ -9387,8 +9414,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.format_time"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.format_time-1843"><a href="#Generator.format_time-1843"><span class="linenos">1843</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> -</span><span id="Generator.format_time-1844"><a href="#Generator.format_time-1844"><span class="linenos">1844</span></a> <span class="k">return</span> <span class="n">format_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.format_time-1844"><a href="#Generator.format_time-1844"><span class="linenos">1844</span></a> <span class="k">def</span> <span class="nf">format_time</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> +</span><span id="Generator.format_time-1845"><a href="#Generator.format_time-1845"><span class="linenos">1845</span></a> <span class="k">return</span> <span class="n">format_time</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"format"</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_mapping</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_trie</span><span class="p">)</span> </span></pre></div> @@ -9406,46 +9433,46 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.expressions"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.expressions-1846"><a href="#Generator.expressions-1846"><span class="linenos">1846</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span> -</span><span id="Generator.expressions-1847"><a href="#Generator.expressions-1847"><span class="linenos">1847</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Generator.expressions-1848"><a href="#Generator.expressions-1848"><span class="linenos">1848</span></a> <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><span id="Generator.expressions-1849"><a href="#Generator.expressions-1849"><span class="linenos">1849</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Generator.expressions-1850"><a href="#Generator.expressions-1850"><span class="linenos">1850</span></a> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Generator.expressions-1851"><a href="#Generator.expressions-1851"><span class="linenos">1851</span></a> <span class="n">indent</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Generator.expressions-1852"><a href="#Generator.expressions-1852"><span class="linenos">1852</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> -</span><span id="Generator.expressions-1853"><a href="#Generator.expressions-1853"><span class="linenos">1853</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> -</span><span id="Generator.expressions-1854"><a href="#Generator.expressions-1854"><span class="linenos">1854</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.expressions-1855"><a href="#Generator.expressions-1855"><span class="linenos">1855</span></a> <span class="n">expressions</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="n">key</span> <span class="ow">or</span> <span class="s2">"expressions"</span><span class="p">)</span> -</span><span id="Generator.expressions-1856"><a href="#Generator.expressions-1856"><span class="linenos">1856</span></a> -</span><span id="Generator.expressions-1857"><a href="#Generator.expressions-1857"><span class="linenos">1857</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Generator.expressions-1858"><a href="#Generator.expressions-1858"><span class="linenos">1858</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Generator.expressions-1859"><a href="#Generator.expressions-1859"><span class="linenos">1859</span></a> -</span><span id="Generator.expressions-1860"><a href="#Generator.expressions-1860"><span class="linenos">1860</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> -</span><span id="Generator.expressions-1861"><a href="#Generator.expressions-1861"><span class="linenos">1861</span></a> <span class="k">return</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> -</span><span id="Generator.expressions-1862"><a href="#Generator.expressions-1862"><span class="linenos">1862</span></a> -</span><span id="Generator.expressions-1863"><a href="#Generator.expressions-1863"><span class="linenos">1863</span></a> <span class="n">num_sqls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Generator.expressions-1864"><a href="#Generator.expressions-1864"><span class="linenos">1864</span></a> -</span><span id="Generator.expressions-1865"><a href="#Generator.expressions-1865"><span class="linenos">1865</span></a> <span class="c1"># These are calculated once in case we have the leading_comma / pretty option set, correspondingly</span> -</span><span id="Generator.expressions-1866"><a href="#Generator.expressions-1866"><span class="linenos">1866</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> -</span><span id="Generator.expressions-1867"><a href="#Generator.expressions-1867"><span class="linenos">1867</span></a> <span class="n">stripped_sep</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="Generator.expressions-1868"><a href="#Generator.expressions-1868"><span class="linenos">1868</span></a> -</span><span id="Generator.expressions-1869"><a href="#Generator.expressions-1869"><span class="linenos">1869</span></a> <span class="n">result_sqls</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Generator.expressions-1870"><a href="#Generator.expressions-1870"><span class="linenos">1870</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> -</span><span id="Generator.expressions-1871"><a href="#Generator.expressions-1871"><span class="linenos">1871</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Generator.expressions-1872"><a href="#Generator.expressions-1872"><span class="linenos">1872</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> <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">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> -</span><span id="Generator.expressions-1873"><a href="#Generator.expressions-1873"><span class="linenos">1873</span></a> -</span><span id="Generator.expressions-1874"><a href="#Generator.expressions-1874"><span class="linenos">1874</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> -</span><span id="Generator.expressions-1875"><a href="#Generator.expressions-1875"><span class="linenos">1875</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span><span class="p">:</span> -</span><span id="Generator.expressions-1876"><a href="#Generator.expressions-1876"><span class="linenos">1876</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="n">pad</span><span class="si">}{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.expressions-1877"><a href="#Generator.expressions-1877"><span class="linenos">1877</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.expressions-1878"><a href="#Generator.expressions-1878"><span class="linenos">1878</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Generator.expressions-1879"><a href="#Generator.expressions-1879"><span class="linenos">1879</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">stripped_sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.expressions-1880"><a href="#Generator.expressions-1880"><span class="linenos">1880</span></a> <span class="p">)</span> -</span><span id="Generator.expressions-1881"><a href="#Generator.expressions-1881"><span class="linenos">1881</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.expressions-1882"><a href="#Generator.expressions-1882"><span class="linenos">1882</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.expressions-1883"><a href="#Generator.expressions-1883"><span class="linenos">1883</span></a> -</span><span id="Generator.expressions-1884"><a href="#Generator.expressions-1884"><span class="linenos">1884</span></a> <span class="n">result_sql</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> -</span><span id="Generator.expressions-1885"><a href="#Generator.expressions-1885"><span class="linenos">1885</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">result_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">if</span> <span class="n">indent</span> <span class="k">else</span> <span class="n">result_sql</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.expressions-1847"><a href="#Generator.expressions-1847"><span class="linenos">1847</span></a> <span class="k">def</span> <span class="nf">expressions</span><span class="p">(</span> +</span><span id="Generator.expressions-1848"><a href="#Generator.expressions-1848"><span class="linenos">1848</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Generator.expressions-1849"><a href="#Generator.expressions-1849"><span class="linenos">1849</span></a> <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><span id="Generator.expressions-1850"><a href="#Generator.expressions-1850"><span class="linenos">1850</span></a> <span class="n">key</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Generator.expressions-1851"><a href="#Generator.expressions-1851"><span class="linenos">1851</span></a> <span class="n">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Generator.expressions-1852"><a href="#Generator.expressions-1852"><span class="linenos">1852</span></a> <span class="n">indent</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Generator.expressions-1853"><a href="#Generator.expressions-1853"><span class="linenos">1853</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">", "</span><span class="p">,</span> +</span><span id="Generator.expressions-1854"><a href="#Generator.expressions-1854"><span class="linenos">1854</span></a> <span class="n">prefix</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">""</span><span class="p">,</span> +</span><span id="Generator.expressions-1855"><a href="#Generator.expressions-1855"><span class="linenos">1855</span></a> <span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.expressions-1856"><a href="#Generator.expressions-1856"><span class="linenos">1856</span></a> <span class="n">expressions</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="n">key</span> <span class="ow">or</span> <span class="s2">"expressions"</span><span class="p">)</span> +</span><span id="Generator.expressions-1857"><a href="#Generator.expressions-1857"><span class="linenos">1857</span></a> +</span><span id="Generator.expressions-1858"><a href="#Generator.expressions-1858"><span class="linenos">1858</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Generator.expressions-1859"><a href="#Generator.expressions-1859"><span class="linenos">1859</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Generator.expressions-1860"><a href="#Generator.expressions-1860"><span class="linenos">1860</span></a> +</span><span id="Generator.expressions-1861"><a href="#Generator.expressions-1861"><span class="linenos">1861</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> +</span><span id="Generator.expressions-1862"><a href="#Generator.expressions-1862"><span class="linenos">1862</span></a> <span class="k">return</span> <span class="n">sep</span><span class="o">.</span><span class="n">join</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="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="Generator.expressions-1863"><a href="#Generator.expressions-1863"><span class="linenos">1863</span></a> +</span><span id="Generator.expressions-1864"><a href="#Generator.expressions-1864"><span class="linenos">1864</span></a> <span class="n">num_sqls</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Generator.expressions-1865"><a href="#Generator.expressions-1865"><span class="linenos">1865</span></a> +</span><span id="Generator.expressions-1866"><a href="#Generator.expressions-1866"><span class="linenos">1866</span></a> <span class="c1"># These are calculated once in case we have the leading_comma / pretty option set, correspondingly</span> +</span><span id="Generator.expressions-1867"><a href="#Generator.expressions-1867"><span class="linenos">1867</span></a> <span class="n">pad</span> <span class="o">=</span> <span class="s2">" "</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">pad</span> +</span><span id="Generator.expressions-1868"><a href="#Generator.expressions-1868"><span class="linenos">1868</span></a> <span class="n">stripped_sep</span> <span class="o">=</span> <span class="n">sep</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="Generator.expressions-1869"><a href="#Generator.expressions-1869"><span class="linenos">1869</span></a> +</span><span id="Generator.expressions-1870"><a href="#Generator.expressions-1870"><span class="linenos">1870</span></a> <span class="n">result_sqls</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Generator.expressions-1871"><a href="#Generator.expressions-1871"><span class="linenos">1871</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> +</span><span id="Generator.expressions-1872"><a href="#Generator.expressions-1872"><span class="linenos">1872</span></a> <span class="n">sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">comment</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Generator.expressions-1873"><a href="#Generator.expressions-1873"><span class="linenos">1873</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">maybe_comment</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span> <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">Expression</span><span class="p">)</span> <span class="k">else</span> <span class="s2">""</span> +</span><span id="Generator.expressions-1874"><a href="#Generator.expressions-1874"><span class="linenos">1874</span></a> +</span><span id="Generator.expressions-1875"><a href="#Generator.expressions-1875"><span class="linenos">1875</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span><span class="p">:</span> +</span><span id="Generator.expressions-1876"><a href="#Generator.expressions-1876"><span class="linenos">1876</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_leading_comma</span><span class="p">:</span> +</span><span id="Generator.expressions-1877"><a href="#Generator.expressions-1877"><span class="linenos">1877</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="n">pad</span><span class="si">}{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.expressions-1878"><a href="#Generator.expressions-1878"><span class="linenos">1878</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.expressions-1879"><a href="#Generator.expressions-1879"><span class="linenos">1879</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Generator.expressions-1880"><a href="#Generator.expressions-1880"><span class="linenos">1880</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">stripped_sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">comments</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.expressions-1881"><a href="#Generator.expressions-1881"><span class="linenos">1881</span></a> <span class="p">)</span> +</span><span id="Generator.expressions-1882"><a href="#Generator.expressions-1882"><span class="linenos">1882</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.expressions-1883"><a href="#Generator.expressions-1883"><span class="linenos">1883</span></a> <span class="n">result_sqls</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">sql</span><span class="si">}{</span><span class="n">comments</span><span class="si">}{</span><span class="n">sep</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">num_sqls</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.expressions-1884"><a href="#Generator.expressions-1884"><span class="linenos">1884</span></a> +</span><span id="Generator.expressions-1885"><a href="#Generator.expressions-1885"><span class="linenos">1885</span></a> <span class="n">result_sql</span> <span class="o">=</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">pretty</span> <span class="k">else</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result_sqls</span><span class="p">)</span> +</span><span id="Generator.expressions-1886"><a href="#Generator.expressions-1886"><span class="linenos">1886</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">indent</span><span class="p">(</span><span class="n">result_sql</span><span class="p">,</span> <span class="n">skip_first</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="k">if</span> <span class="n">indent</span> <span class="k">else</span> <span class="n">result_sql</span> </span></pre></div> @@ -9463,12 +9490,12 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.op_expressions"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.op_expressions-1887"><a href="#Generator.op_expressions-1887"><span class="linenos">1887</span></a> <span class="k">def</span> <span class="nf">op_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</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">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.op_expressions-1888"><a href="#Generator.op_expressions-1888"><span class="linenos">1888</span></a> <span class="n">flat</span> <span class="o">=</span> <span class="n">flat</span> <span class="ow">or</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">Properties</span><span class="p">)</span> -</span><span id="Generator.op_expressions-1889"><a href="#Generator.op_expressions-1889"><span class="linenos">1889</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">flat</span><span class="p">)</span> -</span><span id="Generator.op_expressions-1890"><a href="#Generator.op_expressions-1890"><span class="linenos">1890</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> -</span><span id="Generator.op_expressions-1891"><a href="#Generator.op_expressions-1891"><span class="linenos">1891</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.op_expressions-1892"><a href="#Generator.op_expressions-1892"><span class="linenos">1892</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expressions_sql</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.op_expressions-1888"><a href="#Generator.op_expressions-1888"><span class="linenos">1888</span></a> <span class="k">def</span> <span class="nf">op_expressions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</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">flat</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.op_expressions-1889"><a href="#Generator.op_expressions-1889"><span class="linenos">1889</span></a> <span class="n">flat</span> <span class="o">=</span> <span class="n">flat</span> <span class="ow">or</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">Properties</span><span class="p">)</span> +</span><span id="Generator.op_expressions-1890"><a href="#Generator.op_expressions-1890"><span class="linenos">1890</span></a> <span class="n">expressions_sql</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="n">flat</span><span class="p">)</span> +</span><span id="Generator.op_expressions-1891"><a href="#Generator.op_expressions-1891"><span class="linenos">1891</span></a> <span class="k">if</span> <span class="n">flat</span><span class="p">:</span> +</span><span id="Generator.op_expressions-1892"><a href="#Generator.op_expressions-1892"><span class="linenos">1892</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">op</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.op_expressions-1893"><a href="#Generator.op_expressions-1893"><span class="linenos">1893</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">expressions_sql</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="s1">''</span><span class="si">}{</span><span class="n">expressions_sql</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -9486,11 +9513,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.naked_property"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.naked_property-1894"><a href="#Generator.naked_property-1894"><span class="linenos">1894</span></a> <span class="k">def</span> <span class="nf">naked_property</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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.naked_property-1895"><a href="#Generator.naked_property-1895"><span class="linenos">1895</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> -</span><span id="Generator.naked_property-1896"><a href="#Generator.naked_property-1896"><span class="linenos">1896</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> -</span><span id="Generator.naked_property-1897"><a href="#Generator.naked_property-1897"><span class="linenos">1897</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Generator.naked_property-1898"><a href="#Generator.naked_property-1898"><span class="linenos">1898</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.naked_property-1895"><a href="#Generator.naked_property-1895"><span class="linenos">1895</span></a> <span class="k">def</span> <span class="nf">naked_property</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">Property</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.naked_property-1896"><a href="#Generator.naked_property-1896"><span class="linenos">1896</span></a> <span class="n">property_name</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">PROPERTY_TO_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">)</span> +</span><span id="Generator.naked_property-1897"><a href="#Generator.naked_property-1897"><span class="linenos">1897</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">property_name</span><span class="p">:</span> +</span><span id="Generator.naked_property-1898"><a href="#Generator.naked_property-1898"><span class="linenos">1898</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported property </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Generator.naked_property-1899"><a href="#Generator.naked_property-1899"><span class="linenos">1899</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">property_name</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -9508,12 +9535,12 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.set_operation"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.set_operation-1900"><a href="#Generator.set_operation-1900"><span class="linenos">1900</span></a> <span class="k">def</span> <span class="nf">set_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.set_operation-1901"><a href="#Generator.set_operation-1901"><span class="linenos">1901</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">"this"</span><span class="p">)</span> -</span><span id="Generator.set_operation-1902"><a href="#Generator.set_operation-1902"><span class="linenos">1902</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span> -</span><span id="Generator.set_operation-1903"><a href="#Generator.set_operation-1903"><span class="linenos">1903</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> -</span><span id="Generator.set_operation-1904"><a href="#Generator.set_operation-1904"><span class="linenos">1904</span></a> <span class="n">expression</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.set_operation-1905"><a href="#Generator.set_operation-1905"><span class="linenos">1905</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.set_operation-1901"><a href="#Generator.set_operation-1901"><span class="linenos">1901</span></a> <span class="k">def</span> <span class="nf">set_operation</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">op</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.set_operation-1902"><a href="#Generator.set_operation-1902"><span class="linenos">1902</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">"this"</span><span class="p">)</span> +</span><span id="Generator.set_operation-1903"><a href="#Generator.set_operation-1903"><span class="linenos">1903</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">seg</span><span class="p">(</span><span class="n">op</span><span class="p">)</span> +</span><span id="Generator.set_operation-1904"><a href="#Generator.set_operation-1904"><span class="linenos">1904</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">query_modifiers</span><span class="p">(</span> +</span><span id="Generator.set_operation-1905"><a href="#Generator.set_operation-1905"><span class="linenos">1905</span></a> <span class="n">expression</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">op</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sep</span><span class="p">()</span><span class="si">}{</span><span class="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">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.set_operation-1906"><a href="#Generator.set_operation-1906"><span class="linenos">1906</span></a> <span class="p">)</span> </span></pre></div> @@ -9531,8 +9558,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.tag_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.tag_sql-1907"><a href="#Generator.tag_sql-1907"><span class="linenos">1907</span></a> <span class="k">def</span> <span class="nf">tag_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">Tag</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.tag_sql-1908"><a href="#Generator.tag_sql-1908"><span class="linenos">1908</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</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="s1">'prefix'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}{</span><span class="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="s1">'postfix'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.tag_sql-1908"><a href="#Generator.tag_sql-1908"><span class="linenos">1908</span></a> <span class="k">def</span> <span class="nf">tag_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">Tag</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.tag_sql-1909"><a href="#Generator.tag_sql-1909"><span class="linenos">1909</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</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="s1">'prefix'</span><span class="p">)</span><span class="si">}{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="si">}{</span><span class="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="s1">'postfix'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -9550,8 +9577,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.token_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.token_sql-1910"><a href="#Generator.token_sql-1910"><span class="linenos">1910</span></a> <span class="k">def</span> <span class="nf">token_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.token_sql-1911"><a href="#Generator.token_sql-1911"><span class="linenos">1911</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">TOKEN_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">token_type</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.token_sql-1911"><a href="#Generator.token_sql-1911"><span class="linenos">1911</span></a> <span class="k">def</span> <span class="nf">token_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.token_sql-1912"><a href="#Generator.token_sql-1912"><span class="linenos">1912</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">TOKEN_MAPPING</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">token_type</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> </span></pre></div> @@ -9569,13 +9596,13 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.userdefinedfunction_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.userdefinedfunction_sql-1913"><a href="#Generator.userdefinedfunction_sql-1913"><span class="linenos">1913</span></a> <span class="k">def</span> <span class="nf">userdefinedfunction_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">UserDefinedFunction</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.userdefinedfunction_sql-1914"><a href="#Generator.userdefinedfunction_sql-1914"><span class="linenos">1914</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">"this"</span><span class="p">)</span> -</span><span id="Generator.userdefinedfunction_sql-1915"><a href="#Generator.userdefinedfunction_sql-1915"><span class="linenos">1915</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="Generator.userdefinedfunction_sql-1916"><a href="#Generator.userdefinedfunction_sql-1916"><span class="linenos">1916</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Generator.userdefinedfunction_sql-1917"><a href="#Generator.userdefinedfunction_sql-1917"><span class="linenos">1917</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.userdefinedfunction_sql-1918"><a href="#Generator.userdefinedfunction_sql-1918"><span class="linenos">1918</span></a> <span class="p">)</span> -</span><span id="Generator.userdefinedfunction_sql-1919"><a href="#Generator.userdefinedfunction_sql-1919"><span class="linenos">1919</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.userdefinedfunction_sql-1914"><a href="#Generator.userdefinedfunction_sql-1914"><span class="linenos">1914</span></a> <span class="k">def</span> <span class="nf">userdefinedfunction_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">UserDefinedFunction</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.userdefinedfunction_sql-1915"><a href="#Generator.userdefinedfunction_sql-1915"><span class="linenos">1915</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">"this"</span><span class="p">)</span> +</span><span id="Generator.userdefinedfunction_sql-1916"><a href="#Generator.userdefinedfunction_sql-1916"><span class="linenos">1916</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">no_identify</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="Generator.userdefinedfunction_sql-1917"><a href="#Generator.userdefinedfunction_sql-1917"><span class="linenos">1917</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Generator.userdefinedfunction_sql-1918"><a href="#Generator.userdefinedfunction_sql-1918"><span class="linenos">1918</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">wrap</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <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">"wrapped"</span><span class="p">)</span> <span class="k">else</span> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.userdefinedfunction_sql-1919"><a href="#Generator.userdefinedfunction_sql-1919"><span class="linenos">1919</span></a> <span class="p">)</span> +</span><span id="Generator.userdefinedfunction_sql-1920"><a href="#Generator.userdefinedfunction_sql-1920"><span class="linenos">1920</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -9593,10 +9620,10 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.joinhint_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.joinhint_sql-1921"><a href="#Generator.joinhint_sql-1921"><span class="linenos">1921</span></a> <span class="k">def</span> <span class="nf">joinhint_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">JoinHint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.joinhint_sql-1922"><a href="#Generator.joinhint_sql-1922"><span class="linenos">1922</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">"this"</span><span class="p">)</span> -</span><span id="Generator.joinhint_sql-1923"><a href="#Generator.joinhint_sql-1923"><span class="linenos">1923</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Generator.joinhint_sql-1924"><a href="#Generator.joinhint_sql-1924"><span class="linenos">1924</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.joinhint_sql-1922"><a href="#Generator.joinhint_sql-1922"><span class="linenos">1922</span></a> <span class="k">def</span> <span class="nf">joinhint_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">JoinHint</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.joinhint_sql-1923"><a href="#Generator.joinhint_sql-1923"><span class="linenos">1923</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">"this"</span><span class="p">)</span> +</span><span id="Generator.joinhint_sql-1924"><a href="#Generator.joinhint_sql-1924"><span class="linenos">1924</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Generator.joinhint_sql-1925"><a href="#Generator.joinhint_sql-1925"><span class="linenos">1925</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2">(</span><span class="si">{</span><span class="n">expressions</span><span class="si">}</span><span class="s2">)"</span> </span></pre></div> @@ -9614,8 +9641,8 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.kwarg_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.kwarg_sql-1926"><a href="#Generator.kwarg_sql-1926"><span class="linenos">1926</span></a> <span class="k">def</span> <span class="nf">kwarg_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">Kwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.kwarg_sql-1927"><a href="#Generator.kwarg_sql-1927"><span class="linenos">1927</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.kwarg_sql-1927"><a href="#Generator.kwarg_sql-1927"><span class="linenos">1927</span></a> <span class="k">def</span> <span class="nf">kwarg_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">Kwarg</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.kwarg_sql-1928"><a href="#Generator.kwarg_sql-1928"><span class="linenos">1928</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"=>"</span><span class="p">)</span> </span></pre></div> @@ -9633,21 +9660,21 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.when_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.when_sql-1929"><a href="#Generator.when_sql-1929"><span class="linenos">1929</span></a> <span class="k">def</span> <span class="nf">when_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">When</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.when_sql-1930"><a href="#Generator.when_sql-1930"><span class="linenos">1930</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">"this"</span><span class="p">)</span> -</span><span id="Generator.when_sql-1931"><a href="#Generator.when_sql-1931"><span class="linenos">1931</span></a> <span class="n">then_expression</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">"then"</span><span class="p">)</span> -</span><span id="Generator.when_sql-1932"><a href="#Generator.when_sql-1932"><span class="linenos">1932</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">):</span> -</span><span id="Generator.when_sql-1933"><a href="#Generator.when_sql-1933"><span class="linenos">1933</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.when_sql-1934"><a href="#Generator.when_sql-1934"><span class="linenos">1934</span></a> <span class="k">if</span> <span class="s2">"expression"</span> <span class="ow">in</span> <span class="n">then_expression</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> -</span><span id="Generator.when_sql-1935"><a href="#Generator.when_sql-1935"><span class="linenos">1935</span></a> <span class="n">then</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" VALUES </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.when_sql-1936"><a href="#Generator.when_sql-1936"><span class="linenos">1936</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> -</span><span id="Generator.when_sql-1937"><a href="#Generator.when_sql-1937"><span class="linenos">1937</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_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">"expressions"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> -</span><span id="Generator.when_sql-1938"><a href="#Generator.when_sql-1938"><span class="linenos">1938</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expressions'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.when_sql-1939"><a href="#Generator.when_sql-1939"><span class="linenos">1939</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.when_sql-1940"><a href="#Generator.when_sql-1940"><span class="linenos">1940</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE SET </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.when_sql-1941"><a href="#Generator.when_sql-1941"><span class="linenos">1941</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Generator.when_sql-1942"><a href="#Generator.when_sql-1942"><span class="linenos">1942</span></a> <span class="n">then</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">then_expression</span><span class="p">)</span> -</span><span id="Generator.when_sql-1943"><a href="#Generator.when_sql-1943"><span class="linenos">1943</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WHEN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> THEN </span><span class="si">{</span><span class="n">then</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.when_sql-1930"><a href="#Generator.when_sql-1930"><span class="linenos">1930</span></a> <span class="k">def</span> <span class="nf">when_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">When</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.when_sql-1931"><a href="#Generator.when_sql-1931"><span class="linenos">1931</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">"this"</span><span class="p">)</span> +</span><span id="Generator.when_sql-1932"><a href="#Generator.when_sql-1932"><span class="linenos">1932</span></a> <span class="n">then_expression</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">"then"</span><span class="p">)</span> +</span><span id="Generator.when_sql-1933"><a href="#Generator.when_sql-1933"><span class="linenos">1933</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">):</span> +</span><span id="Generator.when_sql-1934"><a href="#Generator.when_sql-1934"><span class="linenos">1934</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"INSERT </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.when_sql-1935"><a href="#Generator.when_sql-1935"><span class="linenos">1935</span></a> <span class="k">if</span> <span class="s2">"expression"</span> <span class="ow">in</span> <span class="n">then_expression</span><span class="o">.</span><span class="n">args</span><span class="p">:</span> +</span><span id="Generator.when_sql-1936"><a href="#Generator.when_sql-1936"><span class="linenos">1936</span></a> <span class="n">then</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" VALUES </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.when_sql-1937"><a href="#Generator.when_sql-1937"><span class="linenos">1937</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">):</span> +</span><span id="Generator.when_sql-1938"><a href="#Generator.when_sql-1938"><span class="linenos">1938</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">then_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">"expressions"</span><span class="p">),</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> +</span><span id="Generator.when_sql-1939"><a href="#Generator.when_sql-1939"><span class="linenos">1939</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expressions'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.when_sql-1940"><a href="#Generator.when_sql-1940"><span class="linenos">1940</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.when_sql-1941"><a href="#Generator.when_sql-1941"><span class="linenos">1941</span></a> <span class="n">then</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"UPDATE SET </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">then_expression</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.when_sql-1942"><a href="#Generator.when_sql-1942"><span class="linenos">1942</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Generator.when_sql-1943"><a href="#Generator.when_sql-1943"><span class="linenos">1943</span></a> <span class="n">then</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">then_expression</span><span class="p">)</span> +</span><span id="Generator.when_sql-1944"><a href="#Generator.when_sql-1944"><span class="linenos">1944</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"WHEN </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> THEN </span><span class="si">{</span><span class="n">then</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -9665,11 +9692,11 @@ Default: True</li> </div> <a class="headerlink" href="#Generator.merge_sql"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.merge_sql-1945"><a href="#Generator.merge_sql-1945"><span class="linenos">1945</span></a> <span class="k">def</span> <span class="nf">merge_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">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Generator.merge_sql-1946"><a href="#Generator.merge_sql-1946"><span class="linenos">1946</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">"this"</span><span class="p">)</span> -</span><span id="Generator.merge_sql-1947"><a href="#Generator.merge_sql-1947"><span class="linenos">1947</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"USING </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">'using'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.merge_sql-1948"><a href="#Generator.merge_sql-1948"><span class="linenos">1948</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ON </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">'on'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Generator.merge_sql-1949"><a href="#Generator.merge_sql-1949"><span class="linenos">1949</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGE INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">on</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">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">' '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Generator.merge_sql-1946"><a href="#Generator.merge_sql-1946"><span class="linenos">1946</span></a> <span class="k">def</span> <span class="nf">merge_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">Merge</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Generator.merge_sql-1947"><a href="#Generator.merge_sql-1947"><span class="linenos">1947</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">"this"</span><span class="p">)</span> +</span><span id="Generator.merge_sql-1948"><a href="#Generator.merge_sql-1948"><span class="linenos">1948</span></a> <span class="n">using</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"USING </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">'using'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.merge_sql-1949"><a href="#Generator.merge_sql-1949"><span class="linenos">1949</span></a> <span class="n">on</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"ON </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">'on'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Generator.merge_sql-1950"><a href="#Generator.merge_sql-1950"><span class="linenos">1950</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"MERGE INTO </span><span class="si">{</span><span class="n">this</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">using</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">on</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">expressions</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="n">sep</span><span class="o">=</span><span class="s1">' '</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> </span></pre></div> @@ -9797,7 +9824,7 @@ Default: True</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/helper.html b/docs/sqlglot/helper.html index bf8994f..d4e122f 100644 --- a/docs/sqlglot/helper.html +++ b/docs/sqlglot/helper.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.helper 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -1585,7 +1585,7 @@ and "cls", in case of instance and class methods, respectively.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/lineage.html b/docs/sqlglot/lineage.html index a1a3541..3e7a806 100644 --- a/docs/sqlglot/lineage.html +++ b/docs/sqlglot/lineage.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.lineage 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -195,7 +195,7 @@ </span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="p">)</span> </span><span id="L-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="k">if</span> <span class="n">table</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tables</span><span class="p">:</span> -</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="n">tables</span><span class="p">[</span><span class="n">table</span><span class="p">]</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span> +</span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="n">tables</span><span class="p">[</span><span class="n">table</span><span class="p">]</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span> </span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tables</span><span class="p">[</span><span class="n">table</span><span class="p">])</span> </span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> </span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="k">return</span> <span class="n">node</span> @@ -413,7 +413,7 @@ <div class="attr function"> <span class="def">def</span> - <span class="name">lineage</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">column</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n"><a href="expressions.html#Column">sqlglot.expressions.Column</a></span>,</span><span class="param"> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">,</span> <span class="n"><a href="schema.html#Schema">sqlglot.schema.Schema</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sources</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span> <span class="o">|</span> <span class="n"><a href="expressions.html#Subqueryable">sqlglot.expressions.Subqueryable</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">rules</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="o"><</span><span class="n">function</span> <span class="n">qualify_tables</span> <span class="n">at</span> <span class="mh">0x7fc4dac09fc0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">qualify_columns</span> <span class="n">at</span> <span class="mh">0x7fc4dac09000</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">expand_laterals</span> <span class="n">at</span> <span class="mh">0x7fc4dac37760</span><span class="o">></span><span class="p">)</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n"><a href="dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">,</span> <span class="n">Type</span><span class="p">[</span><span class="n"><a href="dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#Node">sqlglot.lineage.Node</a></span>:</span></span> + <span class="name">lineage</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">column</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n"><a href="expressions.html#Column">sqlglot.expressions.Column</a></span>,</span><span class="param"> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">,</span> <span class="n"><a href="schema.html#Schema">sqlglot.schema.Schema</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sources</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span> <span class="o">|</span> <span class="n"><a href="expressions.html#Subqueryable">sqlglot.expressions.Subqueryable</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">rules</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="o"><</span><span class="n">function</span> <span class="n">qualify_tables</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0eef0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">qualify_columns</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0de10</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">expand_laterals</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0c550</span><span class="o">></span><span class="p">)</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n"><a href="dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">,</span> <span class="n">Type</span><span class="p">[</span><span class="n"><a href="dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#Node">sqlglot.lineage.Node</a></span>:</span></span> <label class="view-source-button" for="lineage-view-source"><span>View Source</span></label> @@ -498,7 +498,7 @@ </span><span id="lineage-114"><a href="#lineage-114"><span class="linenos">114</span></a> <span class="p">)</span> </span><span id="lineage-115"><a href="#lineage-115"><span class="linenos">115</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="lineage-116"><a href="#lineage-116"><span class="linenos">116</span></a> <span class="k">if</span> <span class="n">table</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">tables</span><span class="p">:</span> -</span><span id="lineage-117"><a href="#lineage-117"><span class="linenos">117</span></a> <span class="n">tables</span><span class="p">[</span><span class="n">table</span><span class="p">]</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span> +</span><span id="lineage-117"><a href="#lineage-117"><span class="linenos">117</span></a> <span class="n">tables</span><span class="p">[</span><span class="n">table</span><span class="p">]</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">)</span> </span><span id="lineage-118"><a href="#lineage-118"><span class="linenos">118</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tables</span><span class="p">[</span><span class="n">table</span><span class="p">])</span> </span><span id="lineage-119"><a href="#lineage-119"><span class="linenos">119</span></a> </span><span id="lineage-120"><a href="#lineage-120"><span class="linenos">120</span></a> <span class="k">return</span> <span class="n">node</span> @@ -865,7 +865,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer.html b/docs/sqlglot/optimizer.html index 1321d62..ca09890 100644 --- a/docs/sqlglot/optimizer.html +++ b/docs/sqlglot/optimizer.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -198,7 +198,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/annotate_types.html b/docs/sqlglot/optimizer/annotate_types.html index ee87a2b..e492dc5 100644 --- a/docs/sqlglot/optimizer/annotate_types.html +++ b/docs/sqlglot/optimizer/annotate_types.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.annotate_types 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -356,7 +356,7 @@ </span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">table</span><span class="p">)</span> </span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="n">col</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">get_column_type</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">col</span><span class="p">)</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a> <span class="k">elif</span> <span class="n">source</span> <span class="ow">and</span> <span class="n">col</span><span class="o">.</span><span class="n">table</span> <span class="ow">in</span> <span class="n">selects</span><span class="p">:</span> +</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a> <span class="k">elif</span> <span class="n">source</span> <span class="ow">and</span> <span class="n">col</span><span class="o">.</span><span class="n">table</span> <span class="ow">in</span> <span class="n">selects</span> <span class="ow">and</span> <span class="n">col</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">selects</span><span class="p">[</span><span class="n">col</span><span class="o">.</span><span class="n">table</span><span class="p">]:</span> </span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> <span class="n">col</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">selects</span><span class="p">[</span><span class="n">col</span><span class="o">.</span><span class="n">table</span><span class="p">][</span><span class="n">col</span><span class="o">.</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">type</span> </span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="c1"># Then (possibly) annotate the remaining expressions in the scope</span> </span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_maybe_annotate</span><span class="p">(</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> @@ -808,7 +808,7 @@ Assumes that we've already executed the optimizer's qualify_columns step.</p> </span><span id="TypeAnnotator-287"><a href="#TypeAnnotator-287"><span class="linenos">287</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">table</span><span class="p">)</span> </span><span id="TypeAnnotator-288"><a href="#TypeAnnotator-288"><span class="linenos">288</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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="TypeAnnotator-289"><a href="#TypeAnnotator-289"><span class="linenos">289</span></a> <span class="n">col</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">get_column_type</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">col</span><span class="p">)</span> -</span><span id="TypeAnnotator-290"><a href="#TypeAnnotator-290"><span class="linenos">290</span></a> <span class="k">elif</span> <span class="n">source</span> <span class="ow">and</span> <span class="n">col</span><span class="o">.</span><span class="n">table</span> <span class="ow">in</span> <span class="n">selects</span><span class="p">:</span> +</span><span id="TypeAnnotator-290"><a href="#TypeAnnotator-290"><span class="linenos">290</span></a> <span class="k">elif</span> <span class="n">source</span> <span class="ow">and</span> <span class="n">col</span><span class="o">.</span><span class="n">table</span> <span class="ow">in</span> <span class="n">selects</span> <span class="ow">and</span> <span class="n">col</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">selects</span><span class="p">[</span><span class="n">col</span><span class="o">.</span><span class="n">table</span><span class="p">]:</span> </span><span id="TypeAnnotator-291"><a href="#TypeAnnotator-291"><span class="linenos">291</span></a> <span class="n">col</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">selects</span><span class="p">[</span><span class="n">col</span><span class="o">.</span><span class="n">table</span><span class="p">][</span><span class="n">col</span><span class="o">.</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">type</span> </span><span id="TypeAnnotator-292"><a href="#TypeAnnotator-292"><span class="linenos">292</span></a> <span class="c1"># Then (possibly) annotate the remaining expressions in the scope</span> </span><span id="TypeAnnotator-293"><a href="#TypeAnnotator-293"><span class="linenos">293</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_maybe_annotate</span><span class="p">(</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> @@ -990,7 +990,7 @@ Assumes that we've already executed the optimizer's qualify_columns step.</p> </span><span id="TypeAnnotator.annotate-287"><a href="#TypeAnnotator.annotate-287"><span class="linenos">287</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">col</span><span class="o">.</span><span class="n">table</span><span class="p">)</span> </span><span id="TypeAnnotator.annotate-288"><a href="#TypeAnnotator.annotate-288"><span class="linenos">288</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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="TypeAnnotator.annotate-289"><a href="#TypeAnnotator.annotate-289"><span class="linenos">289</span></a> <span class="n">col</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">get_column_type</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">col</span><span class="p">)</span> -</span><span id="TypeAnnotator.annotate-290"><a href="#TypeAnnotator.annotate-290"><span class="linenos">290</span></a> <span class="k">elif</span> <span class="n">source</span> <span class="ow">and</span> <span class="n">col</span><span class="o">.</span><span class="n">table</span> <span class="ow">in</span> <span class="n">selects</span><span class="p">:</span> +</span><span id="TypeAnnotator.annotate-290"><a href="#TypeAnnotator.annotate-290"><span class="linenos">290</span></a> <span class="k">elif</span> <span class="n">source</span> <span class="ow">and</span> <span class="n">col</span><span class="o">.</span><span class="n">table</span> <span class="ow">in</span> <span class="n">selects</span> <span class="ow">and</span> <span class="n">col</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">selects</span><span class="p">[</span><span class="n">col</span><span class="o">.</span><span class="n">table</span><span class="p">]:</span> </span><span id="TypeAnnotator.annotate-291"><a href="#TypeAnnotator.annotate-291"><span class="linenos">291</span></a> <span class="n">col</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">selects</span><span class="p">[</span><span class="n">col</span><span class="o">.</span><span class="n">table</span><span class="p">][</span><span class="n">col</span><span class="o">.</span><span class="n">name</span><span class="p">]</span><span class="o">.</span><span class="n">type</span> </span><span id="TypeAnnotator.annotate-292"><a href="#TypeAnnotator.annotate-292"><span class="linenos">292</span></a> <span class="c1"># Then (possibly) annotate the remaining expressions in the scope</span> </span><span id="TypeAnnotator.annotate-293"><a href="#TypeAnnotator.annotate-293"><span class="linenos">293</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_maybe_annotate</span><span class="p">(</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span> @@ -1122,7 +1122,7 @@ Assumes that we've already executed the optimizer's qualify_columns step.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/canonicalize.html b/docs/sqlglot/optimizer/canonicalize.html index 15e3120..2baa3ef 100644 --- a/docs/sqlglot/optimizer/canonicalize.html +++ b/docs/sqlglot/optimizer/canonicalize.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.canonicalize 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -379,7 +379,7 @@ conversions rely on type inference.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/eliminate_ctes.html b/docs/sqlglot/optimizer/eliminate_ctes.html index 2cad407..ed0ddd1 100644 --- a/docs/sqlglot/optimizer/eliminate_ctes.html +++ b/docs/sqlglot/optimizer/eliminate_ctes.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.eliminate_ctes 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -305,7 +305,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/eliminate_joins.html b/docs/sqlglot/optimizer/eliminate_joins.html index 1696908..8a0f2ff 100644 --- a/docs/sqlglot/optimizer/eliminate_joins.html +++ b/docs/sqlglot/optimizer/eliminate_joins.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.eliminate_joins 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -544,7 +544,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/eliminate_subqueries.html b/docs/sqlglot/optimizer/eliminate_subqueries.html index ae9a84b..309c76d 100644 --- a/docs/sqlglot/optimizer/eliminate_subqueries.html +++ b/docs/sqlglot/optimizer/eliminate_subqueries.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.eliminate_subqueries 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -512,7 +512,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/expand_laterals.html b/docs/sqlglot/optimizer/expand_laterals.html index 89944f9..eaf5199 100644 --- a/docs/sqlglot/optimizer/expand_laterals.html +++ b/docs/sqlglot/optimizer/expand_laterals.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.expand_laterals 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -287,7 +287,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/expand_multi_table_selects.html b/docs/sqlglot/optimizer/expand_multi_table_selects.html index d0751a3..7f780ad 100644 --- a/docs/sqlglot/optimizer/expand_multi_table_selects.html +++ b/docs/sqlglot/optimizer/expand_multi_table_selects.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.expand_multi_table_selects 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -255,7 +255,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/isolate_table_selects.html b/docs/sqlglot/optimizer/isolate_table_selects.html index 10413e3..164d720 100644 --- a/docs/sqlglot/optimizer/isolate_table_selects.html +++ b/docs/sqlglot/optimizer/isolate_table_selects.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.isolate_table_selects 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -251,7 +251,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/lower_identities.html b/docs/sqlglot/optimizer/lower_identities.html index cf760a6..866415a 100644 --- a/docs/sqlglot/optimizer/lower_identities.html +++ b/docs/sqlglot/optimizer/lower_identities.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.lower_identities 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -364,7 +364,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/merge_subqueries.html b/docs/sqlglot/optimizer/merge_subqueries.html index 9ffb070..8adfc14 100644 --- a/docs/sqlglot/optimizer/merge_subqueries.html +++ b/docs/sqlglot/optimizer/merge_subqueries.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.merge_subqueries 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -728,7 +728,7 @@ queries if it would result in multiple table selects in a single query:</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/normalize.html b/docs/sqlglot/optimizer/normalize.html index a93d820..708a94b 100644 --- a/docs/sqlglot/optimizer/normalize.html +++ b/docs/sqlglot/optimizer/normalize.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.normalize 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -519,7 +519,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/optimize_joins.html b/docs/sqlglot/optimizer/optimize_joins.html index 66891c7..e6d246d 100644 --- a/docs/sqlglot/optimizer/optimize_joins.html +++ b/docs/sqlglot/optimizer/optimize_joins.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.optimize_joins 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -423,7 +423,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/optimizer.html b/docs/sqlglot/optimizer/optimizer.html index 6694d62..41d2a94 100644 --- a/docs/sqlglot/optimizer/optimizer.html +++ b/docs/sqlglot/optimizer/optimizer.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.optimizer 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -156,7 +156,7 @@ <div class="attr function"> <span class="def">def</span> - <span class="name">optimize</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n"><a href="../schema.html#Schema">sqlglot.schema.Schema</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">db</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">catalog</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n"><a href="../dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">,</span> <span class="n">Type</span><span class="p">[</span><span class="n"><a href="../dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">rules</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="o"><</span><span class="n">function</span> <span class="n">lower_identities</span> <span class="n">at</span> <span class="mh">0x7fc4dac379a0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">qualify_tables</span> <span class="n">at</span> <span class="mh">0x7fc4dac09fc0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">isolate_table_selects</span> <span class="n">at</span> <span class="mh">0x7fc4dac37910</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">qualify_columns</span> <span class="n">at</span> <span class="mh">0x7fc4dac09000</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">expand_laterals</span> <span class="n">at</span> <span class="mh">0x7fc4dac37760</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">pushdown_projections</span> <span class="n">at</span> <span class="mh">0x7fc4dac093f0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">validate_qualify_columns</span> <span class="n">at</span> <span class="mh">0x7fc4dac09090</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">normalize</span> <span class="n">at</span> <span class="mh">0x7fc4dac357e0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">unnest_subqueries</span> <span class="n">at</span> <span class="mh">0x7fc4dac0a0e0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">expand_multi_table_selects</span> <span class="n">at</span> <span class="mh">0x7fc4dac37880</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">pushdown_predicates</span> <span class="n">at</span> <span class="mh">0x7fc4dac08af0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">optimize_joins</span> <span class="n">at</span> <span class="mh">0x7fc4dac08820</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">eliminate_subqueries</span> <span class="n">at</span> <span class="mh">0x7fc4dac37370</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">merge_subqueries</span> <span class="n">at</span> <span class="mh">0x7fc4dac37c70</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">eliminate_joins</span> <span class="n">at</span> <span class="mh">0x7fc4dac35630</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">eliminate_ctes</span> <span class="n">at</span> <span class="mh">0x7fc4dac35510</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">annotate_types</span> <span class="n">at</span> <span class="mh">0x7fc4dabb6440</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">canonicalize</span> <span class="n">at</span> <span class="mh">0x7fc4dac35120</span><span class="o">></span><span class="p">)</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span> + <span class="name">optimize</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">dict</span><span class="p">,</span> <span class="n"><a href="../schema.html#Schema">sqlglot.schema.Schema</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">db</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">catalog</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n"><a href="../dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">,</span> <span class="n">Type</span><span class="p">[</span><span class="n"><a href="../dialects/dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">rules</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="o"><</span><span class="n">function</span> <span class="n">lower_identities</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0c820</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">qualify_tables</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0eef0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">isolate_table_selects</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0c790</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">qualify_columns</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0de10</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">expand_laterals</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0c550</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">pushdown_projections</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0e8c0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">validate_qualify_columns</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0dea0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">normalize</span> <span class="n">at</span> <span class="mh">0x7fcb8dcc24d0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">unnest_subqueries</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0f010</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">expand_multi_table_selects</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0c700</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">pushdown_predicates</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0d900</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">optimize_joins</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0d630</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">eliminate_subqueries</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0c160</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">merge_subqueries</span> <span class="n">at</span> <span class="mh">0x7fcb8dd0caf0</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">eliminate_joins</span> <span class="n">at</span> <span class="mh">0x7fcb8dcc2320</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">eliminate_ctes</span> <span class="n">at</span> <span class="mh">0x7fcb8dcc2200</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">annotate_types</span> <span class="n">at</span> <span class="mh">0x7fcb8dc9b130</span><span class="o">></span><span class="p">,</span> <span class="o"><</span><span class="n">function</span> <span class="n">canonicalize</span> <span class="n">at</span> <span class="mh">0x7fcb8dcc1e10</span><span class="o">></span><span class="p">)</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span> <label class="view-source-button" for="optimize-view-source"><span>View Source</span></label> @@ -360,7 +360,7 @@ what you're doing!</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/pushdown_predicates.html b/docs/sqlglot/optimizer/pushdown_predicates.html index e4e1add..f69a006 100644 --- a/docs/sqlglot/optimizer/pushdown_predicates.html +++ b/docs/sqlglot/optimizer/pushdown_predicates.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.pushdown_predicates 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -707,7 +707,7 @@ Additionally, we can't remove predicates from their original form.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/pushdown_projections.html b/docs/sqlglot/optimizer/pushdown_projections.html index 62b4b32..6cb1975 100644 --- a/docs/sqlglot/optimizer/pushdown_projections.html +++ b/docs/sqlglot/optimizer/pushdown_projections.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.pushdown_projections 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -421,7 +421,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/qualify_columns.html b/docs/sqlglot/optimizer/qualify_columns.html index d6425c1..7f7fadd 100644 --- a/docs/sqlglot/optimizer/qualify_columns.html +++ b/docs/sqlglot/optimizer/qualify_columns.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.qualify_columns 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -225,7 +225,7 @@ </span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> </span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="c1"># Source columns get priority over select aliases</span> </span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="k">if</span> <span class="n">table</span><span class="p">:</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">node</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table</span><span class="p">))</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">node</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">table</span><span class="p">)</span> </span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="k">return</span> <span class="n">node</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="n">selects</span> <span class="o">=</span> <span class="p">{</span><span class="n">s</span><span class="o">.</span><span class="n">alias_or_name</span><span class="p">:</span> <span class="n">s</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">scope</span><span class="o">.</span><span class="n">selects</span><span class="p">}</span> @@ -291,7 +291,7 @@ </span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> </span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="c1"># column_table can be a '' because bigquery unnest has no table alias</span> </span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="k">if</span> <span class="n">column_table</span><span class="p">:</span> -</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">column_table</span><span class="p">))</span> +</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">column_table</span><span class="p">)</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="n">columns_missing_from_scope</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="c1"># Determine whether each reference in the order by clause is to a column or an alias.</span> @@ -318,7 +318,7 @@ </span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="n">column_table</span> <span class="o">=</span> <span class="n">resolver</span><span class="o">.</span><span class="n">get_table</span><span class="p">(</span><span class="n">column</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> </span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> </span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="k">if</span> <span class="n">column_table</span><span class="p">:</span> -</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">column_table</span><span class="p">))</span> +</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">column</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"table"</span><span class="p">,</span> <span class="n">column_table</span><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><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a><span class="k">def</span> <span class="nf">_expand_stars</span><span class="p">(</span><span class="n">scope</span><span class="p">,</span> <span class="n">resolver</span><span class="p">):</span> @@ -419,7 +419,7 @@ </span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unambiguous_columns</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> -</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="k">def</span> <span class="nf">get_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> +</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="k">def</span> <span class="nf">get_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></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">Identifier</span><span class="p">]:</span> </span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a><span class="w"> </span><span class="sd">"""</span> </span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a><span class="sd"> Get the table for a column name.</span> </span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a> @@ -433,97 +433,108 @@ </span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span> </span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a> <span class="p">)</span> </span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a> -</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unambiguous_columns</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a> <span class="n">table_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unambiguous_columns</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span> </span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a> -</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> +</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table_name</span><span class="p">:</span> </span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="n">sources_without_schema</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span> </span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a> <span class="n">source</span> </span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a> <span class="k">for</span> <span class="n">source</span><span class="p">,</span> <span class="n">columns</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> </span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">columns</span> <span class="ow">or</span> <span class="s2">"*"</span> <span class="ow">in</span> <span class="n">columns</span> </span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a> <span class="p">)</span> </span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sources_without_schema</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a> <span class="k">return</span> <span class="n">sources_without_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a> <span class="n">table_name</span> <span class="o">=</span> <span class="n">sources_without_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> </span><span id="L-367"><a href="#L-367"><span class="linenos">367</span></a> -</span><span id="L-368"><a href="#L-368"><span class="linenos">368</span></a> <span class="k">return</span> <span class="n">table</span> -</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a> -</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a> <span class="nd">@property</span> -</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a> <span class="k">def</span> <span class="nf">all_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a><span class="w"> </span><span class="sd">"""All available columns of all sources in this scope"""</span> -</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-374"><a href="#L-374"><span class="linenos">374</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a> <span class="n">column</span> <span class="k">for</span> <span class="n">columns</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span> -</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a> <span class="p">}</span> -</span><span id="L-377"><a href="#L-377"><span class="linenos">377</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> -</span><span id="L-378"><a href="#L-378"><span class="linenos">378</span></a> -</span><span id="L-379"><a href="#L-379"><span class="linenos">379</span></a> <span class="k">def</span> <span class="nf">get_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">only_visible</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-380"><a href="#L-380"><span class="linenos">380</span></a><span class="w"> </span><span class="sd">"""Resolve the source columns for a given source `name`"""</span> -</span><span id="L-381"><a href="#L-381"><span class="linenos">381</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">:</span> -</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a> <span class="k">raise</span> <span class="n">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown table: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-383"><a href="#L-383"><span class="linenos">383</span></a> -</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="n">source</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> -</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a> -</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a> <span class="c1"># If referencing a table, return the columns from the schema</span> -</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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-388"><a href="#L-388"><span class="linenos">388</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">column_names</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">only_visible</span><span class="p">)</span> +</span><span id="L-368"><a href="#L-368"><span class="linenos">368</span></a> <span class="k">if</span> <span class="n">table_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="p">:</span> +</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span> +</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a> +</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a> <span class="n">node</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span> +</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a> +</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="L-374"><a href="#L-374"><span class="linenos">374</span></a> <span class="k">while</span> <span class="n">node</span> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="o">!=</span> <span class="n">table_name</span><span class="p">:</span> +</span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">parent</span> +</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a> <span class="n">node_alias</span> <span class="o">=</span> <span class="n">node</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">"alias"</span><span class="p">)</span> +</span><span id="L-377"><a href="#L-377"><span class="linenos">377</span></a> <span class="k">if</span> <span class="n">node_alias</span><span class="p">:</span> +</span><span id="L-378"><a href="#L-378"><span class="linenos">378</span></a> <span class="k">return</span> <span class="n">node_alias</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-379"><a href="#L-379"><span class="linenos">379</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span> +</span><span id="L-380"><a href="#L-380"><span class="linenos">380</span></a> +</span><span id="L-381"><a href="#L-381"><span class="linenos">381</span></a> <span class="nd">@property</span> +</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a> <span class="k">def</span> <span class="nf">all_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-383"><a href="#L-383"><span class="linenos">383</span></a><span class="w"> </span><span class="sd">"""All available columns of all sources in this scope"""</span> +</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a> <span class="n">column</span> <span class="k">for</span> <span class="n">columns</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span> +</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="p">}</span> +</span><span id="L-388"><a href="#L-388"><span class="linenos">388</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> </span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a> -</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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">Values</span><span class="p">):</span> -</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_column_names</span> -</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> -</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> <span class="c1"># Otherwise, if referencing another scope, return that scope's named selects</span> -</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> -</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a> -</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a> <span class="k">def</span> <span class="nf">_get_all_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-397"><a href="#L-397"><span class="linenos">397</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="n">k</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_source_columns</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> -</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">itertools</span><span class="o">.</span><span class="n">chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">lateral_sources</span><span class="p">)</span> -</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="p">}</span> -</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> +</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="k">def</span> <span class="nf">get_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">only_visible</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a><span class="w"> </span><span class="sd">"""Resolve the source columns for a given source `name`"""</span> +</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">:</span> +</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> <span class="k">raise</span> <span class="n">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown table: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> +</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a> <span class="n">source</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> +</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a> +</span><span id="L-397"><a href="#L-397"><span class="linenos">397</span></a> <span class="c1"># If referencing a table, return the columns from the schema</span> +</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">column_names</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">only_visible</span><span class="p">)</span> +</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> +</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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">Values</span><span class="p">):</span> +</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_column_names</span> </span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> -</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="k">def</span> <span class="nf">_get_unambiguous_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_columns</span><span class="p">):</span> -</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a><span class="sd"> Find all the unambiguous columns in sources.</span> -</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> -</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a><span class="sd"> Args:</span> -</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a><span class="sd"> source_columns (dict): Mapping of names to source columns</span> -</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a><span class="sd"> Returns:</span> -</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a><span class="sd"> dict: Mapping of column name to source name</span> -</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a><span class="sd"> """</span> -</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">source_columns</span><span class="p">:</span> -</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="k">return</span> <span class="p">{}</span> -</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> -</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">source_columns</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> -</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> -</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="n">first_table</span><span class="p">,</span> <span class="n">first_columns</span> <span class="o">=</span> <span class="n">source_columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="n">unambiguous_columns</span> <span class="o">=</span> <span class="p">{</span><span class="n">col</span><span class="p">:</span> <span class="n">first_table</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_unique_columns</span><span class="p">(</span><span class="n">first_columns</span><span class="p">)}</span> -</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">unambiguous_columns</span><span class="p">)</span> -</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> -</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="k">for</span> <span class="n">table</span><span class="p">,</span> <span class="n">columns</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> -</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_unique_columns</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="n">ambiguous</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">all_columns</span><span class="p">)</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">unique</span><span class="p">)</span> -</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="n">all_columns</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">ambiguous</span><span class="p">:</span> -</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="n">unambiguous_columns</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">unique</span><span class="o">.</span><span class="n">difference</span><span class="p">(</span><span class="n">ambiguous</span><span class="p">):</span> -</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="n">unambiguous_columns</span><span class="p">[</span><span class="n">column</span><span class="p">]</span> <span class="o">=</span> <span class="n">table</span> -</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> -</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="k">return</span> <span class="n">unambiguous_columns</span> +</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="c1"># Otherwise, if referencing another scope, return that scope's named selects</span> +</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> +</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> +</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="k">def</span> <span class="nf">_get_all_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="n">k</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_source_columns</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> +</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">itertools</span><span class="o">.</span><span class="n">chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">lateral_sources</span><span class="p">)</span> +</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="p">}</span> +</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> +</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> +</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="k">def</span> <span class="nf">_get_unambiguous_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_columns</span><span class="p">):</span> +</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a><span class="sd"> Find all the unambiguous columns in sources.</span> +</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> +</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a><span class="sd"> Args:</span> +</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a><span class="sd"> source_columns (dict): Mapping of names to source columns</span> +</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a><span class="sd"> Returns:</span> +</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a><span class="sd"> dict: Mapping of column name to source name</span> +</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a><span class="sd"> """</span> +</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">source_columns</span><span class="p">:</span> +</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="k">return</span> <span class="p">{}</span> +</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> +</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">source_columns</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> +</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> +</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="n">first_table</span><span class="p">,</span> <span class="n">first_columns</span> <span class="o">=</span> <span class="n">source_columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="n">unambiguous_columns</span> <span class="o">=</span> <span class="p">{</span><span class="n">col</span><span class="p">:</span> <span class="n">first_table</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_unique_columns</span><span class="p">(</span><span class="n">first_columns</span><span class="p">)}</span> +</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">unambiguous_columns</span><span class="p">)</span> </span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> -</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="nd">@staticmethod</span> -</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="k">def</span> <span class="nf">_find_unique_columns</span><span class="p">(</span><span class="n">columns</span><span class="p">):</span> -</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a><span class="sd"> Find the unique columns in a list of columns.</span> -</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> -</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a><span class="sd"> Example:</span> -</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a><span class="sd"> >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"]))</span> -</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a><span class="sd"> ['a', 'c']</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="k">for</span> <span class="n">table</span><span class="p">,</span> <span class="n">columns</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> +</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_unique_columns</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="n">ambiguous</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">all_columns</span><span class="p">)</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">unique</span><span class="p">)</span> +</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="n">all_columns</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">ambiguous</span><span class="p">:</span> +</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="n">unambiguous_columns</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">unique</span><span class="o">.</span><span class="n">difference</span><span class="p">(</span><span class="n">ambiguous</span><span class="p">):</span> +</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="n">unambiguous_columns</span><span class="p">[</span><span class="n">column</span><span class="p">]</span> <span class="o">=</span> <span class="n">table</span> </span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> -</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a><span class="sd"> This is necessary because duplicate column names are ambiguous.</span> -</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a><span class="sd"> """</span> -</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="n">counts</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="n">counts</span><span class="p">[</span><span class="n">column</span><span class="p">]</span> <span class="o">=</span> <span class="n">counts</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span> -</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">column</span> <span class="k">for</span> <span class="n">column</span><span class="p">,</span> <span class="n">count</span> <span class="ow">in</span> <span class="n">counts</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">count</span> <span class="o">==</span> <span class="mi">1</span><span class="p">}</span> +</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="k">return</span> <span class="n">unambiguous_columns</span> +</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> +</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="nd">@staticmethod</span> +</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="k">def</span> <span class="nf">_find_unique_columns</span><span class="p">(</span><span class="n">columns</span><span class="p">):</span> +</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a><span class="sd"> Find the unique columns in a list of columns.</span> +</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> +</span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a><span class="sd"> Example:</span> +</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a><span class="sd"> >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"]))</span> +</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a><span class="sd"> ['a', 'c']</span> +</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> +</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a><span class="sd"> This is necessary because duplicate column names are ambiguous.</span> +</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a><span class="sd"> """</span> +</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a> <span class="n">counts</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> <span class="n">counts</span><span class="p">[</span><span class="n">column</span><span class="p">]</span> <span class="o">=</span> <span class="n">counts</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span> +</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">column</span> <span class="k">for</span> <span class="n">column</span><span class="p">,</span> <span class="n">count</span> <span class="ow">in</span> <span class="n">counts</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">count</span> <span class="o">==</span> <span class="mi">1</span><span class="p">}</span> </span></pre></div> @@ -661,7 +672,7 @@ </span><span id="Resolver-341"><a href="#Resolver-341"><span class="linenos">341</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_unambiguous_columns</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Resolver-342"><a href="#Resolver-342"><span class="linenos">342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Resolver-343"><a href="#Resolver-343"><span class="linenos">343</span></a> -</span><span id="Resolver-344"><a href="#Resolver-344"><span class="linenos">344</span></a> <span class="k">def</span> <span class="nf">get_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> +</span><span id="Resolver-344"><a href="#Resolver-344"><span class="linenos">344</span></a> <span class="k">def</span> <span class="nf">get_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></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">Identifier</span><span class="p">]:</span> </span><span id="Resolver-345"><a href="#Resolver-345"><span class="linenos">345</span></a><span class="w"> </span><span class="sd">"""</span> </span><span id="Resolver-346"><a href="#Resolver-346"><span class="linenos">346</span></a><span class="sd"> Get the table for a column name.</span> </span><span id="Resolver-347"><a href="#Resolver-347"><span class="linenos">347</span></a> @@ -675,97 +686,108 @@ </span><span id="Resolver-355"><a href="#Resolver-355"><span class="linenos">355</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span> </span><span id="Resolver-356"><a href="#Resolver-356"><span class="linenos">356</span></a> <span class="p">)</span> </span><span id="Resolver-357"><a href="#Resolver-357"><span class="linenos">357</span></a> -</span><span id="Resolver-358"><a href="#Resolver-358"><span class="linenos">358</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unambiguous_columns</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span> +</span><span id="Resolver-358"><a href="#Resolver-358"><span class="linenos">358</span></a> <span class="n">table_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unambiguous_columns</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span> </span><span id="Resolver-359"><a href="#Resolver-359"><span class="linenos">359</span></a> -</span><span id="Resolver-360"><a href="#Resolver-360"><span class="linenos">360</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> +</span><span id="Resolver-360"><a href="#Resolver-360"><span class="linenos">360</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table_name</span><span class="p">:</span> </span><span id="Resolver-361"><a href="#Resolver-361"><span class="linenos">361</span></a> <span class="n">sources_without_schema</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span> </span><span id="Resolver-362"><a href="#Resolver-362"><span class="linenos">362</span></a> <span class="n">source</span> </span><span id="Resolver-363"><a href="#Resolver-363"><span class="linenos">363</span></a> <span class="k">for</span> <span class="n">source</span><span class="p">,</span> <span class="n">columns</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> </span><span id="Resolver-364"><a href="#Resolver-364"><span class="linenos">364</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">columns</span> <span class="ow">or</span> <span class="s2">"*"</span> <span class="ow">in</span> <span class="n">columns</span> </span><span id="Resolver-365"><a href="#Resolver-365"><span class="linenos">365</span></a> <span class="p">)</span> </span><span id="Resolver-366"><a href="#Resolver-366"><span class="linenos">366</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sources_without_schema</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Resolver-367"><a href="#Resolver-367"><span class="linenos">367</span></a> <span class="k">return</span> <span class="n">sources_without_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="Resolver-367"><a href="#Resolver-367"><span class="linenos">367</span></a> <span class="n">table_name</span> <span class="o">=</span> <span class="n">sources_without_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> </span><span id="Resolver-368"><a href="#Resolver-368"><span class="linenos">368</span></a> -</span><span id="Resolver-369"><a href="#Resolver-369"><span class="linenos">369</span></a> <span class="k">return</span> <span class="n">table</span> -</span><span id="Resolver-370"><a href="#Resolver-370"><span class="linenos">370</span></a> -</span><span id="Resolver-371"><a href="#Resolver-371"><span class="linenos">371</span></a> <span class="nd">@property</span> -</span><span id="Resolver-372"><a href="#Resolver-372"><span class="linenos">372</span></a> <span class="k">def</span> <span class="nf">all_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Resolver-373"><a href="#Resolver-373"><span class="linenos">373</span></a><span class="w"> </span><span class="sd">"""All available columns of all sources in this scope"""</span> -</span><span id="Resolver-374"><a href="#Resolver-374"><span class="linenos">374</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Resolver-375"><a href="#Resolver-375"><span class="linenos">375</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Resolver-376"><a href="#Resolver-376"><span class="linenos">376</span></a> <span class="n">column</span> <span class="k">for</span> <span class="n">columns</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span> -</span><span id="Resolver-377"><a href="#Resolver-377"><span class="linenos">377</span></a> <span class="p">}</span> -</span><span id="Resolver-378"><a href="#Resolver-378"><span class="linenos">378</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> -</span><span id="Resolver-379"><a href="#Resolver-379"><span class="linenos">379</span></a> -</span><span id="Resolver-380"><a href="#Resolver-380"><span class="linenos">380</span></a> <span class="k">def</span> <span class="nf">get_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">only_visible</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Resolver-381"><a href="#Resolver-381"><span class="linenos">381</span></a><span class="w"> </span><span class="sd">"""Resolve the source columns for a given source `name`"""</span> -</span><span id="Resolver-382"><a href="#Resolver-382"><span class="linenos">382</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">:</span> -</span><span id="Resolver-383"><a href="#Resolver-383"><span class="linenos">383</span></a> <span class="k">raise</span> <span class="n">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown table: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Resolver-384"><a href="#Resolver-384"><span class="linenos">384</span></a> -</span><span id="Resolver-385"><a href="#Resolver-385"><span class="linenos">385</span></a> <span class="n">source</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> -</span><span id="Resolver-386"><a href="#Resolver-386"><span class="linenos">386</span></a> -</span><span id="Resolver-387"><a href="#Resolver-387"><span class="linenos">387</span></a> <span class="c1"># If referencing a table, return the columns from the schema</span> -</span><span id="Resolver-388"><a href="#Resolver-388"><span class="linenos">388</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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="Resolver-389"><a href="#Resolver-389"><span class="linenos">389</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">column_names</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">only_visible</span><span class="p">)</span> +</span><span id="Resolver-369"><a href="#Resolver-369"><span class="linenos">369</span></a> <span class="k">if</span> <span class="n">table_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="p">:</span> +</span><span id="Resolver-370"><a href="#Resolver-370"><span class="linenos">370</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span> +</span><span id="Resolver-371"><a href="#Resolver-371"><span class="linenos">371</span></a> +</span><span id="Resolver-372"><a href="#Resolver-372"><span class="linenos">372</span></a> <span class="n">node</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span> +</span><span id="Resolver-373"><a href="#Resolver-373"><span class="linenos">373</span></a> +</span><span id="Resolver-374"><a href="#Resolver-374"><span class="linenos">374</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="Resolver-375"><a href="#Resolver-375"><span class="linenos">375</span></a> <span class="k">while</span> <span class="n">node</span> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="o">!=</span> <span class="n">table_name</span><span class="p">:</span> +</span><span id="Resolver-376"><a href="#Resolver-376"><span class="linenos">376</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Resolver-377"><a href="#Resolver-377"><span class="linenos">377</span></a> <span class="n">node_alias</span> <span class="o">=</span> <span class="n">node</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">"alias"</span><span class="p">)</span> +</span><span id="Resolver-378"><a href="#Resolver-378"><span class="linenos">378</span></a> <span class="k">if</span> <span class="n">node_alias</span><span class="p">:</span> +</span><span id="Resolver-379"><a href="#Resolver-379"><span class="linenos">379</span></a> <span class="k">return</span> <span class="n">node_alias</span><span class="o">.</span><span class="n">this</span> +</span><span id="Resolver-380"><a href="#Resolver-380"><span class="linenos">380</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span> +</span><span id="Resolver-381"><a href="#Resolver-381"><span class="linenos">381</span></a> +</span><span id="Resolver-382"><a href="#Resolver-382"><span class="linenos">382</span></a> <span class="nd">@property</span> +</span><span id="Resolver-383"><a href="#Resolver-383"><span class="linenos">383</span></a> <span class="k">def</span> <span class="nf">all_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Resolver-384"><a href="#Resolver-384"><span class="linenos">384</span></a><span class="w"> </span><span class="sd">"""All available columns of all sources in this scope"""</span> +</span><span id="Resolver-385"><a href="#Resolver-385"><span class="linenos">385</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Resolver-386"><a href="#Resolver-386"><span class="linenos">386</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Resolver-387"><a href="#Resolver-387"><span class="linenos">387</span></a> <span class="n">column</span> <span class="k">for</span> <span class="n">columns</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span><span class="o">.</span><span class="n">values</span><span class="p">()</span> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span> +</span><span id="Resolver-388"><a href="#Resolver-388"><span class="linenos">388</span></a> <span class="p">}</span> +</span><span id="Resolver-389"><a href="#Resolver-389"><span class="linenos">389</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_all_columns</span> </span><span id="Resolver-390"><a href="#Resolver-390"><span class="linenos">390</span></a> -</span><span id="Resolver-391"><a href="#Resolver-391"><span class="linenos">391</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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">Values</span><span class="p">):</span> -</span><span id="Resolver-392"><a href="#Resolver-392"><span class="linenos">392</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_column_names</span> -</span><span id="Resolver-393"><a href="#Resolver-393"><span class="linenos">393</span></a> -</span><span id="Resolver-394"><a href="#Resolver-394"><span class="linenos">394</span></a> <span class="c1"># Otherwise, if referencing another scope, return that scope's named selects</span> -</span><span id="Resolver-395"><a href="#Resolver-395"><span class="linenos">395</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> -</span><span id="Resolver-396"><a href="#Resolver-396"><span class="linenos">396</span></a> -</span><span id="Resolver-397"><a href="#Resolver-397"><span class="linenos">397</span></a> <span class="k">def</span> <span class="nf">_get_all_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Resolver-398"><a href="#Resolver-398"><span class="linenos">398</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Resolver-399"><a href="#Resolver-399"><span class="linenos">399</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Resolver-400"><a href="#Resolver-400"><span class="linenos">400</span></a> <span class="n">k</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_source_columns</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> -</span><span id="Resolver-401"><a href="#Resolver-401"><span class="linenos">401</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">itertools</span><span class="o">.</span><span class="n">chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">lateral_sources</span><span class="p">)</span> -</span><span id="Resolver-402"><a href="#Resolver-402"><span class="linenos">402</span></a> <span class="p">}</span> -</span><span id="Resolver-403"><a href="#Resolver-403"><span class="linenos">403</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> +</span><span id="Resolver-391"><a href="#Resolver-391"><span class="linenos">391</span></a> <span class="k">def</span> <span class="nf">get_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">only_visible</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Resolver-392"><a href="#Resolver-392"><span class="linenos">392</span></a><span class="w"> </span><span class="sd">"""Resolve the source columns for a given source `name`"""</span> +</span><span id="Resolver-393"><a href="#Resolver-393"><span class="linenos">393</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">:</span> +</span><span id="Resolver-394"><a href="#Resolver-394"><span class="linenos">394</span></a> <span class="k">raise</span> <span class="n">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown table: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Resolver-395"><a href="#Resolver-395"><span class="linenos">395</span></a> +</span><span id="Resolver-396"><a href="#Resolver-396"><span class="linenos">396</span></a> <span class="n">source</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> +</span><span id="Resolver-397"><a href="#Resolver-397"><span class="linenos">397</span></a> +</span><span id="Resolver-398"><a href="#Resolver-398"><span class="linenos">398</span></a> <span class="c1"># If referencing a table, return the columns from the schema</span> +</span><span id="Resolver-399"><a href="#Resolver-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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="Resolver-400"><a href="#Resolver-400"><span class="linenos">400</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">column_names</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">only_visible</span><span class="p">)</span> +</span><span id="Resolver-401"><a href="#Resolver-401"><span class="linenos">401</span></a> +</span><span id="Resolver-402"><a href="#Resolver-402"><span class="linenos">402</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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">Values</span><span class="p">):</span> +</span><span id="Resolver-403"><a href="#Resolver-403"><span class="linenos">403</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_column_names</span> </span><span id="Resolver-404"><a href="#Resolver-404"><span class="linenos">404</span></a> -</span><span id="Resolver-405"><a href="#Resolver-405"><span class="linenos">405</span></a> <span class="k">def</span> <span class="nf">_get_unambiguous_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_columns</span><span class="p">):</span> -</span><span id="Resolver-406"><a href="#Resolver-406"><span class="linenos">406</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Resolver-407"><a href="#Resolver-407"><span class="linenos">407</span></a><span class="sd"> Find all the unambiguous columns in sources.</span> -</span><span id="Resolver-408"><a href="#Resolver-408"><span class="linenos">408</span></a> -</span><span id="Resolver-409"><a href="#Resolver-409"><span class="linenos">409</span></a><span class="sd"> Args:</span> -</span><span id="Resolver-410"><a href="#Resolver-410"><span class="linenos">410</span></a><span class="sd"> source_columns (dict): Mapping of names to source columns</span> -</span><span id="Resolver-411"><a href="#Resolver-411"><span class="linenos">411</span></a><span class="sd"> Returns:</span> -</span><span id="Resolver-412"><a href="#Resolver-412"><span class="linenos">412</span></a><span class="sd"> dict: Mapping of column name to source name</span> -</span><span id="Resolver-413"><a href="#Resolver-413"><span class="linenos">413</span></a><span class="sd"> """</span> -</span><span id="Resolver-414"><a href="#Resolver-414"><span class="linenos">414</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">source_columns</span><span class="p">:</span> -</span><span id="Resolver-415"><a href="#Resolver-415"><span class="linenos">415</span></a> <span class="k">return</span> <span class="p">{}</span> -</span><span id="Resolver-416"><a href="#Resolver-416"><span class="linenos">416</span></a> -</span><span id="Resolver-417"><a href="#Resolver-417"><span class="linenos">417</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">source_columns</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> -</span><span id="Resolver-418"><a href="#Resolver-418"><span class="linenos">418</span></a> -</span><span id="Resolver-419"><a href="#Resolver-419"><span class="linenos">419</span></a> <span class="n">first_table</span><span class="p">,</span> <span class="n">first_columns</span> <span class="o">=</span> <span class="n">source_columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> -</span><span id="Resolver-420"><a href="#Resolver-420"><span class="linenos">420</span></a> <span class="n">unambiguous_columns</span> <span class="o">=</span> <span class="p">{</span><span class="n">col</span><span class="p">:</span> <span class="n">first_table</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_unique_columns</span><span class="p">(</span><span class="n">first_columns</span><span class="p">)}</span> -</span><span id="Resolver-421"><a href="#Resolver-421"><span class="linenos">421</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">unambiguous_columns</span><span class="p">)</span> -</span><span id="Resolver-422"><a href="#Resolver-422"><span class="linenos">422</span></a> -</span><span id="Resolver-423"><a href="#Resolver-423"><span class="linenos">423</span></a> <span class="k">for</span> <span class="n">table</span><span class="p">,</span> <span class="n">columns</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> -</span><span id="Resolver-424"><a href="#Resolver-424"><span class="linenos">424</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_unique_columns</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="Resolver-425"><a href="#Resolver-425"><span class="linenos">425</span></a> <span class="n">ambiguous</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">all_columns</span><span class="p">)</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">unique</span><span class="p">)</span> -</span><span id="Resolver-426"><a href="#Resolver-426"><span class="linenos">426</span></a> <span class="n">all_columns</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> -</span><span id="Resolver-427"><a href="#Resolver-427"><span class="linenos">427</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">ambiguous</span><span class="p">:</span> -</span><span id="Resolver-428"><a href="#Resolver-428"><span class="linenos">428</span></a> <span class="n">unambiguous_columns</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Resolver-429"><a href="#Resolver-429"><span class="linenos">429</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">unique</span><span class="o">.</span><span class="n">difference</span><span class="p">(</span><span class="n">ambiguous</span><span class="p">):</span> -</span><span id="Resolver-430"><a href="#Resolver-430"><span class="linenos">430</span></a> <span class="n">unambiguous_columns</span><span class="p">[</span><span class="n">column</span><span class="p">]</span> <span class="o">=</span> <span class="n">table</span> -</span><span id="Resolver-431"><a href="#Resolver-431"><span class="linenos">431</span></a> -</span><span id="Resolver-432"><a href="#Resolver-432"><span class="linenos">432</span></a> <span class="k">return</span> <span class="n">unambiguous_columns</span> +</span><span id="Resolver-405"><a href="#Resolver-405"><span class="linenos">405</span></a> <span class="c1"># Otherwise, if referencing another scope, return that scope's named selects</span> +</span><span id="Resolver-406"><a href="#Resolver-406"><span class="linenos">406</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> +</span><span id="Resolver-407"><a href="#Resolver-407"><span class="linenos">407</span></a> +</span><span id="Resolver-408"><a href="#Resolver-408"><span class="linenos">408</span></a> <span class="k">def</span> <span class="nf">_get_all_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Resolver-409"><a href="#Resolver-409"><span class="linenos">409</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Resolver-410"><a href="#Resolver-410"><span class="linenos">410</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Resolver-411"><a href="#Resolver-411"><span class="linenos">411</span></a> <span class="n">k</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_source_columns</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> +</span><span id="Resolver-412"><a href="#Resolver-412"><span class="linenos">412</span></a> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="n">itertools</span><span class="o">.</span><span class="n">chain</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">lateral_sources</span><span class="p">)</span> +</span><span id="Resolver-413"><a href="#Resolver-413"><span class="linenos">413</span></a> <span class="p">}</span> +</span><span id="Resolver-414"><a href="#Resolver-414"><span class="linenos">414</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_source_columns</span> +</span><span id="Resolver-415"><a href="#Resolver-415"><span class="linenos">415</span></a> +</span><span id="Resolver-416"><a href="#Resolver-416"><span class="linenos">416</span></a> <span class="k">def</span> <span class="nf">_get_unambiguous_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">source_columns</span><span class="p">):</span> +</span><span id="Resolver-417"><a href="#Resolver-417"><span class="linenos">417</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Resolver-418"><a href="#Resolver-418"><span class="linenos">418</span></a><span class="sd"> Find all the unambiguous columns in sources.</span> +</span><span id="Resolver-419"><a href="#Resolver-419"><span class="linenos">419</span></a> +</span><span id="Resolver-420"><a href="#Resolver-420"><span class="linenos">420</span></a><span class="sd"> Args:</span> +</span><span id="Resolver-421"><a href="#Resolver-421"><span class="linenos">421</span></a><span class="sd"> source_columns (dict): Mapping of names to source columns</span> +</span><span id="Resolver-422"><a href="#Resolver-422"><span class="linenos">422</span></a><span class="sd"> Returns:</span> +</span><span id="Resolver-423"><a href="#Resolver-423"><span class="linenos">423</span></a><span class="sd"> dict: Mapping of column name to source name</span> +</span><span id="Resolver-424"><a href="#Resolver-424"><span class="linenos">424</span></a><span class="sd"> """</span> +</span><span id="Resolver-425"><a href="#Resolver-425"><span class="linenos">425</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">source_columns</span><span class="p">:</span> +</span><span id="Resolver-426"><a href="#Resolver-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="p">{}</span> +</span><span id="Resolver-427"><a href="#Resolver-427"><span class="linenos">427</span></a> +</span><span id="Resolver-428"><a href="#Resolver-428"><span class="linenos">428</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">source_columns</span><span class="o">.</span><span class="n">items</span><span class="p">())</span> +</span><span id="Resolver-429"><a href="#Resolver-429"><span class="linenos">429</span></a> +</span><span id="Resolver-430"><a href="#Resolver-430"><span class="linenos">430</span></a> <span class="n">first_table</span><span class="p">,</span> <span class="n">first_columns</span> <span class="o">=</span> <span class="n">source_columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="Resolver-431"><a href="#Resolver-431"><span class="linenos">431</span></a> <span class="n">unambiguous_columns</span> <span class="o">=</span> <span class="p">{</span><span class="n">col</span><span class="p">:</span> <span class="n">first_table</span> <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_unique_columns</span><span class="p">(</span><span class="n">first_columns</span><span class="p">)}</span> +</span><span id="Resolver-432"><a href="#Resolver-432"><span class="linenos">432</span></a> <span class="n">all_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">unambiguous_columns</span><span class="p">)</span> </span><span id="Resolver-433"><a href="#Resolver-433"><span class="linenos">433</span></a> -</span><span id="Resolver-434"><a href="#Resolver-434"><span class="linenos">434</span></a> <span class="nd">@staticmethod</span> -</span><span id="Resolver-435"><a href="#Resolver-435"><span class="linenos">435</span></a> <span class="k">def</span> <span class="nf">_find_unique_columns</span><span class="p">(</span><span class="n">columns</span><span class="p">):</span> -</span><span id="Resolver-436"><a href="#Resolver-436"><span class="linenos">436</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Resolver-437"><a href="#Resolver-437"><span class="linenos">437</span></a><span class="sd"> Find the unique columns in a list of columns.</span> -</span><span id="Resolver-438"><a href="#Resolver-438"><span class="linenos">438</span></a> -</span><span id="Resolver-439"><a href="#Resolver-439"><span class="linenos">439</span></a><span class="sd"> Example:</span> -</span><span id="Resolver-440"><a href="#Resolver-440"><span class="linenos">440</span></a><span class="sd"> >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"]))</span> -</span><span id="Resolver-441"><a href="#Resolver-441"><span class="linenos">441</span></a><span class="sd"> ['a', 'c']</span> +</span><span id="Resolver-434"><a href="#Resolver-434"><span class="linenos">434</span></a> <span class="k">for</span> <span class="n">table</span><span class="p">,</span> <span class="n">columns</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span> +</span><span id="Resolver-435"><a href="#Resolver-435"><span class="linenos">435</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_unique_columns</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="Resolver-436"><a href="#Resolver-436"><span class="linenos">436</span></a> <span class="n">ambiguous</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">all_columns</span><span class="p">)</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">unique</span><span class="p">)</span> +</span><span id="Resolver-437"><a href="#Resolver-437"><span class="linenos">437</span></a> <span class="n">all_columns</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">columns</span><span class="p">)</span> +</span><span id="Resolver-438"><a href="#Resolver-438"><span class="linenos">438</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">ambiguous</span><span class="p">:</span> +</span><span id="Resolver-439"><a href="#Resolver-439"><span class="linenos">439</span></a> <span class="n">unambiguous_columns</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Resolver-440"><a href="#Resolver-440"><span class="linenos">440</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">unique</span><span class="o">.</span><span class="n">difference</span><span class="p">(</span><span class="n">ambiguous</span><span class="p">):</span> +</span><span id="Resolver-441"><a href="#Resolver-441"><span class="linenos">441</span></a> <span class="n">unambiguous_columns</span><span class="p">[</span><span class="n">column</span><span class="p">]</span> <span class="o">=</span> <span class="n">table</span> </span><span id="Resolver-442"><a href="#Resolver-442"><span class="linenos">442</span></a> -</span><span id="Resolver-443"><a href="#Resolver-443"><span class="linenos">443</span></a><span class="sd"> This is necessary because duplicate column names are ambiguous.</span> -</span><span id="Resolver-444"><a href="#Resolver-444"><span class="linenos">444</span></a><span class="sd"> """</span> -</span><span id="Resolver-445"><a href="#Resolver-445"><span class="linenos">445</span></a> <span class="n">counts</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Resolver-446"><a href="#Resolver-446"><span class="linenos">446</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="Resolver-447"><a href="#Resolver-447"><span class="linenos">447</span></a> <span class="n">counts</span><span class="p">[</span><span class="n">column</span><span class="p">]</span> <span class="o">=</span> <span class="n">counts</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span> -</span><span id="Resolver-448"><a href="#Resolver-448"><span class="linenos">448</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">column</span> <span class="k">for</span> <span class="n">column</span><span class="p">,</span> <span class="n">count</span> <span class="ow">in</span> <span class="n">counts</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">count</span> <span class="o">==</span> <span class="mi">1</span><span class="p">}</span> +</span><span id="Resolver-443"><a href="#Resolver-443"><span class="linenos">443</span></a> <span class="k">return</span> <span class="n">unambiguous_columns</span> +</span><span id="Resolver-444"><a href="#Resolver-444"><span class="linenos">444</span></a> +</span><span id="Resolver-445"><a href="#Resolver-445"><span class="linenos">445</span></a> <span class="nd">@staticmethod</span> +</span><span id="Resolver-446"><a href="#Resolver-446"><span class="linenos">446</span></a> <span class="k">def</span> <span class="nf">_find_unique_columns</span><span class="p">(</span><span class="n">columns</span><span class="p">):</span> +</span><span id="Resolver-447"><a href="#Resolver-447"><span class="linenos">447</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Resolver-448"><a href="#Resolver-448"><span class="linenos">448</span></a><span class="sd"> Find the unique columns in a list of columns.</span> +</span><span id="Resolver-449"><a href="#Resolver-449"><span class="linenos">449</span></a> +</span><span id="Resolver-450"><a href="#Resolver-450"><span class="linenos">450</span></a><span class="sd"> Example:</span> +</span><span id="Resolver-451"><a href="#Resolver-451"><span class="linenos">451</span></a><span class="sd"> >>> sorted(Resolver._find_unique_columns(["a", "b", "b", "c"]))</span> +</span><span id="Resolver-452"><a href="#Resolver-452"><span class="linenos">452</span></a><span class="sd"> ['a', 'c']</span> +</span><span id="Resolver-453"><a href="#Resolver-453"><span class="linenos">453</span></a> +</span><span id="Resolver-454"><a href="#Resolver-454"><span class="linenos">454</span></a><span class="sd"> This is necessary because duplicate column names are ambiguous.</span> +</span><span id="Resolver-455"><a href="#Resolver-455"><span class="linenos">455</span></a><span class="sd"> """</span> +</span><span id="Resolver-456"><a href="#Resolver-456"><span class="linenos">456</span></a> <span class="n">counts</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Resolver-457"><a href="#Resolver-457"><span class="linenos">457</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="Resolver-458"><a href="#Resolver-458"><span class="linenos">458</span></a> <span class="n">counts</span><span class="p">[</span><span class="n">column</span><span class="p">]</span> <span class="o">=</span> <span class="n">counts</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span> +</span><span id="Resolver-459"><a href="#Resolver-459"><span class="linenos">459</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">column</span> <span class="k">for</span> <span class="n">column</span><span class="p">,</span> <span class="n">count</span> <span class="ow">in</span> <span class="n">counts</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">count</span> <span class="o">==</span> <span class="mi">1</span><span class="p">}</span> </span></pre></div> @@ -802,13 +824,13 @@ <div class="attr function"> <span class="def">def</span> - <span class="name">get_table</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>:</span></span> + <span class="name">get_table</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span></span><span class="return-annotation">) -> <span class="n">Optional</span><span class="p">[</span><span class="n"><a href="../expressions.html#Identifier">sqlglot.expressions.Identifier</a></span><span class="p">]</span>:</span></span> <label class="view-source-button" for="Resolver.get_table-view-source"><span>View Source</span></label> </div> <a class="headerlink" href="#Resolver.get_table"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Resolver.get_table-344"><a href="#Resolver.get_table-344"><span class="linenos">344</span></a> <span class="k">def</span> <span class="nf">get_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Resolver.get_table-344"><a href="#Resolver.get_table-344"><span class="linenos">344</span></a> <span class="k">def</span> <span class="nf">get_table</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">column_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></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">Identifier</span><span class="p">]:</span> </span><span id="Resolver.get_table-345"><a href="#Resolver.get_table-345"><span class="linenos">345</span></a><span class="w"> </span><span class="sd">"""</span> </span><span id="Resolver.get_table-346"><a href="#Resolver.get_table-346"><span class="linenos">346</span></a><span class="sd"> Get the table for a column name.</span> </span><span id="Resolver.get_table-347"><a href="#Resolver.get_table-347"><span class="linenos">347</span></a> @@ -822,18 +844,29 @@ </span><span id="Resolver.get_table-355"><a href="#Resolver.get_table-355"><span class="linenos">355</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span> </span><span id="Resolver.get_table-356"><a href="#Resolver.get_table-356"><span class="linenos">356</span></a> <span class="p">)</span> </span><span id="Resolver.get_table-357"><a href="#Resolver.get_table-357"><span class="linenos">357</span></a> -</span><span id="Resolver.get_table-358"><a href="#Resolver.get_table-358"><span class="linenos">358</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unambiguous_columns</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span> +</span><span id="Resolver.get_table-358"><a href="#Resolver.get_table-358"><span class="linenos">358</span></a> <span class="n">table_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_unambiguous_columns</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">column_name</span><span class="p">)</span> </span><span id="Resolver.get_table-359"><a href="#Resolver.get_table-359"><span class="linenos">359</span></a> -</span><span id="Resolver.get_table-360"><a href="#Resolver.get_table-360"><span class="linenos">360</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> +</span><span id="Resolver.get_table-360"><a href="#Resolver.get_table-360"><span class="linenos">360</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table_name</span><span class="p">:</span> </span><span id="Resolver.get_table-361"><a href="#Resolver.get_table-361"><span class="linenos">361</span></a> <span class="n">sources_without_schema</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span> </span><span id="Resolver.get_table-362"><a href="#Resolver.get_table-362"><span class="linenos">362</span></a> <span class="n">source</span> </span><span id="Resolver.get_table-363"><a href="#Resolver.get_table-363"><span class="linenos">363</span></a> <span class="k">for</span> <span class="n">source</span><span class="p">,</span> <span class="n">columns</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_all_source_columns</span><span class="p">()</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> </span><span id="Resolver.get_table-364"><a href="#Resolver.get_table-364"><span class="linenos">364</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">columns</span> <span class="ow">or</span> <span class="s2">"*"</span> <span class="ow">in</span> <span class="n">columns</span> </span><span id="Resolver.get_table-365"><a href="#Resolver.get_table-365"><span class="linenos">365</span></a> <span class="p">)</span> </span><span id="Resolver.get_table-366"><a href="#Resolver.get_table-366"><span class="linenos">366</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sources_without_schema</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Resolver.get_table-367"><a href="#Resolver.get_table-367"><span class="linenos">367</span></a> <span class="k">return</span> <span class="n">sources_without_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> +</span><span id="Resolver.get_table-367"><a href="#Resolver.get_table-367"><span class="linenos">367</span></a> <span class="n">table_name</span> <span class="o">=</span> <span class="n">sources_without_schema</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> </span><span id="Resolver.get_table-368"><a href="#Resolver.get_table-368"><span class="linenos">368</span></a> -</span><span id="Resolver.get_table-369"><a href="#Resolver.get_table-369"><span class="linenos">369</span></a> <span class="k">return</span> <span class="n">table</span> +</span><span id="Resolver.get_table-369"><a href="#Resolver.get_table-369"><span class="linenos">369</span></a> <span class="k">if</span> <span class="n">table_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="p">:</span> +</span><span id="Resolver.get_table-370"><a href="#Resolver.get_table-370"><span class="linenos">370</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span> +</span><span id="Resolver.get_table-371"><a href="#Resolver.get_table-371"><span class="linenos">371</span></a> +</span><span id="Resolver.get_table-372"><a href="#Resolver.get_table-372"><span class="linenos">372</span></a> <span class="n">node</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">selected_sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span> +</span><span id="Resolver.get_table-373"><a href="#Resolver.get_table-373"><span class="linenos">373</span></a> +</span><span id="Resolver.get_table-374"><a href="#Resolver.get_table-374"><span class="linenos">374</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="Resolver.get_table-375"><a href="#Resolver.get_table-375"><span class="linenos">375</span></a> <span class="k">while</span> <span class="n">node</span> <span class="ow">and</span> <span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="o">!=</span> <span class="n">table_name</span><span class="p">:</span> +</span><span id="Resolver.get_table-376"><a href="#Resolver.get_table-376"><span class="linenos">376</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">parent</span> +</span><span id="Resolver.get_table-377"><a href="#Resolver.get_table-377"><span class="linenos">377</span></a> <span class="n">node_alias</span> <span class="o">=</span> <span class="n">node</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">"alias"</span><span class="p">)</span> +</span><span id="Resolver.get_table-378"><a href="#Resolver.get_table-378"><span class="linenos">378</span></a> <span class="k">if</span> <span class="n">node_alias</span><span class="p">:</span> +</span><span id="Resolver.get_table-379"><a href="#Resolver.get_table-379"><span class="linenos">379</span></a> <span class="k">return</span> <span class="n">node_alias</span><span class="o">.</span><span class="n">this</span> +</span><span id="Resolver.get_table-380"><a href="#Resolver.get_table-380"><span class="linenos">380</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span> </span></pre></div> @@ -878,22 +911,22 @@ </div> <a class="headerlink" href="#Resolver.get_source_columns"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Resolver.get_source_columns-380"><a href="#Resolver.get_source_columns-380"><span class="linenos">380</span></a> <span class="k">def</span> <span class="nf">get_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">only_visible</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Resolver.get_source_columns-381"><a href="#Resolver.get_source_columns-381"><span class="linenos">381</span></a><span class="w"> </span><span class="sd">"""Resolve the source columns for a given source `name`"""</span> -</span><span id="Resolver.get_source_columns-382"><a href="#Resolver.get_source_columns-382"><span class="linenos">382</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">:</span> -</span><span id="Resolver.get_source_columns-383"><a href="#Resolver.get_source_columns-383"><span class="linenos">383</span></a> <span class="k">raise</span> <span class="n">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown table: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Resolver.get_source_columns-384"><a href="#Resolver.get_source_columns-384"><span class="linenos">384</span></a> -</span><span id="Resolver.get_source_columns-385"><a href="#Resolver.get_source_columns-385"><span class="linenos">385</span></a> <span class="n">source</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> -</span><span id="Resolver.get_source_columns-386"><a href="#Resolver.get_source_columns-386"><span class="linenos">386</span></a> -</span><span id="Resolver.get_source_columns-387"><a href="#Resolver.get_source_columns-387"><span class="linenos">387</span></a> <span class="c1"># If referencing a table, return the columns from the schema</span> -</span><span id="Resolver.get_source_columns-388"><a href="#Resolver.get_source_columns-388"><span class="linenos">388</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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="Resolver.get_source_columns-389"><a href="#Resolver.get_source_columns-389"><span class="linenos">389</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">column_names</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">only_visible</span><span class="p">)</span> -</span><span id="Resolver.get_source_columns-390"><a href="#Resolver.get_source_columns-390"><span class="linenos">390</span></a> -</span><span id="Resolver.get_source_columns-391"><a href="#Resolver.get_source_columns-391"><span class="linenos">391</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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">Values</span><span class="p">):</span> -</span><span id="Resolver.get_source_columns-392"><a href="#Resolver.get_source_columns-392"><span class="linenos">392</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_column_names</span> -</span><span id="Resolver.get_source_columns-393"><a href="#Resolver.get_source_columns-393"><span class="linenos">393</span></a> -</span><span id="Resolver.get_source_columns-394"><a href="#Resolver.get_source_columns-394"><span class="linenos">394</span></a> <span class="c1"># Otherwise, if referencing another scope, return that scope's named selects</span> -</span><span id="Resolver.get_source_columns-395"><a href="#Resolver.get_source_columns-395"><span class="linenos">395</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Resolver.get_source_columns-391"><a href="#Resolver.get_source_columns-391"><span class="linenos">391</span></a> <span class="k">def</span> <span class="nf">get_source_columns</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">only_visible</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Resolver.get_source_columns-392"><a href="#Resolver.get_source_columns-392"><span class="linenos">392</span></a><span class="w"> </span><span class="sd">"""Resolve the source columns for a given source `name`"""</span> +</span><span id="Resolver.get_source_columns-393"><a href="#Resolver.get_source_columns-393"><span class="linenos">393</span></a> <span class="k">if</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">:</span> +</span><span id="Resolver.get_source_columns-394"><a href="#Resolver.get_source_columns-394"><span class="linenos">394</span></a> <span class="k">raise</span> <span class="n">OptimizeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unknown table: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Resolver.get_source_columns-395"><a href="#Resolver.get_source_columns-395"><span class="linenos">395</span></a> +</span><span id="Resolver.get_source_columns-396"><a href="#Resolver.get_source_columns-396"><span class="linenos">396</span></a> <span class="n">source</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> +</span><span id="Resolver.get_source_columns-397"><a href="#Resolver.get_source_columns-397"><span class="linenos">397</span></a> +</span><span id="Resolver.get_source_columns-398"><a href="#Resolver.get_source_columns-398"><span class="linenos">398</span></a> <span class="c1"># If referencing a table, return the columns from the schema</span> +</span><span id="Resolver.get_source_columns-399"><a href="#Resolver.get_source_columns-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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="Resolver.get_source_columns-400"><a href="#Resolver.get_source_columns-400"><span class="linenos">400</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">schema</span><span class="o">.</span><span class="n">column_names</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">only_visible</span><span class="p">)</span> +</span><span id="Resolver.get_source_columns-401"><a href="#Resolver.get_source_columns-401"><span class="linenos">401</span></a> +</span><span id="Resolver.get_source_columns-402"><a href="#Resolver.get_source_columns-402"><span class="linenos">402</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</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">Values</span><span class="p">):</span> +</span><span id="Resolver.get_source_columns-403"><a href="#Resolver.get_source_columns-403"><span class="linenos">403</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">alias_column_names</span> +</span><span id="Resolver.get_source_columns-404"><a href="#Resolver.get_source_columns-404"><span class="linenos">404</span></a> +</span><span id="Resolver.get_source_columns-405"><a href="#Resolver.get_source_columns-405"><span class="linenos">405</span></a> <span class="c1"># Otherwise, if referencing another scope, return that scope's named selects</span> +</span><span id="Resolver.get_source_columns-406"><a href="#Resolver.get_source_columns-406"><span class="linenos">406</span></a> <span class="k">return</span> <span class="n">source</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span> </span></pre></div> @@ -1023,7 +1056,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/qualify_tables.html b/docs/sqlglot/optimizer/qualify_tables.html index 74a5536..87d9739 100644 --- a/docs/sqlglot/optimizer/qualify_tables.html +++ b/docs/sqlglot/optimizer/qualify_tables.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.qualify_tables 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -361,7 +361,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/scope.html b/docs/sqlglot/optimizer/scope.html index 1f751c9..537c0a9 100644 --- a/docs/sqlglot/optimizer/scope.html +++ b/docs/sqlglot/optimizer/scope.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.scope 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -892,7 +892,8 @@ <div id="ScopeType.ROOT" class="classattr"> <div class="attr variable"> - <span class="name">ROOT</span><span class="default_value"> = <<a href="#ScopeType.ROOT">ScopeType.ROOT</a>: 1></span> + <span class="name">ROOT</span> = +<span class="default_value"><<a href="#ScopeType.ROOT">ScopeType.ROOT</a>: 1></span> </div> @@ -903,7 +904,8 @@ </div> <div id="ScopeType.SUBQUERY" class="classattr"> <div class="attr variable"> - <span class="name">SUBQUERY</span><span class="default_value"> = <<a href="#ScopeType.SUBQUERY">ScopeType.SUBQUERY</a>: 2></span> + <span class="name">SUBQUERY</span> = +<span class="default_value"><<a href="#ScopeType.SUBQUERY">ScopeType.SUBQUERY</a>: 2></span> </div> @@ -914,7 +916,8 @@ </div> <div id="ScopeType.DERIVED_TABLE" class="classattr"> <div class="attr variable"> - <span class="name">DERIVED_TABLE</span><span class="default_value"> = <<a href="#ScopeType.DERIVED_TABLE">ScopeType.DERIVED_TABLE</a>: 3></span> + <span class="name">DERIVED_TABLE</span> = +<span class="default_value"><<a href="#ScopeType.DERIVED_TABLE">ScopeType.DERIVED_TABLE</a>: 3></span> </div> @@ -925,7 +928,8 @@ </div> <div id="ScopeType.CTE" class="classattr"> <div class="attr variable"> - <span class="name">CTE</span><span class="default_value"> = <<a href="#ScopeType.CTE">ScopeType.CTE</a>: 4></span> + <span class="name">CTE</span> = +<span class="default_value"><<a href="#ScopeType.CTE">ScopeType.CTE</a>: 4></span> </div> @@ -936,7 +940,8 @@ </div> <div id="ScopeType.UNION" class="classattr"> <div class="attr variable"> - <span class="name">UNION</span><span class="default_value"> = <<a href="#ScopeType.UNION">ScopeType.UNION</a>: 5></span> + <span class="name">UNION</span> = +<span class="default_value"><<a href="#ScopeType.UNION">ScopeType.UNION</a>: 5></span> </div> @@ -947,7 +952,8 @@ </div> <div id="ScopeType.UDTF" class="classattr"> <div class="attr variable"> - <span class="name">UDTF</span><span class="default_value"> = <<a href="#ScopeType.UDTF">ScopeType.UDTF</a>: 6></span> + <span class="name">UDTF</span> = +<span class="default_value"><<a href="#ScopeType.UDTF">ScopeType.UDTF</a>: 6></span> </div> @@ -2547,7 +2553,7 @@ otherwise the DFS traversal will be used instead.</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/simplify.html b/docs/sqlglot/optimizer/simplify.html index cc83534..b6e0a38 100644 --- a/docs/sqlglot/optimizer/simplify.html +++ b/docs/sqlglot/optimizer/simplify.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.simplify 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -1362,7 +1362,7 @@ elimination: if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/optimizer/unnest_subqueries.html b/docs/sqlglot/optimizer/unnest_subqueries.html index 0102e43..8c1c5f6 100644 --- a/docs/sqlglot/optimizer/unnest_subqueries.html +++ b/docs/sqlglot/optimizer/unnest_subqueries.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.optimizer.unnest_subqueries 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -769,7 +769,7 @@ Convert correlated or vectorized subqueries into a group by so it is not a many if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/parser.html b/docs/sqlglot/parser.html index b300403..cfd4563 100644 --- a/docs/sqlglot/parser.html +++ b/docs/sqlglot/parser.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.parser 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -232,937 +232,937 @@ </span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IMAGE</span><span class="p">,</span> </span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> </span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="o">*</span><span class="n">NESTED_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="p">}</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a> -</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> <span class="n">SUBQUERY_PREDICATES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">All</span><span class="p">,</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">,</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <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="n">RESERVED_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span> -</span><span id="L-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 class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> -</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> -</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">,</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> -</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> -</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> -</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> -</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> -</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> -</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> -</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">,</span> -</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">,</span> -</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">,</span> -</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> -</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">,</span> -</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">,</span> -</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> -</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> -</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">,</span> -</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> -</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> -</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> -</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> -</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> -</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> -</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">,</span> -</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">,</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> -</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> -</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> -</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> -</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">,</span> -</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> -</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> -</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> -</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="o">*</span><span class="n">NO_PAREN_FUNCTIONS</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="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="p">}</span> -</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a> -</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="n">UPDATE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">}</span> -</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> -</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="n">TRIM_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">}</span> -</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> -</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> -</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> -</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> -</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> -</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> -</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="p">}</span> -</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> -</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> <span class="n">CONJUNCTION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">,</span> -</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">,</span> -</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="p">}</span> -</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> -</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a> <span class="n">EQUALITY</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span><span class="p">,</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="p">}</span> -</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> -</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="n">COMPARISON</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> -</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> -</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> -</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="p">}</span> -</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> -</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</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-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</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-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</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-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">,</span> -</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="p">}</span> -</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> -</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="n">TERM</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">,</span> -</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> -</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">,</span> -</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Collate</span><span class="p">,</span> -</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="p">}</span> -</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> -</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="n">FACTOR</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">,</span> -</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distance</span><span class="p">,</span> -</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">,</span> -</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">,</span> -</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="p">}</span> -</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> -</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="n">TIMESTAMPS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="p">}</span> -</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> -</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="n">SET_OPERATIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> -</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> -</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="p">}</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">JOIN_SIDES</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="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</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">JOIN_KINDS</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="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> -</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> -</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> -</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="p">}</span> -</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> -</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">Lambda</span><span class="p">,</span> -</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_lambda</span><span class="p">,</span> <span class="p">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">}</span> -</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="p">),</span> -</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="p">),</span> -</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">Kwarg</span><span class="p">,</span> -</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> -</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> -</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="p">),</span> -</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="p">}</span> -</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> -</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">Cast</span><span class="p">,</span> -</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> -</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="p">),</span> -</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> -</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="n">this</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">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="p">),</span> -</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> -</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="p">),</span> -</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">JSONBExtract</span><span class="p">,</span> -</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="p">),</span> -</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">,</span> -</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="p">),</span> -</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">JSONBContains</span><span class="p">,</span> -</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> -</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="p">),</span> -</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="p">}</span> -</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> -</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="n">EXPRESSION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</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">DataType</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</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">From</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</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="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_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">Identifier</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> -</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">(),</span> -</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><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">Order</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</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">Cluster</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</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">Sort</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</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">Lambda</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</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">Limit</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</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">Offset</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</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">TableAlias</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</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">Table</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</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">Condition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</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">Expression</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</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">Properties</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</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">Where</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</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">Ordered</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</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">Having</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</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">With</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</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">Window</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">(),</span> -</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="s2">"JOIN_TYPE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_side_and_kind</span><span class="p">(),</span> -</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="p">}</span> -</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> -</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter</span><span class="p">(),</span> -</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_transaction</span><span class="p">(),</span> -</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cache</span><span class="p">(),</span> -</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create</span><span class="p">(),</span> -</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_delete</span><span class="p">(),</span> -</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> -</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> -</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(),</span> -</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_insert</span><span class="p">(),</span> -</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD_DATA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_load_data</span><span class="p">(),</span> -</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_merge</span><span class="p">(),</span> -</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_uncache</span><span class="p">(),</span> -</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_update</span><span class="p">(),</span> -</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><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">Use</span><span class="p">,</span> -</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"ROLE"</span><span class="p">,</span> <span class="s2">"WAREHOUSE"</span><span class="p">,</span> <span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">))</span> -</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="ow">and</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">False</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="p">}</span> -</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> -</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="n">UNARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">(),</span> <span class="c1"># Unary + is handled as a no-op</span> -</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">()),</span> -</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Neg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="p">}</span> -</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> -</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="n">PRIMARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span> -</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="p">),</span> -</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span> -</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="p">),</span> -</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">Star</span><span class="p">,</span> -</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> <span class="o">**</span><span class="p">{</span><span class="s2">"except"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_except</span><span class="p">(),</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_replace</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">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">),</span> -</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HexString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ByteString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTRODUCER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_introducer</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> -</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_national</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> -</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SESSION_PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_session_parameter</span><span class="p">(),</span> -</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="p">}</span> -</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> -</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">),</span> -</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_parameter</span><span class="p">(),</span> -</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">))</span> -</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="p">}</span> -</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> -</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_between</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Glob</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="p">),</span> -</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="p">),</span> -</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="p">),</span> -</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="p">),</span> -</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="p">),</span> -</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SimilarTo</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="p">),</span> -</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="p">}</span> -</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> -</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">),</span> -</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(),</span> -</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="p">),</span> -</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</span><span class="p">),</span> -</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">),</span> -</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="s2">"STORED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> -</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_distkey</span><span class="p">(),</span> -</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">),</span> -</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(),</span> -</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> -</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returns</span><span class="p">(),</span> -</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row</span><span class="p">(),</span> -</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">),</span> -</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> -</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="s2">"TABLE_FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">),</span> -</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">),</span> -</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">),</span> -</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">),</span> -</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="s2">"DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> -</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="p">),</span> -</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="s2">"IMMUTABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> -</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="p">),</span> -</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="s2">"STABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"STABLE"</span><span class="p">)</span> -</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="p">),</span> -</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="o">*</span><span class="n">NESTED_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a> <span class="p">}</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> +</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> <span class="n">SUBQUERY_PREDICATES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">All</span><span class="p">,</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">,</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a> <span class="p">}</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> +</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a> <span class="n">RESERVED_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span> +</span><span id="L-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="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">,</span> +</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> +</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> +</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> +</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> +</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> +</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">,</span> +</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">,</span> +</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">,</span> +</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> +</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">,</span> +</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">,</span> +</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> +</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">,</span> +</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> +</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> +</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> +</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> +</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> +</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">,</span> +</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">,</span> +</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> +</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> +</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> +</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> +</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> +</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">,</span> +</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> +</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> +</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="o">*</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">,</span> +</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a> <span class="p">}</span> +</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> +</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</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="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a> <span class="p">}</span> +</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> +</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="n">UPDATE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">}</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> +</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="n">TRIM_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">}</span> +</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> +</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> +</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> +</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> +</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> +</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> +</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> +</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="p">}</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> +</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="n">CONJUNCTION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">,</span> +</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">,</span> +</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> <span class="p">}</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a> +</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> <span class="n">EQUALITY</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span><span class="p">,</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="p">}</span> +</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> +</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="n">COMPARISON</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> +</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> +</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="p">}</span> +</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> +</span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</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-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</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-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</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-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</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><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="n">TERM</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">,</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> +</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">,</span> +</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Collate</span><span class="p">,</span> +</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> <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="n">FACTOR</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">,</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distance</span><span class="p">,</span> +</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">,</span> +</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">,</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="p">}</span> +</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> +</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="n">TIMESTAMPS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="p">}</span> +</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> +</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="n">SET_OPERATIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> +</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> +</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="p">}</span> +</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> +</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="n">JOIN_SIDES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="p">}</span> +</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> +</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> +</span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> +</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> +</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> <span class="p">}</span> +</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> +</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">Lambda</span><span class="p">,</span> +</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_lambda</span><span class="p">,</span> <span class="p">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">}</span> +</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="p">),</span> +</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="p">),</span> +</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">Kwarg</span><span class="p">,</span> +</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> +</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> +</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="p">),</span> +</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="p">}</span> +</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> +</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">Cast</span><span class="p">,</span> +</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> +</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="p">),</span> +</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><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">JSONExtract</span><span class="p">,</span> +</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="p">),</span> +</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><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">JSONExtractScalar</span><span class="p">,</span> +</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="p">),</span> +</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">,</span> +</span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="p">),</span> +</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">JSONBExtractScalar</span><span class="p">,</span> +</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="p">),</span> +</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">,</span> +</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> +</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="p">),</span> +</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="p">}</span> +</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> +</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="n">EXPRESSION_PARSERS</span> <span class="o">=</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">Column</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</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">DataType</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</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">From</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</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">Group</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> +</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> +</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><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">Join</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</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">Order</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</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">Cluster</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</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">Sort</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</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">Lambda</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</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">Limit</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</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">Offset</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</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">TableAlias</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</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">Table</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</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">Condition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</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">Expression</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</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">Properties</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</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">Where</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</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">Ordered</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</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">Having</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</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">With</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</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">Window</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">(),</span> +</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="s2">"JOIN_TYPE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_side_and_kind</span><span class="p">(),</span> +</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="p">}</span> +</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> +</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter</span><span class="p">(),</span> +</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_transaction</span><span class="p">(),</span> +</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cache</span><span class="p">(),</span> +</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create</span><span class="p">(),</span> +</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_delete</span><span class="p">(),</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> +</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> +</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(),</span> +</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_insert</span><span class="p">(),</span> +</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD_DATA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_load_data</span><span class="p">(),</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_merge</span><span class="p">(),</span> +</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_uncache</span><span class="p">(),</span> +</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_update</span><span class="p">(),</span> +</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><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">Use</span><span class="p">,</span> +</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"ROLE"</span><span class="p">,</span> <span class="s2">"WAREHOUSE"</span><span class="p">,</span> <span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">))</span> +</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="ow">and</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="p">),</span> +</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="p">}</span> +</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> +</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> <span class="n">UNARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">(),</span> <span class="c1"># Unary + is handled as a no-op</span> +</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">()),</span> +</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Neg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="p">}</span> +</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> +</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="n">PRIMARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span> +</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="p">),</span> +</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</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">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span> +</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="p">),</span> +</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">,</span> +</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="o">**</span><span class="p">{</span><span class="s2">"except"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_except</span><span class="p">(),</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_replace</span><span class="p">()},</span> +</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> <span class="p">),</span> +</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">),</span> +</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HexString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ByteString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTRODUCER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_introducer</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> +</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_national</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> +</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SESSION_PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_session_parameter</span><span class="p">(),</span> +</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="p">}</span> +</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> +</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">),</span> +</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_parameter</span><span class="p">(),</span> +</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">))</span> +</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="p">}</span> +</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> +</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_between</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Glob</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="p">),</span> +</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="p">),</span> +</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="p">),</span> +</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="p">),</span> +</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="p">),</span> +</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SimilarTo</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="p">),</span> +</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="p">}</span> +</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> +</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="s2">"AFTER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span> +</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> +</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="p">),</span> +</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">),</span> +</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">),</span> +</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="s2">"BEFORE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span> +</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> +</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="p">),</span> +</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="s2">"BLOCKCOMPRESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_blockcompression</span><span class="p">(),</span> +</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(),</span> +</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="s2">"CHECKSUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_checksum</span><span class="p">(),</span> +</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="p">),</span> +</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">),</span> +</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">),</span> +</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="s2">"DATABLOCKSIZE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(</span> +</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DEFAULT"</span> +</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="p">),</span> +</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_definer</span><span class="p">(),</span> +</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="s2">"DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> +</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="p">),</span> +</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_distkey</span><span class="p">(),</span> +</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">),</span> +</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">),</span> +</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="s2">"EXTERNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</span><span class="p">),</span> +</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="s2">"FALLBACK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_fallback</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">),</span> +</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> +</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="s2">"FREESPACE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_freespace</span><span class="p">(),</span> +</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_temporary</span><span class="p">(</span><span class="n">global_</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="s2">"IMMUTABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> </span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="p">),</span> -</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_property</span><span class="p">(),</span> -</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="s2">"TBLPROPERTIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">),</span> -</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="s2">"FALLBACK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_fallback</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">),</span> -</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="s2">"LOG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_log</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">),</span> -</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="s2">"BEFORE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span> -</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> -</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="p">),</span> -</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="s2">"JOURNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span> -</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> -</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="p">),</span> -</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="s2">"AFTER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span> -</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> -</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="p">),</span> -</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="s2">"CHECKSUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_checksum</span><span class="p">(),</span> -</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="s2">"FREESPACE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_freespace</span><span class="p">(),</span> -</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="s2">"MERGEBLOCKRATIO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_mergeblockratio</span><span class="p">(</span> -</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DEFAULT"</span> -</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="p">),</span> -</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="s2">"MIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> -</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="s2">"MINIMUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> -</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="s2">"MAX"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> -</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="s2">"MAXIMUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> -</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="s2">"DATABLOCKSIZE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(</span> -</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DEFAULT"</span> -</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="p">),</span> -</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="s2">"BLOCKCOMPRESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_blockcompression</span><span class="p">(),</span> -</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">),</span> -</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_definer</span><span class="p">(),</span> -</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> -</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="s2">"LOCKING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> -</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="p">}</span> -</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> -</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="s2">"CASESPECIFIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="s2">"JOURNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span> +</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> +</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="p">),</span> +</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">),</span> +</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> +</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</span><span class="p">),</span> +</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> +</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="s2">"LOCKING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> +</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="s2">"LOG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_log</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">),</span> +</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</span><span class="p">),</span> +</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="s2">"MAX"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> +</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="s2">"MAXIMUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> +</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="s2">"MERGEBLOCKRATIO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_mergeblockratio</span><span class="p">(</span> +</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DEFAULT"</span> +</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="p">),</span> +</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="s2">"MIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> +</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="s2">"MINIMUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> +</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="s2">"MULTISET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_noprimaryindex</span><span class="p">(),</span> +</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_oncommit</span><span class="p">(),</span> +</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returns</span><span class="p">(),</span> +</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row</span><span class="p">(),</span> +</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(),</span> +</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="s2">"STABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"STABLE"</span><span class="p">)</span> +</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="p">),</span> +</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="s2">"STORED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> +</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="s2">"TABLE_FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">),</span> +</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="s2">"TBLPROPERTIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">),</span> +</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_temporary</span><span class="p">(</span><span class="n">global_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> <span class="s2">"TRANSIENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">),</span> +</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">),</span> +</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> </span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="p">),</span> -</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="s2">"CHECK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="p">),</span> -</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> -</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="p">),</span> -</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="p">),</span> -</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="p">),</span> -</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="s2">"ENCODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()),</span> -</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">(),</span> -</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="p">),</span> -</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="s2">"GENERATED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_generated_as_identity</span><span class="p">(),</span> -</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="s2">"IDENTITY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> -</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_not_constraint</span><span class="p">(),</span> -</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">,</span> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="s2">"PATH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()),</span> -</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(),</span> -</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="s2">"TITLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="p">),</span> -</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unique</span><span class="p">(),</span> -</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="s2">"UPPERCASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</span><span class="p">),</span> -</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="p">}</span> -</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> -</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"CHECK"</span><span class="p">,</span> <span class="s2">"FOREIGN KEY"</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">,</span> <span class="s2">"PRIMARY KEY"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">}</span> -</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> -</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_case</span><span class="p">(),</span> -</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_if</span><span class="p">(),</span> -</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()),</span> -</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="p">}</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="n">FUNCTION_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="s2">"CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> -</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="s2">"TRY_CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="s2">"EXTRACT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">(),</span> -</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="s2">"POSITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(),</span> -</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="s2">"SUBSTRING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_substring</span><span class="p">(),</span> -</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="s2">"TRIM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_trim</span><span class="p">(),</span> -</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="s2">"CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> -</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="s2">"TRY_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="s2">"STRING_AGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_agg</span><span class="p">(),</span> +</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_property</span><span class="p">(),</span> +</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="p">}</span> +</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> +</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="s2">"CASESPECIFIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="p">),</span> +</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="s2">"CHECK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="p">),</span> +</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> +</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="p">),</span> +</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="p">),</span> +</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="s2">"COMPRESS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_compress</span><span class="p">(),</span> +</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="p">),</span> +</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="s2">"ENCODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()),</span> +</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">(),</span> +</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="p">),</span> +</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="s2">"GENERATED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_generated_as_identity</span><span class="p">(),</span> +</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="s2">"IDENTITY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> <span class="s2">"INLINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_inline</span><span class="p">(),</span> +</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> +</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_not_constraint</span><span class="p">(),</span> +</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">,</span> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="s2">"PATH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()),</span> +</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(),</span> +</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="s2">"TITLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="p">),</span> +</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unique</span><span class="p">(),</span> +</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="s2">"UPPERCASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</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><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> +</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"CHECK"</span><span class="p">,</span> <span class="s2">"FOREIGN KEY"</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">,</span> <span class="s2">"PRIMARY KEY"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">}</span> +</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> +</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_case</span><span class="p">(),</span> +</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_if</span><span class="p">(),</span> +</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()),</span> </span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="p">}</span> </span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> -</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="s2">"match"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize</span><span class="p">(),</span> -</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> -</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="s2">"having"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> -</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="s2">"qualify"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">(),</span> -</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="s2">"windows"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_clause</span><span class="p">(),</span> -</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="s2">"distribute"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distribute</span><span class="p">),</span> -</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="s2">"sort"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">),</span> -</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">),</span> -</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> -</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> -</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> -</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="s2">"lock"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lock</span><span class="p">(),</span> -</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="p">}</span> -</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> -</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="n">SHOW_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="n">SET_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> -</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="n">MODIFIABLES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</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-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="n">CREATABLES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="p">}</span> +</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="n">FUNCTION_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="s2">"CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> +</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="s2">"TRY_CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="s2">"EXTRACT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">(),</span> +</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="s2">"POSITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(),</span> +</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="s2">"SUBSTRING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_substring</span><span class="p">(),</span> +</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="s2">"TRIM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_trim</span><span class="p">(),</span> +</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="s2">"CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> +</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="s2">"TRY_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="s2">"STRING_AGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_agg</span><span class="p">(),</span> +</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="p">}</span> +</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> +</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="s2">"match"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize</span><span class="p">(),</span> +</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> +</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="s2">"having"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> +</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="s2">"qualify"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">(),</span> +</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="s2">"windows"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_clause</span><span class="p">(),</span> +</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="s2">"distribute"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distribute</span><span class="p">),</span> +</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="s2">"sort"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">),</span> +</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">),</span> +</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> +</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> +</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> +</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="s2">"lock"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lock</span><span class="p">(),</span> +</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="p">}</span> +</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> +</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="n">SHOW_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="n">SET_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> -</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="n">TRANSACTION_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"DEFERRED"</span><span class="p">,</span> <span class="s2">"IMMEDIATE"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">}</span> +</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="n">MODIFIABLES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</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-671"><a href="#L-671"><span class="linenos"> 671</span></a> -</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="n">INSERT_ALTERNATIVES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">}</span> -</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> -</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="n">WINDOW_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">}</span> -</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> -</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="n">ADD_CONSTRAINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><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">STRICT_CAST</span> <span class="o">=</span> <span class="kc">True</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="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="s2">"error_level"</span><span class="p">,</span> -</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="s2">"error_message_context"</span><span class="p">,</span> -</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="s2">"sql"</span><span class="p">,</span> -</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="s2">"errors"</span><span class="p">,</span> -</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="s2">"index_offset"</span><span class="p">,</span> -</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="s2">"unnest_column_only"</span><span class="p">,</span> -</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="s2">"alias_post_tablesample"</span><span class="p">,</span> -</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="s2">"max_errors"</span><span class="p">,</span> -</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="s2">"null_ordering"</span><span class="p">,</span> -</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="s2">"_tokens"</span><span class="p">,</span> -</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="s2">"_index"</span><span class="p">,</span> -</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> <span class="s2">"_curr"</span><span class="p">,</span> -</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="s2">"_next"</span><span class="p">,</span> -</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="s2">"_prev"</span><span class="p">,</span> -</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="s2">"_prev_comments"</span><span class="p">,</span> -</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="s2">"_show_trie"</span><span class="p">,</span> -</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="s2">"_set_trie"</span><span class="p">,</span> -</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> <span class="p">)</span> -</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> -</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> -</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="n">unnest_column_only</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="n">alias_post_tablesample</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> -</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="n">null_ordering</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="p">):</span> -</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> -</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> -</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> -</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> -</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> -</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> -</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> -</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> -</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> -</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> -</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> -</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a><span class="sd"> per parsed SQL statement.</span> -</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> -</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a><span class="sd"> Args:</span> -</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a><span class="sd"> raw_tokens: the list of tokens.</span> -</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> -</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> -</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a><span class="sd"> Returns:</span> -</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a><span class="sd"> The list of syntax trees.</span> -</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a><span class="sd"> """</span> -</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> -</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> -</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="p">)</span> -</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> -</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> -</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> -</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> -</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> -</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> -</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> -</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a><span class="sd"> Args:</span> -</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a><span class="sd"> expression_types: the expression type(s) to try and parse the token list into.</span> -</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a><span class="sd"> raw_tokens: the list of tokens.</span> -</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> -</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> -</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a><span class="sd"> Returns:</span> -</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a><span class="sd"> The target Expression.</span> -</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a><span class="sd"> """</span> -</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> -</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> -</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> -</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> -</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="sa">f</span><span class="s2">"Failed to parse into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> -</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> -</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> -</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="k">def</span> <span class="nf">_parse</span><span class="p">(</span> -</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Parser</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> -</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="n">total</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">)</span> -</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="n">chunks</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[[]]</span> -</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> -</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">):</span> -</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> -</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">total</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span> -</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="n">chunks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> -</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> -</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> -</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="k">for</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">:</span> -</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> -</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="n">tokens</span> -</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> -</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_method</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> -</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">):</span> -</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid expression / Unexpected token"</span><span class="p">)</span> +</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="n">CREATABLES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="p">}</span> +</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> +</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="n">TRANSACTION_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"DEFERRED"</span><span class="p">,</span> <span class="s2">"IMMEDIATE"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">}</span> +</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> +</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="n">INSERT_ALTERNATIVES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">}</span> +</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> +</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="n">WINDOW_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">}</span> +</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> +</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="n">ADD_CONSTRAINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">}</span> +</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> +</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> +</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="s2">"error_level"</span><span class="p">,</span> +</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="s2">"error_message_context"</span><span class="p">,</span> +</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="s2">"sql"</span><span class="p">,</span> +</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="s2">"errors"</span><span class="p">,</span> +</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="s2">"index_offset"</span><span class="p">,</span> +</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> <span class="s2">"unnest_column_only"</span><span class="p">,</span> +</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="s2">"alias_post_tablesample"</span><span class="p">,</span> +</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="s2">"max_errors"</span><span class="p">,</span> +</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="s2">"null_ordering"</span><span class="p">,</span> +</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="s2">"_tokens"</span><span class="p">,</span> +</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="s2">"_index"</span><span class="p">,</span> +</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="s2">"_curr"</span><span class="p">,</span> +</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="s2">"_next"</span><span class="p">,</span> +</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="s2">"_prev"</span><span class="p">,</span> +</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="s2">"_prev_comments"</span><span class="p">,</span> +</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="s2">"_show_trie"</span><span class="p">,</span> +</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="s2">"_set_trie"</span><span class="p">,</span> +</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="p">)</span> +</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> +</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> +</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="n">unnest_column_only</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="n">alias_post_tablesample</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> +</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="n">null_ordering</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> <span class="p">):</span> +</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> +</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> +</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> +</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> +</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> +</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> +</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> +</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> +</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> +</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> +</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> +</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a><span class="sd"> per parsed SQL statement.</span> +</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> +</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a><span class="sd"> Args:</span> +</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a><span class="sd"> raw_tokens: the list of tokens.</span> +</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> +</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> +</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a><span class="sd"> Returns:</span> +</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a><span class="sd"> The list of syntax trees.</span> +</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a><span class="sd"> """</span> +</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> +</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> +</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="p">)</span> +</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> +</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> +</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> +</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> +</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> +</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> +</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> +</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a><span class="sd"> Args:</span> +</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a><span class="sd"> expression_types: the expression type(s) to try and parse the token list into.</span> +</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a><span class="sd"> raw_tokens: the list of tokens.</span> +</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> +</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> +</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a><span class="sd"> Returns:</span> +</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a><span class="sd"> The target Expression.</span> +</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a><span class="sd"> """</span> +</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> +</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> +</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> +</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> +</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="sa">f</span><span class="s2">"Failed to parse into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> +</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> +</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> +</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="k">def</span> <span class="nf">_parse</span><span class="p">(</span> +</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Parser</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> +</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="n">total</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">)</span> +</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="n">chunks</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[[]]</span> +</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> +</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">):</span> +</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> +</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">total</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span> +</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="n">chunks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> </span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> -</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">check_errors</span><span class="p">()</span> +</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> -</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="k">return</span> <span class="n">expressions</span> -</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> -</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a><span class="sd"> Logs or raises any found errors, depending on the chosen error level setting.</span> -</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a><span class="sd"> """</span> -</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> -</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> -</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> -</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> -</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="p">)</span> -</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> -</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> -</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a><span class="sd"> error level setting.</span> -</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a><span class="sd"> """</span> -</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> -</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> -</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> -</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="k">for</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">:</span> +</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> +</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="n">tokens</span> +</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> +</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_method</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> +</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">):</span> +</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid expression / Unexpected token"</span><span class="p">)</span> +</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> +</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">check_errors</span><span class="p">()</span> +</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> +</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="k">return</span> <span class="n">expressions</span> +</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> +</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a><span class="sd"> Logs or raises any found errors, depending on the chosen error level setting.</span> +</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a><span class="sd"> """</span> +</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> +</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> +</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> +</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> +</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="p">)</span> </span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> -</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> -</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> -</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> -</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> -</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> -</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> -</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> -</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> -</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="p">)</span> -</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> -</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> -</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="k">raise</span> <span class="n">error</span> -</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> -</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> -</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> -</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> -</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">comments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a><span class="sd"> Creates a new, validated Expression.</span> -</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> -</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a><span class="sd"> Args:</span> -</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> -</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a><span class="sd"> comments: an optional list of comments to attach to the expression.</span> -</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a><span class="sd"> kwargs: the arguments to set for the expression along with their respective values.</span> -</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> -</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a><span class="sd"> Returns:</span> -</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a><span class="sd"> The target expression.</span> -</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a><span class="sd"> """</span> -</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="k">if</span> <span class="n">comments</span><span class="p">:</span> -</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> -</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> +</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a><span class="sd"> error level setting.</span> +</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a><span class="sd"> """</span> +</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> +</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> +</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> +</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> +</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> +</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> +</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> +</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> +</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> +</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> +</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> +</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> +</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="p">)</span> +</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> +</span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> +</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="k">raise</span> <span class="n">error</span> +</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> +</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> +</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> +</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> +</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">comments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a><span class="sd"> Creates a new, validated Expression.</span> +</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> +</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a><span class="sd"> Args:</span> +</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> +</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a><span class="sd"> comments: an optional list of comments to attach to the expression.</span> +</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a><span class="sd"> kwargs: the arguments to set for the expression along with their respective values.</span> </span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> -</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span> -</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</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">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a><span class="sd"> Validates an already instantiated expression, making sure that all its mandatory arguments</span> -</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a><span class="sd"> are set.</span> -</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> -</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a><span class="sd"> Args:</span> -</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a><span class="sd"> expression: the expression to validate.</span> -</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a><span class="sd"> args: an optional list of items that was used to instantiate the expression, if it's a Func.</span> -</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a><span class="sd"> """</span> -</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> -</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="k">return</span> -</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> -</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> -</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> -</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> <span class="k">def</span> <span class="nf">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">,</span> <span class="n">end</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">end</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">end</span><span class="o">.</span><span class="n">text</span><span class="p">)]</span> -</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> -</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="k">def</span> <span class="nf">_find_token</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="n">col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="n">index</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> -</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="k">while</span> <span class="n">line</span> <span class="o"><</span> <span class="n">token</span><span class="o">.</span><span class="n">line</span> <span class="ow">or</span> <span class="n">col</span> <span class="o"><</span> <span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">:</span> -</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="k">if</span> <span class="n">Tokenizer</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</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">index</span><span class="p">])</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> -</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="n">line</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="n">col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="n">col</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="n">index</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> -</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="k">return</span> <span class="n">index</span> -</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> -</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">times</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+=</span> <span class="n">times</span> -</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> -</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> -</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> -</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="k">def</span> <span class="nf">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> -</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> -</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="k">def</span> <span class="nf">_parse_command</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> -</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> <span class="k">def</span> <span class="nf">_parse_statement</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> -</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">):</span> -</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> -</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">):</span> -</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_command</span><span class="p">()</span> -</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> -</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> -</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> -</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a><span class="sd"> Returns:</span> +</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a><span class="sd"> The target expression.</span> +</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a><span class="sd"> """</span> +</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="k">if</span> <span class="n">comments</span><span class="p">:</span> +</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> +</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> +</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span> +</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</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">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a><span class="sd"> Validates an already instantiated expression, making sure that all its mandatory arguments</span> +</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a><span class="sd"> are set.</span> +</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> +</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a><span class="sd"> Args:</span> +</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a><span class="sd"> expression: the expression to validate.</span> +</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a><span class="sd"> args: an optional list of items that was used to instantiate the expression, if it's a Func.</span> +</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a><span class="sd"> """</span> +</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> +</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="k">return</span> +</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> +</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> +</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> +</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="k">def</span> <span class="nf">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">,</span> <span class="n">end</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</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="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">end</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">end</span><span class="o">.</span><span class="n">text</span><span class="p">)]</span> +</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> +</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="k">def</span> <span class="nf">_find_token</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="n">col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="n">index</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> +</span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> <span class="k">while</span> <span class="n">line</span> <span class="o"><</span> <span class="n">token</span><span class="o">.</span><span class="n">line</span> <span class="ow">or</span> <span class="n">col</span> <span class="o"><</span> <span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">:</span> +</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="k">if</span> <span class="n">Tokenizer</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</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">index</span><span class="p">])</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> +</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="n">line</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="n">col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="n">col</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="n">index</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> +</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="k">return</span> <span class="n">index</span> +</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> +</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">times</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+=</span> <span class="n">times</span> +</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> +</span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> +</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> +</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="k">def</span> <span class="nf">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> +</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> +</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="k">def</span> <span class="nf">_parse_command</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> +</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="k">def</span> <span class="nf">_parse_statement</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> -</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="k">def</span> <span class="nf">_parse_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default_kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">)</span> -</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="k">if</span> <span class="n">default_kind</span><span class="p">:</span> -</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">default_kind</span> -</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> -</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> -</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> -</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> -</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="n">cascade</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">),</span> -</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="p">)</span> -</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> -</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="k">def</span> <span class="nf">_parse_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">not_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></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><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">)</span> -</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">not_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">))</span> -</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">)</span> -</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="p">)</span> -</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> -</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="k">def</span> <span class="nf">_parse_create</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"REPLACE"</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span> -</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span> -</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> <span class="p">)</span> -</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="n">set_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="c1"># Teradata</span> -</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="n">multiset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MULTISET"</span><span class="p">)</span> <span class="c1"># Teradata</span> -</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="n">global_temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">,</span> <span class="s2">"TEMPORARY"</span><span class="p">)</span> <span class="c1"># Teradata</span> -</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="n">volatile</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">)</span> <span class="c1"># Teradata</span> -</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="n">transient</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSIENT"</span><span class="p">)</span> -</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="n">external</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"EXTERNAL"</span><span class="p">)</span> -</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> -</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">)</span> -</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> -</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> -</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> -</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> -</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> <span class="c1"># exp.Properties.Location.POST_CREATE</span> -</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">):</span> +</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> +</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">):</span> +</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_command</span><span class="p">()</span> +</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> +</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> +</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> +</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> +</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> +</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="k">def</span> <span class="nf">_parse_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default_kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> +</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">)</span> +</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> <span class="k">if</span> <span class="n">default_kind</span><span class="p">:</span> +</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">default_kind</span> +</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> +</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> +</span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> +</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> +</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> +</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="n">cascade</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">),</span> +</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="p">)</span> +</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> +</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="k">def</span> <span class="nf">_parse_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">not_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></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><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">)</span> +</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">not_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">))</span> +</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">)</span> +</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="p">)</span> +</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> +</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="k">def</span> <span class="nf">_parse_create</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"REPLACE"</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span> +</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span> +</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> <span class="p">)</span> +</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> +</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> +</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> +</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> </span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> -</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">properties</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> -</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> -</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="n">data</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="n">no_primary_index</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> -</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> -</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> -</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> -</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">)</span> -</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="n">return_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURN"</span><span class="p">)</span> -</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> +</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> +</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> <span class="c1"># exp.Properties.Location.POST_CREATE</span> +</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> +</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">properties</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> +</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> +</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> +</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> +</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> </span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> -</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="k">if</span> <span class="n">return_</span><span class="p">:</span> -</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">:</span> -</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">()</span> -</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="p">):</span> -</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> -</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="c1"># exp.Properties.Location.POST_NAME</span> -</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(</span><span class="n">before</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> -</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> -</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">)</span> -</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> -</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA and POST_WITH</span> -</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> -</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> -</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> -</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="c1"># exp.Properties.Location.POST_ALIAS</span> -</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span> -</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="p">):</span> -</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> -</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> -</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">()</span> -</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> -</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> -</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="n">data</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="n">data</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> -</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> -</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> -</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> -</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="n">no_primary_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"PRIMARY"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">)</span> +</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">)</span> +</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="n">return_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURN"</span><span class="p">)</span> +</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> +</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> +</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="k">if</span> <span class="n">return_</span><span class="p">:</span> +</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">:</span> +</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">()</span> +</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="p">):</span> +</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> +</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> <span class="c1"># exp.Properties.Location.POST_NAME</span> +</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(</span><span class="n">before</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> +</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> +</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">)</span> +</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> +</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA and POST_WITH</span> +</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> +</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> +</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> +</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="c1"># exp.Properties.Location.POST_ALIAS</span> +</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span> +</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> <span class="p">):</span> +</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> +</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> +</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">()</span> +</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> +</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> +</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="c1"># exp.Properties.Location.POST_EXPRESSION</span> +</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> </span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> </span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> @@ -1172,7 +1172,7 @@ </span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> </span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> </span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> </span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> </span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> </span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> @@ -1188,2748 +1188,2786 @@ </span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> </span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> </span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="nb">set</span><span class="o">=</span><span class="n">set_</span><span class="p">,</span> -</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="n">multiset</span><span class="o">=</span><span class="n">multiset</span><span class="p">,</span> -</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="n">global_temporary</span><span class="o">=</span><span class="n">global_temporary</span><span class="p">,</span> -</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="n">volatile</span><span class="o">=</span><span class="n">volatile</span><span class="p">,</span> -</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties</span><span class="p">,</span> -</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> -</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="n">transient</span><span class="o">=</span><span class="n">transient</span><span class="p">,</span> -</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="n">external</span><span class="o">=</span><span class="n">external</span><span class="p">,</span> -</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="n">replace</span><span class="o">=</span><span class="n">replace</span><span class="p">,</span> -</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> -</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> -</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="n">statistics</span><span class="o">=</span><span class="n">statistics</span><span class="p">,</span> -</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> <span class="n">no_primary_index</span><span class="o">=</span><span class="n">no_primary_index</span><span class="p">,</span> -</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> <span class="n">indexes</span><span class="o">=</span><span class="n">indexes</span><span class="p">,</span> -</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> <span class="n">no_schema_binding</span><span class="o">=</span><span class="n">no_schema_binding</span><span class="p">,</span> -</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="n">begin</span><span class="o">=</span><span class="n">begin</span><span class="p">,</span> -</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="p">)</span> +</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> +</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties</span><span class="p">,</span> +</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="n">replace</span><span class="o">=</span><span class="n">replace</span><span class="p">,</span> +</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="n">indexes</span><span class="o">=</span><span class="n">indexes</span><span class="p">,</span> +</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="n">no_schema_binding</span><span class="o">=</span><span class="n">no_schema_binding</span><span class="p">,</span> +</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="n">begin</span><span class="o">=</span><span class="n">begin</span><span class="p">,</span> +</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> <span class="p">)</span> +</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> +</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="k">def</span> <span class="nf">_parse_property_before</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> +</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> <span class="c1"># parsers look to _prev for no/dual/default, so need to consume first</span> +</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="L-1118"><a href="#L-1118"><span class="linenos">1118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DUAL"</span><span class="p">)</span> +</span><span id="L-1119"><a href="#L-1119"><span class="linenos">1119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> +</span><span id="L-1120"><a href="#L-1120"><span class="linenos">1120</span></a> +</span><span id="L-1121"><a href="#L-1121"><span class="linenos">1121</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()):</span> +</span><span id="L-1122"><a href="#L-1122"><span class="linenos">1122</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> </span><span id="L-1123"><a href="#L-1123"><span class="linenos">1123</span></a> -</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="k">def</span> <span class="nf">_parse_property_before</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> -</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="c1"># parsers look to _prev for no/dual/default, so need to consume first</span> -</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DUAL"</span><span class="p">)</span> -</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> -</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> -</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()):</span> -</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> -</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> -</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="k">def</span> <span class="nf">_parse_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> -</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> -</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> -</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a> -</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">):</span> -</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> -</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"SECURITY"</span><span class="p">):</span> -</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">,</span> <span class="n">definer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINER"</span><span class="p">))</span> +</span><span id="L-1124"><a href="#L-1124"><span class="linenos">1124</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1125"><a href="#L-1125"><span class="linenos">1125</span></a> +</span><span id="L-1126"><a href="#L-1126"><span class="linenos">1126</span></a> <span class="k">def</span> <span class="nf">_parse_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1127"><a href="#L-1127"><span class="linenos">1127</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> +</span><span id="L-1128"><a href="#L-1128"><span class="linenos">1128</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-1129"><a href="#L-1129"><span class="linenos">1129</span></a> +</span><span id="L-1130"><a href="#L-1130"><span class="linenos">1130</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> +</span><span id="L-1131"><a href="#L-1131"><span class="linenos">1131</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1132"><a href="#L-1132"><span class="linenos">1132</span></a> +</span><span id="L-1133"><a href="#L-1133"><span class="linenos">1133</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">):</span> +</span><span id="L-1134"><a href="#L-1134"><span class="linenos">1134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1135"><a href="#L-1135"><span class="linenos">1135</span></a> +</span><span id="L-1136"><a href="#L-1136"><span class="linenos">1136</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"SECURITY"</span><span class="p">):</span> +</span><span id="L-1137"><a href="#L-1137"><span class="linenos">1137</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">,</span> <span class="n">definer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINER"</span><span class="p">))</span> +</span><span id="L-1138"><a href="#L-1138"><span class="linenos">1138</span></a> +</span><span id="L-1139"><a href="#L-1139"><span class="linenos">1139</span></a> <span class="n">assignment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span> +</span><span id="L-1140"><a href="#L-1140"><span class="linenos">1140</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span> +</span><span id="L-1141"><a href="#L-1141"><span class="linenos">1141</span></a> <span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1142"><a href="#L-1142"><span class="linenos">1142</span></a> +</span><span id="L-1143"><a href="#L-1143"><span class="linenos">1143</span></a> <span class="k">if</span> <span class="n">assignment</span><span class="p">:</span> +</span><span id="L-1144"><a href="#L-1144"><span class="linenos">1144</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="L-1145"><a href="#L-1145"><span class="linenos">1145</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1146"><a href="#L-1146"><span class="linenos">1146</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> +</span><span id="L-1147"><a href="#L-1147"><span class="linenos">1147</span></a> +</span><span id="L-1148"><a href="#L-1148"><span class="linenos">1148</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-1149"><a href="#L-1149"><span class="linenos">1149</span></a> -</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="n">assignment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span> -</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span> -</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> -</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="k">if</span> <span class="n">assignment</span><span class="p">:</span> -</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> -</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> -</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1150"><a href="#L-1150"><span class="linenos">1150</span></a> <span class="k">def</span> <span class="nf">_parse_property_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1151"><a href="#L-1151"><span class="linenos">1151</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1152"><a href="#L-1152"><span class="linenos">1152</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1153"><a href="#L-1153"><span class="linenos">1153</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1154"><a href="#L-1154"><span class="linenos">1154</span></a> <span class="n">exp_class</span><span class="p">,</span> +</span><span id="L-1155"><a href="#L-1155"><span class="linenos">1155</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> +</span><span id="L-1156"><a href="#L-1156"><span class="linenos">1156</span></a> <span class="p">)</span> +</span><span id="L-1157"><a href="#L-1157"><span class="linenos">1157</span></a> +</span><span id="L-1158"><a href="#L-1158"><span class="linenos">1158</span></a> <span class="k">def</span> <span class="nf">_parse_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">before</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1159"><a href="#L-1159"><span class="linenos">1159</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-1160"><a href="#L-1160"><span class="linenos">1160</span></a> -</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="k">def</span> <span class="nf">_parse_property_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="n">exp_class</span><span class="p">,</span> -</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> -</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="p">)</span> -</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a> -</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="k">def</span> <span class="nf">_parse_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">before</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1161"><a href="#L-1161"><span class="linenos">1161</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1162"><a href="#L-1162"><span class="linenos">1162</span></a> <span class="k">if</span> <span class="n">before</span><span class="p">:</span> +</span><span id="L-1163"><a href="#L-1163"><span class="linenos">1163</span></a> <span class="n">identified_property</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_before</span><span class="p">()</span> +</span><span id="L-1164"><a href="#L-1164"><span class="linenos">1164</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1165"><a href="#L-1165"><span class="linenos">1165</span></a> <span class="n">identified_property</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">()</span> +</span><span id="L-1166"><a href="#L-1166"><span class="linenos">1166</span></a> +</span><span id="L-1167"><a href="#L-1167"><span class="linenos">1167</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">identified_property</span><span class="p">:</span> +</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a> <span class="k">break</span> +</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">identified_property</span><span class="p">):</span> +</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> </span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> -</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="k">if</span> <span class="n">before</span><span class="p">:</span> -</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="n">identified_property</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_before</span><span class="p">()</span> -</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="n">identified_property</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">()</span> -</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> -</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">identified_property</span><span class="p">:</span> -</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="k">break</span> -</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">identified_property</span><span class="p">):</span> -</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> +</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">properties</span><span class="p">)</span> +</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> +</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> +</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> <span class="k">def</span> <span class="nf">_parse_fallback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FALLBACK"</span><span class="p">)</span> +</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">protection</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PROTECTION"</span><span class="p">)</span> +</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> <span class="p">)</span> </span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> -</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> -</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">properties</span><span class="p">)</span> -</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> -</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> -</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="k">def</span> <span class="nf">_parse_fallback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FALLBACK"</span><span class="p">)</span> -</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">protection</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PROTECTION"</span><span class="p">)</span> -</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> <span class="p">)</span> -</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> -</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> <span class="k">def</span> <span class="nf">_parse_with_property</span><span class="p">(</span> -</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="p">)</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> -</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> -</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="k">def</span> <span class="nf">_parse_with_property</span><span class="p">(</span> +</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="p">)</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> +</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> +</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">):</span> +</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withjournaltable</span><span class="p">()</span> +</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> +</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a> +</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="L-1199"><a href="#L-1199"><span class="linenos">1199</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1200"><a href="#L-1200"><span class="linenos">1200</span></a> +</span><span id="L-1201"><a href="#L-1201"><span class="linenos">1201</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withisolatedloading</span><span class="p">()</span> </span><span id="L-1202"><a href="#L-1202"><span class="linenos">1202</span></a> -</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"JOURNAL"</span><span class="p">:</span> -</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withjournaltable</span><span class="p">()</span> -</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> -</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withisolatedloading</span><span class="p">()</span> -</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> -</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/create-view.html</span> -</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="k">def</span> <span class="nf">_parse_definer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> -</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> <span class="n">user</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">)</span> -</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a> <span class="n">host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-1203"><a href="#L-1203"><span class="linenos">1203</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/create-view.html</span> +</span><span id="L-1204"><a href="#L-1204"><span class="linenos">1204</span></a> <span class="k">def</span> <span class="nf">_parse_definer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1205"><a href="#L-1205"><span class="linenos">1205</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1206"><a href="#L-1206"><span class="linenos">1206</span></a> +</span><span id="L-1207"><a href="#L-1207"><span class="linenos">1207</span></a> <span class="n">user</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-1208"><a href="#L-1208"><span class="linenos">1208</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">)</span> +</span><span id="L-1209"><a href="#L-1209"><span class="linenos">1209</span></a> <span class="n">host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-1210"><a href="#L-1210"><span class="linenos">1210</span></a> +</span><span id="L-1211"><a href="#L-1211"><span class="linenos">1211</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">user</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span> +</span><span id="L-1212"><a href="#L-1212"><span class="linenos">1212</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1213"><a href="#L-1213"><span class="linenos">1213</span></a> +</span><span id="L-1214"><a href="#L-1214"><span class="linenos">1214</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">user</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">host</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="L-1215"><a href="#L-1215"><span class="linenos">1215</span></a> -</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">user</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span> -</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> -</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">user</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">host</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1216"><a href="#L-1216"><span class="linenos">1216</span></a> <span class="k">def</span> <span class="nf">_parse_withjournaltable</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1217"><a href="#L-1217"><span class="linenos">1217</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-1218"><a href="#L-1218"><span class="linenos">1218</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1219"><a href="#L-1219"><span class="linenos">1219</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> </span><span id="L-1220"><a href="#L-1220"><span class="linenos">1220</span></a> -</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a> <span class="k">def</span> <span class="nf">_parse_withjournaltable</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"JOURNAL"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">)</span> -</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> -</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> -</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a> <span class="k">def</span> <span class="nf">_parse_log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOG"</span><span class="p">)</span> -</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">)</span> +</span><span id="L-1221"><a href="#L-1221"><span class="linenos">1221</span></a> <span class="k">def</span> <span class="nf">_parse_log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1222"><a href="#L-1222"><span class="linenos">1222</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOG"</span><span class="p">)</span> +</span><span id="L-1223"><a href="#L-1223"><span class="linenos">1223</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">)</span> +</span><span id="L-1224"><a href="#L-1224"><span class="linenos">1224</span></a> +</span><span id="L-1225"><a href="#L-1225"><span class="linenos">1225</span></a> <span class="k">def</span> <span class="nf">_parse_journal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1226"><a href="#L-1226"><span class="linenos">1226</span></a> <span class="n">before</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BEFORE"</span><span class="p">)</span> +</span><span id="L-1227"><a href="#L-1227"><span class="linenos">1227</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">)</span> +</span><span id="L-1228"><a href="#L-1228"><span class="linenos">1228</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="n">dual</span><span class="p">,</span> <span class="n">before</span><span class="o">=</span><span class="n">before</span><span class="p">)</span> </span><span id="L-1229"><a href="#L-1229"><span class="linenos">1229</span></a> -</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="k">def</span> <span class="nf">_parse_journal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> <span class="n">before</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BEFORE"</span><span class="p">)</span> -</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">)</span> -</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="n">dual</span><span class="p">,</span> <span class="n">before</span><span class="o">=</span><span class="n">before</span><span class="p">)</span> -</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> -</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> <span class="k">def</span> <span class="nf">_parse_afterjournal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">)</span> -</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> -</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"JOURNAL"</span><span class="p">)</span> -</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AfterJournalProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="n">dual</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">)</span> -</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> -</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> <span class="k">def</span> <span class="nf">_parse_checksum</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">)</span> -</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> -</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> -</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">)</span> -</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a> -</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">,</span> -</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> -</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a> <span class="p">)</span> -</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a> -</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> <span class="k">def</span> <span class="nf">_parse_freespace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FREESPACE"</span><span class="p">)</span> -</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> -</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="p">)</span> -</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> -</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> <span class="k">def</span> <span class="nf">_parse_mergeblockratio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MERGEBLOCKRATIO"</span><span class="p">)</span> -</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> -</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> -</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> -</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">),</span> -</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a> <span class="p">)</span> -</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> -</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> -</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a> <span class="p">)</span> -</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a> -</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> <span class="k">def</span> <span class="nf">_parse_datablocksize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> -</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MIN"</span><span class="p">,</span> <span class="s2">"MINIMUM"</span><span class="p">)):</span> -</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> -</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MAXIMUM"</span><span class="p">)):</span> -</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> -</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> -</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> -</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="n">units</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"BYTES"</span><span class="p">,</span> <span class="s2">"KBYTES"</span><span class="p">,</span> <span class="s2">"KILOBYTES"</span><span class="p">)):</span> -</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="n">units</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="n">units</span><span class="p">)</span> -</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> -</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="k">def</span> <span class="nf">_parse_blockcompression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BLOCKCOMPRESSION"</span><span class="p">)</span> -</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a> <span class="n">always</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> -</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="n">manual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MANUAL"</span><span class="p">)</span> -</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> <span class="n">never</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NEVER"</span><span class="p">)</span> -</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> -</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AUTOTEMP"</span><span class="p">):</span> -</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> -</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> -</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">,</span> -</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> <span class="n">always</span><span class="o">=</span><span class="n">always</span><span class="p">,</span> -</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> <span class="n">manual</span><span class="o">=</span><span class="n">manual</span><span class="p">,</span> -</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="n">never</span><span class="o">=</span><span class="n">never</span><span class="p">,</span> -</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="n">autotemp</span><span class="o">=</span><span class="n">autotemp</span><span class="p">,</span> -</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="p">)</span> -</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> -</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> <span class="k">def</span> <span class="nf">_parse_withisolatedloading</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> <span class="n">no</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONCURRENT"</span><span class="p">)</span> -</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ISOLATED"</span><span class="p">,</span> <span class="s2">"LOADING"</span><span class="p">)</span> -</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> <span class="n">for_all</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ALL"</span><span class="p">)</span> -</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> <span class="n">for_insert</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">)</span> -</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> <span class="n">for_none</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">)</span> -</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">,</span> -</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> -</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> <span class="n">concurrent</span><span class="o">=</span><span class="n">concurrent</span><span class="p">,</span> -</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a> <span class="n">for_all</span><span class="o">=</span><span class="n">for_all</span><span class="p">,</span> -</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="n">for_insert</span><span class="o">=</span><span class="n">for_insert</span><span class="p">,</span> -</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> <span class="n">for_none</span><span class="o">=</span><span class="n">for_none</span><span class="p">,</span> -</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> <span class="p">)</span> -</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> -</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> <span class="k">def</span> <span class="nf">_parse_locking</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"TABLE"</span> -</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">):</span> -</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"VIEW"</span> -</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">):</span> -</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ROW"</span> -</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">):</span> -</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"DATABASE"</span> -</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a> -</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"VIEW"</span><span class="p">):</span> -</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> -</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> -</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"FOR"</span> -</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"IN"</span> -</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> -</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">):</span> -</span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"ACCESS"</span> -</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXCL"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">)):</span> -</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"EXCLUSIVE"</span> -</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHARE"</span><span class="p">):</span> -</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"SHARE"</span> -</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"READ"</span><span class="p">):</span> -</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"READ"</span> -</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WRITE"</span><span class="p">):</span> -</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"WRITE"</span> -</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">):</span> -</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"CHECKSUM"</span> -</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a> -</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="n">override</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OVERRIDE"</span><span class="p">)</span> -</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a> -</span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">,</span> -</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a> <span class="n">for_or_in</span><span class="o">=</span><span class="n">for_or_in</span><span class="p">,</span> -</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a> <span class="n">lock_type</span><span class="o">=</span><span class="n">lock_type</span><span class="p">,</span> -</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a> <span class="n">override</span><span class="o">=</span><span class="n">override</span><span class="p">,</span> -</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a> <span class="p">)</span> -</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a> -</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a> <span class="k">def</span> <span class="nf">_parse_partition_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">):</span> -</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a> -</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">,</span> -</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()),</span> -</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> <span class="p">)</span> -</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a> -</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a> <span class="k">def</span> <span class="nf">_parse_distkey</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">))</span> -</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> -</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a> <span class="k">def</span> <span class="nf">_parse_create_like</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INCLUDING"</span><span class="p">,</span> <span class="s2">"EXCLUDING"</span><span class="p">)):</span> -</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a> <span class="n">id_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a> -</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">id_var</span><span class="p">:</span> -</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a> -</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> -</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a> <span class="n">value</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">id_var</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-1416"><a href="#L-1416"><span class="linenos">1416</span></a> <span class="p">)</span> -</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a> <span class="p">)</span> -</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="L-1230"><a href="#L-1230"><span class="linenos">1230</span></a> <span class="k">def</span> <span class="nf">_parse_afterjournal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1231"><a href="#L-1231"><span class="linenos">1231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">)</span> +</span><span id="L-1232"><a href="#L-1232"><span class="linenos">1232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> +</span><span id="L-1233"><a href="#L-1233"><span class="linenos">1233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"JOURNAL"</span><span class="p">)</span> +</span><span id="L-1234"><a href="#L-1234"><span class="linenos">1234</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AfterJournalProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="n">dual</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">)</span> +</span><span id="L-1235"><a href="#L-1235"><span class="linenos">1235</span></a> +</span><span id="L-1236"><a href="#L-1236"><span class="linenos">1236</span></a> <span class="k">def</span> <span class="nf">_parse_checksum</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1237"><a href="#L-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">)</span> +</span><span id="L-1238"><a href="#L-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1239"><a href="#L-1239"><span class="linenos">1239</span></a> +</span><span id="L-1240"><a href="#L-1240"><span class="linenos">1240</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1241"><a href="#L-1241"><span class="linenos">1241</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-1242"><a href="#L-1242"><span class="linenos">1242</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1243"><a href="#L-1243"><span class="linenos">1243</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> +</span><span id="L-1244"><a href="#L-1244"><span class="linenos">1244</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1245"><a href="#L-1245"><span class="linenos">1245</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">)</span> +</span><span id="L-1246"><a href="#L-1246"><span class="linenos">1246</span></a> +</span><span id="L-1247"><a href="#L-1247"><span class="linenos">1247</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1248"><a href="#L-1248"><span class="linenos">1248</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">,</span> +</span><span id="L-1249"><a href="#L-1249"><span class="linenos">1249</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> +</span><span id="L-1250"><a href="#L-1250"><span class="linenos">1250</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="L-1251"><a href="#L-1251"><span class="linenos">1251</span></a> <span class="p">)</span> +</span><span id="L-1252"><a href="#L-1252"><span class="linenos">1252</span></a> +</span><span id="L-1253"><a href="#L-1253"><span class="linenos">1253</span></a> <span class="k">def</span> <span class="nf">_parse_freespace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1254"><a href="#L-1254"><span class="linenos">1254</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FREESPACE"</span><span class="p">)</span> +</span><span id="L-1255"><a href="#L-1255"><span class="linenos">1255</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1256"><a href="#L-1256"><span class="linenos">1256</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1257"><a href="#L-1257"><span class="linenos">1257</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> +</span><span id="L-1258"><a href="#L-1258"><span class="linenos">1258</span></a> <span class="p">)</span> +</span><span id="L-1259"><a href="#L-1259"><span class="linenos">1259</span></a> +</span><span id="L-1260"><a href="#L-1260"><span class="linenos">1260</span></a> <span class="k">def</span> <span class="nf">_parse_mergeblockratio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1261"><a href="#L-1261"><span class="linenos">1261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MERGEBLOCKRATIO"</span><span class="p">)</span> +</span><span id="L-1262"><a href="#L-1262"><span class="linenos">1262</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> +</span><span id="L-1263"><a href="#L-1263"><span class="linenos">1263</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1264"><a href="#L-1264"><span class="linenos">1264</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> +</span><span id="L-1265"><a href="#L-1265"><span class="linenos">1265</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> +</span><span id="L-1266"><a href="#L-1266"><span class="linenos">1266</span></a> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">),</span> +</span><span id="L-1267"><a href="#L-1267"><span class="linenos">1267</span></a> <span class="p">)</span> +</span><span id="L-1268"><a href="#L-1268"><span class="linenos">1268</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1269"><a href="#L-1269"><span class="linenos">1269</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1270"><a href="#L-1270"><span class="linenos">1270</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> +</span><span id="L-1271"><a href="#L-1271"><span class="linenos">1271</span></a> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> +</span><span id="L-1272"><a href="#L-1272"><span class="linenos">1272</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="L-1273"><a href="#L-1273"><span class="linenos">1273</span></a> <span class="p">)</span> +</span><span id="L-1274"><a href="#L-1274"><span class="linenos">1274</span></a> +</span><span id="L-1275"><a href="#L-1275"><span class="linenos">1275</span></a> <span class="k">def</span> <span class="nf">_parse_datablocksize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1276"><a href="#L-1276"><span class="linenos">1276</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="L-1277"><a href="#L-1277"><span class="linenos">1277</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> +</span><span id="L-1278"><a href="#L-1278"><span class="linenos">1278</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1279"><a href="#L-1279"><span class="linenos">1279</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MIN"</span><span class="p">,</span> <span class="s2">"MINIMUM"</span><span class="p">)):</span> +</span><span id="L-1280"><a href="#L-1280"><span class="linenos">1280</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> +</span><span id="L-1281"><a href="#L-1281"><span class="linenos">1281</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1282"><a href="#L-1282"><span class="linenos">1282</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MAXIMUM"</span><span class="p">)):</span> +</span><span id="L-1283"><a href="#L-1283"><span class="linenos">1283</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> +</span><span id="L-1284"><a href="#L-1284"><span class="linenos">1284</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1285"><a href="#L-1285"><span class="linenos">1285</span></a> +</span><span id="L-1286"><a href="#L-1286"><span class="linenos">1286</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> +</span><span id="L-1287"><a href="#L-1287"><span class="linenos">1287</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1288"><a href="#L-1288"><span class="linenos">1288</span></a> <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-1289"><a href="#L-1289"><span class="linenos">1289</span></a> <span class="n">units</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1290"><a href="#L-1290"><span class="linenos">1290</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"BYTES"</span><span class="p">,</span> <span class="s2">"KBYTES"</span><span class="p">,</span> <span class="s2">"KILOBYTES"</span><span class="p">)):</span> +</span><span id="L-1291"><a href="#L-1291"><span class="linenos">1291</span></a> <span class="n">units</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-1292"><a href="#L-1292"><span class="linenos">1292</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="n">units</span><span class="p">)</span> +</span><span id="L-1293"><a href="#L-1293"><span class="linenos">1293</span></a> +</span><span id="L-1294"><a href="#L-1294"><span class="linenos">1294</span></a> <span class="k">def</span> <span class="nf">_parse_blockcompression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1295"><a href="#L-1295"><span class="linenos">1295</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BLOCKCOMPRESSION"</span><span class="p">)</span> +</span><span id="L-1296"><a href="#L-1296"><span class="linenos">1296</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1297"><a href="#L-1297"><span class="linenos">1297</span></a> <span class="n">always</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> +</span><span id="L-1298"><a href="#L-1298"><span class="linenos">1298</span></a> <span class="n">manual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MANUAL"</span><span class="p">)</span> +</span><span id="L-1299"><a href="#L-1299"><span class="linenos">1299</span></a> <span class="n">never</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NEVER"</span><span class="p">)</span> +</span><span id="L-1300"><a href="#L-1300"><span class="linenos">1300</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> +</span><span id="L-1301"><a href="#L-1301"><span class="linenos">1301</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1302"><a href="#L-1302"><span class="linenos">1302</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AUTOTEMP"</span><span class="p">):</span> +</span><span id="L-1303"><a href="#L-1303"><span class="linenos">1303</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="L-1304"><a href="#L-1304"><span class="linenos">1304</span></a> +</span><span id="L-1305"><a href="#L-1305"><span class="linenos">1305</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1306"><a href="#L-1306"><span class="linenos">1306</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">,</span> +</span><span id="L-1307"><a href="#L-1307"><span class="linenos">1307</span></a> <span class="n">always</span><span class="o">=</span><span class="n">always</span><span class="p">,</span> +</span><span id="L-1308"><a href="#L-1308"><span class="linenos">1308</span></a> <span class="n">manual</span><span class="o">=</span><span class="n">manual</span><span class="p">,</span> +</span><span id="L-1309"><a href="#L-1309"><span class="linenos">1309</span></a> <span class="n">never</span><span class="o">=</span><span class="n">never</span><span class="p">,</span> +</span><span id="L-1310"><a href="#L-1310"><span class="linenos">1310</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="L-1311"><a href="#L-1311"><span class="linenos">1311</span></a> <span class="n">autotemp</span><span class="o">=</span><span class="n">autotemp</span><span class="p">,</span> +</span><span id="L-1312"><a href="#L-1312"><span class="linenos">1312</span></a> <span class="p">)</span> +</span><span id="L-1313"><a href="#L-1313"><span class="linenos">1313</span></a> +</span><span id="L-1314"><a href="#L-1314"><span class="linenos">1314</span></a> <span class="k">def</span> <span class="nf">_parse_withisolatedloading</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1315"><a href="#L-1315"><span class="linenos">1315</span></a> <span class="n">no</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="L-1316"><a href="#L-1316"><span class="linenos">1316</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONCURRENT"</span><span class="p">)</span> +</span><span id="L-1317"><a href="#L-1317"><span class="linenos">1317</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ISOLATED"</span><span class="p">,</span> <span class="s2">"LOADING"</span><span class="p">)</span> +</span><span id="L-1318"><a href="#L-1318"><span class="linenos">1318</span></a> <span class="n">for_all</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ALL"</span><span class="p">)</span> +</span><span id="L-1319"><a href="#L-1319"><span class="linenos">1319</span></a> <span class="n">for_insert</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">)</span> +</span><span id="L-1320"><a href="#L-1320"><span class="linenos">1320</span></a> <span class="n">for_none</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">)</span> +</span><span id="L-1321"><a href="#L-1321"><span class="linenos">1321</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1322"><a href="#L-1322"><span class="linenos">1322</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">,</span> +</span><span id="L-1323"><a href="#L-1323"><span class="linenos">1323</span></a> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> +</span><span id="L-1324"><a href="#L-1324"><span class="linenos">1324</span></a> <span class="n">concurrent</span><span class="o">=</span><span class="n">concurrent</span><span class="p">,</span> +</span><span id="L-1325"><a href="#L-1325"><span class="linenos">1325</span></a> <span class="n">for_all</span><span class="o">=</span><span class="n">for_all</span><span class="p">,</span> +</span><span id="L-1326"><a href="#L-1326"><span class="linenos">1326</span></a> <span class="n">for_insert</span><span class="o">=</span><span class="n">for_insert</span><span class="p">,</span> +</span><span id="L-1327"><a href="#L-1327"><span class="linenos">1327</span></a> <span class="n">for_none</span><span class="o">=</span><span class="n">for_none</span><span class="p">,</span> +</span><span id="L-1328"><a href="#L-1328"><span class="linenos">1328</span></a> <span class="p">)</span> +</span><span id="L-1329"><a href="#L-1329"><span class="linenos">1329</span></a> +</span><span id="L-1330"><a href="#L-1330"><span class="linenos">1330</span></a> <span class="k">def</span> <span class="nf">_parse_locking</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1331"><a href="#L-1331"><span class="linenos">1331</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="L-1332"><a href="#L-1332"><span class="linenos">1332</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"TABLE"</span> +</span><span id="L-1333"><a href="#L-1333"><span class="linenos">1333</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">):</span> +</span><span id="L-1334"><a href="#L-1334"><span class="linenos">1334</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"VIEW"</span> +</span><span id="L-1335"><a href="#L-1335"><span class="linenos">1335</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">):</span> +</span><span id="L-1336"><a href="#L-1336"><span class="linenos">1336</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ROW"</span> +</span><span id="L-1337"><a href="#L-1337"><span class="linenos">1337</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">):</span> +</span><span id="L-1338"><a href="#L-1338"><span class="linenos">1338</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"DATABASE"</span> +</span><span id="L-1339"><a href="#L-1339"><span class="linenos">1339</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1340"><a href="#L-1340"><span class="linenos">1340</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1341"><a href="#L-1341"><span class="linenos">1341</span></a> +</span><span id="L-1342"><a href="#L-1342"><span class="linenos">1342</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"VIEW"</span><span class="p">):</span> +</span><span id="L-1343"><a href="#L-1343"><span class="linenos">1343</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> +</span><span id="L-1344"><a href="#L-1344"><span class="linenos">1344</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1345"><a href="#L-1345"><span class="linenos">1345</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1346"><a href="#L-1346"><span class="linenos">1346</span></a> +</span><span id="L-1347"><a href="#L-1347"><span class="linenos">1347</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="L-1348"><a href="#L-1348"><span class="linenos">1348</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"FOR"</span> +</span><span id="L-1349"><a href="#L-1349"><span class="linenos">1349</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="L-1350"><a href="#L-1350"><span class="linenos">1350</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"IN"</span> +</span><span id="L-1351"><a href="#L-1351"><span class="linenos">1351</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1352"><a href="#L-1352"><span class="linenos">1352</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1353"><a href="#L-1353"><span class="linenos">1353</span></a> +</span><span id="L-1354"><a href="#L-1354"><span class="linenos">1354</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">):</span> +</span><span id="L-1355"><a href="#L-1355"><span class="linenos">1355</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"ACCESS"</span> +</span><span id="L-1356"><a href="#L-1356"><span class="linenos">1356</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXCL"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">)):</span> +</span><span id="L-1357"><a href="#L-1357"><span class="linenos">1357</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"EXCLUSIVE"</span> +</span><span id="L-1358"><a href="#L-1358"><span class="linenos">1358</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHARE"</span><span class="p">):</span> +</span><span id="L-1359"><a href="#L-1359"><span class="linenos">1359</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"SHARE"</span> +</span><span id="L-1360"><a href="#L-1360"><span class="linenos">1360</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"READ"</span><span class="p">):</span> +</span><span id="L-1361"><a href="#L-1361"><span class="linenos">1361</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"READ"</span> +</span><span id="L-1362"><a href="#L-1362"><span class="linenos">1362</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WRITE"</span><span class="p">):</span> +</span><span id="L-1363"><a href="#L-1363"><span class="linenos">1363</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"WRITE"</span> +</span><span id="L-1364"><a href="#L-1364"><span class="linenos">1364</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">):</span> +</span><span id="L-1365"><a href="#L-1365"><span class="linenos">1365</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"CHECKSUM"</span> +</span><span id="L-1366"><a href="#L-1366"><span class="linenos">1366</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1367"><a href="#L-1367"><span class="linenos">1367</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1368"><a href="#L-1368"><span class="linenos">1368</span></a> +</span><span id="L-1369"><a href="#L-1369"><span class="linenos">1369</span></a> <span class="n">override</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OVERRIDE"</span><span class="p">)</span> +</span><span id="L-1370"><a href="#L-1370"><span class="linenos">1370</span></a> +</span><span id="L-1371"><a href="#L-1371"><span class="linenos">1371</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1372"><a href="#L-1372"><span class="linenos">1372</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">,</span> +</span><span id="L-1373"><a href="#L-1373"><span class="linenos">1373</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1374"><a href="#L-1374"><span class="linenos">1374</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-1375"><a href="#L-1375"><span class="linenos">1375</span></a> <span class="n">for_or_in</span><span class="o">=</span><span class="n">for_or_in</span><span class="p">,</span> +</span><span id="L-1376"><a href="#L-1376"><span class="linenos">1376</span></a> <span class="n">lock_type</span><span class="o">=</span><span class="n">lock_type</span><span class="p">,</span> +</span><span id="L-1377"><a href="#L-1377"><span class="linenos">1377</span></a> <span class="n">override</span><span class="o">=</span><span class="n">override</span><span class="p">,</span> +</span><span id="L-1378"><a href="#L-1378"><span class="linenos">1378</span></a> <span class="p">)</span> +</span><span id="L-1379"><a href="#L-1379"><span class="linenos">1379</span></a> +</span><span id="L-1380"><a href="#L-1380"><span class="linenos">1380</span></a> <span class="k">def</span> <span class="nf">_parse_partition_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-1381"><a href="#L-1381"><span class="linenos">1381</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">):</span> +</span><span id="L-1382"><a href="#L-1382"><span class="linenos">1382</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-1383"><a href="#L-1383"><span class="linenos">1383</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="L-1384"><a href="#L-1384"><span class="linenos">1384</span></a> +</span><span id="L-1385"><a href="#L-1385"><span class="linenos">1385</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1386"><a href="#L-1386"><span class="linenos">1386</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1387"><a href="#L-1387"><span class="linenos">1387</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1388"><a href="#L-1388"><span class="linenos">1388</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">,</span> +</span><span id="L-1389"><a href="#L-1389"><span class="linenos">1389</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()),</span> +</span><span id="L-1390"><a href="#L-1390"><span class="linenos">1390</span></a> <span class="p">)</span> +</span><span id="L-1391"><a href="#L-1391"><span class="linenos">1391</span></a> +</span><span id="L-1392"><a href="#L-1392"><span class="linenos">1392</span></a> <span class="k">def</span> <span class="nf">_parse_withdata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1393"><a href="#L-1393"><span class="linenos">1393</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> +</span><span id="L-1394"><a href="#L-1394"><span class="linenos">1394</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1395"><a href="#L-1395"><span class="linenos">1395</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> +</span><span id="L-1396"><a href="#L-1396"><span class="linenos">1396</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-1397"><a href="#L-1397"><span class="linenos">1397</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1398"><a href="#L-1398"><span class="linenos">1398</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1399"><a href="#L-1399"><span class="linenos">1399</span></a> +</span><span id="L-1400"><a href="#L-1400"><span class="linenos">1400</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">statistics</span><span class="o">=</span><span class="n">statistics</span><span class="p">)</span> +</span><span id="L-1401"><a href="#L-1401"><span class="linenos">1401</span></a> +</span><span id="L-1402"><a href="#L-1402"><span class="linenos">1402</span></a> <span class="k">def</span> <span class="nf">_parse_noprimaryindex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1403"><a href="#L-1403"><span class="linenos">1403</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">)</span> +</span><span id="L-1404"><a href="#L-1404"><span class="linenos">1404</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</span><span class="p">()</span> +</span><span id="L-1405"><a href="#L-1405"><span class="linenos">1405</span></a> +</span><span id="L-1406"><a href="#L-1406"><span class="linenos">1406</span></a> <span class="k">def</span> <span class="nf">_parse_oncommit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1407"><a href="#L-1407"><span class="linenos">1407</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"PRESERVE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">)</span> +</span><span id="L-1408"><a href="#L-1408"><span class="linenos">1408</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">()</span> +</span><span id="L-1409"><a href="#L-1409"><span class="linenos">1409</span></a> +</span><span id="L-1410"><a href="#L-1410"><span class="linenos">1410</span></a> <span class="k">def</span> <span class="nf">_parse_distkey</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1411"><a href="#L-1411"><span class="linenos">1411</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">))</span> +</span><span id="L-1412"><a href="#L-1412"><span class="linenos">1412</span></a> +</span><span id="L-1413"><a href="#L-1413"><span class="linenos">1413</span></a> <span class="k">def</span> <span class="nf">_parse_create_like</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1414"><a href="#L-1414"><span class="linenos">1414</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1415"><a href="#L-1415"><span class="linenos">1415</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1416"><a href="#L-1416"><span class="linenos">1416</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INCLUDING"</span><span class="p">,</span> <span class="s2">"EXCLUDING"</span><span class="p">)):</span> +</span><span id="L-1417"><a href="#L-1417"><span class="linenos">1417</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-1418"><a href="#L-1418"><span class="linenos">1418</span></a> <span class="n">id_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> </span><span id="L-1419"><a href="#L-1419"><span class="linenos">1419</span></a> -</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a> <span class="k">def</span> <span class="nf">_parse_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> -</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a> <span class="p">)</span> -</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a> -</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a> <span class="k">def</span> <span class="nf">_parse_character_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1428"><a href="#L-1428"><span class="linenos">1428</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> -</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> <span class="p">)</span> -</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a> -</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> <span class="k">def</span> <span class="nf">_parse_returns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="n">is_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> -</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a> <span class="k">if</span> <span class="n">is_table</span><span class="p">:</span> -</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> -</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> <span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">,</span> -</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">),</span> -</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="p">)</span> -</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> -</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">))</span> -</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a> -</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">)</span> -</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a> -</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a> <span class="k">def</span> <span class="nf">_parse_describe</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a> -</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a> -</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a> <span class="k">def</span> <span class="nf">_parse_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> -</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">)</span> +</span><span id="L-1420"><a href="#L-1420"><span class="linenos">1420</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">id_var</span><span class="p">:</span> +</span><span id="L-1421"><a href="#L-1421"><span class="linenos">1421</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1422"><a href="#L-1422"><span class="linenos">1422</span></a> +</span><span id="L-1423"><a href="#L-1423"><span class="linenos">1423</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-1424"><a href="#L-1424"><span class="linenos">1424</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1425"><a href="#L-1425"><span class="linenos">1425</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> +</span><span id="L-1426"><a href="#L-1426"><span class="linenos">1426</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1427"><a href="#L-1427"><span class="linenos">1427</span></a> <span class="n">value</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">id_var</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-1428"><a href="#L-1428"><span class="linenos">1428</span></a> <span class="p">)</span> +</span><span id="L-1429"><a href="#L-1429"><span class="linenos">1429</span></a> <span class="p">)</span> +</span><span id="L-1430"><a href="#L-1430"><span class="linenos">1430</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="L-1431"><a href="#L-1431"><span class="linenos">1431</span></a> +</span><span id="L-1432"><a href="#L-1432"><span class="linenos">1432</span></a> <span class="k">def</span> <span class="nf">_parse_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1433"><a href="#L-1433"><span class="linenos">1433</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1434"><a href="#L-1434"><span class="linenos">1434</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> +</span><span id="L-1435"><a href="#L-1435"><span class="linenos">1435</span></a> <span class="p">)</span> +</span><span id="L-1436"><a href="#L-1436"><span class="linenos">1436</span></a> +</span><span id="L-1437"><a href="#L-1437"><span class="linenos">1437</span></a> <span class="k">def</span> <span class="nf">_parse_character_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1438"><a href="#L-1438"><span class="linenos">1438</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1439"><a href="#L-1439"><span class="linenos">1439</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1440"><a href="#L-1440"><span class="linenos">1440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> +</span><span id="L-1441"><a href="#L-1441"><span class="linenos">1441</span></a> <span class="p">)</span> +</span><span id="L-1442"><a href="#L-1442"><span class="linenos">1442</span></a> +</span><span id="L-1443"><a href="#L-1443"><span class="linenos">1443</span></a> <span class="k">def</span> <span class="nf">_parse_returns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1444"><a href="#L-1444"><span class="linenos">1444</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-1445"><a href="#L-1445"><span class="linenos">1445</span></a> <span class="n">is_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-1446"><a href="#L-1446"><span class="linenos">1446</span></a> +</span><span id="L-1447"><a href="#L-1447"><span class="linenos">1447</span></a> <span class="k">if</span> <span class="n">is_table</span><span class="p">:</span> +</span><span id="L-1448"><a href="#L-1448"><span class="linenos">1448</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="L-1449"><a href="#L-1449"><span class="linenos">1449</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1450"><a href="#L-1450"><span class="linenos">1450</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> +</span><span id="L-1451"><a href="#L-1451"><span class="linenos">1451</span></a> <span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">,</span> +</span><span id="L-1452"><a href="#L-1452"><span class="linenos">1452</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">),</span> +</span><span id="L-1453"><a href="#L-1453"><span class="linenos">1453</span></a> <span class="p">)</span> +</span><span id="L-1454"><a href="#L-1454"><span class="linenos">1454</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="L-1455"><a href="#L-1455"><span class="linenos">1455</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> +</span><span id="L-1456"><a href="#L-1456"><span class="linenos">1456</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1457"><a href="#L-1457"><span class="linenos">1457</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">))</span> +</span><span id="L-1458"><a href="#L-1458"><span class="linenos">1458</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1459"><a href="#L-1459"><span class="linenos">1459</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> </span><span id="L-1460"><a href="#L-1460"><span class="linenos">1460</span></a> -</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-1461"><a href="#L-1461"><span class="linenos">1461</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">)</span> </span><span id="L-1462"><a href="#L-1462"><span class="linenos">1462</span></a> -</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DIRECTORY"</span><span class="p">):</span> -</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Directory</span><span class="p">,</span> -</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> -</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> -</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a> <span class="n">row_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">(</span><span class="n">match_row</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a> <span class="p">)</span> -</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">):</span> -</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">INSERT_ALTERNATIVES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a> -</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1463"><a href="#L-1463"><span class="linenos">1463</span></a> <span class="k">def</span> <span class="nf">_parse_temporary</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">global_</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1464"><a href="#L-1464"><span class="linenos">1464</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> <span class="c1"># in case calling from "GLOBAL"</span> +</span><span id="L-1465"><a href="#L-1465"><span class="linenos">1465</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">,</span> <span class="n">global_</span><span class="o">=</span><span class="n">global_</span><span class="p">)</span> +</span><span id="L-1466"><a href="#L-1466"><span class="linenos">1466</span></a> +</span><span id="L-1467"><a href="#L-1467"><span class="linenos">1467</span></a> <span class="k">def</span> <span class="nf">_parse_describe</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1468"><a href="#L-1468"><span class="linenos">1468</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-1469"><a href="#L-1469"><span class="linenos">1469</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="L-1470"><a href="#L-1470"><span class="linenos">1470</span></a> +</span><span id="L-1471"><a href="#L-1471"><span class="linenos">1471</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="L-1472"><a href="#L-1472"><span class="linenos">1472</span></a> +</span><span id="L-1473"><a href="#L-1473"><span class="linenos">1473</span></a> <span class="k">def</span> <span class="nf">_parse_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1474"><a href="#L-1474"><span class="linenos">1474</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> +</span><span id="L-1475"><a href="#L-1475"><span class="linenos">1475</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">)</span> +</span><span id="L-1476"><a href="#L-1476"><span class="linenos">1476</span></a> +</span><span id="L-1477"><a href="#L-1477"><span class="linenos">1477</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> </span><span id="L-1478"><a href="#L-1478"><span class="linenos">1478</span></a> -</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> -</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> -</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> -</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">(),</span> -</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> -</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> <span class="n">alternative</span><span class="o">=</span><span class="n">alternative</span><span class="p">,</span> -</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="p">)</span> -</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> -</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="k">def</span> <span class="nf">_parse_row</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">()</span> -</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> -</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a> <span class="k">def</span> <span class="nf">_parse_row_format</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match_row</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> <span class="k">if</span> <span class="n">match_row</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> -</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> -</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> -</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELIMITED"</span><span class="p">)</span> -</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a> -</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-1479"><a href="#L-1479"><span class="linenos">1479</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1480"><a href="#L-1480"><span class="linenos">1480</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DIRECTORY"</span><span class="p">):</span> +</span><span id="L-1481"><a href="#L-1481"><span class="linenos">1481</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1482"><a href="#L-1482"><span class="linenos">1482</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Directory</span><span class="p">,</span> +</span><span id="L-1483"><a href="#L-1483"><span class="linenos">1483</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> +</span><span id="L-1484"><a href="#L-1484"><span class="linenos">1484</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> +</span><span id="L-1485"><a href="#L-1485"><span class="linenos">1485</span></a> <span class="n">row_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">(</span><span class="n">match_row</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-1486"><a href="#L-1486"><span class="linenos">1486</span></a> <span class="p">)</span> +</span><span id="L-1487"><a href="#L-1487"><span class="linenos">1487</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1488"><a href="#L-1488"><span class="linenos">1488</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">):</span> +</span><span id="L-1489"><a href="#L-1489"><span class="linenos">1489</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">INSERT_ALTERNATIVES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-1490"><a href="#L-1490"><span class="linenos">1490</span></a> +</span><span id="L-1491"><a href="#L-1491"><span class="linenos">1491</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="L-1492"><a href="#L-1492"><span class="linenos">1492</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-1493"><a href="#L-1493"><span class="linenos">1493</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1494"><a href="#L-1494"><span class="linenos">1494</span></a> +</span><span id="L-1495"><a href="#L-1495"><span class="linenos">1495</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1496"><a href="#L-1496"><span class="linenos">1496</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> +</span><span id="L-1497"><a href="#L-1497"><span class="linenos">1497</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1498"><a href="#L-1498"><span class="linenos">1498</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> +</span><span id="L-1499"><a href="#L-1499"><span class="linenos">1499</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> +</span><span id="L-1500"><a href="#L-1500"><span class="linenos">1500</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">(),</span> +</span><span id="L-1501"><a href="#L-1501"><span class="linenos">1501</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> +</span><span id="L-1502"><a href="#L-1502"><span class="linenos">1502</span></a> <span class="n">alternative</span><span class="o">=</span><span class="n">alternative</span><span class="p">,</span> +</span><span id="L-1503"><a href="#L-1503"><span class="linenos">1503</span></a> <span class="p">)</span> </span><span id="L-1504"><a href="#L-1504"><span class="linenos">1504</span></a> -</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fields"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ESCAPED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"escaped"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLLECTION"</span><span class="p">,</span> <span class="s2">"ITEMS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"collection_items"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="s2">"KEYS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"map_keys"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LINES"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"lines"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"DEFINED"</span><span class="p">,</span> <span class="s2">"AS"</span><span class="p">):</span> -</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"null"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> -</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a> -</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> <span class="k">def</span> <span class="nf">_parse_load_data</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">)</span> -</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPATH"</span><span class="p">)</span> -</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> -</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> -</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span><span class="p">,</span> -</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> -</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> -</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> <span class="n">inpath</span><span class="o">=</span><span class="n">inpath</span><span class="p">,</span> -</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> -</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a> <span class="n">input_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> <span class="n">serde</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> <span class="p">)</span> -</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a> -</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> <span class="k">def</span> <span class="nf">_parse_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a> -</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> -</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()),</span> -</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> <span class="p">)</span> -</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> -</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> <span class="k">def</span> <span class="nf">_parse_update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> -</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UPDATE_ALIAS_TOKENS</span><span class="p">),</span> -</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> -</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(),</span> -</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a> <span class="p">},</span> -</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> <span class="p">)</span> -</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> -</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a> <span class="k">def</span> <span class="nf">_parse_uncache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting TABLE after UNCACHE"</span><span class="p">)</span> -</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> -</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">,</span> -</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> -</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a> <span class="p">)</span> -</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</span></a> -</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> <span class="k">def</span> <span class="nf">_parse_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">)</span> -</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1505"><a href="#L-1505"><span class="linenos">1505</span></a> <span class="k">def</span> <span class="nf">_parse_row</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1506"><a href="#L-1506"><span class="linenos">1506</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="L-1507"><a href="#L-1507"><span class="linenos">1507</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1508"><a href="#L-1508"><span class="linenos">1508</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">()</span> +</span><span id="L-1509"><a href="#L-1509"><span class="linenos">1509</span></a> +</span><span id="L-1510"><a href="#L-1510"><span class="linenos">1510</span></a> <span class="k">def</span> <span class="nf">_parse_row_format</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match_row</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1511"><a href="#L-1511"><span class="linenos">1511</span></a> <span class="k">if</span> <span class="n">match_row</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="L-1512"><a href="#L-1512"><span class="linenos">1512</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1513"><a href="#L-1513"><span class="linenos">1513</span></a> +</span><span id="L-1514"><a href="#L-1514"><span class="linenos">1514</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> +</span><span id="L-1515"><a href="#L-1515"><span class="linenos">1515</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="L-1516"><a href="#L-1516"><span class="linenos">1516</span></a> +</span><span id="L-1517"><a href="#L-1517"><span class="linenos">1517</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELIMITED"</span><span class="p">)</span> +</span><span id="L-1518"><a href="#L-1518"><span class="linenos">1518</span></a> +</span><span id="L-1519"><a href="#L-1519"><span class="linenos">1519</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-1520"><a href="#L-1520"><span class="linenos">1520</span></a> +</span><span id="L-1521"><a href="#L-1521"><span class="linenos">1521</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-1522"><a href="#L-1522"><span class="linenos">1522</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fields"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1523"><a href="#L-1523"><span class="linenos">1523</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ESCAPED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-1524"><a href="#L-1524"><span class="linenos">1524</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"escaped"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1525"><a href="#L-1525"><span class="linenos">1525</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLLECTION"</span><span class="p">,</span> <span class="s2">"ITEMS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-1526"><a href="#L-1526"><span class="linenos">1526</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"collection_items"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1527"><a href="#L-1527"><span class="linenos">1527</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="s2">"KEYS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-1528"><a href="#L-1528"><span class="linenos">1528</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"map_keys"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1529"><a href="#L-1529"><span class="linenos">1529</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LINES"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-1530"><a href="#L-1530"><span class="linenos">1530</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"lines"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1531"><a href="#L-1531"><span class="linenos">1531</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"DEFINED"</span><span class="p">,</span> <span class="s2">"AS"</span><span class="p">):</span> +</span><span id="L-1532"><a href="#L-1532"><span class="linenos">1532</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"null"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1533"><a href="#L-1533"><span class="linenos">1533</span></a> +</span><span id="L-1534"><a href="#L-1534"><span class="linenos">1534</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-1535"><a href="#L-1535"><span class="linenos">1535</span></a> +</span><span id="L-1536"><a href="#L-1536"><span class="linenos">1536</span></a> <span class="k">def</span> <span class="nf">_parse_load_data</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1537"><a href="#L-1537"><span class="linenos">1537</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">)</span> +</span><span id="L-1538"><a href="#L-1538"><span class="linenos">1538</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPATH"</span><span class="p">)</span> +</span><span id="L-1539"><a href="#L-1539"><span class="linenos">1539</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1540"><a href="#L-1540"><span class="linenos">1540</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> +</span><span id="L-1541"><a href="#L-1541"><span class="linenos">1541</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-1542"><a href="#L-1542"><span class="linenos">1542</span></a> +</span><span id="L-1543"><a href="#L-1543"><span class="linenos">1543</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1544"><a href="#L-1544"><span class="linenos">1544</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span><span class="p">,</span> +</span><span id="L-1545"><a href="#L-1545"><span class="linenos">1545</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-1546"><a href="#L-1546"><span class="linenos">1546</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> +</span><span id="L-1547"><a href="#L-1547"><span class="linenos">1547</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> +</span><span id="L-1548"><a href="#L-1548"><span class="linenos">1548</span></a> <span class="n">inpath</span><span class="o">=</span><span class="n">inpath</span><span class="p">,</span> +</span><span id="L-1549"><a href="#L-1549"><span class="linenos">1549</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> +</span><span id="L-1550"><a href="#L-1550"><span class="linenos">1550</span></a> <span class="n">input_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="L-1551"><a href="#L-1551"><span class="linenos">1551</span></a> <span class="n">serde</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="L-1552"><a href="#L-1552"><span class="linenos">1552</span></a> <span class="p">)</span> +</span><span id="L-1553"><a href="#L-1553"><span class="linenos">1553</span></a> +</span><span id="L-1554"><a href="#L-1554"><span class="linenos">1554</span></a> <span class="k">def</span> <span class="nf">_parse_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1555"><a href="#L-1555"><span class="linenos">1555</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="L-1556"><a href="#L-1556"><span class="linenos">1556</span></a> +</span><span id="L-1557"><a href="#L-1557"><span class="linenos">1557</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1558"><a href="#L-1558"><span class="linenos">1558</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> +</span><span id="L-1559"><a href="#L-1559"><span class="linenos">1559</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-1560"><a href="#L-1560"><span class="linenos">1560</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()),</span> +</span><span id="L-1561"><a href="#L-1561"><span class="linenos">1561</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="L-1562"><a href="#L-1562"><span class="linenos">1562</span></a> <span class="p">)</span> +</span><span id="L-1563"><a href="#L-1563"><span class="linenos">1563</span></a> +</span><span id="L-1564"><a href="#L-1564"><span class="linenos">1564</span></a> <span class="k">def</span> <span class="nf">_parse_update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1565"><a href="#L-1565"><span class="linenos">1565</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1566"><a href="#L-1566"><span class="linenos">1566</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> +</span><span id="L-1567"><a href="#L-1567"><span class="linenos">1567</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="L-1568"><a href="#L-1568"><span class="linenos">1568</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UPDATE_ALIAS_TOKENS</span><span class="p">),</span> +</span><span id="L-1569"><a href="#L-1569"><span class="linenos">1569</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> +</span><span id="L-1570"><a href="#L-1570"><span class="linenos">1570</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(),</span> +</span><span id="L-1571"><a href="#L-1571"><span class="linenos">1571</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="L-1572"><a href="#L-1572"><span class="linenos">1572</span></a> <span class="p">},</span> +</span><span id="L-1573"><a href="#L-1573"><span class="linenos">1573</span></a> <span class="p">)</span> </span><span id="L-1574"><a href="#L-1574"><span class="linenos">1574</span></a> -</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">):</span> -</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a> <span class="n">k</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">]</span> -</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a> -</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> -</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> <span class="n">lazy</span><span class="o">=</span><span class="n">lazy</span><span class="p">,</span> -</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> -</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> <span class="p">)</span> -</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> -</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> <span class="k">def</span> <span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span> -</span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a> -</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a> <span class="p">)</span> -</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a> -</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a> <span class="k">def</span> <span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a> -</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a> <span class="c1"># In presto we can have VALUES 1, 2 which results in 1 column & 2 rows.</span> -</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a> <span class="c1"># Source: https://prestodb.io/docs/current/sql/values.html</span> -</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()])</span> -</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a> -</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> <span class="k">def</span> <span class="nf">_parse_select</span><span class="p">(</span> -</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nested</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">()</span> -</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="k">if</span> <span class="n">cte</span><span class="p">:</span> -</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> -</span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a> -</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse any statement following CTE"</span><span class="p">)</span> -</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a> <span class="k">return</span> <span class="n">cte</span> -</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a> -</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a> <span class="k">if</span> <span class="s2">"with"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> -</span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">cte</span><span class="p">)</span> -</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> does not support CTE"</span><span class="p">)</span> -</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">cte</span> -</span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> -</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a> -</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> -</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a> <span class="n">all_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> -</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> +</span><span id="L-1575"><a href="#L-1575"><span class="linenos">1575</span></a> <span class="k">def</span> <span class="nf">_parse_uncache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1576"><a href="#L-1576"><span class="linenos">1576</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="L-1577"><a href="#L-1577"><span class="linenos">1577</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting TABLE after UNCACHE"</span><span class="p">)</span> +</span><span id="L-1578"><a href="#L-1578"><span class="linenos">1578</span></a> +</span><span id="L-1579"><a href="#L-1579"><span class="linenos">1579</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1580"><a href="#L-1580"><span class="linenos">1580</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">,</span> +</span><span id="L-1581"><a href="#L-1581"><span class="linenos">1581</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> +</span><span id="L-1582"><a href="#L-1582"><span class="linenos">1582</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-1583"><a href="#L-1583"><span class="linenos">1583</span></a> <span class="p">)</span> +</span><span id="L-1584"><a href="#L-1584"><span class="linenos">1584</span></a> +</span><span id="L-1585"><a href="#L-1585"><span class="linenos">1585</span></a> <span class="k">def</span> <span class="nf">_parse_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1586"><a href="#L-1586"><span class="linenos">1586</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">)</span> +</span><span id="L-1587"><a href="#L-1587"><span class="linenos">1587</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-1588"><a href="#L-1588"><span class="linenos">1588</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1589"><a href="#L-1589"><span class="linenos">1589</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1590"><a href="#L-1590"><span class="linenos">1590</span></a> +</span><span id="L-1591"><a href="#L-1591"><span class="linenos">1591</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">):</span> +</span><span id="L-1592"><a href="#L-1592"><span class="linenos">1592</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-1593"><a href="#L-1593"><span class="linenos">1593</span></a> <span class="n">k</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1594"><a href="#L-1594"><span class="linenos">1594</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="L-1595"><a href="#L-1595"><span class="linenos">1595</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-1596"><a href="#L-1596"><span class="linenos">1596</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">]</span> +</span><span id="L-1597"><a href="#L-1597"><span class="linenos">1597</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-1598"><a href="#L-1598"><span class="linenos">1598</span></a> +</span><span id="L-1599"><a href="#L-1599"><span class="linenos">1599</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1600"><a href="#L-1600"><span class="linenos">1600</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1601"><a href="#L-1601"><span class="linenos">1601</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> +</span><span id="L-1602"><a href="#L-1602"><span class="linenos">1602</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="L-1603"><a href="#L-1603"><span class="linenos">1603</span></a> <span class="n">lazy</span><span class="o">=</span><span class="n">lazy</span><span class="p">,</span> +</span><span id="L-1604"><a href="#L-1604"><span class="linenos">1604</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> +</span><span id="L-1605"><a href="#L-1605"><span class="linenos">1605</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="L-1606"><a href="#L-1606"><span class="linenos">1606</span></a> <span class="p">)</span> +</span><span id="L-1607"><a href="#L-1607"><span class="linenos">1607</span></a> +</span><span id="L-1608"><a href="#L-1608"><span class="linenos">1608</span></a> <span class="k">def</span> <span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1609"><a href="#L-1609"><span class="linenos">1609</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span> +</span><span id="L-1610"><a href="#L-1610"><span class="linenos">1610</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1611"><a href="#L-1611"><span class="linenos">1611</span></a> +</span><span id="L-1612"><a href="#L-1612"><span class="linenos">1612</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1613"><a href="#L-1613"><span class="linenos">1613</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-1614"><a href="#L-1614"><span class="linenos">1614</span></a> <span class="p">)</span> +</span><span id="L-1615"><a href="#L-1615"><span class="linenos">1615</span></a> +</span><span id="L-1616"><a href="#L-1616"><span class="linenos">1616</span></a> <span class="k">def</span> <span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1617"><a href="#L-1617"><span class="linenos">1617</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-1618"><a href="#L-1618"><span class="linenos">1618</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-1619"><a href="#L-1619"><span class="linenos">1619</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-1620"><a href="#L-1620"><span class="linenos">1620</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-1621"><a href="#L-1621"><span class="linenos">1621</span></a> +</span><span id="L-1622"><a href="#L-1622"><span class="linenos">1622</span></a> <span class="c1"># In presto we can have VALUES 1, 2 which results in 1 column & 2 rows.</span> +</span><span id="L-1623"><a href="#L-1623"><span class="linenos">1623</span></a> <span class="c1"># Source: https://prestodb.io/docs/current/sql/values.html</span> +</span><span id="L-1624"><a href="#L-1624"><span class="linenos">1624</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()])</span> +</span><span id="L-1625"><a href="#L-1625"><span class="linenos">1625</span></a> +</span><span id="L-1626"><a href="#L-1626"><span class="linenos">1626</span></a> <span class="k">def</span> <span class="nf">_parse_select</span><span class="p">(</span> +</span><span id="L-1627"><a href="#L-1627"><span class="linenos">1627</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nested</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1628"><a href="#L-1628"><span class="linenos">1628</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1629"><a href="#L-1629"><span class="linenos">1629</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">()</span> +</span><span id="L-1630"><a href="#L-1630"><span class="linenos">1630</span></a> <span class="k">if</span> <span class="n">cte</span><span class="p">:</span> +</span><span id="L-1631"><a href="#L-1631"><span class="linenos">1631</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> </span><span id="L-1632"><a href="#L-1632"><span class="linenos">1632</span></a> -</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a> <span class="k">if</span> <span class="n">distinct</span><span class="p">:</span> -</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> -</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a> <span class="n">on</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a> <span class="p">)</span> -</span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a> -</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a> <span class="k">if</span> <span class="n">all_</span> <span class="ow">and</span> <span class="n">distinct</span><span class="p">:</span> -</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ALL and DISTINCT after SELECT"</span><span class="p">)</span> -</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a> -</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="L-1633"><a href="#L-1633"><span class="linenos">1633</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-1634"><a href="#L-1634"><span class="linenos">1634</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse any statement following CTE"</span><span class="p">)</span> +</span><span id="L-1635"><a href="#L-1635"><span class="linenos">1635</span></a> <span class="k">return</span> <span class="n">cte</span> +</span><span id="L-1636"><a href="#L-1636"><span class="linenos">1636</span></a> +</span><span id="L-1637"><a href="#L-1637"><span class="linenos">1637</span></a> <span class="k">if</span> <span class="s2">"with"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> +</span><span id="L-1638"><a href="#L-1638"><span class="linenos">1638</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">cte</span><span class="p">)</span> +</span><span id="L-1639"><a href="#L-1639"><span class="linenos">1639</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1640"><a href="#L-1640"><span class="linenos">1640</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> does not support CTE"</span><span class="p">)</span> +</span><span id="L-1641"><a href="#L-1641"><span class="linenos">1641</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">cte</span> +</span><span id="L-1642"><a href="#L-1642"><span class="linenos">1642</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> +</span><span id="L-1643"><a href="#L-1643"><span class="linenos">1643</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> </span><span id="L-1644"><a href="#L-1644"><span class="linenos">1644</span></a> -</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> -</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> -</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> -</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a> <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> -</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> <span class="p">)</span> -</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> -</span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a> <span class="n">into</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_into</span><span class="p">()</span> -</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> -</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"into"</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> +</span><span id="L-1645"><a href="#L-1645"><span class="linenos">1645</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> +</span><span id="L-1646"><a href="#L-1646"><span class="linenos">1646</span></a> <span class="n">all_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> +</span><span id="L-1647"><a href="#L-1647"><span class="linenos">1647</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> +</span><span id="L-1648"><a href="#L-1648"><span class="linenos">1648</span></a> +</span><span id="L-1649"><a href="#L-1649"><span class="linenos">1649</span></a> <span class="k">if</span> <span class="n">distinct</span><span class="p">:</span> +</span><span id="L-1650"><a href="#L-1650"><span class="linenos">1650</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1651"><a href="#L-1651"><span class="linenos">1651</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> +</span><span id="L-1652"><a href="#L-1652"><span class="linenos">1652</span></a> <span class="n">on</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-1653"><a href="#L-1653"><span class="linenos">1653</span></a> <span class="p">)</span> +</span><span id="L-1654"><a href="#L-1654"><span class="linenos">1654</span></a> +</span><span id="L-1655"><a href="#L-1655"><span class="linenos">1655</span></a> <span class="k">if</span> <span class="n">all_</span> <span class="ow">and</span> <span class="n">distinct</span><span class="p">:</span> +</span><span id="L-1656"><a href="#L-1656"><span class="linenos">1656</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ALL and DISTINCT after SELECT"</span><span class="p">)</span> </span><span id="L-1657"><a href="#L-1657"><span class="linenos">1657</span></a> -</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> -</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"from"</span><span class="p">,</span> <span class="n">from_</span><span class="p">)</span> -</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a> -</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> <span class="k">elif</span> <span class="p">(</span><span class="n">table</span> <span class="ow">or</span> <span class="n">nested</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-1666"><a href="#L-1666"><span class="linenos">1666</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a> -</span><span id="L-1669"><a href="#L-1669"><span class="linenos">1669</span></a> <span class="c1"># early return so that subquery unions aren't parsed again</span> -</span><span id="L-1670"><a href="#L-1670"><span class="linenos">1670</span></a> <span class="c1"># SELECT * FROM (SELECT 1) UNION ALL SELECT 1</span> -</span><span id="L-1671"><a href="#L-1671"><span class="linenos">1671</span></a> <span class="c1"># Union ALL should be a property of the top select node, not the subquery</span> -</span><span id="L-1672"><a href="#L-1672"><span class="linenos">1672</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="n">parse_subquery_alias</span><span class="p">)</span> -</span><span id="L-1673"><a href="#L-1673"><span class="linenos">1673</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">):</span> -</span><span id="L-1674"><a href="#L-1674"><span class="linenos">1674</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1675"><a href="#L-1675"><span class="linenos">1675</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> -</span><span id="L-1676"><a href="#L-1676"><span class="linenos">1676</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">),</span> -</span><span id="L-1677"><a href="#L-1677"><span class="linenos">1677</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> -</span><span id="L-1678"><a href="#L-1678"><span class="linenos">1678</span></a> <span class="p">)</span> -</span><span id="L-1679"><a href="#L-1679"><span class="linenos">1679</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1680"><a href="#L-1680"><span class="linenos">1680</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1681"><a href="#L-1681"><span class="linenos">1681</span></a> -</span><span id="L-1682"><a href="#L-1682"><span class="linenos">1682</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-1683"><a href="#L-1683"><span class="linenos">1683</span></a> -</span><span id="L-1684"><a href="#L-1684"><span class="linenos">1684</span></a> <span class="k">def</span> <span class="nf">_parse_with</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_with_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1685"><a href="#L-1685"><span class="linenos">1685</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_with_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="L-1686"><a href="#L-1686"><span class="linenos">1686</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1687"><a href="#L-1687"><span class="linenos">1687</span></a> -</span><span id="L-1688"><a href="#L-1688"><span class="linenos">1688</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">)</span> -</span><span id="L-1689"><a href="#L-1689"><span class="linenos">1689</span></a> -</span><span id="L-1690"><a href="#L-1690"><span class="linenos">1690</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-1691"><a href="#L-1691"><span class="linenos">1691</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1692"><a href="#L-1692"><span class="linenos">1692</span></a> <span class="n">expressions</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">_parse_cte</span><span class="p">())</span> -</span><span id="L-1693"><a href="#L-1693"><span class="linenos">1693</span></a> -</span><span id="L-1694"><a href="#L-1694"><span class="linenos">1694</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="L-1695"><a href="#L-1695"><span class="linenos">1695</span></a> <span class="k">break</span> -</span><span id="L-1696"><a href="#L-1696"><span class="linenos">1696</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1697"><a href="#L-1697"><span class="linenos">1697</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="L-1698"><a href="#L-1698"><span class="linenos">1698</span></a> -</span><span id="L-1699"><a href="#L-1699"><span class="linenos">1699</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="n">recursive</span><span class="p">)</span> -</span><span id="L-1700"><a href="#L-1700"><span class="linenos">1700</span></a> -</span><span id="L-1701"><a href="#L-1701"><span class="linenos">1701</span></a> <span class="k">def</span> <span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1702"><a href="#L-1702"><span class="linenos">1702</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="L-1703"><a href="#L-1703"><span class="linenos">1703</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> -</span><span id="L-1704"><a href="#L-1704"><span class="linenos">1704</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected CTE to have alias"</span><span class="p">)</span> +</span><span id="L-1658"><a href="#L-1658"><span class="linenos">1658</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1659"><a href="#L-1659"><span class="linenos">1659</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="L-1660"><a href="#L-1660"><span class="linenos">1660</span></a> +</span><span id="L-1661"><a href="#L-1661"><span class="linenos">1661</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1662"><a href="#L-1662"><span class="linenos">1662</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> +</span><span id="L-1663"><a href="#L-1663"><span class="linenos">1663</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> +</span><span id="L-1664"><a href="#L-1664"><span class="linenos">1664</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> +</span><span id="L-1665"><a href="#L-1665"><span class="linenos">1665</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-1666"><a href="#L-1666"><span class="linenos">1666</span></a> <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> +</span><span id="L-1667"><a href="#L-1667"><span class="linenos">1667</span></a> <span class="p">)</span> +</span><span id="L-1668"><a href="#L-1668"><span class="linenos">1668</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="L-1669"><a href="#L-1669"><span class="linenos">1669</span></a> +</span><span id="L-1670"><a href="#L-1670"><span class="linenos">1670</span></a> <span class="n">into</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_into</span><span class="p">()</span> +</span><span id="L-1671"><a href="#L-1671"><span class="linenos">1671</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> +</span><span id="L-1672"><a href="#L-1672"><span class="linenos">1672</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"into"</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> +</span><span id="L-1673"><a href="#L-1673"><span class="linenos">1673</span></a> +</span><span id="L-1674"><a href="#L-1674"><span class="linenos">1674</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> +</span><span id="L-1675"><a href="#L-1675"><span class="linenos">1675</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="L-1676"><a href="#L-1676"><span class="linenos">1676</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"from"</span><span class="p">,</span> <span class="n">from_</span><span class="p">)</span> +</span><span id="L-1677"><a href="#L-1677"><span class="linenos">1677</span></a> +</span><span id="L-1678"><a href="#L-1678"><span class="linenos">1678</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-1679"><a href="#L-1679"><span class="linenos">1679</span></a> <span class="k">elif</span> <span class="p">(</span><span class="n">table</span> <span class="ow">or</span> <span class="n">nested</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-1680"><a href="#L-1680"><span class="linenos">1680</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1681"><a href="#L-1681"><span class="linenos">1681</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-1682"><a href="#L-1682"><span class="linenos">1682</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-1683"><a href="#L-1683"><span class="linenos">1683</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-1684"><a href="#L-1684"><span class="linenos">1684</span></a> +</span><span id="L-1685"><a href="#L-1685"><span class="linenos">1685</span></a> <span class="c1"># early return so that subquery unions aren't parsed again</span> +</span><span id="L-1686"><a href="#L-1686"><span class="linenos">1686</span></a> <span class="c1"># SELECT * FROM (SELECT 1) UNION ALL SELECT 1</span> +</span><span id="L-1687"><a href="#L-1687"><span class="linenos">1687</span></a> <span class="c1"># Union ALL should be a property of the top select node, not the subquery</span> +</span><span id="L-1688"><a href="#L-1688"><span class="linenos">1688</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="n">parse_subquery_alias</span><span class="p">)</span> +</span><span id="L-1689"><a href="#L-1689"><span class="linenos">1689</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">):</span> +</span><span id="L-1690"><a href="#L-1690"><span class="linenos">1690</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1691"><a href="#L-1691"><span class="linenos">1691</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> +</span><span id="L-1692"><a href="#L-1692"><span class="linenos">1692</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">),</span> +</span><span id="L-1693"><a href="#L-1693"><span class="linenos">1693</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> +</span><span id="L-1694"><a href="#L-1694"><span class="linenos">1694</span></a> <span class="p">)</span> +</span><span id="L-1695"><a href="#L-1695"><span class="linenos">1695</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1696"><a href="#L-1696"><span class="linenos">1696</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1697"><a href="#L-1697"><span class="linenos">1697</span></a> +</span><span id="L-1698"><a href="#L-1698"><span class="linenos">1698</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-1699"><a href="#L-1699"><span class="linenos">1699</span></a> +</span><span id="L-1700"><a href="#L-1700"><span class="linenos">1700</span></a> <span class="k">def</span> <span class="nf">_parse_with</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_with_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1701"><a href="#L-1701"><span class="linenos">1701</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_with_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="L-1702"><a href="#L-1702"><span class="linenos">1702</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1703"><a href="#L-1703"><span class="linenos">1703</span></a> +</span><span id="L-1704"><a href="#L-1704"><span class="linenos">1704</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">)</span> </span><span id="L-1705"><a href="#L-1705"><span class="linenos">1705</span></a> -</span><span id="L-1706"><a href="#L-1706"><span class="linenos">1706</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-1707"><a href="#L-1707"><span class="linenos">1707</span></a> -</span><span id="L-1708"><a href="#L-1708"><span class="linenos">1708</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1709"><a href="#L-1709"><span class="linenos">1709</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> -</span><span id="L-1710"><a href="#L-1710"><span class="linenos">1710</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span> -</span><span id="L-1711"><a href="#L-1711"><span class="linenos">1711</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> -</span><span id="L-1712"><a href="#L-1712"><span class="linenos">1712</span></a> <span class="p">)</span> -</span><span id="L-1713"><a href="#L-1713"><span class="linenos">1713</span></a> -</span><span id="L-1714"><a href="#L-1714"><span class="linenos">1714</span></a> <span class="k">def</span> <span class="nf">_parse_table_alias</span><span class="p">(</span> -</span><span id="L-1715"><a href="#L-1715"><span class="linenos">1715</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1716"><a href="#L-1716"><span class="linenos">1716</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1717"><a href="#L-1717"><span class="linenos">1717</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-1718"><a href="#L-1718"><span class="linenos">1718</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> -</span><span id="L-1719"><a href="#L-1719"><span class="linenos">1719</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> -</span><span id="L-1720"><a href="#L-1720"><span class="linenos">1720</span></a> <span class="p">)</span> -</span><span id="L-1721"><a href="#L-1721"><span class="linenos">1721</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-1722"><a href="#L-1722"><span class="linenos">1722</span></a> -</span><span id="L-1723"><a href="#L-1723"><span class="linenos">1723</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-1724"><a href="#L-1724"><span class="linenos">1724</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> -</span><span id="L-1725"><a href="#L-1725"><span class="linenos">1725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-1726"><a href="#L-1726"><span class="linenos">1726</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1727"><a href="#L-1727"><span class="linenos">1727</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1728"><a href="#L-1728"><span class="linenos">1728</span></a> -</span><span id="L-1729"><a href="#L-1729"><span class="linenos">1729</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="L-1730"><a href="#L-1730"><span class="linenos">1730</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1731"><a href="#L-1731"><span class="linenos">1731</span></a> -</span><span id="L-1732"><a href="#L-1732"><span class="linenos">1732</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> -</span><span id="L-1733"><a href="#L-1733"><span class="linenos">1733</span></a> -</span><span id="L-1734"><a href="#L-1734"><span class="linenos">1734</span></a> <span class="k">def</span> <span class="nf">_parse_subquery</span><span class="p">(</span> -</span><span id="L-1735"><a href="#L-1735"><span class="linenos">1735</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">parse_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1736"><a href="#L-1736"><span class="linenos">1736</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1737"><a href="#L-1737"><span class="linenos">1737</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1738"><a href="#L-1738"><span class="linenos">1738</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> -</span><span id="L-1739"><a href="#L-1739"><span class="linenos">1739</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1740"><a href="#L-1740"><span class="linenos">1740</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> -</span><span id="L-1741"><a href="#L-1741"><span class="linenos">1741</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-1742"><a href="#L-1742"><span class="linenos">1742</span></a> <span class="p">)</span> -</span><span id="L-1743"><a href="#L-1743"><span class="linenos">1743</span></a> -</span><span id="L-1744"><a href="#L-1744"><span class="linenos">1744</span></a> <span class="k">def</span> <span class="nf">_parse_query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1745"><a href="#L-1745"><span class="linenos">1745</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">MODIFIABLES</span><span class="p">):</span> -</span><span id="L-1746"><a href="#L-1746"><span class="linenos">1746</span></a> <span class="k">return</span> +</span><span id="L-1706"><a href="#L-1706"><span class="linenos">1706</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-1707"><a href="#L-1707"><span class="linenos">1707</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1708"><a href="#L-1708"><span class="linenos">1708</span></a> <span class="n">expressions</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">_parse_cte</span><span class="p">())</span> +</span><span id="L-1709"><a href="#L-1709"><span class="linenos">1709</span></a> +</span><span id="L-1710"><a href="#L-1710"><span class="linenos">1710</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="L-1711"><a href="#L-1711"><span class="linenos">1711</span></a> <span class="k">break</span> +</span><span id="L-1712"><a href="#L-1712"><span class="linenos">1712</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1713"><a href="#L-1713"><span class="linenos">1713</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="L-1714"><a href="#L-1714"><span class="linenos">1714</span></a> +</span><span id="L-1715"><a href="#L-1715"><span class="linenos">1715</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="n">recursive</span><span class="p">)</span> +</span><span id="L-1716"><a href="#L-1716"><span class="linenos">1716</span></a> +</span><span id="L-1717"><a href="#L-1717"><span class="linenos">1717</span></a> <span class="k">def</span> <span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1718"><a href="#L-1718"><span class="linenos">1718</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="L-1719"><a href="#L-1719"><span class="linenos">1719</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> +</span><span id="L-1720"><a href="#L-1720"><span class="linenos">1720</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected CTE to have alias"</span><span class="p">)</span> +</span><span id="L-1721"><a href="#L-1721"><span class="linenos">1721</span></a> +</span><span id="L-1722"><a href="#L-1722"><span class="linenos">1722</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1723"><a href="#L-1723"><span class="linenos">1723</span></a> +</span><span id="L-1724"><a href="#L-1724"><span class="linenos">1724</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1725"><a href="#L-1725"><span class="linenos">1725</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> +</span><span id="L-1726"><a href="#L-1726"><span class="linenos">1726</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span> +</span><span id="L-1727"><a href="#L-1727"><span class="linenos">1727</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> +</span><span id="L-1728"><a href="#L-1728"><span class="linenos">1728</span></a> <span class="p">)</span> +</span><span id="L-1729"><a href="#L-1729"><span class="linenos">1729</span></a> +</span><span id="L-1730"><a href="#L-1730"><span class="linenos">1730</span></a> <span class="k">def</span> <span class="nf">_parse_table_alias</span><span class="p">(</span> +</span><span id="L-1731"><a href="#L-1731"><span class="linenos">1731</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1732"><a href="#L-1732"><span class="linenos">1732</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1733"><a href="#L-1733"><span class="linenos">1733</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-1734"><a href="#L-1734"><span class="linenos">1734</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> +</span><span id="L-1735"><a href="#L-1735"><span class="linenos">1735</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> +</span><span id="L-1736"><a href="#L-1736"><span class="linenos">1736</span></a> <span class="p">)</span> +</span><span id="L-1737"><a href="#L-1737"><span class="linenos">1737</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-1738"><a href="#L-1738"><span class="linenos">1738</span></a> +</span><span id="L-1739"><a href="#L-1739"><span class="linenos">1739</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-1740"><a href="#L-1740"><span class="linenos">1740</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> +</span><span id="L-1741"><a href="#L-1741"><span class="linenos">1741</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-1742"><a href="#L-1742"><span class="linenos">1742</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1743"><a href="#L-1743"><span class="linenos">1743</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1744"><a href="#L-1744"><span class="linenos">1744</span></a> +</span><span id="L-1745"><a href="#L-1745"><span class="linenos">1745</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="L-1746"><a href="#L-1746"><span class="linenos">1746</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-1747"><a href="#L-1747"><span class="linenos">1747</span></a> -</span><span id="L-1748"><a href="#L-1748"><span class="linenos">1748</span></a> <span class="n">table</span> <span class="o">=</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> +</span><span id="L-1748"><a href="#L-1748"><span class="linenos">1748</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> </span><span id="L-1749"><a href="#L-1749"><span class="linenos">1749</span></a> -</span><span id="L-1750"><a href="#L-1750"><span class="linenos">1750</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1751"><a href="#L-1751"><span class="linenos">1751</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> -</span><span id="L-1752"><a href="#L-1752"><span class="linenos">1752</span></a> <span class="n">join</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">()</span> -</span><span id="L-1753"><a href="#L-1753"><span class="linenos">1753</span></a> <span class="n">comma</span> <span class="o">=</span> <span class="kc">None</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="L-1754"><a href="#L-1754"><span class="linenos">1754</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> -</span><span id="L-1755"><a href="#L-1755"><span class="linenos">1755</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">lateral</span><span class="p">)</span> -</span><span id="L-1756"><a href="#L-1756"><span class="linenos">1756</span></a> <span class="k">if</span> <span class="n">join</span><span class="p">:</span> -</span><span id="L-1757"><a href="#L-1757"><span class="linenos">1757</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> -</span><span id="L-1758"><a href="#L-1758"><span class="linenos">1758</span></a> <span class="k">if</span> <span class="n">comma</span><span class="p">:</span> -</span><span id="L-1759"><a href="#L-1759"><span class="linenos">1759</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> -</span><span id="L-1760"><a href="#L-1760"><span class="linenos">1760</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">lateral</span> <span class="ow">or</span> <span class="n">join</span> <span class="ow">or</span> <span class="n">comma</span><span class="p">):</span> -</span><span id="L-1761"><a href="#L-1761"><span class="linenos">1761</span></a> <span class="k">break</span> -</span><span id="L-1762"><a href="#L-1762"><span class="linenos">1762</span></a> -</span><span id="L-1763"><a href="#L-1763"><span class="linenos">1763</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">parser</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="L-1764"><a href="#L-1764"><span class="linenos">1764</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-1750"><a href="#L-1750"><span class="linenos">1750</span></a> <span class="k">def</span> <span class="nf">_parse_subquery</span><span class="p">(</span> +</span><span id="L-1751"><a href="#L-1751"><span class="linenos">1751</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">parse_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1752"><a href="#L-1752"><span class="linenos">1752</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1753"><a href="#L-1753"><span class="linenos">1753</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1754"><a href="#L-1754"><span class="linenos">1754</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> +</span><span id="L-1755"><a href="#L-1755"><span class="linenos">1755</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1756"><a href="#L-1756"><span class="linenos">1756</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> +</span><span id="L-1757"><a href="#L-1757"><span class="linenos">1757</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-1758"><a href="#L-1758"><span class="linenos">1758</span></a> <span class="p">)</span> +</span><span id="L-1759"><a href="#L-1759"><span class="linenos">1759</span></a> +</span><span id="L-1760"><a href="#L-1760"><span class="linenos">1760</span></a> <span class="k">def</span> <span class="nf">_parse_query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1761"><a href="#L-1761"><span class="linenos">1761</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">MODIFIABLES</span><span class="p">):</span> +</span><span id="L-1762"><a href="#L-1762"><span class="linenos">1762</span></a> <span class="k">return</span> +</span><span id="L-1763"><a href="#L-1763"><span class="linenos">1763</span></a> +</span><span id="L-1764"><a href="#L-1764"><span class="linenos">1764</span></a> <span class="n">table</span> <span class="o">=</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> </span><span id="L-1765"><a href="#L-1765"><span class="linenos">1765</span></a> -</span><span id="L-1766"><a href="#L-1766"><span class="linenos">1766</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-1767"><a href="#L-1767"><span class="linenos">1767</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="L-1768"><a href="#L-1768"><span class="linenos">1768</span></a> -</span><span id="L-1769"><a href="#L-1769"><span class="linenos">1769</span></a> <span class="k">def</span> <span class="nf">_parse_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1770"><a href="#L-1770"><span class="linenos">1770</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">):</span> -</span><span id="L-1771"><a href="#L-1771"><span class="linenos">1771</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">)</span> -</span><span id="L-1772"><a href="#L-1772"><span class="linenos">1772</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">):</span> -</span><span id="L-1773"><a href="#L-1773"><span class="linenos">1773</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected */ after HINT"</span><span class="p">)</span> -</span><span id="L-1774"><a href="#L-1774"><span class="linenos">1774</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">hints</span><span class="p">)</span> -</span><span id="L-1775"><a href="#L-1775"><span class="linenos">1775</span></a> -</span><span id="L-1776"><a href="#L-1776"><span class="linenos">1776</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1777"><a href="#L-1777"><span class="linenos">1777</span></a> -</span><span id="L-1778"><a href="#L-1778"><span class="linenos">1778</span></a> <span class="k">def</span> <span class="nf">_parse_into</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1779"><a href="#L-1779"><span class="linenos">1779</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">):</span> -</span><span id="L-1780"><a href="#L-1780"><span class="linenos">1780</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1766"><a href="#L-1766"><span class="linenos">1766</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1767"><a href="#L-1767"><span class="linenos">1767</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> +</span><span id="L-1768"><a href="#L-1768"><span class="linenos">1768</span></a> <span class="n">join</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">()</span> +</span><span id="L-1769"><a href="#L-1769"><span class="linenos">1769</span></a> <span class="n">comma</span> <span class="o">=</span> <span class="kc">None</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="L-1770"><a href="#L-1770"><span class="linenos">1770</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> +</span><span id="L-1771"><a href="#L-1771"><span class="linenos">1771</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">lateral</span><span class="p">)</span> +</span><span id="L-1772"><a href="#L-1772"><span class="linenos">1772</span></a> <span class="k">if</span> <span class="n">join</span><span class="p">:</span> +</span><span id="L-1773"><a href="#L-1773"><span class="linenos">1773</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> +</span><span id="L-1774"><a href="#L-1774"><span class="linenos">1774</span></a> <span class="k">if</span> <span class="n">comma</span><span class="p">:</span> +</span><span id="L-1775"><a href="#L-1775"><span class="linenos">1775</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="L-1776"><a href="#L-1776"><span class="linenos">1776</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">lateral</span> <span class="ow">or</span> <span class="n">join</span> <span class="ow">or</span> <span class="n">comma</span><span class="p">):</span> +</span><span id="L-1777"><a href="#L-1777"><span class="linenos">1777</span></a> <span class="k">break</span> +</span><span id="L-1778"><a href="#L-1778"><span class="linenos">1778</span></a> +</span><span id="L-1779"><a href="#L-1779"><span class="linenos">1779</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">parser</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="L-1780"><a href="#L-1780"><span class="linenos">1780</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> </span><span id="L-1781"><a href="#L-1781"><span class="linenos">1781</span></a> -</span><span id="L-1782"><a href="#L-1782"><span class="linenos">1782</span></a> <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="L-1783"><a href="#L-1783"><span class="linenos">1783</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">)</span> -</span><span id="L-1784"><a href="#L-1784"><span class="linenos">1784</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="L-1785"><a href="#L-1785"><span class="linenos">1785</span></a> -</span><span id="L-1786"><a href="#L-1786"><span class="linenos">1786</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1787"><a href="#L-1787"><span class="linenos">1787</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">temporary</span><span class="o">=</span><span class="n">temp</span><span class="p">,</span> <span class="n">unlogged</span><span class="o">=</span><span class="n">unlogged</span> -</span><span id="L-1788"><a href="#L-1788"><span class="linenos">1788</span></a> <span class="p">)</span> -</span><span id="L-1789"><a href="#L-1789"><span class="linenos">1789</span></a> -</span><span id="L-1790"><a href="#L-1790"><span class="linenos">1790</span></a> <span class="k">def</span> <span class="nf">_parse_from</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1791"><a href="#L-1791"><span class="linenos">1791</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="L-1792"><a href="#L-1792"><span class="linenos">1792</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1782"><a href="#L-1782"><span class="linenos">1782</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-1783"><a href="#L-1783"><span class="linenos">1783</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="L-1784"><a href="#L-1784"><span class="linenos">1784</span></a> +</span><span id="L-1785"><a href="#L-1785"><span class="linenos">1785</span></a> <span class="k">def</span> <span class="nf">_parse_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1786"><a href="#L-1786"><span class="linenos">1786</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">):</span> +</span><span id="L-1787"><a href="#L-1787"><span class="linenos">1787</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">)</span> +</span><span id="L-1788"><a href="#L-1788"><span class="linenos">1788</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">):</span> +</span><span id="L-1789"><a href="#L-1789"><span class="linenos">1789</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected */ after HINT"</span><span class="p">)</span> +</span><span id="L-1790"><a href="#L-1790"><span class="linenos">1790</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">hints</span><span class="p">)</span> +</span><span id="L-1791"><a href="#L-1791"><span class="linenos">1791</span></a> +</span><span id="L-1792"><a href="#L-1792"><span class="linenos">1792</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-1793"><a href="#L-1793"><span class="linenos">1793</span></a> -</span><span id="L-1794"><a href="#L-1794"><span class="linenos">1794</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1795"><a href="#L-1795"><span class="linenos">1795</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> -</span><span id="L-1796"><a href="#L-1796"><span class="linenos">1796</span></a> <span class="p">)</span> +</span><span id="L-1794"><a href="#L-1794"><span class="linenos">1794</span></a> <span class="k">def</span> <span class="nf">_parse_into</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1795"><a href="#L-1795"><span class="linenos">1795</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">):</span> +</span><span id="L-1796"><a href="#L-1796"><span class="linenos">1796</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-1797"><a href="#L-1797"><span class="linenos">1797</span></a> -</span><span id="L-1798"><a href="#L-1798"><span class="linenos">1798</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1799"><a href="#L-1799"><span class="linenos">1799</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">):</span> -</span><span id="L-1800"><a href="#L-1800"><span class="linenos">1800</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1801"><a href="#L-1801"><span class="linenos">1801</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-1802"><a href="#L-1802"><span class="linenos">1802</span></a> -</span><span id="L-1803"><a href="#L-1803"><span class="linenos">1803</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> -</span><span id="L-1804"><a href="#L-1804"><span class="linenos">1804</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> -</span><span id="L-1805"><a href="#L-1805"><span class="linenos">1805</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-1806"><a href="#L-1806"><span class="linenos">1806</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> -</span><span id="L-1807"><a href="#L-1807"><span class="linenos">1807</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MEASURES"</span><span class="p">)</span> -</span><span id="L-1808"><a href="#L-1808"><span class="linenos">1808</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-1809"><a href="#L-1809"><span class="linenos">1809</span></a> <span class="p">)</span> -</span><span id="L-1810"><a href="#L-1810"><span class="linenos">1810</span></a> -</span><span id="L-1811"><a href="#L-1811"><span class="linenos">1811</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONE"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> -</span><span id="L-1812"><a href="#L-1812"><span class="linenos">1812</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"ONE ROW PER MATCH"</span><span class="p">)</span> -</span><span id="L-1813"><a href="#L-1813"><span class="linenos">1813</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> -</span><span id="L-1814"><a href="#L-1814"><span class="linenos">1814</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"ALL ROWS PER MATCH"</span> -</span><span id="L-1815"><a href="#L-1815"><span class="linenos">1815</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHOW"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> -</span><span id="L-1816"><a href="#L-1816"><span class="linenos">1816</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" SHOW EMPTY MATCHES"</span> -</span><span id="L-1817"><a href="#L-1817"><span class="linenos">1817</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OMIT"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> -</span><span id="L-1818"><a href="#L-1818"><span class="linenos">1818</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" OMIT EMPTY MATCHES"</span> -</span><span id="L-1819"><a href="#L-1819"><span class="linenos">1819</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNMATCHED"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> -</span><span id="L-1820"><a href="#L-1820"><span class="linenos">1820</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" WITH UNMATCHED ROWS"</span> -</span><span id="L-1821"><a href="#L-1821"><span class="linenos">1821</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-1822"><a href="#L-1822"><span class="linenos">1822</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1823"><a href="#L-1823"><span class="linenos">1823</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1824"><a href="#L-1824"><span class="linenos">1824</span></a> -</span><span id="L-1825"><a href="#L-1825"><span class="linenos">1825</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"SKIP"</span><span class="p">):</span> -</span><span id="L-1826"><a href="#L-1826"><span class="linenos">1826</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"AFTER MATCH SKIP"</span> -</span><span id="L-1827"><a href="#L-1827"><span class="linenos">1827</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PAST"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="L-1828"><a href="#L-1828"><span class="linenos">1828</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" PAST LAST ROW"</span> -</span><span id="L-1829"><a href="#L-1829"><span class="linenos">1829</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"NEXT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="L-1830"><a href="#L-1830"><span class="linenos">1830</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO NEXT ROW"</span> -</span><span id="L-1831"><a href="#L-1831"><span class="linenos">1831</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">):</span> -</span><span id="L-1832"><a href="#L-1832"><span class="linenos">1832</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO FIRST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> -</span><span id="L-1833"><a href="#L-1833"><span class="linenos">1833</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">):</span> -</span><span id="L-1834"><a href="#L-1834"><span class="linenos">1834</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO LAST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> -</span><span id="L-1835"><a href="#L-1835"><span class="linenos">1835</span></a> <span class="n">after</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-1836"><a href="#L-1836"><span class="linenos">1836</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1837"><a href="#L-1837"><span class="linenos">1837</span></a> <span class="n">after</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1838"><a href="#L-1838"><span class="linenos">1838</span></a> -</span><span id="L-1839"><a href="#L-1839"><span class="linenos">1839</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATTERN"</span><span class="p">):</span> -</span><span id="L-1840"><a href="#L-1840"><span class="linenos">1840</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-1841"><a href="#L-1841"><span class="linenos">1841</span></a> -</span><span id="L-1842"><a href="#L-1842"><span class="linenos">1842</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-1843"><a href="#L-1843"><span class="linenos">1843</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> -</span><span id="L-1844"><a href="#L-1844"><span class="linenos">1844</span></a> -</span><span id="L-1845"><a href="#L-1845"><span class="linenos">1845</span></a> <span class="n">paren</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-1846"><a href="#L-1846"><span class="linenos">1846</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> -</span><span id="L-1847"><a href="#L-1847"><span class="linenos">1847</span></a> -</span><span id="L-1848"><a href="#L-1848"><span class="linenos">1848</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-1849"><a href="#L-1849"><span class="linenos">1849</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> -</span><span id="L-1850"><a href="#L-1850"><span class="linenos">1850</span></a> <span class="n">paren</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-1851"><a href="#L-1851"><span class="linenos">1851</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">:</span> -</span><span id="L-1852"><a href="#L-1852"><span class="linenos">1852</span></a> <span class="n">paren</span> <span class="o">-=</span> <span class="mi">1</span> -</span><span id="L-1853"><a href="#L-1853"><span class="linenos">1853</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-1854"><a href="#L-1854"><span class="linenos">1854</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1855"><a href="#L-1855"><span class="linenos">1855</span></a> <span class="k">if</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-1856"><a href="#L-1856"><span class="linenos">1856</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> -</span><span id="L-1857"><a href="#L-1857"><span class="linenos">1857</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span> -</span><span id="L-1858"><a href="#L-1858"><span class="linenos">1858</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1859"><a href="#L-1859"><span class="linenos">1859</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1798"><a href="#L-1798"><span class="linenos">1798</span></a> <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> +</span><span id="L-1799"><a href="#L-1799"><span class="linenos">1799</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">)</span> +</span><span id="L-1800"><a href="#L-1800"><span class="linenos">1800</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="L-1801"><a href="#L-1801"><span class="linenos">1801</span></a> +</span><span id="L-1802"><a href="#L-1802"><span class="linenos">1802</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1803"><a href="#L-1803"><span class="linenos">1803</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">temporary</span><span class="o">=</span><span class="n">temp</span><span class="p">,</span> <span class="n">unlogged</span><span class="o">=</span><span class="n">unlogged</span> +</span><span id="L-1804"><a href="#L-1804"><span class="linenos">1804</span></a> <span class="p">)</span> +</span><span id="L-1805"><a href="#L-1805"><span class="linenos">1805</span></a> +</span><span id="L-1806"><a href="#L-1806"><span class="linenos">1806</span></a> <span class="k">def</span> <span class="nf">_parse_from</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1807"><a href="#L-1807"><span class="linenos">1807</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="L-1808"><a href="#L-1808"><span class="linenos">1808</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1809"><a href="#L-1809"><span class="linenos">1809</span></a> +</span><span id="L-1810"><a href="#L-1810"><span class="linenos">1810</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1811"><a href="#L-1811"><span class="linenos">1811</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> +</span><span id="L-1812"><a href="#L-1812"><span class="linenos">1812</span></a> <span class="p">)</span> +</span><span id="L-1813"><a href="#L-1813"><span class="linenos">1813</span></a> +</span><span id="L-1814"><a href="#L-1814"><span class="linenos">1814</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1815"><a href="#L-1815"><span class="linenos">1815</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">):</span> +</span><span id="L-1816"><a href="#L-1816"><span class="linenos">1816</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1817"><a href="#L-1817"><span class="linenos">1817</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-1818"><a href="#L-1818"><span class="linenos">1818</span></a> +</span><span id="L-1819"><a href="#L-1819"><span class="linenos">1819</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> +</span><span id="L-1820"><a href="#L-1820"><span class="linenos">1820</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> +</span><span id="L-1821"><a href="#L-1821"><span class="linenos">1821</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-1822"><a href="#L-1822"><span class="linenos">1822</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="L-1823"><a href="#L-1823"><span class="linenos">1823</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MEASURES"</span><span class="p">)</span> +</span><span id="L-1824"><a href="#L-1824"><span class="linenos">1824</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1825"><a href="#L-1825"><span class="linenos">1825</span></a> <span class="p">)</span> +</span><span id="L-1826"><a href="#L-1826"><span class="linenos">1826</span></a> +</span><span id="L-1827"><a href="#L-1827"><span class="linenos">1827</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONE"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> +</span><span id="L-1828"><a href="#L-1828"><span class="linenos">1828</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"ONE ROW PER MATCH"</span><span class="p">)</span> +</span><span id="L-1829"><a href="#L-1829"><span class="linenos">1829</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> +</span><span id="L-1830"><a href="#L-1830"><span class="linenos">1830</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"ALL ROWS PER MATCH"</span> +</span><span id="L-1831"><a href="#L-1831"><span class="linenos">1831</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHOW"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> +</span><span id="L-1832"><a href="#L-1832"><span class="linenos">1832</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" SHOW EMPTY MATCHES"</span> +</span><span id="L-1833"><a href="#L-1833"><span class="linenos">1833</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OMIT"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> +</span><span id="L-1834"><a href="#L-1834"><span class="linenos">1834</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" OMIT EMPTY MATCHES"</span> +</span><span id="L-1835"><a href="#L-1835"><span class="linenos">1835</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNMATCHED"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> +</span><span id="L-1836"><a href="#L-1836"><span class="linenos">1836</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" WITH UNMATCHED ROWS"</span> +</span><span id="L-1837"><a href="#L-1837"><span class="linenos">1837</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-1838"><a href="#L-1838"><span class="linenos">1838</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1839"><a href="#L-1839"><span class="linenos">1839</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1840"><a href="#L-1840"><span class="linenos">1840</span></a> +</span><span id="L-1841"><a href="#L-1841"><span class="linenos">1841</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"SKIP"</span><span class="p">):</span> +</span><span id="L-1842"><a href="#L-1842"><span class="linenos">1842</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"AFTER MATCH SKIP"</span> +</span><span id="L-1843"><a href="#L-1843"><span class="linenos">1843</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PAST"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="L-1844"><a href="#L-1844"><span class="linenos">1844</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" PAST LAST ROW"</span> +</span><span id="L-1845"><a href="#L-1845"><span class="linenos">1845</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"NEXT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="L-1846"><a href="#L-1846"><span class="linenos">1846</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO NEXT ROW"</span> +</span><span id="L-1847"><a href="#L-1847"><span class="linenos">1847</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">):</span> +</span><span id="L-1848"><a href="#L-1848"><span class="linenos">1848</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO FIRST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> +</span><span id="L-1849"><a href="#L-1849"><span class="linenos">1849</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">):</span> +</span><span id="L-1850"><a href="#L-1850"><span class="linenos">1850</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO LAST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> +</span><span id="L-1851"><a href="#L-1851"><span class="linenos">1851</span></a> <span class="n">after</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-1852"><a href="#L-1852"><span class="linenos">1852</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1853"><a href="#L-1853"><span class="linenos">1853</span></a> <span class="n">after</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1854"><a href="#L-1854"><span class="linenos">1854</span></a> +</span><span id="L-1855"><a href="#L-1855"><span class="linenos">1855</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATTERN"</span><span class="p">):</span> +</span><span id="L-1856"><a href="#L-1856"><span class="linenos">1856</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-1857"><a href="#L-1857"><span class="linenos">1857</span></a> +</span><span id="L-1858"><a href="#L-1858"><span class="linenos">1858</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-1859"><a href="#L-1859"><span class="linenos">1859</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> </span><span id="L-1860"><a href="#L-1860"><span class="linenos">1860</span></a> -</span><span id="L-1861"><a href="#L-1861"><span class="linenos">1861</span></a> <span class="n">define</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-1862"><a href="#L-1862"><span class="linenos">1862</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINE"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-1863"><a href="#L-1863"><span class="linenos">1863</span></a> <span class="p">)</span> -</span><span id="L-1864"><a href="#L-1864"><span class="linenos">1864</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-1865"><a href="#L-1865"><span class="linenos">1865</span></a> -</span><span id="L-1866"><a href="#L-1866"><span class="linenos">1866</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1867"><a href="#L-1867"><span class="linenos">1867</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">,</span> -</span><span id="L-1868"><a href="#L-1868"><span class="linenos">1868</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="L-1869"><a href="#L-1869"><span class="linenos">1869</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> -</span><span id="L-1870"><a href="#L-1870"><span class="linenos">1870</span></a> <span class="n">measures</span><span class="o">=</span><span class="n">measures</span><span class="p">,</span> -</span><span id="L-1871"><a href="#L-1871"><span class="linenos">1871</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> -</span><span id="L-1872"><a href="#L-1872"><span class="linenos">1872</span></a> <span class="n">after</span><span class="o">=</span><span class="n">after</span><span class="p">,</span> -</span><span id="L-1873"><a href="#L-1873"><span class="linenos">1873</span></a> <span class="n">pattern</span><span class="o">=</span><span class="n">pattern</span><span class="p">,</span> -</span><span id="L-1874"><a href="#L-1874"><span class="linenos">1874</span></a> <span class="n">define</span><span class="o">=</span><span class="n">define</span><span class="p">,</span> -</span><span id="L-1875"><a href="#L-1875"><span class="linenos">1875</span></a> <span class="p">)</span> +</span><span id="L-1861"><a href="#L-1861"><span class="linenos">1861</span></a> <span class="n">paren</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-1862"><a href="#L-1862"><span class="linenos">1862</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> +</span><span id="L-1863"><a href="#L-1863"><span class="linenos">1863</span></a> +</span><span id="L-1864"><a href="#L-1864"><span class="linenos">1864</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-1865"><a href="#L-1865"><span class="linenos">1865</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> +</span><span id="L-1866"><a href="#L-1866"><span class="linenos">1866</span></a> <span class="n">paren</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-1867"><a href="#L-1867"><span class="linenos">1867</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">:</span> +</span><span id="L-1868"><a href="#L-1868"><span class="linenos">1868</span></a> <span class="n">paren</span> <span class="o">-=</span> <span class="mi">1</span> +</span><span id="L-1869"><a href="#L-1869"><span class="linenos">1869</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-1870"><a href="#L-1870"><span class="linenos">1870</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1871"><a href="#L-1871"><span class="linenos">1871</span></a> <span class="k">if</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-1872"><a href="#L-1872"><span class="linenos">1872</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="L-1873"><a href="#L-1873"><span class="linenos">1873</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span> +</span><span id="L-1874"><a href="#L-1874"><span class="linenos">1874</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1875"><a href="#L-1875"><span class="linenos">1875</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-1876"><a href="#L-1876"><span class="linenos">1876</span></a> -</span><span id="L-1877"><a href="#L-1877"><span class="linenos">1877</span></a> <span class="k">def</span> <span class="nf">_parse_lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1878"><a href="#L-1878"><span class="linenos">1878</span></a> <span class="n">outer_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> -</span><span id="L-1879"><a href="#L-1879"><span class="linenos">1879</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> -</span><span id="L-1880"><a href="#L-1880"><span class="linenos">1880</span></a> -</span><span id="L-1881"><a href="#L-1881"><span class="linenos">1881</span></a> <span class="k">if</span> <span class="n">outer_apply</span> <span class="ow">or</span> <span class="n">cross_apply</span><span class="p">:</span> -</span><span id="L-1882"><a href="#L-1882"><span class="linenos">1882</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1883"><a href="#L-1883"><span class="linenos">1883</span></a> <span class="n">view</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1884"><a href="#L-1884"><span class="linenos">1884</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">cross_apply</span> -</span><span id="L-1885"><a href="#L-1885"><span class="linenos">1885</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">):</span> -</span><span id="L-1886"><a href="#L-1886"><span class="linenos">1886</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-1887"><a href="#L-1887"><span class="linenos">1887</span></a> <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">)</span> -</span><span id="L-1888"><a href="#L-1888"><span class="linenos">1888</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">)</span> -</span><span id="L-1889"><a href="#L-1889"><span class="linenos">1889</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1890"><a href="#L-1890"><span class="linenos">1890</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1891"><a href="#L-1891"><span class="linenos">1891</span></a> -</span><span id="L-1892"><a href="#L-1892"><span class="linenos">1892</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-1893"><a href="#L-1893"><span class="linenos">1893</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1894"><a href="#L-1894"><span class="linenos">1894</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-1895"><a href="#L-1895"><span class="linenos">1895</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span> -</span><span id="L-1896"><a href="#L-1896"><span class="linenos">1896</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1897"><a href="#L-1897"><span class="linenos">1897</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="L-1898"><a href="#L-1898"><span class="linenos">1898</span></a> <span class="p">)</span> -</span><span id="L-1899"><a href="#L-1899"><span class="linenos">1899</span></a> -</span><span id="L-1900"><a href="#L-1900"><span class="linenos">1900</span></a> <span class="n">table_alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-1901"><a href="#L-1901"><span class="linenos">1901</span></a> -</span><span id="L-1902"><a href="#L-1902"><span class="linenos">1902</span></a> <span class="k">if</span> <span class="n">view</span><span class="p">:</span> -</span><span id="L-1903"><a href="#L-1903"><span class="linenos">1903</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1904"><a href="#L-1904"><span class="linenos">1904</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="L-1905"><a href="#L-1905"><span class="linenos">1905</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> -</span><span id="L-1906"><a href="#L-1906"><span class="linenos">1906</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1907"><a href="#L-1907"><span class="linenos">1907</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="L-1908"><a href="#L-1908"><span class="linenos">1908</span></a> -</span><span id="L-1909"><a href="#L-1909"><span class="linenos">1909</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1910"><a href="#L-1910"><span class="linenos">1910</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">,</span> -</span><span id="L-1911"><a href="#L-1911"><span class="linenos">1911</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-1912"><a href="#L-1912"><span class="linenos">1912</span></a> <span class="n">view</span><span class="o">=</span><span class="n">view</span><span class="p">,</span> -</span><span id="L-1913"><a href="#L-1913"><span class="linenos">1913</span></a> <span class="n">outer</span><span class="o">=</span><span class="n">outer</span><span class="p">,</span> -</span><span id="L-1914"><a href="#L-1914"><span class="linenos">1914</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> -</span><span id="L-1915"><a href="#L-1915"><span class="linenos">1915</span></a> <span class="p">)</span> -</span><span id="L-1916"><a href="#L-1916"><span class="linenos">1916</span></a> -</span><span id="L-1917"><a href="#L-1917"><span class="linenos">1917</span></a> <span class="k">if</span> <span class="n">outer_apply</span> <span class="ow">or</span> <span class="n">cross_apply</span><span class="p">:</span> -</span><span id="L-1918"><a href="#L-1918"><span class="linenos">1918</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="kc">None</span> <span class="k">if</span> <span class="n">cross_apply</span> <span class="k">else</span> <span class="s2">"LEFT"</span><span class="p">)</span> -</span><span id="L-1919"><a href="#L-1919"><span class="linenos">1919</span></a> -</span><span id="L-1920"><a href="#L-1920"><span class="linenos">1920</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-1921"><a href="#L-1921"><span class="linenos">1921</span></a> -</span><span id="L-1922"><a href="#L-1922"><span class="linenos">1922</span></a> <span class="k">def</span> <span class="nf">_parse_join_side_and_kind</span><span class="p">(</span> -</span><span id="L-1923"><a href="#L-1923"><span class="linenos">1923</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-1924"><a href="#L-1924"><span class="linenos">1924</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]]:</span> -</span><span id="L-1925"><a href="#L-1925"><span class="linenos">1925</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="L-1926"><a href="#L-1926"><span class="linenos">1926</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="L-1927"><a href="#L-1927"><span class="linenos">1927</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="L-1928"><a href="#L-1928"><span class="linenos">1928</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="L-1929"><a href="#L-1929"><span class="linenos">1929</span></a> <span class="p">)</span> -</span><span id="L-1930"><a href="#L-1930"><span class="linenos">1930</span></a> -</span><span id="L-1931"><a href="#L-1931"><span class="linenos">1931</span></a> <span class="k">def</span> <span class="nf">_parse_join</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1932"><a href="#L-1932"><span class="linenos">1932</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_side_and_kind</span><span class="p">()</span> -</span><span id="L-1933"><a href="#L-1933"><span class="linenos">1933</span></a> -</span><span id="L-1934"><a href="#L-1934"><span class="linenos">1934</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">):</span> -</span><span id="L-1935"><a href="#L-1935"><span class="linenos">1935</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1936"><a href="#L-1936"><span class="linenos">1936</span></a> -</span><span id="L-1937"><a href="#L-1937"><span class="linenos">1937</span></a> <span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span> -</span><span id="L-1938"><a href="#L-1938"><span class="linenos">1938</span></a> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">|</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> -</span><span id="L-1939"><a href="#L-1939"><span class="linenos">1939</span></a> <span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()}</span> -</span><span id="L-1940"><a href="#L-1940"><span class="linenos">1940</span></a> -</span><span id="L-1941"><a href="#L-1941"><span class="linenos">1941</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> -</span><span id="L-1942"><a href="#L-1942"><span class="linenos">1942</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"natural"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-1943"><a href="#L-1943"><span class="linenos">1943</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> -</span><span id="L-1944"><a href="#L-1944"><span class="linenos">1944</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"side"</span><span class="p">]</span> <span class="o">=</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-1945"><a href="#L-1945"><span class="linenos">1945</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-1946"><a href="#L-1946"><span class="linenos">1946</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-1947"><a href="#L-1947"><span class="linenos">1947</span></a> -</span><span id="L-1948"><a href="#L-1948"><span class="linenos">1948</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-1949"><a href="#L-1949"><span class="linenos">1949</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-1950"><a href="#L-1950"><span class="linenos">1950</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="L-1951"><a href="#L-1951"><span class="linenos">1951</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="L-1877"><a href="#L-1877"><span class="linenos">1877</span></a> <span class="n">define</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-1878"><a href="#L-1878"><span class="linenos">1878</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINE"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-1879"><a href="#L-1879"><span class="linenos">1879</span></a> <span class="p">)</span> +</span><span id="L-1880"><a href="#L-1880"><span class="linenos">1880</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-1881"><a href="#L-1881"><span class="linenos">1881</span></a> +</span><span id="L-1882"><a href="#L-1882"><span class="linenos">1882</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1883"><a href="#L-1883"><span class="linenos">1883</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">,</span> +</span><span id="L-1884"><a href="#L-1884"><span class="linenos">1884</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="L-1885"><a href="#L-1885"><span class="linenos">1885</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> +</span><span id="L-1886"><a href="#L-1886"><span class="linenos">1886</span></a> <span class="n">measures</span><span class="o">=</span><span class="n">measures</span><span class="p">,</span> +</span><span id="L-1887"><a href="#L-1887"><span class="linenos">1887</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> +</span><span id="L-1888"><a href="#L-1888"><span class="linenos">1888</span></a> <span class="n">after</span><span class="o">=</span><span class="n">after</span><span class="p">,</span> +</span><span id="L-1889"><a href="#L-1889"><span class="linenos">1889</span></a> <span class="n">pattern</span><span class="o">=</span><span class="n">pattern</span><span class="p">,</span> +</span><span id="L-1890"><a href="#L-1890"><span class="linenos">1890</span></a> <span class="n">define</span><span class="o">=</span><span class="n">define</span><span class="p">,</span> +</span><span id="L-1891"><a href="#L-1891"><span class="linenos">1891</span></a> <span class="p">)</span> +</span><span id="L-1892"><a href="#L-1892"><span class="linenos">1892</span></a> +</span><span id="L-1893"><a href="#L-1893"><span class="linenos">1893</span></a> <span class="k">def</span> <span class="nf">_parse_lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1894"><a href="#L-1894"><span class="linenos">1894</span></a> <span class="n">outer_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> +</span><span id="L-1895"><a href="#L-1895"><span class="linenos">1895</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> +</span><span id="L-1896"><a href="#L-1896"><span class="linenos">1896</span></a> +</span><span id="L-1897"><a href="#L-1897"><span class="linenos">1897</span></a> <span class="k">if</span> <span class="n">outer_apply</span> <span class="ow">or</span> <span class="n">cross_apply</span><span class="p">:</span> +</span><span id="L-1898"><a href="#L-1898"><span class="linenos">1898</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1899"><a href="#L-1899"><span class="linenos">1899</span></a> <span class="n">view</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1900"><a href="#L-1900"><span class="linenos">1900</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">cross_apply</span> +</span><span id="L-1901"><a href="#L-1901"><span class="linenos">1901</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">):</span> +</span><span id="L-1902"><a href="#L-1902"><span class="linenos">1902</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-1903"><a href="#L-1903"><span class="linenos">1903</span></a> <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">)</span> +</span><span id="L-1904"><a href="#L-1904"><span class="linenos">1904</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">)</span> +</span><span id="L-1905"><a href="#L-1905"><span class="linenos">1905</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1906"><a href="#L-1906"><span class="linenos">1906</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1907"><a href="#L-1907"><span class="linenos">1907</span></a> +</span><span id="L-1908"><a href="#L-1908"><span class="linenos">1908</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-1909"><a href="#L-1909"><span class="linenos">1909</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1910"><a href="#L-1910"><span class="linenos">1910</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-1911"><a href="#L-1911"><span class="linenos">1911</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span> +</span><span id="L-1912"><a href="#L-1912"><span class="linenos">1912</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1913"><a href="#L-1913"><span class="linenos">1913</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="L-1914"><a href="#L-1914"><span class="linenos">1914</span></a> <span class="p">)</span> +</span><span id="L-1915"><a href="#L-1915"><span class="linenos">1915</span></a> +</span><span id="L-1916"><a href="#L-1916"><span class="linenos">1916</span></a> <span class="n">table_alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-1917"><a href="#L-1917"><span class="linenos">1917</span></a> +</span><span id="L-1918"><a href="#L-1918"><span class="linenos">1918</span></a> <span class="k">if</span> <span class="n">view</span><span class="p">:</span> +</span><span id="L-1919"><a href="#L-1919"><span class="linenos">1919</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-1920"><a href="#L-1920"><span class="linenos">1920</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="L-1921"><a href="#L-1921"><span class="linenos">1921</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> +</span><span id="L-1922"><a href="#L-1922"><span class="linenos">1922</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1923"><a href="#L-1923"><span class="linenos">1923</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="L-1924"><a href="#L-1924"><span class="linenos">1924</span></a> +</span><span id="L-1925"><a href="#L-1925"><span class="linenos">1925</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1926"><a href="#L-1926"><span class="linenos">1926</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">,</span> +</span><span id="L-1927"><a href="#L-1927"><span class="linenos">1927</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-1928"><a href="#L-1928"><span class="linenos">1928</span></a> <span class="n">view</span><span class="o">=</span><span class="n">view</span><span class="p">,</span> +</span><span id="L-1929"><a href="#L-1929"><span class="linenos">1929</span></a> <span class="n">outer</span><span class="o">=</span><span class="n">outer</span><span class="p">,</span> +</span><span id="L-1930"><a href="#L-1930"><span class="linenos">1930</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> +</span><span id="L-1931"><a href="#L-1931"><span class="linenos">1931</span></a> <span class="p">)</span> +</span><span id="L-1932"><a href="#L-1932"><span class="linenos">1932</span></a> +</span><span id="L-1933"><a href="#L-1933"><span class="linenos">1933</span></a> <span class="k">if</span> <span class="n">outer_apply</span> <span class="ow">or</span> <span class="n">cross_apply</span><span class="p">:</span> +</span><span id="L-1934"><a href="#L-1934"><span class="linenos">1934</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="kc">None</span> <span class="k">if</span> <span class="n">cross_apply</span> <span class="k">else</span> <span class="s2">"LEFT"</span><span class="p">)</span> +</span><span id="L-1935"><a href="#L-1935"><span class="linenos">1935</span></a> +</span><span id="L-1936"><a href="#L-1936"><span class="linenos">1936</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-1937"><a href="#L-1937"><span class="linenos">1937</span></a> +</span><span id="L-1938"><a href="#L-1938"><span class="linenos">1938</span></a> <span class="k">def</span> <span class="nf">_parse_join_side_and_kind</span><span class="p">(</span> +</span><span id="L-1939"><a href="#L-1939"><span class="linenos">1939</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-1940"><a href="#L-1940"><span class="linenos">1940</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]]:</span> +</span><span id="L-1941"><a href="#L-1941"><span class="linenos">1941</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="L-1942"><a href="#L-1942"><span class="linenos">1942</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="L-1943"><a href="#L-1943"><span class="linenos">1943</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="L-1944"><a href="#L-1944"><span class="linenos">1944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="L-1945"><a href="#L-1945"><span class="linenos">1945</span></a> <span class="p">)</span> +</span><span id="L-1946"><a href="#L-1946"><span class="linenos">1946</span></a> +</span><span id="L-1947"><a href="#L-1947"><span class="linenos">1947</span></a> <span class="k">def</span> <span class="nf">_parse_join</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1948"><a href="#L-1948"><span class="linenos">1948</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_side_and_kind</span><span class="p">()</span> +</span><span id="L-1949"><a href="#L-1949"><span class="linenos">1949</span></a> +</span><span id="L-1950"><a href="#L-1950"><span class="linenos">1950</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">):</span> +</span><span id="L-1951"><a href="#L-1951"><span class="linenos">1951</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-1952"><a href="#L-1952"><span class="linenos">1952</span></a> -</span><span id="L-1953"><a href="#L-1953"><span class="linenos">1953</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-1954"><a href="#L-1954"><span class="linenos">1954</span></a> -</span><span id="L-1955"><a href="#L-1955"><span class="linenos">1955</span></a> <span class="k">def</span> <span class="nf">_parse_index</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1956"><a href="#L-1956"><span class="linenos">1956</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-1957"><a href="#L-1957"><span class="linenos">1957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="L-1958"><a href="#L-1958"><span class="linenos">1958</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> <span class="c1"># hive</span> -</span><span id="L-1959"><a href="#L-1959"><span class="linenos">1959</span></a> -</span><span id="L-1960"><a href="#L-1960"><span class="linenos">1960</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1961"><a href="#L-1961"><span class="linenos">1961</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> -</span><span id="L-1962"><a href="#L-1962"><span class="linenos">1962</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> -</span><span id="L-1963"><a href="#L-1963"><span class="linenos">1963</span></a> <span class="n">table</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span> -</span><span id="L-1964"><a href="#L-1964"><span class="linenos">1964</span></a> <span class="n">columns</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> -</span><span id="L-1965"><a href="#L-1965"><span class="linenos">1965</span></a> <span class="p">)</span> -</span><span id="L-1966"><a href="#L-1966"><span class="linenos">1966</span></a> -</span><span id="L-1967"><a href="#L-1967"><span class="linenos">1967</span></a> <span class="k">def</span> <span class="nf">_parse_create_table_index</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-1968"><a href="#L-1968"><span class="linenos">1968</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> -</span><span id="L-1969"><a href="#L-1969"><span class="linenos">1969</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">)</span> -</span><span id="L-1970"><a href="#L-1970"><span class="linenos">1970</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AMP"</span><span class="p">)</span> -</span><span id="L-1971"><a href="#L-1971"><span class="linenos">1971</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">):</span> -</span><span id="L-1972"><a href="#L-1972"><span class="linenos">1972</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-1973"><a href="#L-1973"><span class="linenos">1973</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-1974"><a href="#L-1974"><span class="linenos">1974</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1975"><a href="#L-1975"><span class="linenos">1975</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-1976"><a href="#L-1976"><span class="linenos">1976</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-1977"><a href="#L-1977"><span class="linenos">1977</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-1978"><a href="#L-1978"><span class="linenos">1978</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> -</span><span id="L-1979"><a href="#L-1979"><span class="linenos">1979</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> -</span><span id="L-1980"><a href="#L-1980"><span class="linenos">1980</span></a> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> -</span><span id="L-1981"><a href="#L-1981"><span class="linenos">1981</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> -</span><span id="L-1982"><a href="#L-1982"><span class="linenos">1982</span></a> <span class="n">primary</span><span class="o">=</span><span class="n">primary</span><span class="p">,</span> -</span><span id="L-1983"><a href="#L-1983"><span class="linenos">1983</span></a> <span class="n">amp</span><span class="o">=</span><span class="n">amp</span><span class="p">,</span> -</span><span id="L-1984"><a href="#L-1984"><span class="linenos">1984</span></a> <span class="p">)</span> -</span><span id="L-1985"><a href="#L-1985"><span class="linenos">1985</span></a> -</span><span id="L-1986"><a href="#L-1986"><span class="linenos">1986</span></a> <span class="k">def</span> <span class="nf">_parse_table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-1987"><a href="#L-1987"><span class="linenos">1987</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1988"><a href="#L-1988"><span class="linenos">1988</span></a> <span class="n">db</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1989"><a href="#L-1989"><span class="linenos">1989</span></a> <span class="n">table</span> <span class="o">=</span> <span class="p">(</span><span class="ow">not</span> <span class="n">schema</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-1990"><a href="#L-1990"><span class="linenos">1990</span></a> -</span><span id="L-1991"><a href="#L-1991"><span class="linenos">1991</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-1992"><a href="#L-1992"><span class="linenos">1992</span></a> <span class="k">if</span> <span class="n">catalog</span><span class="p">:</span> -</span><span id="L-1993"><a href="#L-1993"><span class="linenos">1993</span></a> <span class="c1"># This allows nesting the table in arbitrarily many dot expressions if needed</span> -</span><span id="L-1994"><a href="#L-1994"><span class="linenos">1994</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="L-1995"><a href="#L-1995"><span class="linenos">1995</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1996"><a href="#L-1996"><span class="linenos">1996</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> -</span><span id="L-1997"><a href="#L-1997"><span class="linenos">1997</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> -</span><span id="L-1998"><a href="#L-1998"><span class="linenos">1998</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-1999"><a href="#L-1999"><span class="linenos">1999</span></a> -</span><span id="L-2000"><a href="#L-2000"><span class="linenos">2000</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> -</span><span id="L-2001"><a href="#L-2001"><span class="linenos">2001</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected table name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-2002"><a href="#L-2002"><span class="linenos">2002</span></a> -</span><span id="L-2003"><a href="#L-2003"><span class="linenos">2003</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2004"><a href="#L-2004"><span class="linenos">2004</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">()</span> -</span><span id="L-2005"><a href="#L-2005"><span class="linenos">2005</span></a> <span class="p">)</span> +</span><span id="L-1953"><a href="#L-1953"><span class="linenos">1953</span></a> <span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span> +</span><span id="L-1954"><a href="#L-1954"><span class="linenos">1954</span></a> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">|</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> +</span><span id="L-1955"><a href="#L-1955"><span class="linenos">1955</span></a> <span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()}</span> +</span><span id="L-1956"><a href="#L-1956"><span class="linenos">1956</span></a> +</span><span id="L-1957"><a href="#L-1957"><span class="linenos">1957</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> +</span><span id="L-1958"><a href="#L-1958"><span class="linenos">1958</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"natural"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-1959"><a href="#L-1959"><span class="linenos">1959</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> +</span><span id="L-1960"><a href="#L-1960"><span class="linenos">1960</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"side"</span><span class="p">]</span> <span class="o">=</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-1961"><a href="#L-1961"><span class="linenos">1961</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-1962"><a href="#L-1962"><span class="linenos">1962</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-1963"><a href="#L-1963"><span class="linenos">1963</span></a> +</span><span id="L-1964"><a href="#L-1964"><span class="linenos">1964</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-1965"><a href="#L-1965"><span class="linenos">1965</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-1966"><a href="#L-1966"><span class="linenos">1966</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="L-1967"><a href="#L-1967"><span class="linenos">1967</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="L-1968"><a href="#L-1968"><span class="linenos">1968</span></a> +</span><span id="L-1969"><a href="#L-1969"><span class="linenos">1969</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-1970"><a href="#L-1970"><span class="linenos">1970</span></a> +</span><span id="L-1971"><a href="#L-1971"><span class="linenos">1971</span></a> <span class="k">def</span> <span class="nf">_parse_index</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-1972"><a href="#L-1972"><span class="linenos">1972</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-1973"><a href="#L-1973"><span class="linenos">1973</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="L-1974"><a href="#L-1974"><span class="linenos">1974</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> <span class="c1"># hive</span> +</span><span id="L-1975"><a href="#L-1975"><span class="linenos">1975</span></a> +</span><span id="L-1976"><a href="#L-1976"><span class="linenos">1976</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1977"><a href="#L-1977"><span class="linenos">1977</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> +</span><span id="L-1978"><a href="#L-1978"><span class="linenos">1978</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> +</span><span id="L-1979"><a href="#L-1979"><span class="linenos">1979</span></a> <span class="n">table</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span> +</span><span id="L-1980"><a href="#L-1980"><span class="linenos">1980</span></a> <span class="n">columns</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> +</span><span id="L-1981"><a href="#L-1981"><span class="linenos">1981</span></a> <span class="p">)</span> +</span><span id="L-1982"><a href="#L-1982"><span class="linenos">1982</span></a> +</span><span id="L-1983"><a href="#L-1983"><span class="linenos">1983</span></a> <span class="k">def</span> <span class="nf">_parse_create_table_index</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-1984"><a href="#L-1984"><span class="linenos">1984</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> +</span><span id="L-1985"><a href="#L-1985"><span class="linenos">1985</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">)</span> +</span><span id="L-1986"><a href="#L-1986"><span class="linenos">1986</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AMP"</span><span class="p">)</span> +</span><span id="L-1987"><a href="#L-1987"><span class="linenos">1987</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">):</span> +</span><span id="L-1988"><a href="#L-1988"><span class="linenos">1988</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-1989"><a href="#L-1989"><span class="linenos">1989</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-1990"><a href="#L-1990"><span class="linenos">1990</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1991"><a href="#L-1991"><span class="linenos">1991</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-1992"><a href="#L-1992"><span class="linenos">1992</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-1993"><a href="#L-1993"><span class="linenos">1993</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-1994"><a href="#L-1994"><span class="linenos">1994</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> +</span><span id="L-1995"><a href="#L-1995"><span class="linenos">1995</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> +</span><span id="L-1996"><a href="#L-1996"><span class="linenos">1996</span></a> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> +</span><span id="L-1997"><a href="#L-1997"><span class="linenos">1997</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> +</span><span id="L-1998"><a href="#L-1998"><span class="linenos">1998</span></a> <span class="n">primary</span><span class="o">=</span><span class="n">primary</span><span class="p">,</span> +</span><span id="L-1999"><a href="#L-1999"><span class="linenos">1999</span></a> <span class="n">amp</span><span class="o">=</span><span class="n">amp</span><span class="p">,</span> +</span><span id="L-2000"><a href="#L-2000"><span class="linenos">2000</span></a> <span class="p">)</span> +</span><span id="L-2001"><a href="#L-2001"><span class="linenos">2001</span></a> +</span><span id="L-2002"><a href="#L-2002"><span class="linenos">2002</span></a> <span class="k">def</span> <span class="nf">_parse_table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2003"><a href="#L-2003"><span class="linenos">2003</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2004"><a href="#L-2004"><span class="linenos">2004</span></a> <span class="n">db</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2005"><a href="#L-2005"><span class="linenos">2005</span></a> <span class="n">table</span> <span class="o">=</span> <span class="p">(</span><span class="ow">not</span> <span class="n">schema</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> </span><span id="L-2006"><a href="#L-2006"><span class="linenos">2006</span></a> -</span><span id="L-2007"><a href="#L-2007"><span class="linenos">2007</span></a> <span class="k">def</span> <span class="nf">_parse_table</span><span class="p">(</span> -</span><span id="L-2008"><a href="#L-2008"><span class="linenos">2008</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2009"><a href="#L-2009"><span class="linenos">2009</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2010"><a href="#L-2010"><span class="linenos">2010</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> -</span><span id="L-2011"><a href="#L-2011"><span class="linenos">2011</span></a> -</span><span id="L-2012"><a href="#L-2012"><span class="linenos">2012</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> -</span><span id="L-2013"><a href="#L-2013"><span class="linenos">2013</span></a> <span class="k">return</span> <span class="n">lateral</span> -</span><span id="L-2014"><a href="#L-2014"><span class="linenos">2014</span></a> -</span><span id="L-2015"><a href="#L-2015"><span class="linenos">2015</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> -</span><span id="L-2016"><a href="#L-2016"><span class="linenos">2016</span></a> -</span><span id="L-2017"><a href="#L-2017"><span class="linenos">2017</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="L-2018"><a href="#L-2018"><span class="linenos">2018</span></a> <span class="k">return</span> <span class="n">unnest</span> -</span><span id="L-2019"><a href="#L-2019"><span class="linenos">2019</span></a> -</span><span id="L-2020"><a href="#L-2020"><span class="linenos">2020</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> -</span><span id="L-2021"><a href="#L-2021"><span class="linenos">2021</span></a> -</span><span id="L-2022"><a href="#L-2022"><span class="linenos">2022</span></a> <span class="k">if</span> <span class="n">values</span><span class="p">:</span> -</span><span id="L-2023"><a href="#L-2023"><span class="linenos">2023</span></a> <span class="k">return</span> <span class="n">values</span> -</span><span id="L-2024"><a href="#L-2024"><span class="linenos">2024</span></a> -</span><span id="L-2025"><a href="#L-2025"><span class="linenos">2025</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2026"><a href="#L-2026"><span class="linenos">2026</span></a> -</span><span id="L-2027"><a href="#L-2027"><span class="linenos">2027</span></a> <span class="k">if</span> <span class="n">subquery</span><span class="p">:</span> -</span><span id="L-2028"><a href="#L-2028"><span class="linenos">2028</span></a> <span class="k">return</span> <span class="n">subquery</span> -</span><span id="L-2029"><a href="#L-2029"><span class="linenos">2029</span></a> -</span><span id="L-2030"><a href="#L-2030"><span class="linenos">2030</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> -</span><span id="L-2031"><a href="#L-2031"><span class="linenos">2031</span></a> -</span><span id="L-2032"><a href="#L-2032"><span class="linenos">2032</span></a> <span class="k">if</span> <span class="n">schema</span><span class="p">:</span> -</span><span id="L-2033"><a href="#L-2033"><span class="linenos">2033</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2034"><a href="#L-2034"><span class="linenos">2034</span></a> -</span><span id="L-2035"><a href="#L-2035"><span class="linenos">2035</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span><span class="p">:</span> -</span><span id="L-2036"><a href="#L-2036"><span class="linenos">2036</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="L-2007"><a href="#L-2007"><span class="linenos">2007</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-2008"><a href="#L-2008"><span class="linenos">2008</span></a> <span class="k">if</span> <span class="n">catalog</span><span class="p">:</span> +</span><span id="L-2009"><a href="#L-2009"><span class="linenos">2009</span></a> <span class="c1"># This allows nesting the table in arbitrarily many dot expressions if needed</span> +</span><span id="L-2010"><a href="#L-2010"><span class="linenos">2010</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> +</span><span id="L-2011"><a href="#L-2011"><span class="linenos">2011</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2012"><a href="#L-2012"><span class="linenos">2012</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> +</span><span id="L-2013"><a href="#L-2013"><span class="linenos">2013</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> +</span><span id="L-2014"><a href="#L-2014"><span class="linenos">2014</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-2015"><a href="#L-2015"><span class="linenos">2015</span></a> +</span><span id="L-2016"><a href="#L-2016"><span class="linenos">2016</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> +</span><span id="L-2017"><a href="#L-2017"><span class="linenos">2017</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected table name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-2018"><a href="#L-2018"><span class="linenos">2018</span></a> +</span><span id="L-2019"><a href="#L-2019"><span class="linenos">2019</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2020"><a href="#L-2020"><span class="linenos">2020</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">()</span> +</span><span id="L-2021"><a href="#L-2021"><span class="linenos">2021</span></a> <span class="p">)</span> +</span><span id="L-2022"><a href="#L-2022"><span class="linenos">2022</span></a> +</span><span id="L-2023"><a href="#L-2023"><span class="linenos">2023</span></a> <span class="k">def</span> <span class="nf">_parse_table</span><span class="p">(</span> +</span><span id="L-2024"><a href="#L-2024"><span class="linenos">2024</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2025"><a href="#L-2025"><span class="linenos">2025</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2026"><a href="#L-2026"><span class="linenos">2026</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> +</span><span id="L-2027"><a href="#L-2027"><span class="linenos">2027</span></a> +</span><span id="L-2028"><a href="#L-2028"><span class="linenos">2028</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> +</span><span id="L-2029"><a href="#L-2029"><span class="linenos">2029</span></a> <span class="k">return</span> <span class="n">lateral</span> +</span><span id="L-2030"><a href="#L-2030"><span class="linenos">2030</span></a> +</span><span id="L-2031"><a href="#L-2031"><span class="linenos">2031</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> +</span><span id="L-2032"><a href="#L-2032"><span class="linenos">2032</span></a> +</span><span id="L-2033"><a href="#L-2033"><span class="linenos">2033</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="L-2034"><a href="#L-2034"><span class="linenos">2034</span></a> <span class="k">return</span> <span class="n">unnest</span> +</span><span id="L-2035"><a href="#L-2035"><span class="linenos">2035</span></a> +</span><span id="L-2036"><a href="#L-2036"><span class="linenos">2036</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> </span><span id="L-2037"><a href="#L-2037"><span class="linenos">2037</span></a> -</span><span id="L-2038"><a href="#L-2038"><span class="linenos">2038</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="L-2039"><a href="#L-2039"><span class="linenos">2039</span></a> -</span><span id="L-2040"><a href="#L-2040"><span class="linenos">2040</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-2041"><a href="#L-2041"><span class="linenos">2041</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> +</span><span id="L-2038"><a href="#L-2038"><span class="linenos">2038</span></a> <span class="k">if</span> <span class="n">values</span><span class="p">:</span> +</span><span id="L-2039"><a href="#L-2039"><span class="linenos">2039</span></a> <span class="k">return</span> <span class="n">values</span> +</span><span id="L-2040"><a href="#L-2040"><span class="linenos">2040</span></a> +</span><span id="L-2041"><a href="#L-2041"><span class="linenos">2041</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-2042"><a href="#L-2042"><span class="linenos">2042</span></a> -</span><span id="L-2043"><a href="#L-2043"><span class="linenos">2043</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2044"><a href="#L-2044"><span class="linenos">2044</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="L-2045"><a href="#L-2045"><span class="linenos">2045</span></a> <span class="s2">"hints"</span><span class="p">,</span> -</span><span id="L-2046"><a href="#L-2046"><span class="linenos">2046</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="L-2047"><a href="#L-2047"><span class="linenos">2047</span></a> <span class="p">)</span> -</span><span id="L-2048"><a href="#L-2048"><span class="linenos">2048</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2049"><a href="#L-2049"><span class="linenos">2049</span></a> -</span><span id="L-2050"><a href="#L-2050"><span class="linenos">2050</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span><span class="p">:</span> -</span><span id="L-2051"><a href="#L-2051"><span class="linenos">2051</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> -</span><span id="L-2052"><a href="#L-2052"><span class="linenos">2052</span></a> -</span><span id="L-2053"><a href="#L-2053"><span class="linenos">2053</span></a> <span class="k">if</span> <span class="n">table_sample</span><span class="p">:</span> -</span><span id="L-2054"><a href="#L-2054"><span class="linenos">2054</span></a> <span class="n">table_sample</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> -</span><span id="L-2055"><a href="#L-2055"><span class="linenos">2055</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">table_sample</span> -</span><span id="L-2056"><a href="#L-2056"><span class="linenos">2056</span></a> -</span><span id="L-2057"><a href="#L-2057"><span class="linenos">2057</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2043"><a href="#L-2043"><span class="linenos">2043</span></a> <span class="k">if</span> <span class="n">subquery</span><span class="p">:</span> +</span><span id="L-2044"><a href="#L-2044"><span class="linenos">2044</span></a> <span class="k">return</span> <span class="n">subquery</span> +</span><span id="L-2045"><a href="#L-2045"><span class="linenos">2045</span></a> +</span><span id="L-2046"><a href="#L-2046"><span class="linenos">2046</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> +</span><span id="L-2047"><a href="#L-2047"><span class="linenos">2047</span></a> +</span><span id="L-2048"><a href="#L-2048"><span class="linenos">2048</span></a> <span class="k">if</span> <span class="n">schema</span><span class="p">:</span> +</span><span id="L-2049"><a href="#L-2049"><span class="linenos">2049</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2050"><a href="#L-2050"><span class="linenos">2050</span></a> +</span><span id="L-2051"><a href="#L-2051"><span class="linenos">2051</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span><span class="p">:</span> +</span><span id="L-2052"><a href="#L-2052"><span class="linenos">2052</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="L-2053"><a href="#L-2053"><span class="linenos">2053</span></a> +</span><span id="L-2054"><a href="#L-2054"><span class="linenos">2054</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="L-2055"><a href="#L-2055"><span class="linenos">2055</span></a> +</span><span id="L-2056"><a href="#L-2056"><span class="linenos">2056</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-2057"><a href="#L-2057"><span class="linenos">2057</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> </span><span id="L-2058"><a href="#L-2058"><span class="linenos">2058</span></a> -</span><span id="L-2059"><a href="#L-2059"><span class="linenos">2059</span></a> <span class="k">def</span> <span class="nf">_parse_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2060"><a href="#L-2060"><span class="linenos">2060</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">):</span> -</span><span id="L-2061"><a href="#L-2061"><span class="linenos">2061</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2062"><a href="#L-2062"><span class="linenos">2062</span></a> -</span><span id="L-2063"><a href="#L-2063"><span class="linenos">2063</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-2064"><a href="#L-2064"><span class="linenos">2064</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">))</span> -</span><span id="L-2065"><a href="#L-2065"><span class="linenos">2065</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="L-2066"><a href="#L-2066"><span class="linenos">2066</span></a> -</span><span id="L-2067"><a href="#L-2067"><span class="linenos">2067</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> -</span><span id="L-2068"><a href="#L-2068"><span class="linenos">2068</span></a> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> -</span><span id="L-2069"><a href="#L-2069"><span class="linenos">2069</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected extra column alias in unnest."</span><span class="p">)</span> -</span><span id="L-2070"><a href="#L-2070"><span class="linenos">2070</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="p">[</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> -</span><span id="L-2071"><a href="#L-2071"><span class="linenos">2071</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="L-2072"><a href="#L-2072"><span class="linenos">2072</span></a> -</span><span id="L-2073"><a href="#L-2073"><span class="linenos">2073</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2074"><a href="#L-2074"><span class="linenos">2074</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> -</span><span id="L-2075"><a href="#L-2075"><span class="linenos">2075</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-2076"><a href="#L-2076"><span class="linenos">2076</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-2059"><a href="#L-2059"><span class="linenos">2059</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> +</span><span id="L-2060"><a href="#L-2060"><span class="linenos">2060</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> +</span><span id="L-2061"><a href="#L-2061"><span class="linenos">2061</span></a> +</span><span id="L-2062"><a href="#L-2062"><span class="linenos">2062</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2063"><a href="#L-2063"><span class="linenos">2063</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="L-2064"><a href="#L-2064"><span class="linenos">2064</span></a> <span class="s2">"hints"</span><span class="p">,</span> +</span><span id="L-2065"><a href="#L-2065"><span class="linenos">2065</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="L-2066"><a href="#L-2066"><span class="linenos">2066</span></a> <span class="p">)</span> +</span><span id="L-2067"><a href="#L-2067"><span class="linenos">2067</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2068"><a href="#L-2068"><span class="linenos">2068</span></a> +</span><span id="L-2069"><a href="#L-2069"><span class="linenos">2069</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span><span class="p">:</span> +</span><span id="L-2070"><a href="#L-2070"><span class="linenos">2070</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="L-2071"><a href="#L-2071"><span class="linenos">2071</span></a> +</span><span id="L-2072"><a href="#L-2072"><span class="linenos">2072</span></a> <span class="k">if</span> <span class="n">table_sample</span><span class="p">:</span> +</span><span id="L-2073"><a href="#L-2073"><span class="linenos">2073</span></a> <span class="n">table_sample</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> +</span><span id="L-2074"><a href="#L-2074"><span class="linenos">2074</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">table_sample</span> +</span><span id="L-2075"><a href="#L-2075"><span class="linenos">2075</span></a> +</span><span id="L-2076"><a href="#L-2076"><span class="linenos">2076</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-2077"><a href="#L-2077"><span class="linenos">2077</span></a> -</span><span id="L-2078"><a href="#L-2078"><span class="linenos">2078</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2079"><a href="#L-2079"><span class="linenos">2079</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> -</span><span id="L-2080"><a href="#L-2080"><span class="linenos">2080</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2081"><a href="#L-2081"><span class="linenos">2081</span></a> <span class="n">ordinality</span><span class="o">=</span><span class="n">ordinality</span><span class="p">,</span> -</span><span id="L-2082"><a href="#L-2082"><span class="linenos">2082</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> -</span><span id="L-2083"><a href="#L-2083"><span class="linenos">2083</span></a> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">,</span> -</span><span id="L-2084"><a href="#L-2084"><span class="linenos">2084</span></a> <span class="p">)</span> +</span><span id="L-2078"><a href="#L-2078"><span class="linenos">2078</span></a> <span class="k">def</span> <span class="nf">_parse_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2079"><a href="#L-2079"><span class="linenos">2079</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">):</span> +</span><span id="L-2080"><a href="#L-2080"><span class="linenos">2080</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2081"><a href="#L-2081"><span class="linenos">2081</span></a> +</span><span id="L-2082"><a href="#L-2082"><span class="linenos">2082</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-2083"><a href="#L-2083"><span class="linenos">2083</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">))</span> +</span><span id="L-2084"><a href="#L-2084"><span class="linenos">2084</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> </span><span id="L-2085"><a href="#L-2085"><span class="linenos">2085</span></a> -</span><span id="L-2086"><a href="#L-2086"><span class="linenos">2086</span></a> <span class="k">def</span> <span class="nf">_parse_derived_table_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2087"><a href="#L-2087"><span class="linenos">2087</span></a> <span class="n">is_derived</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> -</span><span id="L-2088"><a href="#L-2088"><span class="linenos">2088</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_derived</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">):</span> -</span><span id="L-2089"><a href="#L-2089"><span class="linenos">2089</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2090"><a href="#L-2090"><span class="linenos">2090</span></a> -</span><span id="L-2091"><a href="#L-2091"><span class="linenos">2091</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">)</span> -</span><span id="L-2092"><a href="#L-2092"><span class="linenos">2092</span></a> -</span><span id="L-2093"><a href="#L-2093"><span class="linenos">2093</span></a> <span class="k">if</span> <span class="n">is_derived</span><span class="p">:</span> -</span><span id="L-2094"><a href="#L-2094"><span class="linenos">2094</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2095"><a href="#L-2095"><span class="linenos">2095</span></a> -</span><span id="L-2096"><a href="#L-2096"><span class="linenos">2096</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> -</span><span id="L-2097"><a href="#L-2097"><span class="linenos">2097</span></a> -</span><span id="L-2098"><a href="#L-2098"><span class="linenos">2098</span></a> <span class="k">def</span> <span class="nf">_parse_table_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2099"><a href="#L-2099"><span class="linenos">2099</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">):</span> -</span><span id="L-2100"><a href="#L-2100"><span class="linenos">2100</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2101"><a href="#L-2101"><span class="linenos">2101</span></a> -</span><span id="L-2102"><a href="#L-2102"><span class="linenos">2102</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> -</span><span id="L-2103"><a href="#L-2103"><span class="linenos">2103</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2104"><a href="#L-2104"><span class="linenos">2104</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2105"><a href="#L-2105"><span class="linenos">2105</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2106"><a href="#L-2106"><span class="linenos">2106</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2107"><a href="#L-2107"><span class="linenos">2107</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2108"><a href="#L-2108"><span class="linenos">2108</span></a> <span class="n">size</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2109"><a href="#L-2109"><span class="linenos">2109</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2110"><a href="#L-2110"><span class="linenos">2110</span></a> -</span><span id="L-2111"><a href="#L-2111"><span class="linenos">2111</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-2112"><a href="#L-2112"><span class="linenos">2112</span></a> -</span><span id="L-2113"><a href="#L-2113"><span class="linenos">2113</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">):</span> -</span><span id="L-2114"><a href="#L-2114"><span class="linenos">2114</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-2115"><a href="#L-2115"><span class="linenos">2115</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUT_OF</span><span class="p">)</span> -</span><span id="L-2116"><a href="#L-2116"><span class="linenos">2116</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-2117"><a href="#L-2117"><span class="linenos">2117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="L-2118"><a href="#L-2118"><span class="linenos">2118</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-2119"><a href="#L-2119"><span class="linenos">2119</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2120"><a href="#L-2120"><span class="linenos">2120</span></a> <span class="n">num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-2121"><a href="#L-2121"><span class="linenos">2121</span></a> -</span><span id="L-2122"><a href="#L-2122"><span class="linenos">2122</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">):</span> -</span><span id="L-2123"><a href="#L-2123"><span class="linenos">2123</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="L-2124"><a href="#L-2124"><span class="linenos">2124</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">):</span> -</span><span id="L-2125"><a href="#L-2125"><span class="linenos">2125</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="L-2126"><a href="#L-2126"><span class="linenos">2126</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2127"><a href="#L-2127"><span class="linenos">2127</span></a> <span class="n">size</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="L-2128"><a href="#L-2128"><span class="linenos">2128</span></a> -</span><span id="L-2129"><a href="#L-2129"><span class="linenos">2129</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2130"><a href="#L-2130"><span class="linenos">2130</span></a> -</span><span id="L-2131"><a href="#L-2131"><span class="linenos">2131</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">):</span> -</span><span id="L-2132"><a href="#L-2132"><span class="linenos">2132</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">)</span> -</span><span id="L-2133"><a href="#L-2133"><span class="linenos">2133</span></a> -</span><span id="L-2134"><a href="#L-2134"><span class="linenos">2134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2135"><a href="#L-2135"><span class="linenos">2135</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span> -</span><span id="L-2136"><a href="#L-2136"><span class="linenos">2136</span></a> <span class="n">method</span><span class="o">=</span><span class="n">method</span><span class="p">,</span> -</span><span id="L-2137"><a href="#L-2137"><span class="linenos">2137</span></a> <span class="n">bucket_numerator</span><span class="o">=</span><span class="n">bucket_numerator</span><span class="p">,</span> -</span><span id="L-2138"><a href="#L-2138"><span class="linenos">2138</span></a> <span class="n">bucket_denominator</span><span class="o">=</span><span class="n">bucket_denominator</span><span class="p">,</span> -</span><span id="L-2139"><a href="#L-2139"><span class="linenos">2139</span></a> <span class="n">bucket_field</span><span class="o">=</span><span class="n">bucket_field</span><span class="p">,</span> -</span><span id="L-2140"><a href="#L-2140"><span class="linenos">2140</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> -</span><span id="L-2141"><a href="#L-2141"><span class="linenos">2141</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> -</span><span id="L-2142"><a href="#L-2142"><span class="linenos">2142</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> -</span><span id="L-2143"><a href="#L-2143"><span class="linenos">2143</span></a> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> -</span><span id="L-2144"><a href="#L-2144"><span class="linenos">2144</span></a> <span class="p">)</span> -</span><span id="L-2145"><a href="#L-2145"><span class="linenos">2145</span></a> -</span><span id="L-2146"><a href="#L-2146"><span class="linenos">2146</span></a> <span class="k">def</span> <span class="nf">_parse_pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-2147"><a href="#L-2147"><span class="linenos">2147</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span> -</span><span id="L-2148"><a href="#L-2148"><span class="linenos">2148</span></a> -</span><span id="L-2149"><a href="#L-2149"><span class="linenos">2149</span></a> <span class="k">def</span> <span class="nf">_parse_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2150"><a href="#L-2150"><span class="linenos">2150</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-2151"><a href="#L-2151"><span class="linenos">2151</span></a> -</span><span id="L-2152"><a href="#L-2152"><span class="linenos">2152</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> -</span><span id="L-2153"><a href="#L-2153"><span class="linenos">2153</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-2154"><a href="#L-2154"><span class="linenos">2154</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">):</span> -</span><span id="L-2155"><a href="#L-2155"><span class="linenos">2155</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-2156"><a href="#L-2156"><span class="linenos">2156</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2157"><a href="#L-2157"><span class="linenos">2157</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2158"><a href="#L-2158"><span class="linenos">2158</span></a> -</span><span id="L-2159"><a href="#L-2159"><span class="linenos">2159</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-2160"><a href="#L-2160"><span class="linenos">2160</span></a> <span class="n">field</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2161"><a href="#L-2161"><span class="linenos">2161</span></a> -</span><span id="L-2162"><a href="#L-2162"><span class="linenos">2162</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2163"><a href="#L-2163"><span class="linenos">2163</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2164"><a href="#L-2164"><span class="linenos">2164</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2165"><a href="#L-2165"><span class="linenos">2165</span></a> -</span><span id="L-2166"><a href="#L-2166"><span class="linenos">2166</span></a> <span class="k">if</span> <span class="n">unpivot</span><span class="p">:</span> -</span><span id="L-2167"><a href="#L-2167"><span class="linenos">2167</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-2168"><a href="#L-2168"><span class="linenos">2168</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2169"><a href="#L-2169"><span class="linenos">2169</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()))</span> +</span><span id="L-2086"><a href="#L-2086"><span class="linenos">2086</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> +</span><span id="L-2087"><a href="#L-2087"><span class="linenos">2087</span></a> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> +</span><span id="L-2088"><a href="#L-2088"><span class="linenos">2088</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected extra column alias in unnest."</span><span class="p">)</span> +</span><span id="L-2089"><a href="#L-2089"><span class="linenos">2089</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="p">[</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> +</span><span id="L-2090"><a href="#L-2090"><span class="linenos">2090</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="L-2091"><a href="#L-2091"><span class="linenos">2091</span></a> +</span><span id="L-2092"><a href="#L-2092"><span class="linenos">2092</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2093"><a href="#L-2093"><span class="linenos">2093</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> +</span><span id="L-2094"><a href="#L-2094"><span class="linenos">2094</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-2095"><a href="#L-2095"><span class="linenos">2095</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-2096"><a href="#L-2096"><span class="linenos">2096</span></a> +</span><span id="L-2097"><a href="#L-2097"><span class="linenos">2097</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2098"><a href="#L-2098"><span class="linenos">2098</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> +</span><span id="L-2099"><a href="#L-2099"><span class="linenos">2099</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2100"><a href="#L-2100"><span class="linenos">2100</span></a> <span class="n">ordinality</span><span class="o">=</span><span class="n">ordinality</span><span class="p">,</span> +</span><span id="L-2101"><a href="#L-2101"><span class="linenos">2101</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> +</span><span id="L-2102"><a href="#L-2102"><span class="linenos">2102</span></a> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">,</span> +</span><span id="L-2103"><a href="#L-2103"><span class="linenos">2103</span></a> <span class="p">)</span> +</span><span id="L-2104"><a href="#L-2104"><span class="linenos">2104</span></a> +</span><span id="L-2105"><a href="#L-2105"><span class="linenos">2105</span></a> <span class="k">def</span> <span class="nf">_parse_derived_table_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2106"><a href="#L-2106"><span class="linenos">2106</span></a> <span class="n">is_derived</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> +</span><span id="L-2107"><a href="#L-2107"><span class="linenos">2107</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_derived</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">):</span> +</span><span id="L-2108"><a href="#L-2108"><span class="linenos">2108</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2109"><a href="#L-2109"><span class="linenos">2109</span></a> +</span><span id="L-2110"><a href="#L-2110"><span class="linenos">2110</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">)</span> +</span><span id="L-2111"><a href="#L-2111"><span class="linenos">2111</span></a> +</span><span id="L-2112"><a href="#L-2112"><span class="linenos">2112</span></a> <span class="k">if</span> <span class="n">is_derived</span><span class="p">:</span> +</span><span id="L-2113"><a href="#L-2113"><span class="linenos">2113</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2114"><a href="#L-2114"><span class="linenos">2114</span></a> +</span><span id="L-2115"><a href="#L-2115"><span class="linenos">2115</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="L-2116"><a href="#L-2116"><span class="linenos">2116</span></a> +</span><span id="L-2117"><a href="#L-2117"><span class="linenos">2117</span></a> <span class="k">def</span> <span class="nf">_parse_table_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2118"><a href="#L-2118"><span class="linenos">2118</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">):</span> +</span><span id="L-2119"><a href="#L-2119"><span class="linenos">2119</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2120"><a href="#L-2120"><span class="linenos">2120</span></a> +</span><span id="L-2121"><a href="#L-2121"><span class="linenos">2121</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> +</span><span id="L-2122"><a href="#L-2122"><span class="linenos">2122</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2123"><a href="#L-2123"><span class="linenos">2123</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2124"><a href="#L-2124"><span class="linenos">2124</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2125"><a href="#L-2125"><span class="linenos">2125</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2126"><a href="#L-2126"><span class="linenos">2126</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2127"><a href="#L-2127"><span class="linenos">2127</span></a> <span class="n">size</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2128"><a href="#L-2128"><span class="linenos">2128</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2129"><a href="#L-2129"><span class="linenos">2129</span></a> +</span><span id="L-2130"><a href="#L-2130"><span class="linenos">2130</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-2131"><a href="#L-2131"><span class="linenos">2131</span></a> +</span><span id="L-2132"><a href="#L-2132"><span class="linenos">2132</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">):</span> +</span><span id="L-2133"><a href="#L-2133"><span class="linenos">2133</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-2134"><a href="#L-2134"><span class="linenos">2134</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUT_OF</span><span class="p">)</span> +</span><span id="L-2135"><a href="#L-2135"><span class="linenos">2135</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-2136"><a href="#L-2136"><span class="linenos">2136</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="L-2137"><a href="#L-2137"><span class="linenos">2137</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-2138"><a href="#L-2138"><span class="linenos">2138</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2139"><a href="#L-2139"><span class="linenos">2139</span></a> <span class="n">num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-2140"><a href="#L-2140"><span class="linenos">2140</span></a> +</span><span id="L-2141"><a href="#L-2141"><span class="linenos">2141</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">):</span> +</span><span id="L-2142"><a href="#L-2142"><span class="linenos">2142</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="L-2143"><a href="#L-2143"><span class="linenos">2143</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">):</span> +</span><span id="L-2144"><a href="#L-2144"><span class="linenos">2144</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="L-2145"><a href="#L-2145"><span class="linenos">2145</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2146"><a href="#L-2146"><span class="linenos">2146</span></a> <span class="n">size</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="L-2147"><a href="#L-2147"><span class="linenos">2147</span></a> +</span><span id="L-2148"><a href="#L-2148"><span class="linenos">2148</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2149"><a href="#L-2149"><span class="linenos">2149</span></a> +</span><span id="L-2150"><a href="#L-2150"><span class="linenos">2150</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">):</span> +</span><span id="L-2151"><a href="#L-2151"><span class="linenos">2151</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">)</span> +</span><span id="L-2152"><a href="#L-2152"><span class="linenos">2152</span></a> +</span><span id="L-2153"><a href="#L-2153"><span class="linenos">2153</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2154"><a href="#L-2154"><span class="linenos">2154</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span> +</span><span id="L-2155"><a href="#L-2155"><span class="linenos">2155</span></a> <span class="n">method</span><span class="o">=</span><span class="n">method</span><span class="p">,</span> +</span><span id="L-2156"><a href="#L-2156"><span class="linenos">2156</span></a> <span class="n">bucket_numerator</span><span class="o">=</span><span class="n">bucket_numerator</span><span class="p">,</span> +</span><span id="L-2157"><a href="#L-2157"><span class="linenos">2157</span></a> <span class="n">bucket_denominator</span><span class="o">=</span><span class="n">bucket_denominator</span><span class="p">,</span> +</span><span id="L-2158"><a href="#L-2158"><span class="linenos">2158</span></a> <span class="n">bucket_field</span><span class="o">=</span><span class="n">bucket_field</span><span class="p">,</span> +</span><span id="L-2159"><a href="#L-2159"><span class="linenos">2159</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> +</span><span id="L-2160"><a href="#L-2160"><span class="linenos">2160</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> +</span><span id="L-2161"><a href="#L-2161"><span class="linenos">2161</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> +</span><span id="L-2162"><a href="#L-2162"><span class="linenos">2162</span></a> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> +</span><span id="L-2163"><a href="#L-2163"><span class="linenos">2163</span></a> <span class="p">)</span> +</span><span id="L-2164"><a href="#L-2164"><span class="linenos">2164</span></a> +</span><span id="L-2165"><a href="#L-2165"><span class="linenos">2165</span></a> <span class="k">def</span> <span class="nf">_parse_pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-2166"><a href="#L-2166"><span class="linenos">2166</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span> +</span><span id="L-2167"><a href="#L-2167"><span class="linenos">2167</span></a> +</span><span id="L-2168"><a href="#L-2168"><span class="linenos">2168</span></a> <span class="k">def</span> <span class="nf">_parse_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2169"><a href="#L-2169"><span class="linenos">2169</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> </span><span id="L-2170"><a href="#L-2170"><span class="linenos">2170</span></a> -</span><span id="L-2171"><a href="#L-2171"><span class="linenos">2171</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="L-2172"><a href="#L-2172"><span class="linenos">2172</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting FOR"</span><span class="p">)</span> -</span><span id="L-2173"><a href="#L-2173"><span class="linenos">2173</span></a> -</span><span id="L-2174"><a href="#L-2174"><span class="linenos">2174</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-2175"><a href="#L-2175"><span class="linenos">2175</span></a> -</span><span id="L-2176"><a href="#L-2176"><span class="linenos">2176</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="L-2177"><a href="#L-2177"><span class="linenos">2177</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting IN"</span><span class="p">)</span> -</span><span id="L-2178"><a href="#L-2178"><span class="linenos">2178</span></a> -</span><span id="L-2179"><a href="#L-2179"><span class="linenos">2179</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-2171"><a href="#L-2171"><span class="linenos">2171</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> +</span><span id="L-2172"><a href="#L-2172"><span class="linenos">2172</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2173"><a href="#L-2173"><span class="linenos">2173</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">):</span> +</span><span id="L-2174"><a href="#L-2174"><span class="linenos">2174</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-2175"><a href="#L-2175"><span class="linenos">2175</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2176"><a href="#L-2176"><span class="linenos">2176</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2177"><a href="#L-2177"><span class="linenos">2177</span></a> +</span><span id="L-2178"><a href="#L-2178"><span class="linenos">2178</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-2179"><a href="#L-2179"><span class="linenos">2179</span></a> <span class="n">field</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-2180"><a href="#L-2180"><span class="linenos">2180</span></a> -</span><span id="L-2181"><a href="#L-2181"><span class="linenos">2181</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2182"><a href="#L-2182"><span class="linenos">2182</span></a> -</span><span id="L-2183"><a href="#L-2183"><span class="linenos">2183</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> <span class="n">unpivot</span><span class="o">=</span><span class="n">unpivot</span><span class="p">)</span> +</span><span id="L-2181"><a href="#L-2181"><span class="linenos">2181</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2182"><a href="#L-2182"><span class="linenos">2182</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2183"><a href="#L-2183"><span class="linenos">2183</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-2184"><a href="#L-2184"><span class="linenos">2184</span></a> -</span><span id="L-2185"><a href="#L-2185"><span class="linenos">2185</span></a> <span class="k">def</span> <span class="nf">_parse_where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2186"><a href="#L-2186"><span class="linenos">2186</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">):</span> -</span><span id="L-2187"><a href="#L-2187"><span class="linenos">2187</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2188"><a href="#L-2188"><span class="linenos">2188</span></a> -</span><span id="L-2189"><a href="#L-2189"><span class="linenos">2189</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2190"><a href="#L-2190"><span class="linenos">2190</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-2191"><a href="#L-2191"><span class="linenos">2191</span></a> <span class="p">)</span> +</span><span id="L-2185"><a href="#L-2185"><span class="linenos">2185</span></a> <span class="k">if</span> <span class="n">unpivot</span><span class="p">:</span> +</span><span id="L-2186"><a href="#L-2186"><span class="linenos">2186</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-2187"><a href="#L-2187"><span class="linenos">2187</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2188"><a href="#L-2188"><span class="linenos">2188</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()))</span> +</span><span id="L-2189"><a href="#L-2189"><span class="linenos">2189</span></a> +</span><span id="L-2190"><a href="#L-2190"><span class="linenos">2190</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="L-2191"><a href="#L-2191"><span class="linenos">2191</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting FOR"</span><span class="p">)</span> </span><span id="L-2192"><a href="#L-2192"><span class="linenos">2192</span></a> -</span><span id="L-2193"><a href="#L-2193"><span class="linenos">2193</span></a> <span class="k">def</span> <span class="nf">_parse_group</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_group_by_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2194"><a href="#L-2194"><span class="linenos">2194</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_group_by_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">):</span> -</span><span id="L-2195"><a href="#L-2195"><span class="linenos">2195</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2196"><a href="#L-2196"><span class="linenos">2196</span></a> -</span><span id="L-2197"><a href="#L-2197"><span class="linenos">2197</span></a> <span class="n">elements</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span> -</span><span id="L-2198"><a href="#L-2198"><span class="linenos">2198</span></a> -</span><span id="L-2199"><a href="#L-2199"><span class="linenos">2199</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-2200"><a href="#L-2200"><span class="linenos">2200</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-2201"><a href="#L-2201"><span class="linenos">2201</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-2202"><a href="#L-2202"><span class="linenos">2202</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2193"><a href="#L-2193"><span class="linenos">2193</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-2194"><a href="#L-2194"><span class="linenos">2194</span></a> +</span><span id="L-2195"><a href="#L-2195"><span class="linenos">2195</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="L-2196"><a href="#L-2196"><span class="linenos">2196</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting IN"</span><span class="p">)</span> +</span><span id="L-2197"><a href="#L-2197"><span class="linenos">2197</span></a> +</span><span id="L-2198"><a href="#L-2198"><span class="linenos">2198</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-2199"><a href="#L-2199"><span class="linenos">2199</span></a> +</span><span id="L-2200"><a href="#L-2200"><span class="linenos">2200</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2201"><a href="#L-2201"><span class="linenos">2201</span></a> +</span><span id="L-2202"><a href="#L-2202"><span class="linenos">2202</span></a> <span class="n">pivot</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> <span class="n">unpivot</span><span class="o">=</span><span class="n">unpivot</span><span class="p">)</span> </span><span id="L-2203"><a href="#L-2203"><span class="linenos">2203</span></a> -</span><span id="L-2204"><a href="#L-2204"><span class="linenos">2204</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_sets</span><span class="p">()</span> -</span><span id="L-2205"><a href="#L-2205"><span class="linenos">2205</span></a> <span class="k">if</span> <span class="n">grouping_sets</span><span class="p">:</span> -</span><span id="L-2206"><a href="#L-2206"><span class="linenos">2206</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"grouping_sets"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span> -</span><span id="L-2207"><a href="#L-2207"><span class="linenos">2207</span></a> -</span><span id="L-2208"><a href="#L-2208"><span class="linenos">2208</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2209"><a href="#L-2209"><span class="linenos">2209</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2210"><a href="#L-2210"><span class="linenos">2210</span></a> -</span><span id="L-2211"><a href="#L-2211"><span class="linenos">2211</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="L-2212"><a href="#L-2212"><span class="linenos">2212</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">):</span> -</span><span id="L-2213"><a href="#L-2213"><span class="linenos">2213</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-2214"><a href="#L-2214"><span class="linenos">2214</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"rollup"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">rollup</span><span class="p">))</span> -</span><span id="L-2215"><a href="#L-2215"><span class="linenos">2215</span></a> -</span><span id="L-2216"><a href="#L-2216"><span class="linenos">2216</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">):</span> -</span><span id="L-2217"><a href="#L-2217"><span class="linenos">2217</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-2218"><a href="#L-2218"><span class="linenos">2218</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"cube"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cube</span><span class="p">))</span> -</span><span id="L-2219"><a href="#L-2219"><span class="linenos">2219</span></a> -</span><span id="L-2220"><a href="#L-2220"><span class="linenos">2220</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">expressions</span> <span class="ow">or</span> <span class="n">grouping_sets</span> <span class="ow">or</span> <span class="n">rollup</span> <span class="ow">or</span> <span class="n">cube</span><span class="p">):</span> -</span><span id="L-2221"><a href="#L-2221"><span class="linenos">2221</span></a> <span class="k">break</span> +</span><span id="L-2204"><a href="#L-2204"><span class="linenos">2204</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-2205"><a href="#L-2205"><span class="linenos">2205</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="L-2206"><a href="#L-2206"><span class="linenos">2206</span></a> +</span><span id="L-2207"><a href="#L-2207"><span class="linenos">2207</span></a> <span class="k">return</span> <span class="n">pivot</span> +</span><span id="L-2208"><a href="#L-2208"><span class="linenos">2208</span></a> +</span><span id="L-2209"><a href="#L-2209"><span class="linenos">2209</span></a> <span class="k">def</span> <span class="nf">_parse_where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2210"><a href="#L-2210"><span class="linenos">2210</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">):</span> +</span><span id="L-2211"><a href="#L-2211"><span class="linenos">2211</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2212"><a href="#L-2212"><span class="linenos">2212</span></a> +</span><span id="L-2213"><a href="#L-2213"><span class="linenos">2213</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2214"><a href="#L-2214"><span class="linenos">2214</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-2215"><a href="#L-2215"><span class="linenos">2215</span></a> <span class="p">)</span> +</span><span id="L-2216"><a href="#L-2216"><span class="linenos">2216</span></a> +</span><span id="L-2217"><a href="#L-2217"><span class="linenos">2217</span></a> <span class="k">def</span> <span class="nf">_parse_group</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_group_by_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2218"><a href="#L-2218"><span class="linenos">2218</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_group_by_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">):</span> +</span><span id="L-2219"><a href="#L-2219"><span class="linenos">2219</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2220"><a href="#L-2220"><span class="linenos">2220</span></a> +</span><span id="L-2221"><a href="#L-2221"><span class="linenos">2221</span></a> <span class="n">elements</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span> </span><span id="L-2222"><a href="#L-2222"><span class="linenos">2222</span></a> -</span><span id="L-2223"><a href="#L-2223"><span class="linenos">2223</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">,</span> <span class="o">**</span><span class="n">elements</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-2224"><a href="#L-2224"><span class="linenos">2224</span></a> -</span><span id="L-2225"><a href="#L-2225"><span class="linenos">2225</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_sets</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="L-2226"><a href="#L-2226"><span class="linenos">2226</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">):</span> -</span><span id="L-2227"><a href="#L-2227"><span class="linenos">2227</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2228"><a href="#L-2228"><span class="linenos">2228</span></a> -</span><span id="L-2229"><a href="#L-2229"><span class="linenos">2229</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_set</span><span class="p">)</span> -</span><span id="L-2230"><a href="#L-2230"><span class="linenos">2230</span></a> -</span><span id="L-2231"><a href="#L-2231"><span class="linenos">2231</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2232"><a href="#L-2232"><span class="linenos">2232</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2233"><a href="#L-2233"><span class="linenos">2233</span></a> <span class="n">grouping_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-2234"><a href="#L-2234"><span class="linenos">2234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2235"><a href="#L-2235"><span class="linenos">2235</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">grouping_set</span><span class="p">)</span> -</span><span id="L-2236"><a href="#L-2236"><span class="linenos">2236</span></a> -</span><span id="L-2237"><a href="#L-2237"><span class="linenos">2237</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-2238"><a href="#L-2238"><span class="linenos">2238</span></a> -</span><span id="L-2239"><a href="#L-2239"><span class="linenos">2239</span></a> <span class="k">def</span> <span class="nf">_parse_having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_having_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2240"><a href="#L-2240"><span class="linenos">2240</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_having_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> -</span><span id="L-2241"><a href="#L-2241"><span class="linenos">2241</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2242"><a href="#L-2242"><span class="linenos">2242</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="L-2223"><a href="#L-2223"><span class="linenos">2223</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-2224"><a href="#L-2224"><span class="linenos">2224</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-2225"><a href="#L-2225"><span class="linenos">2225</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-2226"><a href="#L-2226"><span class="linenos">2226</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2227"><a href="#L-2227"><span class="linenos">2227</span></a> +</span><span id="L-2228"><a href="#L-2228"><span class="linenos">2228</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_sets</span><span class="p">()</span> +</span><span id="L-2229"><a href="#L-2229"><span class="linenos">2229</span></a> <span class="k">if</span> <span class="n">grouping_sets</span><span class="p">:</span> +</span><span id="L-2230"><a href="#L-2230"><span class="linenos">2230</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"grouping_sets"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span> +</span><span id="L-2231"><a href="#L-2231"><span class="linenos">2231</span></a> +</span><span id="L-2232"><a href="#L-2232"><span class="linenos">2232</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2233"><a href="#L-2233"><span class="linenos">2233</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2234"><a href="#L-2234"><span class="linenos">2234</span></a> +</span><span id="L-2235"><a href="#L-2235"><span class="linenos">2235</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="L-2236"><a href="#L-2236"><span class="linenos">2236</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">):</span> +</span><span id="L-2237"><a href="#L-2237"><span class="linenos">2237</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-2238"><a href="#L-2238"><span class="linenos">2238</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"rollup"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">rollup</span><span class="p">))</span> +</span><span id="L-2239"><a href="#L-2239"><span class="linenos">2239</span></a> +</span><span id="L-2240"><a href="#L-2240"><span class="linenos">2240</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">):</span> +</span><span id="L-2241"><a href="#L-2241"><span class="linenos">2241</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-2242"><a href="#L-2242"><span class="linenos">2242</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"cube"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cube</span><span class="p">))</span> </span><span id="L-2243"><a href="#L-2243"><span class="linenos">2243</span></a> -</span><span id="L-2244"><a href="#L-2244"><span class="linenos">2244</span></a> <span class="k">def</span> <span class="nf">_parse_qualify</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2245"><a href="#L-2245"><span class="linenos">2245</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">):</span> -</span><span id="L-2246"><a href="#L-2246"><span class="linenos">2246</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2247"><a href="#L-2247"><span class="linenos">2247</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="L-2244"><a href="#L-2244"><span class="linenos">2244</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">expressions</span> <span class="ow">or</span> <span class="n">grouping_sets</span> <span class="ow">or</span> <span class="n">rollup</span> <span class="ow">or</span> <span class="n">cube</span><span class="p">):</span> +</span><span id="L-2245"><a href="#L-2245"><span class="linenos">2245</span></a> <span class="k">break</span> +</span><span id="L-2246"><a href="#L-2246"><span class="linenos">2246</span></a> +</span><span id="L-2247"><a href="#L-2247"><span class="linenos">2247</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">,</span> <span class="o">**</span><span class="n">elements</span><span class="p">)</span> <span class="c1"># type: ignore</span> </span><span id="L-2248"><a href="#L-2248"><span class="linenos">2248</span></a> -</span><span id="L-2249"><a href="#L-2249"><span class="linenos">2249</span></a> <span class="k">def</span> <span class="nf">_parse_order</span><span class="p">(</span> -</span><span id="L-2250"><a href="#L-2250"><span class="linenos">2250</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">skip_order_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-2251"><a href="#L-2251"><span class="linenos">2251</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2252"><a href="#L-2252"><span class="linenos">2252</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_order_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">):</span> -</span><span id="L-2253"><a href="#L-2253"><span class="linenos">2253</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2249"><a href="#L-2249"><span class="linenos">2249</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_sets</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="L-2250"><a href="#L-2250"><span class="linenos">2250</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">):</span> +</span><span id="L-2251"><a href="#L-2251"><span class="linenos">2251</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2252"><a href="#L-2252"><span class="linenos">2252</span></a> +</span><span id="L-2253"><a href="#L-2253"><span class="linenos">2253</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_set</span><span class="p">)</span> </span><span id="L-2254"><a href="#L-2254"><span class="linenos">2254</span></a> -</span><span id="L-2255"><a href="#L-2255"><span class="linenos">2255</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2256"><a href="#L-2256"><span class="linenos">2256</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</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">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="L-2257"><a href="#L-2257"><span class="linenos">2257</span></a> <span class="p">)</span> -</span><span id="L-2258"><a href="#L-2258"><span class="linenos">2258</span></a> -</span><span id="L-2259"><a href="#L-2259"><span class="linenos">2259</span></a> <span class="k">def</span> <span class="nf">_parse_sort</span><span class="p">(</span> -</span><span id="L-2260"><a href="#L-2260"><span class="linenos">2260</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-2261"><a href="#L-2261"><span class="linenos">2261</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2262"><a href="#L-2262"><span class="linenos">2262</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">):</span> -</span><span id="L-2263"><a href="#L-2263"><span class="linenos">2263</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2264"><a href="#L-2264"><span class="linenos">2264</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">))</span> -</span><span id="L-2265"><a href="#L-2265"><span class="linenos">2265</span></a> -</span><span id="L-2266"><a href="#L-2266"><span class="linenos">2266</span></a> <span class="k">def</span> <span class="nf">_parse_ordered</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-2267"><a href="#L-2267"><span class="linenos">2267</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-2268"><a href="#L-2268"><span class="linenos">2268</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">)</span> -</span><span id="L-2269"><a href="#L-2269"><span class="linenos">2269</span></a> <span class="n">is_desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">)</span> -</span><span id="L-2270"><a href="#L-2270"><span class="linenos">2270</span></a> <span class="n">is_nulls_first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_FIRST</span><span class="p">)</span> -</span><span id="L-2271"><a href="#L-2271"><span class="linenos">2271</span></a> <span class="n">is_nulls_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_LAST</span><span class="p">)</span> -</span><span id="L-2272"><a href="#L-2272"><span class="linenos">2272</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="n">is_desc</span> <span class="ow">or</span> <span class="kc">False</span> -</span><span id="L-2273"><a href="#L-2273"><span class="linenos">2273</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> -</span><span id="L-2274"><a href="#L-2274"><span class="linenos">2274</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="kc">False</span> -</span><span id="L-2275"><a href="#L-2275"><span class="linenos">2275</span></a> <span class="n">explicitly_null_ordered</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="n">is_nulls_last</span> -</span><span id="L-2276"><a href="#L-2276"><span class="linenos">2276</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="L-2277"><a href="#L-2277"><span class="linenos">2277</span></a> <span class="ow">not</span> <span class="n">explicitly_null_ordered</span> -</span><span id="L-2278"><a href="#L-2278"><span class="linenos">2278</span></a> <span class="ow">and</span> <span class="p">(</span> -</span><span id="L-2279"><a href="#L-2279"><span class="linenos">2279</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> -</span><span id="L-2280"><a href="#L-2280"><span class="linenos">2280</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">!=</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> -</span><span id="L-2281"><a href="#L-2281"><span class="linenos">2281</span></a> <span class="p">)</span> -</span><span id="L-2282"><a href="#L-2282"><span class="linenos">2282</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">!=</span> <span class="s2">"nulls_are_last"</span> -</span><span id="L-2283"><a href="#L-2283"><span class="linenos">2283</span></a> <span class="p">):</span> -</span><span id="L-2284"><a href="#L-2284"><span class="linenos">2284</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-2285"><a href="#L-2285"><span class="linenos">2285</span></a> -</span><span id="L-2286"><a href="#L-2286"><span class="linenos">2286</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Ordered</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">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">nulls_first</span><span class="o">=</span><span class="n">nulls_first</span><span class="p">)</span> -</span><span id="L-2287"><a href="#L-2287"><span class="linenos">2287</span></a> -</span><span id="L-2288"><a href="#L-2288"><span class="linenos">2288</span></a> <span class="k">def</span> <span class="nf">_parse_limit</span><span class="p">(</span> -</span><span id="L-2289"><a href="#L-2289"><span class="linenos">2289</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">top</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-2290"><a href="#L-2290"><span class="linenos">2290</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2291"><a href="#L-2291"><span class="linenos">2291</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">):</span> -</span><span id="L-2292"><a href="#L-2292"><span class="linenos">2292</span></a> <span class="n">limit_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="L-2293"><a href="#L-2293"><span class="linenos">2293</span></a> <span class="n">limit_exp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2294"><a href="#L-2294"><span class="linenos">2294</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-2295"><a href="#L-2295"><span class="linenos">2295</span></a> <span class="p">)</span> -</span><span id="L-2296"><a href="#L-2296"><span class="linenos">2296</span></a> -</span><span id="L-2297"><a href="#L-2297"><span class="linenos">2297</span></a> <span class="k">if</span> <span class="n">limit_paren</span><span class="p">:</span> -</span><span id="L-2298"><a href="#L-2298"><span class="linenos">2298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2299"><a href="#L-2299"><span class="linenos">2299</span></a> -</span><span id="L-2300"><a href="#L-2300"><span class="linenos">2300</span></a> <span class="k">return</span> <span class="n">limit_exp</span> -</span><span id="L-2301"><a href="#L-2301"><span class="linenos">2301</span></a> -</span><span id="L-2302"><a href="#L-2302"><span class="linenos">2302</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">):</span> -</span><span id="L-2303"><a href="#L-2303"><span class="linenos">2303</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">))</span> -</span><span id="L-2304"><a href="#L-2304"><span class="linenos">2304</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">"FIRST"</span> -</span><span id="L-2305"><a href="#L-2305"><span class="linenos">2305</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-2306"><a href="#L-2306"><span class="linenos">2306</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> -</span><span id="L-2307"><a href="#L-2307"><span class="linenos">2307</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">)</span> -</span><span id="L-2308"><a href="#L-2308"><span class="linenos">2308</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Fetch</span><span class="p">,</span> <span class="n">direction</span><span class="o">=</span><span class="n">direction</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="n">count</span><span class="p">)</span> +</span><span id="L-2255"><a href="#L-2255"><span class="linenos">2255</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2256"><a href="#L-2256"><span class="linenos">2256</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2257"><a href="#L-2257"><span class="linenos">2257</span></a> <span class="n">grouping_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-2258"><a href="#L-2258"><span class="linenos">2258</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2259"><a href="#L-2259"><span class="linenos">2259</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">grouping_set</span><span class="p">)</span> +</span><span id="L-2260"><a href="#L-2260"><span class="linenos">2260</span></a> +</span><span id="L-2261"><a href="#L-2261"><span class="linenos">2261</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-2262"><a href="#L-2262"><span class="linenos">2262</span></a> +</span><span id="L-2263"><a href="#L-2263"><span class="linenos">2263</span></a> <span class="k">def</span> <span class="nf">_parse_having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_having_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2264"><a href="#L-2264"><span class="linenos">2264</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_having_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> +</span><span id="L-2265"><a href="#L-2265"><span class="linenos">2265</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2266"><a href="#L-2266"><span class="linenos">2266</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="L-2267"><a href="#L-2267"><span class="linenos">2267</span></a> +</span><span id="L-2268"><a href="#L-2268"><span class="linenos">2268</span></a> <span class="k">def</span> <span class="nf">_parse_qualify</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2269"><a href="#L-2269"><span class="linenos">2269</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">):</span> +</span><span id="L-2270"><a href="#L-2270"><span class="linenos">2270</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2271"><a href="#L-2271"><span class="linenos">2271</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="L-2272"><a href="#L-2272"><span class="linenos">2272</span></a> +</span><span id="L-2273"><a href="#L-2273"><span class="linenos">2273</span></a> <span class="k">def</span> <span class="nf">_parse_order</span><span class="p">(</span> +</span><span id="L-2274"><a href="#L-2274"><span class="linenos">2274</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">skip_order_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2275"><a href="#L-2275"><span class="linenos">2275</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2276"><a href="#L-2276"><span class="linenos">2276</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_order_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">):</span> +</span><span id="L-2277"><a href="#L-2277"><span class="linenos">2277</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2278"><a href="#L-2278"><span class="linenos">2278</span></a> +</span><span id="L-2279"><a href="#L-2279"><span class="linenos">2279</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2280"><a href="#L-2280"><span class="linenos">2280</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</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">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="L-2281"><a href="#L-2281"><span class="linenos">2281</span></a> <span class="p">)</span> +</span><span id="L-2282"><a href="#L-2282"><span class="linenos">2282</span></a> +</span><span id="L-2283"><a href="#L-2283"><span class="linenos">2283</span></a> <span class="k">def</span> <span class="nf">_parse_sort</span><span class="p">(</span> +</span><span id="L-2284"><a href="#L-2284"><span class="linenos">2284</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-2285"><a href="#L-2285"><span class="linenos">2285</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2286"><a href="#L-2286"><span class="linenos">2286</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">):</span> +</span><span id="L-2287"><a href="#L-2287"><span class="linenos">2287</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2288"><a href="#L-2288"><span class="linenos">2288</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">))</span> +</span><span id="L-2289"><a href="#L-2289"><span class="linenos">2289</span></a> +</span><span id="L-2290"><a href="#L-2290"><span class="linenos">2290</span></a> <span class="k">def</span> <span class="nf">_parse_ordered</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2291"><a href="#L-2291"><span class="linenos">2291</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-2292"><a href="#L-2292"><span class="linenos">2292</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">)</span> +</span><span id="L-2293"><a href="#L-2293"><span class="linenos">2293</span></a> <span class="n">is_desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">)</span> +</span><span id="L-2294"><a href="#L-2294"><span class="linenos">2294</span></a> <span class="n">is_nulls_first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_FIRST</span><span class="p">)</span> +</span><span id="L-2295"><a href="#L-2295"><span class="linenos">2295</span></a> <span class="n">is_nulls_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_LAST</span><span class="p">)</span> +</span><span id="L-2296"><a href="#L-2296"><span class="linenos">2296</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="n">is_desc</span> <span class="ow">or</span> <span class="kc">False</span> +</span><span id="L-2297"><a href="#L-2297"><span class="linenos">2297</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> +</span><span id="L-2298"><a href="#L-2298"><span class="linenos">2298</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="kc">False</span> +</span><span id="L-2299"><a href="#L-2299"><span class="linenos">2299</span></a> <span class="n">explicitly_null_ordered</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="n">is_nulls_last</span> +</span><span id="L-2300"><a href="#L-2300"><span class="linenos">2300</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="L-2301"><a href="#L-2301"><span class="linenos">2301</span></a> <span class="ow">not</span> <span class="n">explicitly_null_ordered</span> +</span><span id="L-2302"><a href="#L-2302"><span class="linenos">2302</span></a> <span class="ow">and</span> <span class="p">(</span> +</span><span id="L-2303"><a href="#L-2303"><span class="linenos">2303</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> +</span><span id="L-2304"><a href="#L-2304"><span class="linenos">2304</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">!=</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> +</span><span id="L-2305"><a href="#L-2305"><span class="linenos">2305</span></a> <span class="p">)</span> +</span><span id="L-2306"><a href="#L-2306"><span class="linenos">2306</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">!=</span> <span class="s2">"nulls_are_last"</span> +</span><span id="L-2307"><a href="#L-2307"><span class="linenos">2307</span></a> <span class="p">):</span> +</span><span id="L-2308"><a href="#L-2308"><span class="linenos">2308</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-2309"><a href="#L-2309"><span class="linenos">2309</span></a> -</span><span id="L-2310"><a href="#L-2310"><span class="linenos">2310</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2310"><a href="#L-2310"><span class="linenos">2310</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Ordered</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">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">nulls_first</span><span class="o">=</span><span class="n">nulls_first</span><span class="p">)</span> </span><span id="L-2311"><a href="#L-2311"><span class="linenos">2311</span></a> -</span><span id="L-2312"><a href="#L-2312"><span class="linenos">2312</span></a> <span class="k">def</span> <span class="nf">_parse_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2313"><a href="#L-2313"><span class="linenos">2313</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> -</span><span id="L-2314"><a href="#L-2314"><span class="linenos">2314</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2315"><a href="#L-2315"><span class="linenos">2315</span></a> -</span><span id="L-2316"><a href="#L-2316"><span class="linenos">2316</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="L-2317"><a href="#L-2317"><span class="linenos">2317</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> -</span><span id="L-2318"><a href="#L-2318"><span class="linenos">2318</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">count</span><span class="p">)</span> -</span><span id="L-2319"><a href="#L-2319"><span class="linenos">2319</span></a> -</span><span id="L-2320"><a href="#L-2320"><span class="linenos">2320</span></a> <span class="k">def</span> <span class="nf">_parse_lock</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2321"><a href="#L-2321"><span class="linenos">2321</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">):</span> -</span><span id="L-2322"><a href="#L-2322"><span class="linenos">2322</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2323"><a href="#L-2323"><span class="linenos">2323</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">):</span> -</span><span id="L-2324"><a href="#L-2324"><span class="linenos">2324</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-2312"><a href="#L-2312"><span class="linenos">2312</span></a> <span class="k">def</span> <span class="nf">_parse_limit</span><span class="p">(</span> +</span><span id="L-2313"><a href="#L-2313"><span class="linenos">2313</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">top</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2314"><a href="#L-2314"><span class="linenos">2314</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2315"><a href="#L-2315"><span class="linenos">2315</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">):</span> +</span><span id="L-2316"><a href="#L-2316"><span class="linenos">2316</span></a> <span class="n">limit_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="L-2317"><a href="#L-2317"><span class="linenos">2317</span></a> <span class="n">limit_exp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2318"><a href="#L-2318"><span class="linenos">2318</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-2319"><a href="#L-2319"><span class="linenos">2319</span></a> <span class="p">)</span> +</span><span id="L-2320"><a href="#L-2320"><span class="linenos">2320</span></a> +</span><span id="L-2321"><a href="#L-2321"><span class="linenos">2321</span></a> <span class="k">if</span> <span class="n">limit_paren</span><span class="p">:</span> +</span><span id="L-2322"><a href="#L-2322"><span class="linenos">2322</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2323"><a href="#L-2323"><span class="linenos">2323</span></a> +</span><span id="L-2324"><a href="#L-2324"><span class="linenos">2324</span></a> <span class="k">return</span> <span class="n">limit_exp</span> </span><span id="L-2325"><a href="#L-2325"><span class="linenos">2325</span></a> -</span><span id="L-2326"><a href="#L-2326"><span class="linenos">2326</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2327"><a href="#L-2327"><span class="linenos">2327</span></a> -</span><span id="L-2328"><a href="#L-2328"><span class="linenos">2328</span></a> <span class="k">def</span> <span class="nf">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2329"><a href="#L-2329"><span class="linenos">2329</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_OPERATIONS</span><span class="p">):</span> -</span><span id="L-2330"><a href="#L-2330"><span class="linenos">2330</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2331"><a href="#L-2331"><span class="linenos">2331</span></a> -</span><span id="L-2332"><a href="#L-2332"><span class="linenos">2332</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-2326"><a href="#L-2326"><span class="linenos">2326</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">):</span> +</span><span id="L-2327"><a href="#L-2327"><span class="linenos">2327</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">))</span> +</span><span id="L-2328"><a href="#L-2328"><span class="linenos">2328</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">"FIRST"</span> +</span><span id="L-2329"><a href="#L-2329"><span class="linenos">2329</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-2330"><a href="#L-2330"><span class="linenos">2330</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> +</span><span id="L-2331"><a href="#L-2331"><span class="linenos">2331</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">)</span> +</span><span id="L-2332"><a href="#L-2332"><span class="linenos">2332</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Fetch</span><span class="p">,</span> <span class="n">direction</span><span class="o">=</span><span class="n">direction</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="n">count</span><span class="p">)</span> </span><span id="L-2333"><a href="#L-2333"><span class="linenos">2333</span></a> -</span><span id="L-2334"><a href="#L-2334"><span class="linenos">2334</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">:</span> -</span><span id="L-2335"><a href="#L-2335"><span class="linenos">2335</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span> -</span><span id="L-2336"><a href="#L-2336"><span class="linenos">2336</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">:</span> -</span><span id="L-2337"><a href="#L-2337"><span class="linenos">2337</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span> -</span><span id="L-2338"><a href="#L-2338"><span class="linenos">2338</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2339"><a href="#L-2339"><span class="linenos">2339</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span> -</span><span id="L-2340"><a href="#L-2340"><span class="linenos">2340</span></a> -</span><span id="L-2341"><a href="#L-2341"><span class="linenos">2341</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2342"><a href="#L-2342"><span class="linenos">2342</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="L-2343"><a href="#L-2343"><span class="linenos">2343</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-2344"><a href="#L-2344"><span class="linenos">2344</span></a> <span class="n">distinct</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">),</span> -</span><span id="L-2345"><a href="#L-2345"><span class="linenos">2345</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="L-2346"><a href="#L-2346"><span class="linenos">2346</span></a> <span class="p">)</span> -</span><span id="L-2347"><a href="#L-2347"><span class="linenos">2347</span></a> -</span><span id="L-2348"><a href="#L-2348"><span class="linenos">2348</span></a> <span class="k">def</span> <span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2349"><a href="#L-2349"><span class="linenos">2349</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> -</span><span id="L-2350"><a href="#L-2350"><span class="linenos">2350</span></a> -</span><span id="L-2351"><a href="#L-2351"><span class="linenos">2351</span></a> <span class="k">def</span> <span class="nf">_parse_conjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2352"><a href="#L-2352"><span class="linenos">2352</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONJUNCTION</span><span class="p">)</span> -</span><span id="L-2353"><a href="#L-2353"><span class="linenos">2353</span></a> -</span><span id="L-2354"><a href="#L-2354"><span class="linenos">2354</span></a> <span class="k">def</span> <span class="nf">_parse_equality</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2355"><a href="#L-2355"><span class="linenos">2355</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EQUALITY</span><span class="p">)</span> -</span><span id="L-2356"><a href="#L-2356"><span class="linenos">2356</span></a> -</span><span id="L-2357"><a href="#L-2357"><span class="linenos">2357</span></a> <span class="k">def</span> <span class="nf">_parse_comparison</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2358"><a href="#L-2358"><span class="linenos">2358</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMPARISON</span><span class="p">)</span> -</span><span id="L-2359"><a href="#L-2359"><span class="linenos">2359</span></a> -</span><span id="L-2360"><a href="#L-2360"><span class="linenos">2360</span></a> <span class="k">def</span> <span class="nf">_parse_range</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2361"><a href="#L-2361"><span class="linenos">2361</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-2362"><a href="#L-2362"><span class="linenos">2362</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> -</span><span id="L-2363"><a href="#L-2363"><span class="linenos">2363</span></a> -</span><span id="L-2364"><a href="#L-2364"><span class="linenos">2364</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">):</span> -</span><span id="L-2365"><a href="#L-2365"><span class="linenos">2365</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> -</span><span id="L-2366"><a href="#L-2366"><span class="linenos">2366</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">):</span> -</span><span id="L-2367"><a href="#L-2367"><span class="linenos">2367</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> -</span><span id="L-2368"><a href="#L-2368"><span class="linenos">2368</span></a> -</span><span id="L-2369"><a href="#L-2369"><span class="linenos">2369</span></a> <span class="c1"># Postgres supports ISNULL and NOTNULL for conditions.</span> -</span><span id="L-2370"><a href="#L-2370"><span class="linenos">2370</span></a> <span class="c1"># https://blog.andreiavram.ro/postgresql-null-composite-type/</span> -</span><span id="L-2371"><a href="#L-2371"><span class="linenos">2371</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">):</span> -</span><span id="L-2372"><a href="#L-2372"><span class="linenos">2372</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> -</span><span id="L-2373"><a href="#L-2373"><span class="linenos">2373</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2334"><a href="#L-2334"><span class="linenos">2334</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2335"><a href="#L-2335"><span class="linenos">2335</span></a> +</span><span id="L-2336"><a href="#L-2336"><span class="linenos">2336</span></a> <span class="k">def</span> <span class="nf">_parse_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2337"><a href="#L-2337"><span class="linenos">2337</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> +</span><span id="L-2338"><a href="#L-2338"><span class="linenos">2338</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2339"><a href="#L-2339"><span class="linenos">2339</span></a> +</span><span id="L-2340"><a href="#L-2340"><span class="linenos">2340</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="L-2341"><a href="#L-2341"><span class="linenos">2341</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> +</span><span id="L-2342"><a href="#L-2342"><span class="linenos">2342</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">count</span><span class="p">)</span> +</span><span id="L-2343"><a href="#L-2343"><span class="linenos">2343</span></a> +</span><span id="L-2344"><a href="#L-2344"><span class="linenos">2344</span></a> <span class="k">def</span> <span class="nf">_parse_lock</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2345"><a href="#L-2345"><span class="linenos">2345</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">):</span> +</span><span id="L-2346"><a href="#L-2346"><span class="linenos">2346</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2347"><a href="#L-2347"><span class="linenos">2347</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">):</span> +</span><span id="L-2348"><a href="#L-2348"><span class="linenos">2348</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-2349"><a href="#L-2349"><span class="linenos">2349</span></a> +</span><span id="L-2350"><a href="#L-2350"><span class="linenos">2350</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2351"><a href="#L-2351"><span class="linenos">2351</span></a> +</span><span id="L-2352"><a href="#L-2352"><span class="linenos">2352</span></a> <span class="k">def</span> <span class="nf">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2353"><a href="#L-2353"><span class="linenos">2353</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_OPERATIONS</span><span class="p">):</span> +</span><span id="L-2354"><a href="#L-2354"><span class="linenos">2354</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2355"><a href="#L-2355"><span class="linenos">2355</span></a> +</span><span id="L-2356"><a href="#L-2356"><span class="linenos">2356</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-2357"><a href="#L-2357"><span class="linenos">2357</span></a> +</span><span id="L-2358"><a href="#L-2358"><span class="linenos">2358</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">:</span> +</span><span id="L-2359"><a href="#L-2359"><span class="linenos">2359</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span> +</span><span id="L-2360"><a href="#L-2360"><span class="linenos">2360</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">:</span> +</span><span id="L-2361"><a href="#L-2361"><span class="linenos">2361</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span> +</span><span id="L-2362"><a href="#L-2362"><span class="linenos">2362</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2363"><a href="#L-2363"><span class="linenos">2363</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span> +</span><span id="L-2364"><a href="#L-2364"><span class="linenos">2364</span></a> +</span><span id="L-2365"><a href="#L-2365"><span class="linenos">2365</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2366"><a href="#L-2366"><span class="linenos">2366</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="L-2367"><a href="#L-2367"><span class="linenos">2367</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-2368"><a href="#L-2368"><span class="linenos">2368</span></a> <span class="n">distinct</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">),</span> +</span><span id="L-2369"><a href="#L-2369"><span class="linenos">2369</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="L-2370"><a href="#L-2370"><span class="linenos">2370</span></a> <span class="p">)</span> +</span><span id="L-2371"><a href="#L-2371"><span class="linenos">2371</span></a> +</span><span id="L-2372"><a href="#L-2372"><span class="linenos">2372</span></a> <span class="k">def</span> <span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2373"><a href="#L-2373"><span class="linenos">2373</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> </span><span id="L-2374"><a href="#L-2374"><span class="linenos">2374</span></a> -</span><span id="L-2375"><a href="#L-2375"><span class="linenos">2375</span></a> <span class="k">if</span> <span class="n">negate</span><span class="p">:</span> -</span><span id="L-2376"><a href="#L-2376"><span class="linenos">2376</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2375"><a href="#L-2375"><span class="linenos">2375</span></a> <span class="k">def</span> <span class="nf">_parse_conjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2376"><a href="#L-2376"><span class="linenos">2376</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONJUNCTION</span><span class="p">)</span> </span><span id="L-2377"><a href="#L-2377"><span class="linenos">2377</span></a> -</span><span id="L-2378"><a href="#L-2378"><span class="linenos">2378</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">):</span> -</span><span id="L-2379"><a href="#L-2379"><span class="linenos">2379</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2378"><a href="#L-2378"><span class="linenos">2378</span></a> <span class="k">def</span> <span class="nf">_parse_equality</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2379"><a href="#L-2379"><span class="linenos">2379</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EQUALITY</span><span class="p">)</span> </span><span id="L-2380"><a href="#L-2380"><span class="linenos">2380</span></a> -</span><span id="L-2381"><a href="#L-2381"><span class="linenos">2381</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2382"><a href="#L-2382"><span class="linenos">2382</span></a> -</span><span id="L-2383"><a href="#L-2383"><span class="linenos">2383</span></a> <span class="k">def</span> <span class="nf">_parse_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-2384"><a href="#L-2384"><span class="linenos">2384</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> -</span><span id="L-2385"><a href="#L-2385"><span class="linenos">2385</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT_FROM</span><span class="p">):</span> -</span><span id="L-2386"><a href="#L-2386"><span class="linenos">2386</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeNEQ</span> -</span><span id="L-2387"><a href="#L-2387"><span class="linenos">2387</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">())</span> -</span><span id="L-2388"><a href="#L-2388"><span class="linenos">2388</span></a> -</span><span id="L-2389"><a href="#L-2389"><span class="linenos">2389</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2390"><a href="#L-2390"><span class="linenos">2390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> -</span><span id="L-2391"><a href="#L-2391"><span class="linenos">2391</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-2392"><a href="#L-2392"><span class="linenos">2392</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_null</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_boolean</span><span class="p">(),</span> -</span><span id="L-2393"><a href="#L-2393"><span class="linenos">2393</span></a> <span class="p">)</span> -</span><span id="L-2394"><a href="#L-2394"><span class="linenos">2394</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">this</span> -</span><span id="L-2395"><a href="#L-2395"><span class="linenos">2395</span></a> -</span><span id="L-2396"><a href="#L-2396"><span class="linenos">2396</span></a> <span class="k">def</span> <span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-2397"><a href="#L-2397"><span class="linenos">2397</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> -</span><span id="L-2398"><a href="#L-2398"><span class="linenos">2398</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="L-2399"><a href="#L-2399"><span class="linenos">2399</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">unnest</span><span class="o">=</span><span class="n">unnest</span><span class="p">)</span> -</span><span id="L-2400"><a href="#L-2400"><span class="linenos">2400</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2401"><a href="#L-2401"><span class="linenos">2401</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">)</span> -</span><span id="L-2402"><a href="#L-2402"><span class="linenos">2402</span></a> -</span><span id="L-2403"><a href="#L-2403"><span class="linenos">2403</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="L-2404"><a href="#L-2404"><span class="linenos">2404</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">query</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="L-2405"><a href="#L-2405"><span class="linenos">2405</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2406"><a href="#L-2406"><span class="linenos">2406</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-2407"><a href="#L-2407"><span class="linenos">2407</span></a> -</span><span id="L-2408"><a href="#L-2408"><span class="linenos">2408</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2409"><a href="#L-2409"><span class="linenos">2409</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2410"><a href="#L-2410"><span class="linenos">2410</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">field</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="L-2411"><a href="#L-2411"><span class="linenos">2411</span></a> -</span><span id="L-2412"><a href="#L-2412"><span class="linenos">2412</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2413"><a href="#L-2413"><span class="linenos">2413</span></a> -</span><span id="L-2414"><a href="#L-2414"><span class="linenos">2414</span></a> <span class="k">def</span> <span class="nf">_parse_between</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-2415"><a href="#L-2415"><span class="linenos">2415</span></a> <span class="n">low</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-2416"><a href="#L-2416"><span class="linenos">2416</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> -</span><span id="L-2417"><a href="#L-2417"><span class="linenos">2417</span></a> <span class="n">high</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-2418"><a href="#L-2418"><span class="linenos">2418</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Between</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">low</span><span class="o">=</span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="o">=</span><span class="n">high</span><span class="p">)</span> +</span><span id="L-2381"><a href="#L-2381"><span class="linenos">2381</span></a> <span class="k">def</span> <span class="nf">_parse_comparison</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2382"><a href="#L-2382"><span class="linenos">2382</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMPARISON</span><span class="p">)</span> +</span><span id="L-2383"><a href="#L-2383"><span class="linenos">2383</span></a> +</span><span id="L-2384"><a href="#L-2384"><span class="linenos">2384</span></a> <span class="k">def</span> <span class="nf">_parse_range</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2385"><a href="#L-2385"><span class="linenos">2385</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-2386"><a href="#L-2386"><span class="linenos">2386</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="L-2387"><a href="#L-2387"><span class="linenos">2387</span></a> +</span><span id="L-2388"><a href="#L-2388"><span class="linenos">2388</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">):</span> +</span><span id="L-2389"><a href="#L-2389"><span class="linenos">2389</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> +</span><span id="L-2390"><a href="#L-2390"><span class="linenos">2390</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">):</span> +</span><span id="L-2391"><a href="#L-2391"><span class="linenos">2391</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> +</span><span id="L-2392"><a href="#L-2392"><span class="linenos">2392</span></a> +</span><span id="L-2393"><a href="#L-2393"><span class="linenos">2393</span></a> <span class="c1"># Postgres supports ISNULL and NOTNULL for conditions.</span> +</span><span id="L-2394"><a href="#L-2394"><span class="linenos">2394</span></a> <span class="c1"># https://blog.andreiavram.ro/postgresql-null-composite-type/</span> +</span><span id="L-2395"><a href="#L-2395"><span class="linenos">2395</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">):</span> +</span><span id="L-2396"><a href="#L-2396"><span class="linenos">2396</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> +</span><span id="L-2397"><a href="#L-2397"><span class="linenos">2397</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2398"><a href="#L-2398"><span class="linenos">2398</span></a> +</span><span id="L-2399"><a href="#L-2399"><span class="linenos">2399</span></a> <span class="k">if</span> <span class="n">negate</span><span class="p">:</span> +</span><span id="L-2400"><a href="#L-2400"><span class="linenos">2400</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2401"><a href="#L-2401"><span class="linenos">2401</span></a> +</span><span id="L-2402"><a href="#L-2402"><span class="linenos">2402</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">):</span> +</span><span id="L-2403"><a href="#L-2403"><span class="linenos">2403</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2404"><a href="#L-2404"><span class="linenos">2404</span></a> +</span><span id="L-2405"><a href="#L-2405"><span class="linenos">2405</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2406"><a href="#L-2406"><span class="linenos">2406</span></a> +</span><span id="L-2407"><a href="#L-2407"><span class="linenos">2407</span></a> <span class="k">def</span> <span class="nf">_parse_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2408"><a href="#L-2408"><span class="linenos">2408</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="L-2409"><a href="#L-2409"><span class="linenos">2409</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT_FROM</span><span class="p">):</span> +</span><span id="L-2410"><a href="#L-2410"><span class="linenos">2410</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeNEQ</span> +</span><span id="L-2411"><a href="#L-2411"><span class="linenos">2411</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">())</span> +</span><span id="L-2412"><a href="#L-2412"><span class="linenos">2412</span></a> +</span><span id="L-2413"><a href="#L-2413"><span class="linenos">2413</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2414"><a href="#L-2414"><span class="linenos">2414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> +</span><span id="L-2415"><a href="#L-2415"><span class="linenos">2415</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-2416"><a href="#L-2416"><span class="linenos">2416</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_null</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_boolean</span><span class="p">(),</span> +</span><span id="L-2417"><a href="#L-2417"><span class="linenos">2417</span></a> <span class="p">)</span> +</span><span id="L-2418"><a href="#L-2418"><span class="linenos">2418</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">this</span> </span><span id="L-2419"><a href="#L-2419"><span class="linenos">2419</span></a> -</span><span id="L-2420"><a href="#L-2420"><span class="linenos">2420</span></a> <span class="k">def</span> <span class="nf">_parse_escape</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2421"><a href="#L-2421"><span class="linenos">2421</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">):</span> -</span><span id="L-2422"><a href="#L-2422"><span class="linenos">2422</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2423"><a href="#L-2423"><span class="linenos">2423</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Escape</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="L-2424"><a href="#L-2424"><span class="linenos">2424</span></a> -</span><span id="L-2425"><a href="#L-2425"><span class="linenos">2425</span></a> <span class="k">def</span> <span class="nf">_parse_bitwise</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2426"><a href="#L-2426"><span class="linenos">2426</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-2427"><a href="#L-2427"><span class="linenos">2427</span></a> -</span><span id="L-2428"><a href="#L-2428"><span class="linenos">2428</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-2429"><a href="#L-2429"><span class="linenos">2429</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">):</span> -</span><span id="L-2430"><a href="#L-2430"><span class="linenos">2430</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2431"><a href="#L-2431"><span class="linenos">2431</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="L-2432"><a href="#L-2432"><span class="linenos">2432</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-2433"><a href="#L-2433"><span class="linenos">2433</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="L-2434"><a href="#L-2434"><span class="linenos">2434</span></a> <span class="p">)</span> -</span><span id="L-2435"><a href="#L-2435"><span class="linenos">2435</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="L-2436"><a href="#L-2436"><span class="linenos">2436</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2437"><a href="#L-2437"><span class="linenos">2437</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-2438"><a href="#L-2438"><span class="linenos">2438</span></a> <span class="p">)</span> -</span><span id="L-2439"><a href="#L-2439"><span class="linenos">2439</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="L-2440"><a href="#L-2440"><span class="linenos">2440</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2441"><a href="#L-2441"><span class="linenos">2441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-2442"><a href="#L-2442"><span class="linenos">2442</span></a> <span class="p">)</span> -</span><span id="L-2443"><a href="#L-2443"><span class="linenos">2443</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2444"><a href="#L-2444"><span class="linenos">2444</span></a> <span class="k">break</span> -</span><span id="L-2445"><a href="#L-2445"><span class="linenos">2445</span></a> -</span><span id="L-2446"><a href="#L-2446"><span class="linenos">2446</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2447"><a href="#L-2447"><span class="linenos">2447</span></a> -</span><span id="L-2448"><a href="#L-2448"><span class="linenos">2448</span></a> <span class="k">def</span> <span class="nf">_parse_term</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2449"><a href="#L-2449"><span class="linenos">2449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">TERM</span><span class="p">)</span> -</span><span id="L-2450"><a href="#L-2450"><span class="linenos">2450</span></a> -</span><span id="L-2451"><a href="#L-2451"><span class="linenos">2451</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2452"><a href="#L-2452"><span class="linenos">2452</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span> -</span><span id="L-2453"><a href="#L-2453"><span class="linenos">2453</span></a> -</span><span id="L-2454"><a href="#L-2454"><span class="linenos">2454</span></a> <span class="k">def</span> <span class="nf">_parse_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2455"><a href="#L-2455"><span class="linenos">2455</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">):</span> -</span><span id="L-2456"><a href="#L-2456"><span class="linenos">2456</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-2457"><a href="#L-2457"><span class="linenos">2457</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">())</span> -</span><span id="L-2458"><a href="#L-2458"><span class="linenos">2458</span></a> -</span><span id="L-2459"><a href="#L-2459"><span class="linenos">2459</span></a> <span class="k">def</span> <span class="nf">_parse_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2460"><a href="#L-2460"><span class="linenos">2460</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">):</span> -</span><span id="L-2461"><a href="#L-2461"><span class="linenos">2461</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> -</span><span id="L-2462"><a href="#L-2462"><span class="linenos">2462</span></a> -</span><span id="L-2463"><a href="#L-2463"><span class="linenos">2463</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-2464"><a href="#L-2464"><span class="linenos">2464</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2465"><a href="#L-2465"><span class="linenos">2465</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-2466"><a href="#L-2466"><span class="linenos">2466</span></a> -</span><span id="L-2467"><a href="#L-2467"><span class="linenos">2467</span></a> <span class="k">if</span> <span class="n">type_token</span><span class="p">:</span> -</span><span id="L-2468"><a href="#L-2468"><span class="linenos">2468</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> -</span><span id="L-2469"><a href="#L-2469"><span class="linenos">2469</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</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">to</span><span class="o">=</span><span class="n">type_token</span><span class="p">)</span> -</span><span id="L-2470"><a href="#L-2470"><span class="linenos">2470</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">type_token</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">"expressions"</span><span class="p">):</span> -</span><span id="L-2471"><a href="#L-2471"><span class="linenos">2471</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2472"><a href="#L-2472"><span class="linenos">2472</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-2473"><a href="#L-2473"><span class="linenos">2473</span></a> <span class="k">return</span> <span class="n">type_token</span> +</span><span id="L-2420"><a href="#L-2420"><span class="linenos">2420</span></a> <span class="k">def</span> <span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2421"><a href="#L-2421"><span class="linenos">2421</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> +</span><span id="L-2422"><a href="#L-2422"><span class="linenos">2422</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="L-2423"><a href="#L-2423"><span class="linenos">2423</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">unnest</span><span class="o">=</span><span class="n">unnest</span><span class="p">)</span> +</span><span id="L-2424"><a href="#L-2424"><span class="linenos">2424</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2425"><a href="#L-2425"><span class="linenos">2425</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">)</span> +</span><span id="L-2426"><a href="#L-2426"><span class="linenos">2426</span></a> +</span><span id="L-2427"><a href="#L-2427"><span class="linenos">2427</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="L-2428"><a href="#L-2428"><span class="linenos">2428</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">query</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="L-2429"><a href="#L-2429"><span class="linenos">2429</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2430"><a href="#L-2430"><span class="linenos">2430</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2431"><a href="#L-2431"><span class="linenos">2431</span></a> +</span><span id="L-2432"><a href="#L-2432"><span class="linenos">2432</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2433"><a href="#L-2433"><span class="linenos">2433</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2434"><a href="#L-2434"><span class="linenos">2434</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">field</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="L-2435"><a href="#L-2435"><span class="linenos">2435</span></a> +</span><span id="L-2436"><a href="#L-2436"><span class="linenos">2436</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2437"><a href="#L-2437"><span class="linenos">2437</span></a> +</span><span id="L-2438"><a href="#L-2438"><span class="linenos">2438</span></a> <span class="k">def</span> <span class="nf">_parse_between</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2439"><a href="#L-2439"><span class="linenos">2439</span></a> <span class="n">low</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-2440"><a href="#L-2440"><span class="linenos">2440</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> +</span><span id="L-2441"><a href="#L-2441"><span class="linenos">2441</span></a> <span class="n">high</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-2442"><a href="#L-2442"><span class="linenos">2442</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Between</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">low</span><span class="o">=</span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="o">=</span><span class="n">high</span><span class="p">)</span> +</span><span id="L-2443"><a href="#L-2443"><span class="linenos">2443</span></a> +</span><span id="L-2444"><a href="#L-2444"><span class="linenos">2444</span></a> <span class="k">def</span> <span class="nf">_parse_escape</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2445"><a href="#L-2445"><span class="linenos">2445</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">):</span> +</span><span id="L-2446"><a href="#L-2446"><span class="linenos">2446</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2447"><a href="#L-2447"><span class="linenos">2447</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Escape</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="L-2448"><a href="#L-2448"><span class="linenos">2448</span></a> +</span><span id="L-2449"><a href="#L-2449"><span class="linenos">2449</span></a> <span class="k">def</span> <span class="nf">_parse_bitwise</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2450"><a href="#L-2450"><span class="linenos">2450</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-2451"><a href="#L-2451"><span class="linenos">2451</span></a> +</span><span id="L-2452"><a href="#L-2452"><span class="linenos">2452</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-2453"><a href="#L-2453"><span class="linenos">2453</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">):</span> +</span><span id="L-2454"><a href="#L-2454"><span class="linenos">2454</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2455"><a href="#L-2455"><span class="linenos">2455</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> +</span><span id="L-2456"><a href="#L-2456"><span class="linenos">2456</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-2457"><a href="#L-2457"><span class="linenos">2457</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> +</span><span id="L-2458"><a href="#L-2458"><span class="linenos">2458</span></a> <span class="p">)</span> +</span><span id="L-2459"><a href="#L-2459"><span class="linenos">2459</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="L-2460"><a href="#L-2460"><span class="linenos">2460</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2461"><a href="#L-2461"><span class="linenos">2461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-2462"><a href="#L-2462"><span class="linenos">2462</span></a> <span class="p">)</span> +</span><span id="L-2463"><a href="#L-2463"><span class="linenos">2463</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="L-2464"><a href="#L-2464"><span class="linenos">2464</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2465"><a href="#L-2465"><span class="linenos">2465</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-2466"><a href="#L-2466"><span class="linenos">2466</span></a> <span class="p">)</span> +</span><span id="L-2467"><a href="#L-2467"><span class="linenos">2467</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2468"><a href="#L-2468"><span class="linenos">2468</span></a> <span class="k">break</span> +</span><span id="L-2469"><a href="#L-2469"><span class="linenos">2469</span></a> +</span><span id="L-2470"><a href="#L-2470"><span class="linenos">2470</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2471"><a href="#L-2471"><span class="linenos">2471</span></a> +</span><span id="L-2472"><a href="#L-2472"><span class="linenos">2472</span></a> <span class="k">def</span> <span class="nf">_parse_term</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2473"><a href="#L-2473"><span class="linenos">2473</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">TERM</span><span class="p">)</span> </span><span id="L-2474"><a href="#L-2474"><span class="linenos">2474</span></a> -</span><span id="L-2475"><a href="#L-2475"><span class="linenos">2475</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2476"><a href="#L-2476"><span class="linenos">2476</span></a> -</span><span id="L-2477"><a href="#L-2477"><span class="linenos">2477</span></a> <span class="k">def</span> <span class="nf">_parse_types</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2478"><a href="#L-2478"><span class="linenos">2478</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-2479"><a href="#L-2479"><span class="linenos">2479</span></a> -</span><span id="L-2480"><a href="#L-2480"><span class="linenos">2480</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SYSUDTLIB"</span><span class="p">,</span> <span class="s2">"."</span><span class="p">)</span> -</span><span id="L-2481"><a href="#L-2481"><span class="linenos">2481</span></a> -</span><span id="L-2482"><a href="#L-2482"><span class="linenos">2482</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">):</span> -</span><span id="L-2483"><a href="#L-2483"><span class="linenos">2483</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2484"><a href="#L-2484"><span class="linenos">2484</span></a> -</span><span id="L-2485"><a href="#L-2485"><span class="linenos">2485</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-2475"><a href="#L-2475"><span class="linenos">2475</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2476"><a href="#L-2476"><span class="linenos">2476</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span> +</span><span id="L-2477"><a href="#L-2477"><span class="linenos">2477</span></a> +</span><span id="L-2478"><a href="#L-2478"><span class="linenos">2478</span></a> <span class="k">def</span> <span class="nf">_parse_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2479"><a href="#L-2479"><span class="linenos">2479</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">):</span> +</span><span id="L-2480"><a href="#L-2480"><span class="linenos">2480</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-2481"><a href="#L-2481"><span class="linenos">2481</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">())</span> +</span><span id="L-2482"><a href="#L-2482"><span class="linenos">2482</span></a> +</span><span id="L-2483"><a href="#L-2483"><span class="linenos">2483</span></a> <span class="k">def</span> <span class="nf">_parse_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2484"><a href="#L-2484"><span class="linenos">2484</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">):</span> +</span><span id="L-2485"><a href="#L-2485"><span class="linenos">2485</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> </span><span id="L-2486"><a href="#L-2486"><span class="linenos">2486</span></a> -</span><span id="L-2487"><a href="#L-2487"><span class="linenos">2487</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">:</span> -</span><span id="L-2488"><a href="#L-2488"><span class="linenos">2488</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PseudoType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-2489"><a href="#L-2489"><span class="linenos">2489</span></a> -</span><span id="L-2490"><a href="#L-2490"><span class="linenos">2490</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NESTED_TYPE_TOKENS</span> -</span><span id="L-2491"><a href="#L-2491"><span class="linenos">2491</span></a> <span class="n">is_struct</span> <span class="o">=</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span> -</span><span id="L-2492"><a href="#L-2492"><span class="linenos">2492</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2493"><a href="#L-2493"><span class="linenos">2493</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-2494"><a href="#L-2494"><span class="linenos">2494</span></a> -</span><span id="L-2495"><a href="#L-2495"><span class="linenos">2495</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2496"><a href="#L-2496"><span class="linenos">2496</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> -</span><span id="L-2497"><a href="#L-2497"><span class="linenos">2497</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">)</span> -</span><span id="L-2498"><a href="#L-2498"><span class="linenos">2498</span></a> <span class="k">elif</span> <span class="n">nested</span><span class="p">:</span> -</span><span id="L-2499"><a href="#L-2499"><span class="linenos">2499</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> -</span><span id="L-2500"><a href="#L-2500"><span class="linenos">2500</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2501"><a href="#L-2501"><span class="linenos">2501</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-2502"><a href="#L-2502"><span class="linenos">2502</span></a> -</span><span id="L-2503"><a href="#L-2503"><span class="linenos">2503</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-2504"><a href="#L-2504"><span class="linenos">2504</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2505"><a href="#L-2505"><span class="linenos">2505</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2506"><a href="#L-2506"><span class="linenos">2506</span></a> -</span><span id="L-2507"><a href="#L-2507"><span class="linenos">2507</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2508"><a href="#L-2508"><span class="linenos">2508</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-2509"><a href="#L-2509"><span class="linenos">2509</span></a> -</span><span id="L-2510"><a href="#L-2510"><span class="linenos">2510</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> -</span><span id="L-2511"><a href="#L-2511"><span class="linenos">2511</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="L-2512"><a href="#L-2512"><span class="linenos">2512</span></a> <span class="n">this</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">ARRAY</span><span class="p">,</span> -</span><span id="L-2513"><a href="#L-2513"><span class="linenos">2513</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)],</span> -</span><span id="L-2514"><a href="#L-2514"><span class="linenos">2514</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-2515"><a href="#L-2515"><span class="linenos">2515</span></a> <span class="p">)</span> -</span><span id="L-2516"><a href="#L-2516"><span class="linenos">2516</span></a> -</span><span id="L-2517"><a href="#L-2517"><span class="linenos">2517</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> -</span><span id="L-2518"><a href="#L-2518"><span class="linenos">2518</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="L-2519"><a href="#L-2519"><span class="linenos">2519</span></a> <span class="n">this</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">ARRAY</span><span class="p">,</span> -</span><span id="L-2520"><a href="#L-2520"><span class="linenos">2520</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> -</span><span id="L-2521"><a href="#L-2521"><span class="linenos">2521</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="L-2522"><a href="#L-2522"><span class="linenos">2522</span></a> <span class="p">)</span> -</span><span id="L-2523"><a href="#L-2523"><span class="linenos">2523</span></a> -</span><span id="L-2524"><a href="#L-2524"><span class="linenos">2524</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2525"><a href="#L-2525"><span class="linenos">2525</span></a> -</span><span id="L-2526"><a href="#L-2526"><span class="linenos">2526</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span> -</span><span id="L-2527"><a href="#L-2527"><span class="linenos">2527</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2528"><a href="#L-2528"><span class="linenos">2528</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2529"><a href="#L-2529"><span class="linenos">2529</span></a> -</span><span id="L-2530"><a href="#L-2530"><span class="linenos">2530</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2531"><a href="#L-2531"><span class="linenos">2531</span></a> <span class="k">if</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="L-2532"><a href="#L-2532"><span class="linenos">2532</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> -</span><span id="L-2533"><a href="#L-2533"><span class="linenos">2533</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">)</span> -</span><span id="L-2534"><a href="#L-2534"><span class="linenos">2534</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2535"><a href="#L-2535"><span class="linenos">2535</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> -</span><span id="L-2536"><a href="#L-2536"><span class="linenos">2536</span></a> -</span><span id="L-2537"><a href="#L-2537"><span class="linenos">2537</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="L-2538"><a href="#L-2538"><span class="linenos">2538</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> -</span><span id="L-2539"><a href="#L-2539"><span class="linenos">2539</span></a> -</span><span id="L-2540"><a href="#L-2540"><span class="linenos">2540</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)):</span> -</span><span id="L-2541"><a href="#L-2541"><span class="linenos">2541</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-2542"><a href="#L-2542"><span class="linenos">2542</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">))</span> -</span><span id="L-2543"><a href="#L-2543"><span class="linenos">2543</span></a> -</span><span id="L-2544"><a href="#L-2544"><span class="linenos">2544</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2545"><a href="#L-2545"><span class="linenos">2545</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMESTAMPS</span><span class="p">:</span> -</span><span id="L-2546"><a href="#L-2546"><span class="linenos">2546</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_TIME_ZONE</span><span class="p">)</span> <span class="ow">or</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">:</span> -</span><span id="L-2547"><a href="#L-2547"><span class="linenos">2547</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-2548"><a href="#L-2548"><span class="linenos">2548</span></a> <span class="k">elif</span> <span class="p">(</span> -</span><span id="L-2549"><a href="#L-2549"><span class="linenos">2549</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_LOCAL_TIME_ZONE</span><span class="p">)</span> <span class="ow">or</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span> -</span><span id="L-2550"><a href="#L-2550"><span class="linenos">2550</span></a> <span class="p">):</span> -</span><span id="L-2551"><a href="#L-2551"><span class="linenos">2551</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-2552"><a href="#L-2552"><span class="linenos">2552</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHOUT_TIME_ZONE</span><span class="p">):</span> -</span><span id="L-2553"><a href="#L-2553"><span class="linenos">2553</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">:</span> -</span><span id="L-2554"><a href="#L-2554"><span class="linenos">2554</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-2555"><a href="#L-2555"><span class="linenos">2555</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2556"><a href="#L-2556"><span class="linenos">2556</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-2557"><a href="#L-2557"><span class="linenos">2557</span></a> -</span><span id="L-2558"><a href="#L-2558"><span class="linenos">2558</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span> -</span><span id="L-2559"><a href="#L-2559"><span class="linenos">2559</span></a> -</span><span id="L-2560"><a href="#L-2560"><span class="linenos">2560</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-2561"><a href="#L-2561"><span class="linenos">2561</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-2562"><a href="#L-2562"><span class="linenos">2562</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">:</span> -</span><span id="L-2563"><a href="#L-2563"><span class="linenos">2563</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> -</span><span id="L-2564"><a href="#L-2564"><span class="linenos">2564</span></a> -</span><span id="L-2565"><a href="#L-2565"><span class="linenos">2565</span></a> <span class="k">if</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">check_func</span><span class="p">:</span> -</span><span id="L-2566"><a href="#L-2566"><span class="linenos">2566</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-2567"><a href="#L-2567"><span class="linenos">2567</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-2568"><a href="#L-2568"><span class="linenos">2568</span></a> -</span><span id="L-2569"><a href="#L-2569"><span class="linenos">2569</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">peek</span><span class="p">:</span> -</span><span id="L-2570"><a href="#L-2570"><span class="linenos">2570</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2571"><a href="#L-2571"><span class="linenos">2571</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2572"><a href="#L-2572"><span class="linenos">2572</span></a> -</span><span id="L-2573"><a href="#L-2573"><span class="linenos">2573</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> -</span><span id="L-2574"><a href="#L-2574"><span class="linenos">2574</span></a> -</span><span id="L-2575"><a href="#L-2575"><span class="linenos">2575</span></a> <span class="k">if</span> <span class="n">value</span><span class="p">:</span> -</span><span id="L-2576"><a href="#L-2576"><span class="linenos">2576</span></a> <span class="k">return</span> <span class="n">value</span> -</span><span id="L-2577"><a href="#L-2577"><span class="linenos">2577</span></a> -</span><span id="L-2578"><a href="#L-2578"><span class="linenos">2578</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="L-2579"><a href="#L-2579"><span class="linenos">2579</span></a> <span class="n">this</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="p">[</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">upper</span><span class="p">()],</span> -</span><span id="L-2580"><a href="#L-2580"><span class="linenos">2580</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="L-2581"><a href="#L-2581"><span class="linenos">2581</span></a> <span class="n">nested</span><span class="o">=</span><span class="n">nested</span><span class="p">,</span> -</span><span id="L-2582"><a href="#L-2582"><span class="linenos">2582</span></a> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> -</span><span id="L-2583"><a href="#L-2583"><span class="linenos">2583</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="L-2584"><a href="#L-2584"><span class="linenos">2584</span></a> <span class="p">)</span> -</span><span id="L-2585"><a href="#L-2585"><span class="linenos">2585</span></a> -</span><span id="L-2586"><a href="#L-2586"><span class="linenos">2586</span></a> <span class="k">def</span> <span class="nf">_parse_struct_kwargs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2587"><a href="#L-2587"><span class="linenos">2587</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">:</span> -</span><span id="L-2588"><a href="#L-2588"><span class="linenos">2588</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-2589"><a href="#L-2589"><span class="linenos">2589</span></a> -</span><span id="L-2590"><a href="#L-2590"><span class="linenos">2590</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-2591"><a href="#L-2591"><span class="linenos">2591</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> -</span><span id="L-2592"><a href="#L-2592"><span class="linenos">2592</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-2593"><a href="#L-2593"><span class="linenos">2593</span></a> -</span><span id="L-2594"><a href="#L-2594"><span class="linenos">2594</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">data_type</span><span class="p">:</span> -</span><span id="L-2595"><a href="#L-2595"><span class="linenos">2595</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2596"><a href="#L-2596"><span class="linenos">2596</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> -</span><span id="L-2597"><a href="#L-2597"><span class="linenos">2597</span></a> -</span><span id="L-2598"><a href="#L-2598"><span class="linenos">2598</span></a> <span class="k">def</span> <span class="nf">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2599"><a href="#L-2599"><span class="linenos">2599</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AT_TIME_ZONE</span><span class="p">):</span> -</span><span id="L-2600"><a href="#L-2600"><span class="linenos">2600</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2601"><a href="#L-2601"><span class="linenos">2601</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">zone</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">())</span> -</span><span id="L-2602"><a href="#L-2602"><span class="linenos">2602</span></a> -</span><span id="L-2603"><a href="#L-2603"><span class="linenos">2603</span></a> <span class="k">def</span> <span class="nf">_parse_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2604"><a href="#L-2604"><span class="linenos">2604</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="L-2605"><a href="#L-2605"><span class="linenos">2605</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="L-2606"><a href="#L-2606"><span class="linenos">2606</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2607"><a href="#L-2607"><span class="linenos">2607</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-2608"><a href="#L-2608"><span class="linenos">2608</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2609"><a href="#L-2609"><span class="linenos">2609</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2610"><a href="#L-2610"><span class="linenos">2610</span></a> -</span><span id="L-2611"><a href="#L-2611"><span class="linenos">2611</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="p">):</span> -</span><span id="L-2612"><a href="#L-2612"><span class="linenos">2612</span></a> <span class="n">op_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-2613"><a href="#L-2613"><span class="linenos">2613</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">op_token</span><span class="p">)</span> -</span><span id="L-2614"><a href="#L-2614"><span class="linenos">2614</span></a> -</span><span id="L-2615"><a href="#L-2615"><span class="linenos">2615</span></a> <span class="k">if</span> <span class="n">op_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> -</span><span id="L-2616"><a href="#L-2616"><span class="linenos">2616</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-2617"><a href="#L-2617"><span class="linenos">2617</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">field</span><span class="p">:</span> -</span><span id="L-2618"><a href="#L-2618"><span class="linenos">2618</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected type"</span><span class="p">)</span> -</span><span id="L-2619"><a href="#L-2619"><span class="linenos">2619</span></a> <span class="k">elif</span> <span class="n">op</span><span class="p">:</span> -</span><span id="L-2620"><a href="#L-2620"><span class="linenos">2620</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-2621"><a href="#L-2621"><span class="linenos">2621</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-2622"><a href="#L-2622"><span class="linenos">2622</span></a> <span class="n">field</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-2623"><a href="#L-2623"><span class="linenos">2623</span></a> <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="n">value</span><span class="p">)</span> -</span><span id="L-2624"><a href="#L-2624"><span class="linenos">2624</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span> -</span><span id="L-2625"><a href="#L-2625"><span class="linenos">2625</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="L-2626"><a href="#L-2626"><span class="linenos">2626</span></a> <span class="p">)</span> -</span><span id="L-2627"><a href="#L-2627"><span class="linenos">2627</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2628"><a href="#L-2628"><span class="linenos">2628</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-2629"><a href="#L-2629"><span class="linenos">2629</span></a> -</span><span id="L-2630"><a href="#L-2630"><span class="linenos">2630</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> -</span><span id="L-2631"><a href="#L-2631"><span class="linenos">2631</span></a> <span class="c1"># bigquery allows function calls like x.y.count(...)</span> -</span><span id="L-2632"><a href="#L-2632"><span class="linenos">2632</span></a> <span class="c1"># SAFE.SUBSTR(...)</span> -</span><span id="L-2633"><a href="#L-2633"><span class="linenos">2633</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules</span> -</span><span id="L-2634"><a href="#L-2634"><span class="linenos">2634</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2635"><a href="#L-2635"><span class="linenos">2635</span></a> -</span><span id="L-2636"><a href="#L-2636"><span class="linenos">2636</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> -</span><span id="L-2637"><a href="#L-2637"><span class="linenos">2637</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> -</span><span id="L-2638"><a href="#L-2638"><span class="linenos">2638</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">):</span> -</span><span id="L-2639"><a href="#L-2639"><span class="linenos">2639</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2640"><a href="#L-2640"><span class="linenos">2640</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> -</span><span id="L-2641"><a href="#L-2641"><span class="linenos">2641</span></a> <span class="n">this</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> -</span><span id="L-2642"><a href="#L-2642"><span class="linenos">2642</span></a> <span class="n">table</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-2643"><a href="#L-2643"><span class="linenos">2643</span></a> <span class="n">db</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> -</span><span id="L-2644"><a href="#L-2644"><span class="linenos">2644</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> -</span><span id="L-2645"><a href="#L-2645"><span class="linenos">2645</span></a> <span class="p">)</span> -</span><span id="L-2646"><a href="#L-2646"><span class="linenos">2646</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2647"><a href="#L-2647"><span class="linenos">2647</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">field</span><span class="p">)</span> -</span><span id="L-2648"><a href="#L-2648"><span class="linenos">2648</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2649"><a href="#L-2649"><span class="linenos">2649</span></a> -</span><span id="L-2650"><a href="#L-2650"><span class="linenos">2650</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2651"><a href="#L-2651"><span class="linenos">2651</span></a> -</span><span id="L-2652"><a href="#L-2652"><span class="linenos">2652</span></a> <span class="k">def</span> <span class="nf">_parse_primary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2653"><a href="#L-2653"><span class="linenos">2653</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">):</span> -</span><span id="L-2654"><a href="#L-2654"><span class="linenos">2654</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-2655"><a href="#L-2655"><span class="linenos">2655</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-2656"><a href="#L-2656"><span class="linenos">2656</span></a> -</span><span id="L-2657"><a href="#L-2657"><span class="linenos">2657</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> -</span><span id="L-2658"><a href="#L-2658"><span class="linenos">2658</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">primary</span><span class="p">]</span> -</span><span id="L-2659"><a href="#L-2659"><span class="linenos">2659</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> -</span><span id="L-2660"><a href="#L-2660"><span class="linenos">2660</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> -</span><span id="L-2661"><a href="#L-2661"><span class="linenos">2661</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-2662"><a href="#L-2662"><span class="linenos">2662</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-2663"><a href="#L-2663"><span class="linenos">2663</span></a> <span class="k">return</span> <span class="n">primary</span> -</span><span id="L-2664"><a href="#L-2664"><span class="linenos">2664</span></a> -</span><span id="L-2665"><a href="#L-2665"><span class="linenos">2665</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> -</span><span id="L-2666"><a href="#L-2666"><span class="linenos">2666</span></a> <span class="k">return</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="sa">f</span><span class="s2">"0.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-2667"><a href="#L-2667"><span class="linenos">2667</span></a> -</span><span id="L-2668"><a href="#L-2668"><span class="linenos">2668</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2669"><a href="#L-2669"><span class="linenos">2669</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-2670"><a href="#L-2670"><span class="linenos">2670</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> -</span><span id="L-2671"><a href="#L-2671"><span class="linenos">2671</span></a> -</span><span id="L-2672"><a href="#L-2672"><span class="linenos">2672</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> -</span><span id="L-2673"><a href="#L-2673"><span class="linenos">2673</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">query</span><span class="p">]</span> -</span><span id="L-2674"><a href="#L-2674"><span class="linenos">2674</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2675"><a href="#L-2675"><span class="linenos">2675</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-2676"><a href="#L-2676"><span class="linenos">2676</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> <span class="n">explicit</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2677"><a href="#L-2677"><span class="linenos">2677</span></a> <span class="p">)</span> -</span><span id="L-2678"><a href="#L-2678"><span class="linenos">2678</span></a> -</span><span id="L-2679"><a href="#L-2679"><span class="linenos">2679</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="L-2680"><a href="#L-2680"><span class="linenos">2680</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2681"><a href="#L-2681"><span class="linenos">2681</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2682"><a href="#L-2682"><span class="linenos">2682</span></a> -</span><span id="L-2683"><a href="#L-2683"><span class="linenos">2683</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="L-2684"><a href="#L-2684"><span class="linenos">2684</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> -</span><span id="L-2685"><a href="#L-2685"><span class="linenos">2685</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</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">parse_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-2686"><a href="#L-2686"><span class="linenos">2686</span></a> <span class="p">)</span> -</span><span id="L-2687"><a href="#L-2687"><span class="linenos">2687</span></a> <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-2688"><a href="#L-2688"><span class="linenos">2688</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-2689"><a href="#L-2689"><span class="linenos">2689</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2690"><a href="#L-2690"><span class="linenos">2690</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2487"><a href="#L-2487"><span class="linenos">2487</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-2488"><a href="#L-2488"><span class="linenos">2488</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2489"><a href="#L-2489"><span class="linenos">2489</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-2490"><a href="#L-2490"><span class="linenos">2490</span></a> +</span><span id="L-2491"><a href="#L-2491"><span class="linenos">2491</span></a> <span class="k">if</span> <span class="n">type_token</span><span class="p">:</span> +</span><span id="L-2492"><a href="#L-2492"><span class="linenos">2492</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> +</span><span id="L-2493"><a href="#L-2493"><span class="linenos">2493</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</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">to</span><span class="o">=</span><span class="n">type_token</span><span class="p">)</span> +</span><span id="L-2494"><a href="#L-2494"><span class="linenos">2494</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">type_token</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">"expressions"</span><span class="p">):</span> +</span><span id="L-2495"><a href="#L-2495"><span class="linenos">2495</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2496"><a href="#L-2496"><span class="linenos">2496</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-2497"><a href="#L-2497"><span class="linenos">2497</span></a> <span class="k">return</span> <span class="n">type_token</span> +</span><span id="L-2498"><a href="#L-2498"><span class="linenos">2498</span></a> +</span><span id="L-2499"><a href="#L-2499"><span class="linenos">2499</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2500"><a href="#L-2500"><span class="linenos">2500</span></a> +</span><span id="L-2501"><a href="#L-2501"><span class="linenos">2501</span></a> <span class="k">def</span> <span class="nf">_parse_types</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2502"><a href="#L-2502"><span class="linenos">2502</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-2503"><a href="#L-2503"><span class="linenos">2503</span></a> +</span><span id="L-2504"><a href="#L-2504"><span class="linenos">2504</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SYSUDTLIB"</span><span class="p">,</span> <span class="s2">"."</span><span class="p">)</span> +</span><span id="L-2505"><a href="#L-2505"><span class="linenos">2505</span></a> +</span><span id="L-2506"><a href="#L-2506"><span class="linenos">2506</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">):</span> +</span><span id="L-2507"><a href="#L-2507"><span class="linenos">2507</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2508"><a href="#L-2508"><span class="linenos">2508</span></a> +</span><span id="L-2509"><a href="#L-2509"><span class="linenos">2509</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-2510"><a href="#L-2510"><span class="linenos">2510</span></a> +</span><span id="L-2511"><a href="#L-2511"><span class="linenos">2511</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">:</span> +</span><span id="L-2512"><a href="#L-2512"><span class="linenos">2512</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PseudoType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-2513"><a href="#L-2513"><span class="linenos">2513</span></a> +</span><span id="L-2514"><a href="#L-2514"><span class="linenos">2514</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NESTED_TYPE_TOKENS</span> +</span><span id="L-2515"><a href="#L-2515"><span class="linenos">2515</span></a> <span class="n">is_struct</span> <span class="o">=</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span> +</span><span id="L-2516"><a href="#L-2516"><span class="linenos">2516</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2517"><a href="#L-2517"><span class="linenos">2517</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-2518"><a href="#L-2518"><span class="linenos">2518</span></a> +</span><span id="L-2519"><a href="#L-2519"><span class="linenos">2519</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2520"><a href="#L-2520"><span class="linenos">2520</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> +</span><span id="L-2521"><a href="#L-2521"><span class="linenos">2521</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">)</span> +</span><span id="L-2522"><a href="#L-2522"><span class="linenos">2522</span></a> <span class="k">elif</span> <span class="n">nested</span><span class="p">:</span> +</span><span id="L-2523"><a href="#L-2523"><span class="linenos">2523</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> +</span><span id="L-2524"><a href="#L-2524"><span class="linenos">2524</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2525"><a href="#L-2525"><span class="linenos">2525</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-2526"><a href="#L-2526"><span class="linenos">2526</span></a> +</span><span id="L-2527"><a href="#L-2527"><span class="linenos">2527</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-2528"><a href="#L-2528"><span class="linenos">2528</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2529"><a href="#L-2529"><span class="linenos">2529</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2530"><a href="#L-2530"><span class="linenos">2530</span></a> +</span><span id="L-2531"><a href="#L-2531"><span class="linenos">2531</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2532"><a href="#L-2532"><span class="linenos">2532</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-2533"><a href="#L-2533"><span class="linenos">2533</span></a> +</span><span id="L-2534"><a href="#L-2534"><span class="linenos">2534</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="L-2535"><a href="#L-2535"><span class="linenos">2535</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="L-2536"><a href="#L-2536"><span class="linenos">2536</span></a> <span class="n">this</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">ARRAY</span><span class="p">,</span> +</span><span id="L-2537"><a href="#L-2537"><span class="linenos">2537</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)],</span> +</span><span id="L-2538"><a href="#L-2538"><span class="linenos">2538</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-2539"><a href="#L-2539"><span class="linenos">2539</span></a> <span class="p">)</span> +</span><span id="L-2540"><a href="#L-2540"><span class="linenos">2540</span></a> +</span><span id="L-2541"><a href="#L-2541"><span class="linenos">2541</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="L-2542"><a href="#L-2542"><span class="linenos">2542</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="L-2543"><a href="#L-2543"><span class="linenos">2543</span></a> <span class="n">this</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">ARRAY</span><span class="p">,</span> +</span><span id="L-2544"><a href="#L-2544"><span class="linenos">2544</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> +</span><span id="L-2545"><a href="#L-2545"><span class="linenos">2545</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="L-2546"><a href="#L-2546"><span class="linenos">2546</span></a> <span class="p">)</span> +</span><span id="L-2547"><a href="#L-2547"><span class="linenos">2547</span></a> +</span><span id="L-2548"><a href="#L-2548"><span class="linenos">2548</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2549"><a href="#L-2549"><span class="linenos">2549</span></a> +</span><span id="L-2550"><a href="#L-2550"><span class="linenos">2550</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span> +</span><span id="L-2551"><a href="#L-2551"><span class="linenos">2551</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2552"><a href="#L-2552"><span class="linenos">2552</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2553"><a href="#L-2553"><span class="linenos">2553</span></a> +</span><span id="L-2554"><a href="#L-2554"><span class="linenos">2554</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2555"><a href="#L-2555"><span class="linenos">2555</span></a> <span class="k">if</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="L-2556"><a href="#L-2556"><span class="linenos">2556</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> +</span><span id="L-2557"><a href="#L-2557"><span class="linenos">2557</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">)</span> +</span><span id="L-2558"><a href="#L-2558"><span class="linenos">2558</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2559"><a href="#L-2559"><span class="linenos">2559</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> +</span><span id="L-2560"><a href="#L-2560"><span class="linenos">2560</span></a> +</span><span id="L-2561"><a href="#L-2561"><span class="linenos">2561</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="L-2562"><a href="#L-2562"><span class="linenos">2562</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> +</span><span id="L-2563"><a href="#L-2563"><span class="linenos">2563</span></a> +</span><span id="L-2564"><a href="#L-2564"><span class="linenos">2564</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)):</span> +</span><span id="L-2565"><a href="#L-2565"><span class="linenos">2565</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-2566"><a href="#L-2566"><span class="linenos">2566</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">))</span> +</span><span id="L-2567"><a href="#L-2567"><span class="linenos">2567</span></a> +</span><span id="L-2568"><a href="#L-2568"><span class="linenos">2568</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2569"><a href="#L-2569"><span class="linenos">2569</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMESTAMPS</span><span class="p">:</span> +</span><span id="L-2570"><a href="#L-2570"><span class="linenos">2570</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_TIME_ZONE</span><span class="p">)</span> <span class="ow">or</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">:</span> +</span><span id="L-2571"><a href="#L-2571"><span class="linenos">2571</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2572"><a href="#L-2572"><span class="linenos">2572</span></a> <span class="k">elif</span> <span class="p">(</span> +</span><span id="L-2573"><a href="#L-2573"><span class="linenos">2573</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_LOCAL_TIME_ZONE</span><span class="p">)</span> <span class="ow">or</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span> +</span><span id="L-2574"><a href="#L-2574"><span class="linenos">2574</span></a> <span class="p">):</span> +</span><span id="L-2575"><a href="#L-2575"><span class="linenos">2575</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2576"><a href="#L-2576"><span class="linenos">2576</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHOUT_TIME_ZONE</span><span class="p">):</span> +</span><span id="L-2577"><a href="#L-2577"><span class="linenos">2577</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">:</span> +</span><span id="L-2578"><a href="#L-2578"><span class="linenos">2578</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2579"><a href="#L-2579"><span class="linenos">2579</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2580"><a href="#L-2580"><span class="linenos">2580</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2581"><a href="#L-2581"><span class="linenos">2581</span></a> +</span><span id="L-2582"><a href="#L-2582"><span class="linenos">2582</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span> +</span><span id="L-2583"><a href="#L-2583"><span class="linenos">2583</span></a> +</span><span id="L-2584"><a href="#L-2584"><span class="linenos">2584</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-2585"><a href="#L-2585"><span class="linenos">2585</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2586"><a href="#L-2586"><span class="linenos">2586</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">:</span> +</span><span id="L-2587"><a href="#L-2587"><span class="linenos">2587</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> +</span><span id="L-2588"><a href="#L-2588"><span class="linenos">2588</span></a> +</span><span id="L-2589"><a href="#L-2589"><span class="linenos">2589</span></a> <span class="k">if</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">check_func</span><span class="p">:</span> +</span><span id="L-2590"><a href="#L-2590"><span class="linenos">2590</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-2591"><a href="#L-2591"><span class="linenos">2591</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-2592"><a href="#L-2592"><span class="linenos">2592</span></a> +</span><span id="L-2593"><a href="#L-2593"><span class="linenos">2593</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">peek</span><span class="p">:</span> +</span><span id="L-2594"><a href="#L-2594"><span class="linenos">2594</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2595"><a href="#L-2595"><span class="linenos">2595</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2596"><a href="#L-2596"><span class="linenos">2596</span></a> +</span><span id="L-2597"><a href="#L-2597"><span class="linenos">2597</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> +</span><span id="L-2598"><a href="#L-2598"><span class="linenos">2598</span></a> +</span><span id="L-2599"><a href="#L-2599"><span class="linenos">2599</span></a> <span class="k">if</span> <span class="n">value</span><span class="p">:</span> +</span><span id="L-2600"><a href="#L-2600"><span class="linenos">2600</span></a> <span class="k">return</span> <span class="n">value</span> +</span><span id="L-2601"><a href="#L-2601"><span class="linenos">2601</span></a> +</span><span id="L-2602"><a href="#L-2602"><span class="linenos">2602</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="L-2603"><a href="#L-2603"><span class="linenos">2603</span></a> <span class="n">this</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="p">[</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">upper</span><span class="p">()],</span> +</span><span id="L-2604"><a href="#L-2604"><span class="linenos">2604</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="L-2605"><a href="#L-2605"><span class="linenos">2605</span></a> <span class="n">nested</span><span class="o">=</span><span class="n">nested</span><span class="p">,</span> +</span><span id="L-2606"><a href="#L-2606"><span class="linenos">2606</span></a> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> +</span><span id="L-2607"><a href="#L-2607"><span class="linenos">2607</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="L-2608"><a href="#L-2608"><span class="linenos">2608</span></a> <span class="p">)</span> +</span><span id="L-2609"><a href="#L-2609"><span class="linenos">2609</span></a> +</span><span id="L-2610"><a href="#L-2610"><span class="linenos">2610</span></a> <span class="k">def</span> <span class="nf">_parse_struct_kwargs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2611"><a href="#L-2611"><span class="linenos">2611</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">:</span> +</span><span id="L-2612"><a href="#L-2612"><span class="linenos">2612</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-2613"><a href="#L-2613"><span class="linenos">2613</span></a> +</span><span id="L-2614"><a href="#L-2614"><span class="linenos">2614</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-2615"><a href="#L-2615"><span class="linenos">2615</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> +</span><span id="L-2616"><a href="#L-2616"><span class="linenos">2616</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-2617"><a href="#L-2617"><span class="linenos">2617</span></a> +</span><span id="L-2618"><a href="#L-2618"><span class="linenos">2618</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">data_type</span><span class="p">:</span> +</span><span id="L-2619"><a href="#L-2619"><span class="linenos">2619</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2620"><a href="#L-2620"><span class="linenos">2620</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> +</span><span id="L-2621"><a href="#L-2621"><span class="linenos">2621</span></a> +</span><span id="L-2622"><a href="#L-2622"><span class="linenos">2622</span></a> <span class="k">def</span> <span class="nf">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2623"><a href="#L-2623"><span class="linenos">2623</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AT_TIME_ZONE</span><span class="p">):</span> +</span><span id="L-2624"><a href="#L-2624"><span class="linenos">2624</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2625"><a href="#L-2625"><span class="linenos">2625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">zone</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">())</span> +</span><span id="L-2626"><a href="#L-2626"><span class="linenos">2626</span></a> +</span><span id="L-2627"><a href="#L-2627"><span class="linenos">2627</span></a> <span class="k">def</span> <span class="nf">_parse_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2628"><a href="#L-2628"><span class="linenos">2628</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="L-2629"><a href="#L-2629"><span class="linenos">2629</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="L-2630"><a href="#L-2630"><span class="linenos">2630</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2631"><a href="#L-2631"><span class="linenos">2631</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-2632"><a href="#L-2632"><span class="linenos">2632</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2633"><a href="#L-2633"><span class="linenos">2633</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2634"><a href="#L-2634"><span class="linenos">2634</span></a> +</span><span id="L-2635"><a href="#L-2635"><span class="linenos">2635</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="p">):</span> +</span><span id="L-2636"><a href="#L-2636"><span class="linenos">2636</span></a> <span class="n">op_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-2637"><a href="#L-2637"><span class="linenos">2637</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">op_token</span><span class="p">)</span> +</span><span id="L-2638"><a href="#L-2638"><span class="linenos">2638</span></a> +</span><span id="L-2639"><a href="#L-2639"><span class="linenos">2639</span></a> <span class="k">if</span> <span class="n">op_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> +</span><span id="L-2640"><a href="#L-2640"><span class="linenos">2640</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-2641"><a href="#L-2641"><span class="linenos">2641</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">field</span><span class="p">:</span> +</span><span id="L-2642"><a href="#L-2642"><span class="linenos">2642</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected type"</span><span class="p">)</span> +</span><span id="L-2643"><a href="#L-2643"><span class="linenos">2643</span></a> <span class="k">elif</span> <span class="n">op</span><span class="p">:</span> +</span><span id="L-2644"><a href="#L-2644"><span class="linenos">2644</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-2645"><a href="#L-2645"><span class="linenos">2645</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-2646"><a href="#L-2646"><span class="linenos">2646</span></a> <span class="n">field</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-2647"><a href="#L-2647"><span class="linenos">2647</span></a> <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="n">value</span><span class="p">)</span> +</span><span id="L-2648"><a href="#L-2648"><span class="linenos">2648</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span> +</span><span id="L-2649"><a href="#L-2649"><span class="linenos">2649</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="L-2650"><a href="#L-2650"><span class="linenos">2650</span></a> <span class="p">)</span> +</span><span id="L-2651"><a href="#L-2651"><span class="linenos">2651</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2652"><a href="#L-2652"><span class="linenos">2652</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-2653"><a href="#L-2653"><span class="linenos">2653</span></a> +</span><span id="L-2654"><a href="#L-2654"><span class="linenos">2654</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> +</span><span id="L-2655"><a href="#L-2655"><span class="linenos">2655</span></a> <span class="c1"># bigquery allows function calls like x.y.count(...)</span> +</span><span id="L-2656"><a href="#L-2656"><span class="linenos">2656</span></a> <span class="c1"># SAFE.SUBSTR(...)</span> +</span><span id="L-2657"><a href="#L-2657"><span class="linenos">2657</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules</span> +</span><span id="L-2658"><a href="#L-2658"><span class="linenos">2658</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2659"><a href="#L-2659"><span class="linenos">2659</span></a> +</span><span id="L-2660"><a href="#L-2660"><span class="linenos">2660</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> +</span><span id="L-2661"><a href="#L-2661"><span class="linenos">2661</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> +</span><span id="L-2662"><a href="#L-2662"><span class="linenos">2662</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">):</span> +</span><span id="L-2663"><a href="#L-2663"><span class="linenos">2663</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2664"><a href="#L-2664"><span class="linenos">2664</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> +</span><span id="L-2665"><a href="#L-2665"><span class="linenos">2665</span></a> <span class="n">this</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> +</span><span id="L-2666"><a href="#L-2666"><span class="linenos">2666</span></a> <span class="n">table</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-2667"><a href="#L-2667"><span class="linenos">2667</span></a> <span class="n">db</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> +</span><span id="L-2668"><a href="#L-2668"><span class="linenos">2668</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> +</span><span id="L-2669"><a href="#L-2669"><span class="linenos">2669</span></a> <span class="p">)</span> +</span><span id="L-2670"><a href="#L-2670"><span class="linenos">2670</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2671"><a href="#L-2671"><span class="linenos">2671</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">field</span><span class="p">)</span> +</span><span id="L-2672"><a href="#L-2672"><span class="linenos">2672</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2673"><a href="#L-2673"><span class="linenos">2673</span></a> +</span><span id="L-2674"><a href="#L-2674"><span class="linenos">2674</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2675"><a href="#L-2675"><span class="linenos">2675</span></a> +</span><span id="L-2676"><a href="#L-2676"><span class="linenos">2676</span></a> <span class="k">def</span> <span class="nf">_parse_primary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2677"><a href="#L-2677"><span class="linenos">2677</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">):</span> +</span><span id="L-2678"><a href="#L-2678"><span class="linenos">2678</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-2679"><a href="#L-2679"><span class="linenos">2679</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-2680"><a href="#L-2680"><span class="linenos">2680</span></a> +</span><span id="L-2681"><a href="#L-2681"><span class="linenos">2681</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> +</span><span id="L-2682"><a href="#L-2682"><span class="linenos">2682</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">primary</span><span class="p">]</span> +</span><span id="L-2683"><a href="#L-2683"><span class="linenos">2683</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> +</span><span id="L-2684"><a href="#L-2684"><span class="linenos">2684</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> +</span><span id="L-2685"><a href="#L-2685"><span class="linenos">2685</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-2686"><a href="#L-2686"><span class="linenos">2686</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2687"><a href="#L-2687"><span class="linenos">2687</span></a> <span class="k">return</span> <span class="n">primary</span> +</span><span id="L-2688"><a href="#L-2688"><span class="linenos">2688</span></a> +</span><span id="L-2689"><a href="#L-2689"><span class="linenos">2689</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> +</span><span id="L-2690"><a href="#L-2690"><span class="linenos">2690</span></a> <span class="k">return</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="sa">f</span><span class="s2">"0.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="L-2691"><a href="#L-2691"><span class="linenos">2691</span></a> -</span><span id="L-2692"><a href="#L-2692"><span class="linenos">2692</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">comments</span><span class="p">:</span> -</span><span id="L-2693"><a href="#L-2693"><span class="linenos">2693</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="L-2694"><a href="#L-2694"><span class="linenos">2694</span></a> -</span><span id="L-2695"><a href="#L-2695"><span class="linenos">2695</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2696"><a href="#L-2696"><span class="linenos">2696</span></a> -</span><span id="L-2697"><a href="#L-2697"><span class="linenos">2697</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2698"><a href="#L-2698"><span class="linenos">2698</span></a> -</span><span id="L-2699"><a href="#L-2699"><span class="linenos">2699</span></a> <span class="k">def</span> <span class="nf">_parse_field</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2700"><a href="#L-2700"><span class="linenos">2700</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)</span> -</span><span id="L-2701"><a href="#L-2701"><span class="linenos">2701</span></a> -</span><span id="L-2702"><a href="#L-2702"><span class="linenos">2702</span></a> <span class="k">def</span> <span class="nf">_parse_function</span><span class="p">(</span> -</span><span id="L-2703"><a href="#L-2703"><span class="linenos">2703</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">functions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2704"><a href="#L-2704"><span class="linenos">2704</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2705"><a href="#L-2705"><span class="linenos">2705</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-2706"><a href="#L-2706"><span class="linenos">2706</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2707"><a href="#L-2707"><span class="linenos">2707</span></a> -</span><span id="L-2708"><a href="#L-2708"><span class="linenos">2708</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-2709"><a href="#L-2709"><span class="linenos">2709</span></a> -</span><span id="L-2710"><a href="#L-2710"><span class="linenos">2710</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">):</span> -</span><span id="L-2711"><a href="#L-2711"><span class="linenos">2711</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-2712"><a href="#L-2712"><span class="linenos">2712</span></a> -</span><span id="L-2713"><a href="#L-2713"><span class="linenos">2713</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> -</span><span id="L-2714"><a href="#L-2714"><span class="linenos">2714</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">:</span> -</span><span id="L-2715"><a href="#L-2715"><span class="linenos">2715</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-2716"><a href="#L-2716"><span class="linenos">2716</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">[</span><span class="n">token_type</span><span class="p">])</span> -</span><span id="L-2717"><a href="#L-2717"><span class="linenos">2717</span></a> -</span><span id="L-2718"><a href="#L-2718"><span class="linenos">2718</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2719"><a href="#L-2719"><span class="linenos">2719</span></a> -</span><span id="L-2720"><a href="#L-2720"><span class="linenos">2720</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">:</span> -</span><span id="L-2721"><a href="#L-2721"><span class="linenos">2721</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2692"><a href="#L-2692"><span class="linenos">2692</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2693"><a href="#L-2693"><span class="linenos">2693</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-2694"><a href="#L-2694"><span class="linenos">2694</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> +</span><span id="L-2695"><a href="#L-2695"><span class="linenos">2695</span></a> +</span><span id="L-2696"><a href="#L-2696"><span class="linenos">2696</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> +</span><span id="L-2697"><a href="#L-2697"><span class="linenos">2697</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">query</span><span class="p">]</span> +</span><span id="L-2698"><a href="#L-2698"><span class="linenos">2698</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2699"><a href="#L-2699"><span class="linenos">2699</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-2700"><a href="#L-2700"><span class="linenos">2700</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> <span class="n">explicit</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2701"><a href="#L-2701"><span class="linenos">2701</span></a> <span class="p">)</span> +</span><span id="L-2702"><a href="#L-2702"><span class="linenos">2702</span></a> +</span><span id="L-2703"><a href="#L-2703"><span class="linenos">2703</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="L-2704"><a href="#L-2704"><span class="linenos">2704</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2705"><a href="#L-2705"><span class="linenos">2705</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2706"><a href="#L-2706"><span class="linenos">2706</span></a> +</span><span id="L-2707"><a href="#L-2707"><span class="linenos">2707</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="L-2708"><a href="#L-2708"><span class="linenos">2708</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> +</span><span id="L-2709"><a href="#L-2709"><span class="linenos">2709</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</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">parse_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-2710"><a href="#L-2710"><span class="linenos">2710</span></a> <span class="p">)</span> +</span><span id="L-2711"><a href="#L-2711"><span class="linenos">2711</span></a> <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-2712"><a href="#L-2712"><span class="linenos">2712</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2713"><a href="#L-2713"><span class="linenos">2713</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2714"><a href="#L-2714"><span class="linenos">2714</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2715"><a href="#L-2715"><span class="linenos">2715</span></a> +</span><span id="L-2716"><a href="#L-2716"><span class="linenos">2716</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">comments</span><span class="p">:</span> +</span><span id="L-2717"><a href="#L-2717"><span class="linenos">2717</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="L-2718"><a href="#L-2718"><span class="linenos">2718</span></a> +</span><span id="L-2719"><a href="#L-2719"><span class="linenos">2719</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2720"><a href="#L-2720"><span class="linenos">2720</span></a> +</span><span id="L-2721"><a href="#L-2721"><span class="linenos">2721</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-2722"><a href="#L-2722"><span class="linenos">2722</span></a> -</span><span id="L-2723"><a href="#L-2723"><span class="linenos">2723</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-2724"><a href="#L-2724"><span class="linenos">2724</span></a> <span class="n">upper</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-2725"><a href="#L-2725"><span class="linenos">2725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> -</span><span id="L-2726"><a href="#L-2726"><span class="linenos">2726</span></a> -</span><span id="L-2727"><a href="#L-2727"><span class="linenos">2727</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="L-2728"><a href="#L-2728"><span class="linenos">2728</span></a> -</span><span id="L-2729"><a href="#L-2729"><span class="linenos">2729</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="L-2730"><a href="#L-2730"><span class="linenos">2730</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-2731"><a href="#L-2731"><span class="linenos">2731</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2732"><a href="#L-2732"><span class="linenos">2732</span></a> <span class="n">subquery_predicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUBQUERY_PREDICATES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="L-2723"><a href="#L-2723"><span class="linenos">2723</span></a> <span class="k">def</span> <span class="nf">_parse_field</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2724"><a href="#L-2724"><span class="linenos">2724</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)</span> +</span><span id="L-2725"><a href="#L-2725"><span class="linenos">2725</span></a> +</span><span id="L-2726"><a href="#L-2726"><span class="linenos">2726</span></a> <span class="k">def</span> <span class="nf">_parse_function</span><span class="p">(</span> +</span><span id="L-2727"><a href="#L-2727"><span class="linenos">2727</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">functions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2728"><a href="#L-2728"><span class="linenos">2728</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2729"><a href="#L-2729"><span class="linenos">2729</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-2730"><a href="#L-2730"><span class="linenos">2730</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2731"><a href="#L-2731"><span class="linenos">2731</span></a> +</span><span id="L-2732"><a href="#L-2732"><span class="linenos">2732</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> </span><span id="L-2733"><a href="#L-2733"><span class="linenos">2733</span></a> -</span><span id="L-2734"><a href="#L-2734"><span class="linenos">2734</span></a> <span class="k">if</span> <span class="n">subquery_predicate</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="L-2735"><a href="#L-2735"><span class="linenos">2735</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">subquery_predicate</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> -</span><span id="L-2736"><a href="#L-2736"><span class="linenos">2736</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2737"><a href="#L-2737"><span class="linenos">2737</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2738"><a href="#L-2738"><span class="linenos">2738</span></a> -</span><span id="L-2739"><a href="#L-2739"><span class="linenos">2739</span></a> <span class="k">if</span> <span class="n">functions</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-2740"><a href="#L-2740"><span class="linenos">2740</span></a> <span class="n">functions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS</span> +</span><span id="L-2734"><a href="#L-2734"><span class="linenos">2734</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">):</span> +</span><span id="L-2735"><a href="#L-2735"><span class="linenos">2735</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-2736"><a href="#L-2736"><span class="linenos">2736</span></a> +</span><span id="L-2737"><a href="#L-2737"><span class="linenos">2737</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> +</span><span id="L-2738"><a href="#L-2738"><span class="linenos">2738</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">:</span> +</span><span id="L-2739"><a href="#L-2739"><span class="linenos">2739</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-2740"><a href="#L-2740"><span class="linenos">2740</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">[</span><span class="n">token_type</span><span class="p">])</span> </span><span id="L-2741"><a href="#L-2741"><span class="linenos">2741</span></a> -</span><span id="L-2742"><a href="#L-2742"><span class="linenos">2742</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">functions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="L-2743"><a href="#L-2743"><span class="linenos">2743</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> -</span><span id="L-2744"><a href="#L-2744"><span class="linenos">2744</span></a> -</span><span id="L-2745"><a href="#L-2745"><span class="linenos">2745</span></a> <span class="k">if</span> <span class="n">function</span><span class="p">:</span> -</span><span id="L-2746"><a href="#L-2746"><span class="linenos">2746</span></a> <span class="c1"># Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the</span> -</span><span id="L-2747"><a href="#L-2747"><span class="linenos">2747</span></a> <span class="c1"># second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists.</span> -</span><span id="L-2748"><a href="#L-2748"><span class="linenos">2748</span></a> <span class="k">if</span> <span class="n">count_params</span><span class="p">(</span><span class="n">function</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="L-2749"><a href="#L-2749"><span class="linenos">2749</span></a> <span class="n">params</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2750"><a href="#L-2750"><span class="linenos">2750</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2751"><a href="#L-2751"><span class="linenos">2751</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> +</span><span id="L-2742"><a href="#L-2742"><span class="linenos">2742</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2743"><a href="#L-2743"><span class="linenos">2743</span></a> +</span><span id="L-2744"><a href="#L-2744"><span class="linenos">2744</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">:</span> +</span><span id="L-2745"><a href="#L-2745"><span class="linenos">2745</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2746"><a href="#L-2746"><span class="linenos">2746</span></a> +</span><span id="L-2747"><a href="#L-2747"><span class="linenos">2747</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-2748"><a href="#L-2748"><span class="linenos">2748</span></a> <span class="n">upper</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-2749"><a href="#L-2749"><span class="linenos">2749</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> +</span><span id="L-2750"><a href="#L-2750"><span class="linenos">2750</span></a> +</span><span id="L-2751"><a href="#L-2751"><span class="linenos">2751</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> </span><span id="L-2752"><a href="#L-2752"><span class="linenos">2752</span></a> -</span><span id="L-2753"><a href="#L-2753"><span class="linenos">2753</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> -</span><span id="L-2754"><a href="#L-2754"><span class="linenos">2754</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2755"><a href="#L-2755"><span class="linenos">2755</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-2756"><a href="#L-2756"><span class="linenos">2756</span></a> -</span><span id="L-2757"><a href="#L-2757"><span class="linenos">2757</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="L-2758"><a href="#L-2758"><span class="linenos">2758</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2759"><a href="#L-2759"><span class="linenos">2759</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</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">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-2760"><a href="#L-2760"><span class="linenos">2760</span></a> -</span><span id="L-2761"><a href="#L-2761"><span class="linenos">2761</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2762"><a href="#L-2762"><span class="linenos">2762</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2763"><a href="#L-2763"><span class="linenos">2763</span></a> -</span><span id="L-2764"><a href="#L-2764"><span class="linenos">2764</span></a> <span class="k">def</span> <span class="nf">_parse_function_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2765"><a href="#L-2765"><span class="linenos">2765</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="L-2766"><a href="#L-2766"><span class="linenos">2766</span></a> -</span><span id="L-2767"><a href="#L-2767"><span class="linenos">2767</span></a> <span class="k">def</span> <span class="nf">_parse_user_defined_function</span><span class="p">(</span> -</span><span id="L-2768"><a href="#L-2768"><span class="linenos">2768</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2769"><a href="#L-2769"><span class="linenos">2769</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2770"><a href="#L-2770"><span class="linenos">2770</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-2771"><a href="#L-2771"><span class="linenos">2771</span></a> -</span><span id="L-2772"><a href="#L-2772"><span class="linenos">2772</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-2773"><a href="#L-2773"><span class="linenos">2773</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="L-2774"><a href="#L-2774"><span class="linenos">2774</span></a> -</span><span id="L-2775"><a href="#L-2775"><span class="linenos">2775</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2776"><a href="#L-2776"><span class="linenos">2776</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2777"><a href="#L-2777"><span class="linenos">2777</span></a> -</span><span id="L-2778"><a href="#L-2778"><span class="linenos">2778</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> -</span><span id="L-2779"><a href="#L-2779"><span class="linenos">2779</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2780"><a href="#L-2780"><span class="linenos">2780</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2781"><a href="#L-2781"><span class="linenos">2781</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span> -</span><span id="L-2782"><a href="#L-2782"><span class="linenos">2782</span></a> <span class="p">)</span> -</span><span id="L-2783"><a href="#L-2783"><span class="linenos">2783</span></a> -</span><span id="L-2784"><a href="#L-2784"><span class="linenos">2784</span></a> <span class="k">def</span> <span class="nf">_parse_introducer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2785"><a href="#L-2785"><span class="linenos">2785</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-2786"><a href="#L-2786"><span class="linenos">2786</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span> -</span><span id="L-2787"><a href="#L-2787"><span class="linenos">2787</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Introducer</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">literal</span><span class="p">)</span> -</span><span id="L-2788"><a href="#L-2788"><span class="linenos">2788</span></a> -</span><span id="L-2789"><a href="#L-2789"><span class="linenos">2789</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-2753"><a href="#L-2753"><span class="linenos">2753</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="L-2754"><a href="#L-2754"><span class="linenos">2754</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-2755"><a href="#L-2755"><span class="linenos">2755</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2756"><a href="#L-2756"><span class="linenos">2756</span></a> <span class="n">subquery_predicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUBQUERY_PREDICATES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="L-2757"><a href="#L-2757"><span class="linenos">2757</span></a> +</span><span id="L-2758"><a href="#L-2758"><span class="linenos">2758</span></a> <span class="k">if</span> <span class="n">subquery_predicate</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="L-2759"><a href="#L-2759"><span class="linenos">2759</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">subquery_predicate</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> +</span><span id="L-2760"><a href="#L-2760"><span class="linenos">2760</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2761"><a href="#L-2761"><span class="linenos">2761</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2762"><a href="#L-2762"><span class="linenos">2762</span></a> +</span><span id="L-2763"><a href="#L-2763"><span class="linenos">2763</span></a> <span class="k">if</span> <span class="n">functions</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-2764"><a href="#L-2764"><span class="linenos">2764</span></a> <span class="n">functions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS</span> +</span><span id="L-2765"><a href="#L-2765"><span class="linenos">2765</span></a> +</span><span id="L-2766"><a href="#L-2766"><span class="linenos">2766</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">functions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> +</span><span id="L-2767"><a href="#L-2767"><span class="linenos">2767</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> +</span><span id="L-2768"><a href="#L-2768"><span class="linenos">2768</span></a> +</span><span id="L-2769"><a href="#L-2769"><span class="linenos">2769</span></a> <span class="k">if</span> <span class="n">function</span><span class="p">:</span> +</span><span id="L-2770"><a href="#L-2770"><span class="linenos">2770</span></a> <span class="c1"># Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the</span> +</span><span id="L-2771"><a href="#L-2771"><span class="linenos">2771</span></a> <span class="c1"># second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists.</span> +</span><span id="L-2772"><a href="#L-2772"><span class="linenos">2772</span></a> <span class="k">if</span> <span class="n">count_params</span><span class="p">(</span><span class="n">function</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="L-2773"><a href="#L-2773"><span class="linenos">2773</span></a> <span class="n">params</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2774"><a href="#L-2774"><span class="linenos">2774</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2775"><a href="#L-2775"><span class="linenos">2775</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> +</span><span id="L-2776"><a href="#L-2776"><span class="linenos">2776</span></a> +</span><span id="L-2777"><a href="#L-2777"><span class="linenos">2777</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> +</span><span id="L-2778"><a href="#L-2778"><span class="linenos">2778</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2779"><a href="#L-2779"><span class="linenos">2779</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-2780"><a href="#L-2780"><span class="linenos">2780</span></a> +</span><span id="L-2781"><a href="#L-2781"><span class="linenos">2781</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-2782"><a href="#L-2782"><span class="linenos">2782</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2783"><a href="#L-2783"><span class="linenos">2783</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</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">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-2784"><a href="#L-2784"><span class="linenos">2784</span></a> +</span><span id="L-2785"><a href="#L-2785"><span class="linenos">2785</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2786"><a href="#L-2786"><span class="linenos">2786</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2787"><a href="#L-2787"><span class="linenos">2787</span></a> +</span><span id="L-2788"><a href="#L-2788"><span class="linenos">2788</span></a> <span class="k">def</span> <span class="nf">_parse_function_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2789"><a href="#L-2789"><span class="linenos">2789</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> </span><span id="L-2790"><a href="#L-2790"><span class="linenos">2790</span></a> -</span><span id="L-2791"><a href="#L-2791"><span class="linenos">2791</span></a> <span class="k">def</span> <span class="nf">_parse_national</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-2792"><a href="#L-2792"><span class="linenos">2792</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">National</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> -</span><span id="L-2793"><a href="#L-2793"><span class="linenos">2793</span></a> -</span><span id="L-2794"><a href="#L-2794"><span class="linenos">2794</span></a> <span class="k">def</span> <span class="nf">_parse_session_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-2795"><a href="#L-2795"><span class="linenos">2795</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2796"><a href="#L-2796"><span class="linenos">2796</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-2797"><a href="#L-2797"><span class="linenos">2797</span></a> -</span><span id="L-2798"><a href="#L-2798"><span class="linenos">2798</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="L-2799"><a href="#L-2799"><span class="linenos">2799</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span> -</span><span id="L-2800"><a href="#L-2800"><span class="linenos">2800</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-2791"><a href="#L-2791"><span class="linenos">2791</span></a> <span class="k">def</span> <span class="nf">_parse_user_defined_function</span><span class="p">(</span> +</span><span id="L-2792"><a href="#L-2792"><span class="linenos">2792</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2793"><a href="#L-2793"><span class="linenos">2793</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2794"><a href="#L-2794"><span class="linenos">2794</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-2795"><a href="#L-2795"><span class="linenos">2795</span></a> +</span><span id="L-2796"><a href="#L-2796"><span class="linenos">2796</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-2797"><a href="#L-2797"><span class="linenos">2797</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> +</span><span id="L-2798"><a href="#L-2798"><span class="linenos">2798</span></a> +</span><span id="L-2799"><a href="#L-2799"><span class="linenos">2799</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2800"><a href="#L-2800"><span class="linenos">2800</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-2801"><a href="#L-2801"><span class="linenos">2801</span></a> -</span><span id="L-2802"><a href="#L-2802"><span class="linenos">2802</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="L-2803"><a href="#L-2803"><span class="linenos">2803</span></a> -</span><span id="L-2804"><a href="#L-2804"><span class="linenos">2804</span></a> <span class="k">def</span> <span class="nf">_parse_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2805"><a href="#L-2805"><span class="linenos">2805</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-2806"><a href="#L-2806"><span class="linenos">2806</span></a> -</span><span id="L-2807"><a href="#L-2807"><span class="linenos">2807</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2808"><a href="#L-2808"><span class="linenos">2808</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> -</span><span id="L-2809"><a href="#L-2809"><span class="linenos">2809</span></a> -</span><span id="L-2810"><a href="#L-2810"><span class="linenos">2810</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="L-2811"><a href="#L-2811"><span class="linenos">2811</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2812"><a href="#L-2812"><span class="linenos">2812</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2813"><a href="#L-2813"><span class="linenos">2813</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()]</span> +</span><span id="L-2802"><a href="#L-2802"><span class="linenos">2802</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> +</span><span id="L-2803"><a href="#L-2803"><span class="linenos">2803</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2804"><a href="#L-2804"><span class="linenos">2804</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2805"><a href="#L-2805"><span class="linenos">2805</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span> +</span><span id="L-2806"><a href="#L-2806"><span class="linenos">2806</span></a> <span class="p">)</span> +</span><span id="L-2807"><a href="#L-2807"><span class="linenos">2807</span></a> +</span><span id="L-2808"><a href="#L-2808"><span class="linenos">2808</span></a> <span class="k">def</span> <span class="nf">_parse_introducer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2809"><a href="#L-2809"><span class="linenos">2809</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-2810"><a href="#L-2810"><span class="linenos">2810</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span> +</span><span id="L-2811"><a href="#L-2811"><span class="linenos">2811</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Introducer</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">literal</span><span class="p">)</span> +</span><span id="L-2812"><a href="#L-2812"><span class="linenos">2812</span></a> +</span><span id="L-2813"><a href="#L-2813"><span class="linenos">2813</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> </span><span id="L-2814"><a href="#L-2814"><span class="linenos">2814</span></a> -</span><span id="L-2815"><a href="#L-2815"><span class="linenos">2815</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">):</span> -</span><span id="L-2816"><a href="#L-2816"><span class="linenos">2816</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2815"><a href="#L-2815"><span class="linenos">2815</span></a> <span class="k">def</span> <span class="nf">_parse_national</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2816"><a href="#L-2816"><span class="linenos">2816</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">National</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> </span><span id="L-2817"><a href="#L-2817"><span class="linenos">2817</span></a> -</span><span id="L-2818"><a href="#L-2818"><span class="linenos">2818</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2819"><a href="#L-2819"><span class="linenos">2819</span></a> -</span><span id="L-2820"><a href="#L-2820"><span class="linenos">2820</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-2818"><a href="#L-2818"><span class="linenos">2818</span></a> <span class="k">def</span> <span class="nf">_parse_session_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2819"><a href="#L-2819"><span class="linenos">2819</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2820"><a href="#L-2820"><span class="linenos">2820</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> </span><span id="L-2821"><a href="#L-2821"><span class="linenos">2821</span></a> -</span><span id="L-2822"><a href="#L-2822"><span class="linenos">2822</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="L-2823"><a href="#L-2823"><span class="linenos">2823</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2824"><a href="#L-2824"><span class="linenos">2824</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-2825"><a href="#L-2825"><span class="linenos">2825</span></a> <span class="p">)</span> -</span><span id="L-2826"><a href="#L-2826"><span class="linenos">2826</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2827"><a href="#L-2827"><span class="linenos">2827</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">()</span> -</span><span id="L-2828"><a href="#L-2828"><span class="linenos">2828</span></a> -</span><span id="L-2829"><a href="#L-2829"><span class="linenos">2829</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">):</span> -</span><span id="L-2830"><a href="#L-2830"><span class="linenos">2830</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-2831"><a href="#L-2831"><span class="linenos">2831</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2832"><a href="#L-2832"><span class="linenos">2832</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">)</span> +</span><span id="L-2822"><a href="#L-2822"><span class="linenos">2822</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="L-2823"><a href="#L-2823"><span class="linenos">2823</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span> +</span><span id="L-2824"><a href="#L-2824"><span class="linenos">2824</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-2825"><a href="#L-2825"><span class="linenos">2825</span></a> +</span><span id="L-2826"><a href="#L-2826"><span class="linenos">2826</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="L-2827"><a href="#L-2827"><span class="linenos">2827</span></a> +</span><span id="L-2828"><a href="#L-2828"><span class="linenos">2828</span></a> <span class="k">def</span> <span class="nf">_parse_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2829"><a href="#L-2829"><span class="linenos">2829</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-2830"><a href="#L-2830"><span class="linenos">2830</span></a> +</span><span id="L-2831"><a href="#L-2831"><span class="linenos">2831</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2832"><a href="#L-2832"><span class="linenos">2832</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> </span><span id="L-2833"><a href="#L-2833"><span class="linenos">2833</span></a> -</span><span id="L-2834"><a href="#L-2834"><span class="linenos">2834</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> -</span><span id="L-2835"><a href="#L-2835"><span class="linenos">2835</span></a> -</span><span id="L-2836"><a href="#L-2836"><span class="linenos">2836</span></a> <span class="k">def</span> <span class="nf">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2837"><a href="#L-2837"><span class="linenos">2837</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-2838"><a href="#L-2838"><span class="linenos">2838</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> -</span><span id="L-2839"><a href="#L-2839"><span class="linenos">2839</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-2840"><a href="#L-2840"><span class="linenos">2840</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2834"><a href="#L-2834"><span class="linenos">2834</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="L-2835"><a href="#L-2835"><span class="linenos">2835</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2836"><a href="#L-2836"><span class="linenos">2836</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2837"><a href="#L-2837"><span class="linenos">2837</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()]</span> +</span><span id="L-2838"><a href="#L-2838"><span class="linenos">2838</span></a> +</span><span id="L-2839"><a href="#L-2839"><span class="linenos">2839</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">):</span> +</span><span id="L-2840"><a href="#L-2840"><span class="linenos">2840</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> </span><span id="L-2841"><a href="#L-2841"><span class="linenos">2841</span></a> -</span><span id="L-2842"><a href="#L-2842"><span class="linenos">2842</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-2843"><a href="#L-2843"><span class="linenos">2843</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> -</span><span id="L-2844"><a href="#L-2844"><span class="linenos">2844</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-2845"><a href="#L-2845"><span class="linenos">2845</span></a> <span class="p">)</span> -</span><span id="L-2846"><a href="#L-2846"><span class="linenos">2846</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2847"><a href="#L-2847"><span class="linenos">2847</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Schema</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">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-2848"><a href="#L-2848"><span class="linenos">2848</span></a> -</span><span id="L-2849"><a href="#L-2849"><span class="linenos">2849</span></a> <span class="k">def</span> <span class="nf">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2850"><a href="#L-2850"><span class="linenos">2850</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-2851"><a href="#L-2851"><span class="linenos">2851</span></a> -</span><span id="L-2852"><a href="#L-2852"><span class="linenos">2852</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ORDINALITY"</span><span class="p">):</span> -</span><span id="L-2853"><a href="#L-2853"><span class="linenos">2853</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">ordinality</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2854"><a href="#L-2854"><span class="linenos">2854</span></a> -</span><span id="L-2855"><a href="#L-2855"><span class="linenos">2855</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-2856"><a href="#L-2856"><span class="linenos">2856</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-2857"><a href="#L-2857"><span class="linenos">2857</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_constraint</span><span class="p">()</span> -</span><span id="L-2858"><a href="#L-2858"><span class="linenos">2858</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> -</span><span id="L-2859"><a href="#L-2859"><span class="linenos">2859</span></a> <span class="k">break</span> -</span><span id="L-2860"><a href="#L-2860"><span class="linenos">2860</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> -</span><span id="L-2861"><a href="#L-2861"><span class="linenos">2861</span></a> -</span><span id="L-2862"><a href="#L-2862"><span class="linenos">2862</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">constraints</span><span class="p">:</span> -</span><span id="L-2863"><a href="#L-2863"><span class="linenos">2863</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2864"><a href="#L-2864"><span class="linenos">2864</span></a> -</span><span id="L-2865"><a href="#L-2865"><span class="linenos">2865</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">constraints</span><span class="o">=</span><span class="n">constraints</span><span class="p">)</span> -</span><span id="L-2866"><a href="#L-2866"><span class="linenos">2866</span></a> -</span><span id="L-2867"><a href="#L-2867"><span class="linenos">2867</span></a> <span class="k">def</span> <span class="nf">_parse_auto_increment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-2868"><a href="#L-2868"><span class="linenos">2868</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2869"><a href="#L-2869"><span class="linenos">2869</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2870"><a href="#L-2870"><span class="linenos">2870</span></a> -</span><span id="L-2871"><a href="#L-2871"><span class="linenos">2871</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-2872"><a href="#L-2872"><span class="linenos">2872</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-2873"><a href="#L-2873"><span class="linenos">2873</span></a> <span class="n">start</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-2874"><a href="#L-2874"><span class="linenos">2874</span></a> <span class="n">increment</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-2875"><a href="#L-2875"><span class="linenos">2875</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> -</span><span id="L-2876"><a href="#L-2876"><span class="linenos">2876</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-2877"><a href="#L-2877"><span class="linenos">2877</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">)</span> -</span><span id="L-2878"><a href="#L-2878"><span class="linenos">2878</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="L-2879"><a href="#L-2879"><span class="linenos">2879</span></a> -</span><span id="L-2880"><a href="#L-2880"><span class="linenos">2880</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">and</span> <span class="n">increment</span><span class="p">:</span> -</span><span id="L-2881"><a href="#L-2881"><span class="linenos">2881</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">increment</span><span class="o">=</span><span class="n">increment</span><span class="p">)</span> -</span><span id="L-2882"><a href="#L-2882"><span class="linenos">2882</span></a> -</span><span id="L-2883"><a href="#L-2883"><span class="linenos">2883</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">()</span> -</span><span id="L-2884"><a href="#L-2884"><span class="linenos">2884</span></a> -</span><span id="L-2885"><a href="#L-2885"><span class="linenos">2885</span></a> <span class="k">def</span> <span class="nf">_parse_generated_as_identity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-2886"><a href="#L-2886"><span class="linenos">2886</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BY_DEFAULT</span><span class="p">):</span> -</span><span id="L-2887"><a href="#L-2887"><span class="linenos">2887</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-2888"><a href="#L-2888"><span class="linenos">2888</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2889"><a href="#L-2889"><span class="linenos">2889</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> -</span><span id="L-2890"><a href="#L-2890"><span class="linenos">2890</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2891"><a href="#L-2891"><span class="linenos">2891</span></a> -</span><span id="L-2892"><a href="#L-2892"><span class="linenos">2892</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AS"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">)</span> -</span><span id="L-2893"><a href="#L-2893"><span class="linenos">2893</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-2894"><a href="#L-2894"><span class="linenos">2894</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">,</span> <span class="s2">"WITH"</span><span class="p">):</span> -</span><span id="L-2895"><a href="#L-2895"><span class="linenos">2895</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-2896"><a href="#L-2896"><span class="linenos">2896</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="L-2897"><a href="#L-2897"><span class="linenos">2897</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-2898"><a href="#L-2898"><span class="linenos">2898</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> -</span><span id="L-2899"><a href="#L-2899"><span class="linenos">2899</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-2900"><a href="#L-2900"><span class="linenos">2900</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> -</span><span id="L-2901"><a href="#L-2901"><span class="linenos">2901</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-2902"><a href="#L-2902"><span class="linenos">2902</span></a> -</span><span id="L-2903"><a href="#L-2903"><span class="linenos">2903</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">):</span> -</span><span id="L-2904"><a href="#L-2904"><span class="linenos">2904</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="L-2905"><a href="#L-2905"><span class="linenos">2905</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"CYCLE"</span><span class="p">):</span> -</span><span id="L-2906"><a href="#L-2906"><span class="linenos">2906</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="L-2907"><a href="#L-2907"><span class="linenos">2907</span></a> -</span><span id="L-2908"><a href="#L-2908"><span class="linenos">2908</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-2909"><a href="#L-2909"><span class="linenos">2909</span></a> -</span><span id="L-2910"><a href="#L-2910"><span class="linenos">2910</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2911"><a href="#L-2911"><span class="linenos">2911</span></a> -</span><span id="L-2912"><a href="#L-2912"><span class="linenos">2912</span></a> <span class="k">def</span> <span class="nf">_parse_not_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2913"><a href="#L-2913"><span class="linenos">2913</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">):</span> -</span><span id="L-2914"><a href="#L-2914"><span class="linenos">2914</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">)</span> -</span><span id="L-2915"><a href="#L-2915"><span class="linenos">2915</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASESPECIFIC"</span><span class="p">):</span> -</span><span id="L-2916"><a href="#L-2916"><span class="linenos">2916</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-2917"><a href="#L-2917"><span class="linenos">2917</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2918"><a href="#L-2918"><span class="linenos">2918</span></a> -</span><span id="L-2919"><a href="#L-2919"><span class="linenos">2919</span></a> <span class="k">def</span> <span class="nf">_parse_column_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2920"><a href="#L-2920"><span class="linenos">2920</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> -</span><span id="L-2921"><a href="#L-2921"><span class="linenos">2921</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> -</span><span id="L-2922"><a href="#L-2922"><span class="linenos">2922</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2842"><a href="#L-2842"><span class="linenos">2842</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2843"><a href="#L-2843"><span class="linenos">2843</span></a> +</span><span id="L-2844"><a href="#L-2844"><span class="linenos">2844</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-2845"><a href="#L-2845"><span class="linenos">2845</span></a> +</span><span id="L-2846"><a href="#L-2846"><span class="linenos">2846</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="L-2847"><a href="#L-2847"><span class="linenos">2847</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2848"><a href="#L-2848"><span class="linenos">2848</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-2849"><a href="#L-2849"><span class="linenos">2849</span></a> <span class="p">)</span> +</span><span id="L-2850"><a href="#L-2850"><span class="linenos">2850</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2851"><a href="#L-2851"><span class="linenos">2851</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">()</span> +</span><span id="L-2852"><a href="#L-2852"><span class="linenos">2852</span></a> +</span><span id="L-2853"><a href="#L-2853"><span class="linenos">2853</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">):</span> +</span><span id="L-2854"><a href="#L-2854"><span class="linenos">2854</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2855"><a href="#L-2855"><span class="linenos">2855</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2856"><a href="#L-2856"><span class="linenos">2856</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">)</span> +</span><span id="L-2857"><a href="#L-2857"><span class="linenos">2857</span></a> +</span><span id="L-2858"><a href="#L-2858"><span class="linenos">2858</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> +</span><span id="L-2859"><a href="#L-2859"><span class="linenos">2859</span></a> +</span><span id="L-2860"><a href="#L-2860"><span class="linenos">2860</span></a> <span class="k">def</span> <span class="nf">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2861"><a href="#L-2861"><span class="linenos">2861</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-2862"><a href="#L-2862"><span class="linenos">2862</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> +</span><span id="L-2863"><a href="#L-2863"><span class="linenos">2863</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-2864"><a href="#L-2864"><span class="linenos">2864</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2865"><a href="#L-2865"><span class="linenos">2865</span></a> +</span><span id="L-2866"><a href="#L-2866"><span class="linenos">2866</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-2867"><a href="#L-2867"><span class="linenos">2867</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> +</span><span id="L-2868"><a href="#L-2868"><span class="linenos">2868</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-2869"><a href="#L-2869"><span class="linenos">2869</span></a> <span class="p">)</span> +</span><span id="L-2870"><a href="#L-2870"><span class="linenos">2870</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2871"><a href="#L-2871"><span class="linenos">2871</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Schema</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">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> +</span><span id="L-2872"><a href="#L-2872"><span class="linenos">2872</span></a> +</span><span id="L-2873"><a href="#L-2873"><span class="linenos">2873</span></a> <span class="k">def</span> <span class="nf">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2874"><a href="#L-2874"><span class="linenos">2874</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-2875"><a href="#L-2875"><span class="linenos">2875</span></a> +</span><span id="L-2876"><a href="#L-2876"><span class="linenos">2876</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ORDINALITY"</span><span class="p">):</span> +</span><span id="L-2877"><a href="#L-2877"><span class="linenos">2877</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">ordinality</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2878"><a href="#L-2878"><span class="linenos">2878</span></a> +</span><span id="L-2879"><a href="#L-2879"><span class="linenos">2879</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-2880"><a href="#L-2880"><span class="linenos">2880</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-2881"><a href="#L-2881"><span class="linenos">2881</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_constraint</span><span class="p">()</span> +</span><span id="L-2882"><a href="#L-2882"><span class="linenos">2882</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> +</span><span id="L-2883"><a href="#L-2883"><span class="linenos">2883</span></a> <span class="k">break</span> +</span><span id="L-2884"><a href="#L-2884"><span class="linenos">2884</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="L-2885"><a href="#L-2885"><span class="linenos">2885</span></a> +</span><span id="L-2886"><a href="#L-2886"><span class="linenos">2886</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">constraints</span><span class="p">:</span> +</span><span id="L-2887"><a href="#L-2887"><span class="linenos">2887</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2888"><a href="#L-2888"><span class="linenos">2888</span></a> +</span><span id="L-2889"><a href="#L-2889"><span class="linenos">2889</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">constraints</span><span class="o">=</span><span class="n">constraints</span><span class="p">)</span> +</span><span id="L-2890"><a href="#L-2890"><span class="linenos">2890</span></a> +</span><span id="L-2891"><a href="#L-2891"><span class="linenos">2891</span></a> <span class="k">def</span> <span class="nf">_parse_auto_increment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2892"><a href="#L-2892"><span class="linenos">2892</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2893"><a href="#L-2893"><span class="linenos">2893</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2894"><a href="#L-2894"><span class="linenos">2894</span></a> +</span><span id="L-2895"><a href="#L-2895"><span class="linenos">2895</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-2896"><a href="#L-2896"><span class="linenos">2896</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-2897"><a href="#L-2897"><span class="linenos">2897</span></a> <span class="n">start</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-2898"><a href="#L-2898"><span class="linenos">2898</span></a> <span class="n">increment</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-2899"><a href="#L-2899"><span class="linenos">2899</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> +</span><span id="L-2900"><a href="#L-2900"><span class="linenos">2900</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-2901"><a href="#L-2901"><span class="linenos">2901</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">)</span> +</span><span id="L-2902"><a href="#L-2902"><span class="linenos">2902</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="L-2903"><a href="#L-2903"><span class="linenos">2903</span></a> +</span><span id="L-2904"><a href="#L-2904"><span class="linenos">2904</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">and</span> <span class="n">increment</span><span class="p">:</span> +</span><span id="L-2905"><a href="#L-2905"><span class="linenos">2905</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">increment</span><span class="o">=</span><span class="n">increment</span><span class="p">)</span> +</span><span id="L-2906"><a href="#L-2906"><span class="linenos">2906</span></a> +</span><span id="L-2907"><a href="#L-2907"><span class="linenos">2907</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">()</span> +</span><span id="L-2908"><a href="#L-2908"><span class="linenos">2908</span></a> +</span><span id="L-2909"><a href="#L-2909"><span class="linenos">2909</span></a> <span class="k">def</span> <span class="nf">_parse_compress</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2910"><a href="#L-2910"><span class="linenos">2910</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-2911"><a href="#L-2911"><span class="linenos">2911</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2912"><a href="#L-2912"><span class="linenos">2912</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-2913"><a href="#L-2913"><span class="linenos">2913</span></a> <span class="p">)</span> +</span><span id="L-2914"><a href="#L-2914"><span class="linenos">2914</span></a> +</span><span id="L-2915"><a href="#L-2915"><span class="linenos">2915</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-2916"><a href="#L-2916"><span class="linenos">2916</span></a> +</span><span id="L-2917"><a href="#L-2917"><span class="linenos">2917</span></a> <span class="k">def</span> <span class="nf">_parse_generated_as_identity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-2918"><a href="#L-2918"><span class="linenos">2918</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BY_DEFAULT</span><span class="p">):</span> +</span><span id="L-2919"><a href="#L-2919"><span class="linenos">2919</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-2920"><a href="#L-2920"><span class="linenos">2920</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-2921"><a href="#L-2921"><span class="linenos">2921</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> +</span><span id="L-2922"><a href="#L-2922"><span class="linenos">2922</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-2923"><a href="#L-2923"><span class="linenos">2923</span></a> -</span><span id="L-2924"><a href="#L-2924"><span class="linenos">2924</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> -</span><span id="L-2925"><a href="#L-2925"><span class="linenos">2925</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-2926"><a href="#L-2926"><span class="linenos">2926</span></a> -</span><span id="L-2927"><a href="#L-2927"><span class="linenos">2927</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> -</span><span id="L-2928"><a href="#L-2928"><span class="linenos">2928</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-2929"><a href="#L-2929"><span class="linenos">2929</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">,</span> -</span><span id="L-2930"><a href="#L-2930"><span class="linenos">2930</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-2931"><a href="#L-2931"><span class="linenos">2931</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">),</span> -</span><span id="L-2932"><a href="#L-2932"><span class="linenos">2932</span></a> <span class="p">)</span> -</span><span id="L-2933"><a href="#L-2933"><span class="linenos">2933</span></a> -</span><span id="L-2934"><a href="#L-2934"><span class="linenos">2934</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-2935"><a href="#L-2935"><span class="linenos">2935</span></a> -</span><span id="L-2936"><a href="#L-2936"><span class="linenos">2936</span></a> <span class="k">def</span> <span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2937"><a href="#L-2937"><span class="linenos">2937</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> -</span><span id="L-2938"><a href="#L-2938"><span class="linenos">2938</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">)</span> +</span><span id="L-2924"><a href="#L-2924"><span class="linenos">2924</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AS"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">)</span> +</span><span id="L-2925"><a href="#L-2925"><span class="linenos">2925</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-2926"><a href="#L-2926"><span class="linenos">2926</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">,</span> <span class="s2">"WITH"</span><span class="p">):</span> +</span><span id="L-2927"><a href="#L-2927"><span class="linenos">2927</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-2928"><a href="#L-2928"><span class="linenos">2928</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="L-2929"><a href="#L-2929"><span class="linenos">2929</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-2930"><a href="#L-2930"><span class="linenos">2930</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> +</span><span id="L-2931"><a href="#L-2931"><span class="linenos">2931</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-2932"><a href="#L-2932"><span class="linenos">2932</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> +</span><span id="L-2933"><a href="#L-2933"><span class="linenos">2933</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-2934"><a href="#L-2934"><span class="linenos">2934</span></a> +</span><span id="L-2935"><a href="#L-2935"><span class="linenos">2935</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">):</span> +</span><span id="L-2936"><a href="#L-2936"><span class="linenos">2936</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="L-2937"><a href="#L-2937"><span class="linenos">2937</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"CYCLE"</span><span class="p">):</span> +</span><span id="L-2938"><a href="#L-2938"><span class="linenos">2938</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> </span><span id="L-2939"><a href="#L-2939"><span class="linenos">2939</span></a> -</span><span id="L-2940"><a href="#L-2940"><span class="linenos">2940</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-2941"><a href="#L-2941"><span class="linenos">2941</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-2942"><a href="#L-2942"><span class="linenos">2942</span></a> -</span><span id="L-2943"><a href="#L-2943"><span class="linenos">2943</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-2944"><a href="#L-2944"><span class="linenos">2944</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="L-2945"><a href="#L-2945"><span class="linenos">2945</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> -</span><span id="L-2946"><a href="#L-2946"><span class="linenos">2946</span></a> <span class="k">break</span> -</span><span id="L-2947"><a href="#L-2947"><span class="linenos">2947</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> -</span><span id="L-2948"><a href="#L-2948"><span class="linenos">2948</span></a> -</span><span id="L-2949"><a href="#L-2949"><span class="linenos">2949</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Constraint</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-2950"><a href="#L-2950"><span class="linenos">2950</span></a> -</span><span id="L-2951"><a href="#L-2951"><span class="linenos">2951</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraint</span><span class="p">(</span> -</span><span id="L-2952"><a href="#L-2952"><span class="linenos">2952</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">constraints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2953"><a href="#L-2953"><span class="linenos">2953</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-2954"><a href="#L-2954"><span class="linenos">2954</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="n">constraints</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> -</span><span id="L-2955"><a href="#L-2955"><span class="linenos">2955</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-2956"><a href="#L-2956"><span class="linenos">2956</span></a> -</span><span id="L-2957"><a href="#L-2957"><span class="linenos">2957</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-2958"><a href="#L-2958"><span class="linenos">2958</span></a> <span class="k">if</span> <span class="n">constraint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">:</span> -</span><span id="L-2959"><a href="#L-2959"><span class="linenos">2959</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser found for schema constraint </span><span class="si">{</span><span class="n">constraint</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> -</span><span id="L-2960"><a href="#L-2960"><span class="linenos">2960</span></a> -</span><span id="L-2961"><a href="#L-2961"><span class="linenos">2961</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="n">constraint</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-2940"><a href="#L-2940"><span class="linenos">2940</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-2941"><a href="#L-2941"><span class="linenos">2941</span></a> +</span><span id="L-2942"><a href="#L-2942"><span class="linenos">2942</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2943"><a href="#L-2943"><span class="linenos">2943</span></a> +</span><span id="L-2944"><a href="#L-2944"><span class="linenos">2944</span></a> <span class="k">def</span> <span class="nf">_parse_inline</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2945"><a href="#L-2945"><span class="linenos">2945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LENGTH"</span><span class="p">)</span> +</span><span id="L-2946"><a href="#L-2946"><span class="linenos">2946</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-2947"><a href="#L-2947"><span class="linenos">2947</span></a> +</span><span id="L-2948"><a href="#L-2948"><span class="linenos">2948</span></a> <span class="k">def</span> <span class="nf">_parse_not_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2949"><a href="#L-2949"><span class="linenos">2949</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">):</span> +</span><span id="L-2950"><a href="#L-2950"><span class="linenos">2950</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">)</span> +</span><span id="L-2951"><a href="#L-2951"><span class="linenos">2951</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASESPECIFIC"</span><span class="p">):</span> +</span><span id="L-2952"><a href="#L-2952"><span class="linenos">2952</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-2953"><a href="#L-2953"><span class="linenos">2953</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2954"><a href="#L-2954"><span class="linenos">2954</span></a> +</span><span id="L-2955"><a href="#L-2955"><span class="linenos">2955</span></a> <span class="k">def</span> <span class="nf">_parse_column_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2956"><a href="#L-2956"><span class="linenos">2956</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> +</span><span id="L-2957"><a href="#L-2957"><span class="linenos">2957</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> +</span><span id="L-2958"><a href="#L-2958"><span class="linenos">2958</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2959"><a href="#L-2959"><span class="linenos">2959</span></a> +</span><span id="L-2960"><a href="#L-2960"><span class="linenos">2960</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> +</span><span id="L-2961"><a href="#L-2961"><span class="linenos">2961</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> </span><span id="L-2962"><a href="#L-2962"><span class="linenos">2962</span></a> -</span><span id="L-2963"><a href="#L-2963"><span class="linenos">2963</span></a> <span class="k">def</span> <span class="nf">_parse_unique</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-2964"><a href="#L-2964"><span class="linenos">2964</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-2965"><a href="#L-2965"><span class="linenos">2965</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">)</span> -</span><span id="L-2966"><a href="#L-2966"><span class="linenos">2966</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Unique</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">())</span> -</span><span id="L-2967"><a href="#L-2967"><span class="linenos">2967</span></a> -</span><span id="L-2968"><a href="#L-2968"><span class="linenos">2968</span></a> <span class="k">def</span> <span class="nf">_parse_key_constraint_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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-2969"><a href="#L-2969"><span class="linenos">2969</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-2970"><a href="#L-2970"><span class="linenos">2970</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-2971"><a href="#L-2971"><span class="linenos">2971</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-2972"><a href="#L-2972"><span class="linenos">2972</span></a> <span class="k">break</span> -</span><span id="L-2973"><a href="#L-2973"><span class="linenos">2973</span></a> -</span><span id="L-2974"><a href="#L-2974"><span class="linenos">2974</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-2975"><a href="#L-2975"><span class="linenos">2975</span></a> <span class="n">action</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-2976"><a href="#L-2976"><span class="linenos">2976</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-2977"><a href="#L-2977"><span class="linenos">2977</span></a> -</span><span id="L-2978"><a href="#L-2978"><span class="linenos">2978</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">):</span> -</span><span id="L-2979"><a href="#L-2979"><span class="linenos">2979</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> -</span><span id="L-2980"><a href="#L-2980"><span class="linenos">2980</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">):</span> -</span><span id="L-2981"><a href="#L-2981"><span class="linenos">2981</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"CASCADE"</span> -</span><span id="L-2982"><a href="#L-2982"><span class="linenos">2982</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> -</span><span id="L-2983"><a href="#L-2983"><span class="linenos">2983</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET NULL"</span> -</span><span id="L-2984"><a href="#L-2984"><span class="linenos">2984</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="L-2985"><a href="#L-2985"><span class="linenos">2985</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET DEFAULT"</span> -</span><span id="L-2986"><a href="#L-2986"><span class="linenos">2986</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-2987"><a href="#L-2987"><span class="linenos">2987</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid key constraint"</span><span class="p">)</span> -</span><span id="L-2988"><a href="#L-2988"><span class="linenos">2988</span></a> -</span><span id="L-2989"><a href="#L-2989"><span class="linenos">2989</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">action</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-2990"><a href="#L-2990"><span class="linenos">2990</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"ENFORCED"</span><span class="p">):</span> -</span><span id="L-2991"><a href="#L-2991"><span class="linenos">2991</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NOT ENFORCED"</span><span class="p">)</span> -</span><span id="L-2992"><a href="#L-2992"><span class="linenos">2992</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">):</span> -</span><span id="L-2993"><a href="#L-2993"><span class="linenos">2993</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">)</span> -</span><span id="L-2994"><a href="#L-2994"><span class="linenos">2994</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INITIALLY"</span><span class="p">,</span> <span class="s2">"DEFERRED"</span><span class="p">):</span> -</span><span id="L-2995"><a href="#L-2995"><span class="linenos">2995</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"INITIALLY DEFERRED"</span><span class="p">)</span> -</span><span id="L-2996"><a href="#L-2996"><span class="linenos">2996</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">):</span> -</span><span id="L-2997"><a href="#L-2997"><span class="linenos">2997</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">)</span> -</span><span id="L-2998"><a href="#L-2998"><span class="linenos">2998</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"FULL"</span><span class="p">):</span> -</span><span id="L-2999"><a href="#L-2999"><span class="linenos">2999</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"MATCH FULL"</span><span class="p">)</span> -</span><span id="L-3000"><a href="#L-3000"><span class="linenos">3000</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3001"><a href="#L-3001"><span class="linenos">3001</span></a> <span class="k">break</span> -</span><span id="L-3002"><a href="#L-3002"><span class="linenos">3002</span></a> -</span><span id="L-3003"><a href="#L-3003"><span class="linenos">3003</span></a> <span class="k">return</span> <span class="n">options</span> -</span><span id="L-3004"><a href="#L-3004"><span class="linenos">3004</span></a> -</span><span id="L-3005"><a href="#L-3005"><span class="linenos">3005</span></a> <span class="k">def</span> <span class="nf">_parse_references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3006"><a href="#L-3006"><span class="linenos">3006</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">):</span> -</span><span id="L-3007"><a href="#L-3007"><span class="linenos">3007</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3008"><a href="#L-3008"><span class="linenos">3008</span></a> -</span><span id="L-3009"><a href="#L-3009"><span class="linenos">3009</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3010"><a href="#L-3010"><span class="linenos">3010</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-3011"><a href="#L-3011"><span class="linenos">3011</span></a> -</span><span id="L-3012"><a href="#L-3012"><span class="linenos">3012</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3013"><a href="#L-3013"><span class="linenos">3013</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="L-3014"><a href="#L-3014"><span class="linenos">3014</span></a> -</span><span id="L-3015"><a href="#L-3015"><span class="linenos">3015</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> -</span><span id="L-3016"><a href="#L-3016"><span class="linenos">3016</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> -</span><span id="L-3017"><a href="#L-3017"><span class="linenos">3017</span></a> -</span><span id="L-3018"><a href="#L-3018"><span class="linenos">3018</span></a> <span class="k">def</span> <span class="nf">_parse_foreign_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3019"><a href="#L-3019"><span class="linenos">3019</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="L-3020"><a href="#L-3020"><span class="linenos">3020</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> -</span><span id="L-3021"><a href="#L-3021"><span class="linenos">3021</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-3022"><a href="#L-3022"><span class="linenos">3022</span></a> -</span><span id="L-3023"><a href="#L-3023"><span class="linenos">3023</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="L-3024"><a href="#L-3024"><span class="linenos">3024</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)):</span> -</span><span id="L-3025"><a href="#L-3025"><span class="linenos">3025</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected DELETE or UPDATE"</span><span class="p">)</span> -</span><span id="L-3026"><a href="#L-3026"><span class="linenos">3026</span></a> -</span><span id="L-3027"><a href="#L-3027"><span class="linenos">3027</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="L-3028"><a href="#L-3028"><span class="linenos">3028</span></a> -</span><span id="L-3029"><a href="#L-3029"><span class="linenos">3029</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">):</span> -</span><span id="L-3030"><a href="#L-3030"><span class="linenos">3030</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> -</span><span id="L-3031"><a href="#L-3031"><span class="linenos">3031</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> -</span><span id="L-3032"><a href="#L-3032"><span class="linenos">3032</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> -</span><span id="L-3033"><a href="#L-3033"><span class="linenos">3033</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-3034"><a href="#L-3034"><span class="linenos">3034</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3035"><a href="#L-3035"><span class="linenos">3035</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3036"><a href="#L-3036"><span class="linenos">3036</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-3037"><a href="#L-3037"><span class="linenos">3037</span></a> -</span><span id="L-3038"><a href="#L-3038"><span class="linenos">3038</span></a> <span class="n">options</span><span class="p">[</span><span class="n">kind</span><span class="p">]</span> <span class="o">=</span> <span class="n">action</span> -</span><span id="L-3039"><a href="#L-3039"><span class="linenos">3039</span></a> -</span><span id="L-3040"><a href="#L-3040"><span class="linenos">3040</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3041"><a href="#L-3041"><span class="linenos">3041</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">reference</span><span class="o">=</span><span class="n">reference</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span> <span class="c1"># type: ignore</span> -</span><span id="L-3042"><a href="#L-3042"><span class="linenos">3042</span></a> <span class="p">)</span> -</span><span id="L-3043"><a href="#L-3043"><span class="linenos">3043</span></a> -</span><span id="L-3044"><a href="#L-3044"><span class="linenos">3044</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3045"><a href="#L-3045"><span class="linenos">3045</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-3046"><a href="#L-3046"><span class="linenos">3046</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">))</span> -</span><span id="L-3047"><a href="#L-3047"><span class="linenos">3047</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span> -</span><span id="L-3048"><a href="#L-3048"><span class="linenos">3048</span></a> <span class="p">)</span> -</span><span id="L-3049"><a href="#L-3049"><span class="linenos">3049</span></a> -</span><span id="L-3050"><a href="#L-3050"><span class="linenos">3050</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3051"><a href="#L-3051"><span class="linenos">3051</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">)</span> -</span><span id="L-3052"><a href="#L-3052"><span class="linenos">3052</span></a> -</span><span id="L-3053"><a href="#L-3053"><span class="linenos">3053</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="L-3054"><a href="#L-3054"><span class="linenos">3054</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> -</span><span id="L-3055"><a href="#L-3055"><span class="linenos">3055</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> -</span><span id="L-3056"><a href="#L-3056"><span class="linenos">3056</span></a> -</span><span id="L-3057"><a href="#L-3057"><span class="linenos">3057</span></a> <span class="k">def</span> <span class="nf">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3058"><a href="#L-3058"><span class="linenos">3058</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)):</span> -</span><span id="L-3059"><a href="#L-3059"><span class="linenos">3059</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3060"><a href="#L-3060"><span class="linenos">3060</span></a> -</span><span id="L-3061"><a href="#L-3061"><span class="linenos">3061</span></a> <span class="n">bracket_kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-3062"><a href="#L-3062"><span class="linenos">3062</span></a> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> -</span><span id="L-3063"><a href="#L-3063"><span class="linenos">3063</span></a> -</span><span id="L-3064"><a href="#L-3064"><span class="linenos">3064</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> -</span><span id="L-3065"><a href="#L-3065"><span class="linenos">3065</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())]</span> -</span><span id="L-3066"><a href="#L-3066"><span class="linenos">3066</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3067"><a href="#L-3067"><span class="linenos">3067</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()))</span> -</span><span id="L-3068"><a href="#L-3068"><span class="linenos">3068</span></a> -</span><span id="L-3069"><a href="#L-3069"><span class="linenos">3069</span></a> <span class="c1"># https://duckdb.org/docs/sql/data_types/struct.html#creating-structs</span> -</span><span id="L-3070"><a href="#L-3070"><span class="linenos">3070</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> -</span><span id="L-3071"><a href="#L-3071"><span class="linenos">3071</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-3072"><a href="#L-3072"><span class="linenos">3072</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">this</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="o">==</span> <span class="s2">"ARRAY"</span><span class="p">:</span> -</span><span id="L-3073"><a href="#L-3073"><span class="linenos">3073</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-3074"><a href="#L-3074"><span class="linenos">3074</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3075"><a href="#L-3075"><span class="linenos">3075</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> -</span><span id="L-3076"><a href="#L-3076"><span class="linenos">3076</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Bracket</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-3077"><a href="#L-3077"><span class="linenos">3077</span></a> -</span><span id="L-3078"><a href="#L-3078"><span class="linenos">3078</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">)</span> <span class="ow">and</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">:</span> -</span><span id="L-3079"><a href="#L-3079"><span class="linenos">3079</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected ]"</span><span class="p">)</span> -</span><span id="L-3080"><a href="#L-3080"><span class="linenos">3080</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> <span class="ow">and</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> -</span><span id="L-3081"><a href="#L-3081"><span class="linenos">3081</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected }"</span><span class="p">)</span> -</span><span id="L-3082"><a href="#L-3082"><span class="linenos">3082</span></a> -</span><span id="L-3083"><a href="#L-3083"><span class="linenos">3083</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-3084"><a href="#L-3084"><span class="linenos">3084</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-2963"><a href="#L-2963"><span class="linenos">2963</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> +</span><span id="L-2964"><a href="#L-2964"><span class="linenos">2964</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-2965"><a href="#L-2965"><span class="linenos">2965</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">,</span> +</span><span id="L-2966"><a href="#L-2966"><span class="linenos">2966</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-2967"><a href="#L-2967"><span class="linenos">2967</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">),</span> +</span><span id="L-2968"><a href="#L-2968"><span class="linenos">2968</span></a> <span class="p">)</span> +</span><span id="L-2969"><a href="#L-2969"><span class="linenos">2969</span></a> +</span><span id="L-2970"><a href="#L-2970"><span class="linenos">2970</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-2971"><a href="#L-2971"><span class="linenos">2971</span></a> +</span><span id="L-2972"><a href="#L-2972"><span class="linenos">2972</span></a> <span class="k">def</span> <span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2973"><a href="#L-2973"><span class="linenos">2973</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> +</span><span id="L-2974"><a href="#L-2974"><span class="linenos">2974</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">)</span> +</span><span id="L-2975"><a href="#L-2975"><span class="linenos">2975</span></a> +</span><span id="L-2976"><a href="#L-2976"><span class="linenos">2976</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-2977"><a href="#L-2977"><span class="linenos">2977</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-2978"><a href="#L-2978"><span class="linenos">2978</span></a> +</span><span id="L-2979"><a href="#L-2979"><span class="linenos">2979</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-2980"><a href="#L-2980"><span class="linenos">2980</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="L-2981"><a href="#L-2981"><span class="linenos">2981</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> +</span><span id="L-2982"><a href="#L-2982"><span class="linenos">2982</span></a> <span class="k">break</span> +</span><span id="L-2983"><a href="#L-2983"><span class="linenos">2983</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="L-2984"><a href="#L-2984"><span class="linenos">2984</span></a> +</span><span id="L-2985"><a href="#L-2985"><span class="linenos">2985</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Constraint</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-2986"><a href="#L-2986"><span class="linenos">2986</span></a> +</span><span id="L-2987"><a href="#L-2987"><span class="linenos">2987</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraint</span><span class="p">(</span> +</span><span id="L-2988"><a href="#L-2988"><span class="linenos">2988</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">constraints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-2989"><a href="#L-2989"><span class="linenos">2989</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-2990"><a href="#L-2990"><span class="linenos">2990</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="n">constraints</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> +</span><span id="L-2991"><a href="#L-2991"><span class="linenos">2991</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-2992"><a href="#L-2992"><span class="linenos">2992</span></a> +</span><span id="L-2993"><a href="#L-2993"><span class="linenos">2993</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-2994"><a href="#L-2994"><span class="linenos">2994</span></a> <span class="k">if</span> <span class="n">constraint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">:</span> +</span><span id="L-2995"><a href="#L-2995"><span class="linenos">2995</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser found for schema constraint </span><span class="si">{</span><span class="n">constraint</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</span><span id="L-2996"><a href="#L-2996"><span class="linenos">2996</span></a> +</span><span id="L-2997"><a href="#L-2997"><span class="linenos">2997</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="n">constraint</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-2998"><a href="#L-2998"><span class="linenos">2998</span></a> +</span><span id="L-2999"><a href="#L-2999"><span class="linenos">2999</span></a> <span class="k">def</span> <span class="nf">_parse_unique</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3000"><a href="#L-3000"><span class="linenos">3000</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3001"><a href="#L-3001"><span class="linenos">3001</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">)</span> +</span><span id="L-3002"><a href="#L-3002"><span class="linenos">3002</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Unique</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">())</span> +</span><span id="L-3003"><a href="#L-3003"><span class="linenos">3003</span></a> +</span><span id="L-3004"><a href="#L-3004"><span class="linenos">3004</span></a> <span class="k">def</span> <span class="nf">_parse_key_constraint_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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-3005"><a href="#L-3005"><span class="linenos">3005</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3006"><a href="#L-3006"><span class="linenos">3006</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-3007"><a href="#L-3007"><span class="linenos">3007</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-3008"><a href="#L-3008"><span class="linenos">3008</span></a> <span class="k">break</span> +</span><span id="L-3009"><a href="#L-3009"><span class="linenos">3009</span></a> +</span><span id="L-3010"><a href="#L-3010"><span class="linenos">3010</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-3011"><a href="#L-3011"><span class="linenos">3011</span></a> <span class="n">action</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3012"><a href="#L-3012"><span class="linenos">3012</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-3013"><a href="#L-3013"><span class="linenos">3013</span></a> +</span><span id="L-3014"><a href="#L-3014"><span class="linenos">3014</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">):</span> +</span><span id="L-3015"><a href="#L-3015"><span class="linenos">3015</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> +</span><span id="L-3016"><a href="#L-3016"><span class="linenos">3016</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">):</span> +</span><span id="L-3017"><a href="#L-3017"><span class="linenos">3017</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"CASCADE"</span> +</span><span id="L-3018"><a href="#L-3018"><span class="linenos">3018</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> +</span><span id="L-3019"><a href="#L-3019"><span class="linenos">3019</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET NULL"</span> +</span><span id="L-3020"><a href="#L-3020"><span class="linenos">3020</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="L-3021"><a href="#L-3021"><span class="linenos">3021</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET DEFAULT"</span> +</span><span id="L-3022"><a href="#L-3022"><span class="linenos">3022</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3023"><a href="#L-3023"><span class="linenos">3023</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid key constraint"</span><span class="p">)</span> +</span><span id="L-3024"><a href="#L-3024"><span class="linenos">3024</span></a> +</span><span id="L-3025"><a href="#L-3025"><span class="linenos">3025</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">action</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-3026"><a href="#L-3026"><span class="linenos">3026</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"ENFORCED"</span><span class="p">):</span> +</span><span id="L-3027"><a href="#L-3027"><span class="linenos">3027</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NOT ENFORCED"</span><span class="p">)</span> +</span><span id="L-3028"><a href="#L-3028"><span class="linenos">3028</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">):</span> +</span><span id="L-3029"><a href="#L-3029"><span class="linenos">3029</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">)</span> +</span><span id="L-3030"><a href="#L-3030"><span class="linenos">3030</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INITIALLY"</span><span class="p">,</span> <span class="s2">"DEFERRED"</span><span class="p">):</span> +</span><span id="L-3031"><a href="#L-3031"><span class="linenos">3031</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"INITIALLY DEFERRED"</span><span class="p">)</span> +</span><span id="L-3032"><a href="#L-3032"><span class="linenos">3032</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">):</span> +</span><span id="L-3033"><a href="#L-3033"><span class="linenos">3033</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">)</span> +</span><span id="L-3034"><a href="#L-3034"><span class="linenos">3034</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"FULL"</span><span class="p">):</span> +</span><span id="L-3035"><a href="#L-3035"><span class="linenos">3035</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"MATCH FULL"</span><span class="p">)</span> +</span><span id="L-3036"><a href="#L-3036"><span class="linenos">3036</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3037"><a href="#L-3037"><span class="linenos">3037</span></a> <span class="k">break</span> +</span><span id="L-3038"><a href="#L-3038"><span class="linenos">3038</span></a> +</span><span id="L-3039"><a href="#L-3039"><span class="linenos">3039</span></a> <span class="k">return</span> <span class="n">options</span> +</span><span id="L-3040"><a href="#L-3040"><span class="linenos">3040</span></a> +</span><span id="L-3041"><a href="#L-3041"><span class="linenos">3041</span></a> <span class="k">def</span> <span class="nf">_parse_references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3042"><a href="#L-3042"><span class="linenos">3042</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">):</span> +</span><span id="L-3043"><a href="#L-3043"><span class="linenos">3043</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3044"><a href="#L-3044"><span class="linenos">3044</span></a> +</span><span id="L-3045"><a href="#L-3045"><span class="linenos">3045</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3046"><a href="#L-3046"><span class="linenos">3046</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-3047"><a href="#L-3047"><span class="linenos">3047</span></a> +</span><span id="L-3048"><a href="#L-3048"><span class="linenos">3048</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3049"><a href="#L-3049"><span class="linenos">3049</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="L-3050"><a href="#L-3050"><span class="linenos">3050</span></a> +</span><span id="L-3051"><a href="#L-3051"><span class="linenos">3051</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> +</span><span id="L-3052"><a href="#L-3052"><span class="linenos">3052</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="L-3053"><a href="#L-3053"><span class="linenos">3053</span></a> +</span><span id="L-3054"><a href="#L-3054"><span class="linenos">3054</span></a> <span class="k">def</span> <span class="nf">_parse_foreign_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3055"><a href="#L-3055"><span class="linenos">3055</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="L-3056"><a href="#L-3056"><span class="linenos">3056</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> +</span><span id="L-3057"><a href="#L-3057"><span class="linenos">3057</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-3058"><a href="#L-3058"><span class="linenos">3058</span></a> +</span><span id="L-3059"><a href="#L-3059"><span class="linenos">3059</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="L-3060"><a href="#L-3060"><span class="linenos">3060</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)):</span> +</span><span id="L-3061"><a href="#L-3061"><span class="linenos">3061</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected DELETE or UPDATE"</span><span class="p">)</span> +</span><span id="L-3062"><a href="#L-3062"><span class="linenos">3062</span></a> +</span><span id="L-3063"><a href="#L-3063"><span class="linenos">3063</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> +</span><span id="L-3064"><a href="#L-3064"><span class="linenos">3064</span></a> +</span><span id="L-3065"><a href="#L-3065"><span class="linenos">3065</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">):</span> +</span><span id="L-3066"><a href="#L-3066"><span class="linenos">3066</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> +</span><span id="L-3067"><a href="#L-3067"><span class="linenos">3067</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> +</span><span id="L-3068"><a href="#L-3068"><span class="linenos">3068</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> +</span><span id="L-3069"><a href="#L-3069"><span class="linenos">3069</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-3070"><a href="#L-3070"><span class="linenos">3070</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3071"><a href="#L-3071"><span class="linenos">3071</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3072"><a href="#L-3072"><span class="linenos">3072</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-3073"><a href="#L-3073"><span class="linenos">3073</span></a> +</span><span id="L-3074"><a href="#L-3074"><span class="linenos">3074</span></a> <span class="n">options</span><span class="p">[</span><span class="n">kind</span><span class="p">]</span> <span class="o">=</span> <span class="n">action</span> +</span><span id="L-3075"><a href="#L-3075"><span class="linenos">3075</span></a> +</span><span id="L-3076"><a href="#L-3076"><span class="linenos">3076</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3077"><a href="#L-3077"><span class="linenos">3077</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">reference</span><span class="o">=</span><span class="n">reference</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span> <span class="c1"># type: ignore</span> +</span><span id="L-3078"><a href="#L-3078"><span class="linenos">3078</span></a> <span class="p">)</span> +</span><span id="L-3079"><a href="#L-3079"><span class="linenos">3079</span></a> +</span><span id="L-3080"><a href="#L-3080"><span class="linenos">3080</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3081"><a href="#L-3081"><span class="linenos">3081</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-3082"><a href="#L-3082"><span class="linenos">3082</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">))</span> +</span><span id="L-3083"><a href="#L-3083"><span class="linenos">3083</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span> +</span><span id="L-3084"><a href="#L-3084"><span class="linenos">3084</span></a> <span class="p">)</span> </span><span id="L-3085"><a href="#L-3085"><span class="linenos">3085</span></a> -</span><span id="L-3086"><a href="#L-3086"><span class="linenos">3086</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3087"><a href="#L-3087"><span class="linenos">3087</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> -</span><span id="L-3088"><a href="#L-3088"><span class="linenos">3088</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> -</span><span id="L-3089"><a href="#L-3089"><span class="linenos">3089</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3090"><a href="#L-3090"><span class="linenos">3090</span></a> -</span><span id="L-3091"><a href="#L-3091"><span class="linenos">3091</span></a> <span class="k">def</span> <span class="nf">_parse_case</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3092"><a href="#L-3092"><span class="linenos">3092</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3093"><a href="#L-3093"><span class="linenos">3093</span></a> <span class="n">default</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3094"><a href="#L-3094"><span class="linenos">3094</span></a> -</span><span id="L-3095"><a href="#L-3095"><span class="linenos">3095</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3086"><a href="#L-3086"><span class="linenos">3086</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3087"><a href="#L-3087"><span class="linenos">3087</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">)</span> +</span><span id="L-3088"><a href="#L-3088"><span class="linenos">3088</span></a> +</span><span id="L-3089"><a href="#L-3089"><span class="linenos">3089</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="L-3090"><a href="#L-3090"><span class="linenos">3090</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> +</span><span id="L-3091"><a href="#L-3091"><span class="linenos">3091</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="L-3092"><a href="#L-3092"><span class="linenos">3092</span></a> +</span><span id="L-3093"><a href="#L-3093"><span class="linenos">3093</span></a> <span class="k">def</span> <span class="nf">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3094"><a href="#L-3094"><span class="linenos">3094</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)):</span> +</span><span id="L-3095"><a href="#L-3095"><span class="linenos">3095</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-3096"><a href="#L-3096"><span class="linenos">3096</span></a> -</span><span id="L-3097"><a href="#L-3097"><span class="linenos">3097</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> -</span><span id="L-3098"><a href="#L-3098"><span class="linenos">3098</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-3099"><a href="#L-3099"><span class="linenos">3099</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="L-3100"><a href="#L-3100"><span class="linenos">3100</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-3101"><a href="#L-3101"><span class="linenos">3101</span></a> <span class="n">ifs</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">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</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">true</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> -</span><span id="L-3102"><a href="#L-3102"><span class="linenos">3102</span></a> -</span><span id="L-3103"><a href="#L-3103"><span class="linenos">3103</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">):</span> -</span><span id="L-3104"><a href="#L-3104"><span class="linenos">3104</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-3105"><a href="#L-3105"><span class="linenos">3105</span></a> -</span><span id="L-3106"><a href="#L-3106"><span class="linenos">3106</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">):</span> -</span><span id="L-3107"><a href="#L-3107"><span class="linenos">3107</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected END after CASE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-3108"><a href="#L-3108"><span class="linenos">3108</span></a> -</span><span id="L-3109"><a href="#L-3109"><span class="linenos">3109</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span> -</span><span id="L-3110"><a href="#L-3110"><span class="linenos">3110</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> -</span><span id="L-3111"><a href="#L-3111"><span class="linenos">3111</span></a> <span class="p">)</span> -</span><span id="L-3112"><a href="#L-3112"><span class="linenos">3112</span></a> -</span><span id="L-3113"><a href="#L-3113"><span class="linenos">3113</span></a> <span class="k">def</span> <span class="nf">_parse_if</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3114"><a href="#L-3114"><span class="linenos">3114</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-3115"><a href="#L-3115"><span class="linenos">3115</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-3116"><a href="#L-3116"><span class="linenos">3116</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</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-3117"><a href="#L-3117"><span class="linenos">3117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="L-3118"><a href="#L-3118"><span class="linenos">3118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3119"><a href="#L-3119"><span class="linenos">3119</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3120"><a href="#L-3120"><span class="linenos">3120</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-3121"><a href="#L-3121"><span class="linenos">3121</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="L-3122"><a href="#L-3122"><span class="linenos">3122</span></a> <span class="n">true</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-3123"><a href="#L-3123"><span class="linenos">3123</span></a> <span class="n">false</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="L-3124"><a href="#L-3124"><span class="linenos">3124</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> -</span><span id="L-3125"><a href="#L-3125"><span class="linenos">3125</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">true</span><span class="p">,</span> <span class="n">false</span><span class="o">=</span><span class="n">false</span><span class="p">)</span> +</span><span id="L-3097"><a href="#L-3097"><span class="linenos">3097</span></a> <span class="n">bracket_kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-3098"><a href="#L-3098"><span class="linenos">3098</span></a> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> +</span><span id="L-3099"><a href="#L-3099"><span class="linenos">3099</span></a> +</span><span id="L-3100"><a href="#L-3100"><span class="linenos">3100</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> +</span><span id="L-3101"><a href="#L-3101"><span class="linenos">3101</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())]</span> +</span><span id="L-3102"><a href="#L-3102"><span class="linenos">3102</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3103"><a href="#L-3103"><span class="linenos">3103</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()))</span> +</span><span id="L-3104"><a href="#L-3104"><span class="linenos">3104</span></a> +</span><span id="L-3105"><a href="#L-3105"><span class="linenos">3105</span></a> <span class="c1"># https://duckdb.org/docs/sql/data_types/struct.html#creating-structs</span> +</span><span id="L-3106"><a href="#L-3106"><span class="linenos">3106</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> +</span><span id="L-3107"><a href="#L-3107"><span class="linenos">3107</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-3108"><a href="#L-3108"><span class="linenos">3108</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">this</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="o">==</span> <span class="s2">"ARRAY"</span><span class="p">:</span> +</span><span id="L-3109"><a href="#L-3109"><span class="linenos">3109</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-3110"><a href="#L-3110"><span class="linenos">3110</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3111"><a href="#L-3111"><span class="linenos">3111</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> +</span><span id="L-3112"><a href="#L-3112"><span class="linenos">3112</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Bracket</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-3113"><a href="#L-3113"><span class="linenos">3113</span></a> +</span><span id="L-3114"><a href="#L-3114"><span class="linenos">3114</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">)</span> <span class="ow">and</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">:</span> +</span><span id="L-3115"><a href="#L-3115"><span class="linenos">3115</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected ]"</span><span class="p">)</span> +</span><span id="L-3116"><a href="#L-3116"><span class="linenos">3116</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> <span class="ow">and</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> +</span><span id="L-3117"><a href="#L-3117"><span class="linenos">3117</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected }"</span><span class="p">)</span> +</span><span id="L-3118"><a href="#L-3118"><span class="linenos">3118</span></a> +</span><span id="L-3119"><a href="#L-3119"><span class="linenos">3119</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-3120"><a href="#L-3120"><span class="linenos">3120</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-3121"><a href="#L-3121"><span class="linenos">3121</span></a> +</span><span id="L-3122"><a href="#L-3122"><span class="linenos">3122</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3123"><a href="#L-3123"><span class="linenos">3123</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> +</span><span id="L-3124"><a href="#L-3124"><span class="linenos">3124</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="L-3125"><a href="#L-3125"><span class="linenos">3125</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-3126"><a href="#L-3126"><span class="linenos">3126</span></a> -</span><span id="L-3127"><a href="#L-3127"><span class="linenos">3127</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-3128"><a href="#L-3128"><span class="linenos">3128</span></a> -</span><span id="L-3129"><a href="#L-3129"><span class="linenos">3129</span></a> <span class="k">def</span> <span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3130"><a href="#L-3130"><span class="linenos">3130</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="L-3131"><a href="#L-3131"><span class="linenos">3131</span></a> -</span><span id="L-3132"><a href="#L-3132"><span class="linenos">3132</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="L-3133"><a href="#L-3133"><span class="linenos">3133</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-3134"><a href="#L-3134"><span class="linenos">3134</span></a> -</span><span id="L-3135"><a href="#L-3135"><span class="linenos">3135</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-3136"><a href="#L-3136"><span class="linenos">3136</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected FROM or comma after EXTRACT"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-3137"><a href="#L-3137"><span class="linenos">3137</span></a> -</span><span id="L-3138"><a href="#L-3138"><span class="linenos">3138</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-3139"><a href="#L-3139"><span class="linenos">3139</span></a> -</span><span id="L-3140"><a href="#L-3140"><span class="linenos">3140</span></a> <span class="k">def</span> <span class="nf">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3141"><a href="#L-3141"><span class="linenos">3141</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-3142"><a href="#L-3142"><span class="linenos">3142</span></a> -</span><span id="L-3143"><a href="#L-3143"><span class="linenos">3143</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">):</span> -</span><span id="L-3144"><a href="#L-3144"><span class="linenos">3144</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected AS after CAST"</span><span class="p">)</span> -</span><span id="L-3145"><a href="#L-3145"><span class="linenos">3145</span></a> -</span><span id="L-3146"><a href="#L-3146"><span class="linenos">3146</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-3147"><a href="#L-3147"><span class="linenos">3147</span></a> -</span><span id="L-3148"><a href="#L-3148"><span class="linenos">3148</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> -</span><span id="L-3149"><a href="#L-3149"><span class="linenos">3149</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected TYPE after CAST"</span><span class="p">)</span> -</span><span id="L-3150"><a href="#L-3150"><span class="linenos">3150</span></a> <span class="k">elif</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">CHAR</span><span class="p">:</span> -</span><span id="L-3151"><a href="#L-3151"><span class="linenos">3151</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> -</span><span id="L-3152"><a href="#L-3152"><span class="linenos">3152</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">())</span> -</span><span id="L-3153"><a href="#L-3153"><span class="linenos">3153</span></a> -</span><span id="L-3154"><a href="#L-3154"><span class="linenos">3154</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</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">to</span><span class="o">=</span><span class="n">to</span><span class="p">)</span> -</span><span id="L-3155"><a href="#L-3155"><span class="linenos">3155</span></a> -</span><span id="L-3156"><a href="#L-3156"><span class="linenos">3156</span></a> <span class="k">def</span> <span class="nf">_parse_string_agg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3157"><a href="#L-3157"><span class="linenos">3157</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-3158"><a href="#L-3158"><span class="linenos">3158</span></a> -</span><span id="L-3159"><a href="#L-3159"><span class="linenos">3159</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="L-3160"><a href="#L-3160"><span class="linenos">3160</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-3161"><a href="#L-3161"><span class="linenos">3161</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distinct</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">0</span><span class="p">)])</span> -</span><span id="L-3162"><a href="#L-3162"><span class="linenos">3162</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3163"><a href="#L-3163"><span class="linenos">3163</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-3164"><a href="#L-3164"><span class="linenos">3164</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">0</span><span class="p">)</span> -</span><span id="L-3165"><a href="#L-3165"><span class="linenos">3165</span></a> -</span><span id="L-3166"><a href="#L-3166"><span class="linenos">3166</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-3167"><a href="#L-3167"><span class="linenos">3167</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="L-3168"><a href="#L-3168"><span class="linenos">3168</span></a> <span class="c1"># postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])</span> -</span><span id="L-3169"><a href="#L-3169"><span class="linenos">3169</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-3170"><a href="#L-3170"><span class="linenos">3170</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</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-3171"><a href="#L-3171"><span class="linenos">3171</span></a> -</span><span id="L-3172"><a href="#L-3172"><span class="linenos">3172</span></a> <span class="c1"># Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).</span> -</span><span id="L-3173"><a href="#L-3173"><span class="linenos">3173</span></a> <span class="c1"># This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that</span> -</span><span id="L-3174"><a href="#L-3174"><span class="linenos">3174</span></a> <span class="c1"># the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.</span> -</span><span id="L-3175"><a href="#L-3175"><span class="linenos">3175</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">):</span> -</span><span id="L-3176"><a href="#L-3176"><span class="linenos">3176</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-3177"><a href="#L-3177"><span class="linenos">3177</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</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-3178"><a href="#L-3178"><span class="linenos">3178</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="L-3179"><a href="#L-3179"><span class="linenos">3179</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3180"><a href="#L-3180"><span class="linenos">3180</span></a> -</span><span id="L-3181"><a href="#L-3181"><span class="linenos">3181</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> <span class="c1"># The corresponding match_r_paren will be called in parse_function (caller)</span> -</span><span id="L-3182"><a href="#L-3182"><span class="linenos">3182</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="L-3183"><a href="#L-3183"><span class="linenos">3183</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</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-3184"><a href="#L-3184"><span class="linenos">3184</span></a> -</span><span id="L-3185"><a href="#L-3185"><span class="linenos">3185</span></a> <span class="k">def</span> <span class="nf">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3186"><a href="#L-3186"><span class="linenos">3186</span></a> <span class="n">to</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="L-3187"><a href="#L-3187"><span class="linenos">3187</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="L-3188"><a href="#L-3188"><span class="linenos">3188</span></a> -</span><span id="L-3189"><a href="#L-3189"><span class="linenos">3189</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="L-3190"><a href="#L-3190"><span class="linenos">3190</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> -</span><span id="L-3191"><a href="#L-3191"><span class="linenos">3191</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-3192"><a href="#L-3192"><span class="linenos">3192</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="L-3193"><a href="#L-3193"><span class="linenos">3193</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3194"><a href="#L-3194"><span class="linenos">3194</span></a> <span class="n">to</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3195"><a href="#L-3195"><span class="linenos">3195</span></a> -</span><span id="L-3196"><a href="#L-3196"><span class="linenos">3196</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</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">to</span><span class="o">=</span><span class="n">to</span><span class="p">)</span> -</span><span id="L-3197"><a href="#L-3197"><span class="linenos">3197</span></a> -</span><span id="L-3198"><a href="#L-3198"><span class="linenos">3198</span></a> <span class="k">def</span> <span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3199"><a href="#L-3199"><span class="linenos">3199</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-3200"><a href="#L-3200"><span class="linenos">3200</span></a> -</span><span id="L-3201"><a href="#L-3201"><span class="linenos">3201</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="L-3202"><a href="#L-3202"><span class="linenos">3202</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3203"><a href="#L-3203"><span class="linenos">3203</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</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">0</span><span class="p">)</span> -</span><span id="L-3204"><a href="#L-3204"><span class="linenos">3204</span></a> <span class="p">)</span> -</span><span id="L-3205"><a href="#L-3205"><span class="linenos">3205</span></a> -</span><span id="L-3206"><a href="#L-3206"><span class="linenos">3206</span></a> <span class="k">if</span> <span class="n">haystack_first</span><span class="p">:</span> -</span><span id="L-3207"><a href="#L-3207"><span class="linenos">3207</span></a> <span class="n">haystack</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-3208"><a href="#L-3208"><span class="linenos">3208</span></a> <span class="n">needle</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-3209"><a href="#L-3209"><span class="linenos">3209</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3210"><a href="#L-3210"><span class="linenos">3210</span></a> <span class="n">needle</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-3211"><a href="#L-3211"><span class="linenos">3211</span></a> <span class="n">haystack</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-3212"><a href="#L-3212"><span class="linenos">3212</span></a> -</span><span id="L-3213"><a href="#L-3213"><span class="linenos">3213</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">haystack</span><span class="p">,</span> <span class="n">substr</span><span class="o">=</span><span class="n">needle</span><span class="p">,</span> <span class="n">position</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-3214"><a href="#L-3214"><span class="linenos">3214</span></a> -</span><span id="L-3215"><a href="#L-3215"><span class="linenos">3215</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-3127"><a href="#L-3127"><span class="linenos">3127</span></a> <span class="k">def</span> <span class="nf">_parse_case</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3128"><a href="#L-3128"><span class="linenos">3128</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3129"><a href="#L-3129"><span class="linenos">3129</span></a> <span class="n">default</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3130"><a href="#L-3130"><span class="linenos">3130</span></a> +</span><span id="L-3131"><a href="#L-3131"><span class="linenos">3131</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3132"><a href="#L-3132"><span class="linenos">3132</span></a> +</span><span id="L-3133"><a href="#L-3133"><span class="linenos">3133</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> +</span><span id="L-3134"><a href="#L-3134"><span class="linenos">3134</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3135"><a href="#L-3135"><span class="linenos">3135</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="L-3136"><a href="#L-3136"><span class="linenos">3136</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3137"><a href="#L-3137"><span class="linenos">3137</span></a> <span class="n">ifs</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">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</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">true</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> +</span><span id="L-3138"><a href="#L-3138"><span class="linenos">3138</span></a> +</span><span id="L-3139"><a href="#L-3139"><span class="linenos">3139</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">):</span> +</span><span id="L-3140"><a href="#L-3140"><span class="linenos">3140</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3141"><a href="#L-3141"><span class="linenos">3141</span></a> +</span><span id="L-3142"><a href="#L-3142"><span class="linenos">3142</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">):</span> +</span><span id="L-3143"><a href="#L-3143"><span class="linenos">3143</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected END after CASE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-3144"><a href="#L-3144"><span class="linenos">3144</span></a> +</span><span id="L-3145"><a href="#L-3145"><span class="linenos">3145</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span> +</span><span id="L-3146"><a href="#L-3146"><span class="linenos">3146</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> +</span><span id="L-3147"><a href="#L-3147"><span class="linenos">3147</span></a> <span class="p">)</span> +</span><span id="L-3148"><a href="#L-3148"><span class="linenos">3148</span></a> +</span><span id="L-3149"><a href="#L-3149"><span class="linenos">3149</span></a> <span class="k">def</span> <span class="nf">_parse_if</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3150"><a href="#L-3150"><span class="linenos">3150</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-3151"><a href="#L-3151"><span class="linenos">3151</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-3152"><a href="#L-3152"><span class="linenos">3152</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</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-3153"><a href="#L-3153"><span class="linenos">3153</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-3154"><a href="#L-3154"><span class="linenos">3154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3155"><a href="#L-3155"><span class="linenos">3155</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3156"><a href="#L-3156"><span class="linenos">3156</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3157"><a href="#L-3157"><span class="linenos">3157</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="L-3158"><a href="#L-3158"><span class="linenos">3158</span></a> <span class="n">true</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3159"><a href="#L-3159"><span class="linenos">3159</span></a> <span class="n">false</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="L-3160"><a href="#L-3160"><span class="linenos">3160</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> +</span><span id="L-3161"><a href="#L-3161"><span class="linenos">3161</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">true</span><span class="p">,</span> <span class="n">false</span><span class="o">=</span><span class="n">false</span><span class="p">)</span> +</span><span id="L-3162"><a href="#L-3162"><span class="linenos">3162</span></a> +</span><span id="L-3163"><a href="#L-3163"><span class="linenos">3163</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-3164"><a href="#L-3164"><span class="linenos">3164</span></a> +</span><span id="L-3165"><a href="#L-3165"><span class="linenos">3165</span></a> <span class="k">def</span> <span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3166"><a href="#L-3166"><span class="linenos">3166</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="L-3167"><a href="#L-3167"><span class="linenos">3167</span></a> +</span><span id="L-3168"><a href="#L-3168"><span class="linenos">3168</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="L-3169"><a href="#L-3169"><span class="linenos">3169</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-3170"><a href="#L-3170"><span class="linenos">3170</span></a> +</span><span id="L-3171"><a href="#L-3171"><span class="linenos">3171</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-3172"><a href="#L-3172"><span class="linenos">3172</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected FROM or comma after EXTRACT"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-3173"><a href="#L-3173"><span class="linenos">3173</span></a> +</span><span id="L-3174"><a href="#L-3174"><span class="linenos">3174</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-3175"><a href="#L-3175"><span class="linenos">3175</span></a> +</span><span id="L-3176"><a href="#L-3176"><span class="linenos">3176</span></a> <span class="k">def</span> <span class="nf">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3177"><a href="#L-3177"><span class="linenos">3177</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3178"><a href="#L-3178"><span class="linenos">3178</span></a> +</span><span id="L-3179"><a href="#L-3179"><span class="linenos">3179</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">):</span> +</span><span id="L-3180"><a href="#L-3180"><span class="linenos">3180</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected AS after CAST"</span><span class="p">)</span> +</span><span id="L-3181"><a href="#L-3181"><span class="linenos">3181</span></a> +</span><span id="L-3182"><a href="#L-3182"><span class="linenos">3182</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-3183"><a href="#L-3183"><span class="linenos">3183</span></a> +</span><span id="L-3184"><a href="#L-3184"><span class="linenos">3184</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> +</span><span id="L-3185"><a href="#L-3185"><span class="linenos">3185</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected TYPE after CAST"</span><span class="p">)</span> +</span><span id="L-3186"><a href="#L-3186"><span class="linenos">3186</span></a> <span class="k">elif</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">CHAR</span><span class="p">:</span> +</span><span id="L-3187"><a href="#L-3187"><span class="linenos">3187</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> +</span><span id="L-3188"><a href="#L-3188"><span class="linenos">3188</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">())</span> +</span><span id="L-3189"><a href="#L-3189"><span class="linenos">3189</span></a> +</span><span id="L-3190"><a href="#L-3190"><span class="linenos">3190</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</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">to</span><span class="o">=</span><span class="n">to</span><span class="p">)</span> +</span><span id="L-3191"><a href="#L-3191"><span class="linenos">3191</span></a> +</span><span id="L-3192"><a href="#L-3192"><span class="linenos">3192</span></a> <span class="k">def</span> <span class="nf">_parse_string_agg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3193"><a href="#L-3193"><span class="linenos">3193</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-3194"><a href="#L-3194"><span class="linenos">3194</span></a> +</span><span id="L-3195"><a href="#L-3195"><span class="linenos">3195</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="L-3196"><a href="#L-3196"><span class="linenos">3196</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-3197"><a href="#L-3197"><span class="linenos">3197</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distinct</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">0</span><span class="p">)])</span> +</span><span id="L-3198"><a href="#L-3198"><span class="linenos">3198</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3199"><a href="#L-3199"><span class="linenos">3199</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-3200"><a href="#L-3200"><span class="linenos">3200</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">0</span><span class="p">)</span> +</span><span id="L-3201"><a href="#L-3201"><span class="linenos">3201</span></a> +</span><span id="L-3202"><a href="#L-3202"><span class="linenos">3202</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-3203"><a href="#L-3203"><span class="linenos">3203</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="L-3204"><a href="#L-3204"><span class="linenos">3204</span></a> <span class="c1"># postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])</span> +</span><span id="L-3205"><a href="#L-3205"><span class="linenos">3205</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-3206"><a href="#L-3206"><span class="linenos">3206</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</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-3207"><a href="#L-3207"><span class="linenos">3207</span></a> +</span><span id="L-3208"><a href="#L-3208"><span class="linenos">3208</span></a> <span class="c1"># Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).</span> +</span><span id="L-3209"><a href="#L-3209"><span class="linenos">3209</span></a> <span class="c1"># This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that</span> +</span><span id="L-3210"><a href="#L-3210"><span class="linenos">3210</span></a> <span class="c1"># the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.</span> +</span><span id="L-3211"><a href="#L-3211"><span class="linenos">3211</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">):</span> +</span><span id="L-3212"><a href="#L-3212"><span class="linenos">3212</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3213"><a href="#L-3213"><span class="linenos">3213</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</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-3214"><a href="#L-3214"><span class="linenos">3214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-3215"><a href="#L-3215"><span class="linenos">3215</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-3216"><a href="#L-3216"><span class="linenos">3216</span></a> -</span><span id="L-3217"><a href="#L-3217"><span class="linenos">3217</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3218"><a href="#L-3218"><span class="linenos">3218</span></a> -</span><span id="L-3219"><a href="#L-3219"><span class="linenos">3219</span></a> <span class="k">def</span> <span class="nf">_parse_join_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3220"><a href="#L-3220"><span class="linenos">3220</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> -</span><span id="L-3221"><a href="#L-3221"><span class="linenos">3221</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">func_name</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="L-3222"><a href="#L-3222"><span class="linenos">3222</span></a> -</span><span id="L-3223"><a href="#L-3223"><span class="linenos">3223</span></a> <span class="k">def</span> <span class="nf">_parse_substring</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3224"><a href="#L-3224"><span class="linenos">3224</span></a> <span class="c1"># Postgres supports the form: substring(string [from int] [for int])</span> -</span><span id="L-3225"><a href="#L-3225"><span class="linenos">3225</span></a> <span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> -</span><span id="L-3226"><a href="#L-3226"><span class="linenos">3226</span></a> -</span><span id="L-3227"><a href="#L-3227"><span class="linenos">3227</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="L-3228"><a href="#L-3228"><span class="linenos">3228</span></a> -</span><span id="L-3229"><a href="#L-3229"><span class="linenos">3229</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="L-3230"><a href="#L-3230"><span class="linenos">3230</span></a> <span class="n">args</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">_parse_bitwise</span><span class="p">())</span> -</span><span id="L-3231"><a href="#L-3231"><span class="linenos">3231</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="L-3232"><a href="#L-3232"><span class="linenos">3232</span></a> <span class="n">args</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">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-3217"><a href="#L-3217"><span class="linenos">3217</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> <span class="c1"># The corresponding match_r_paren will be called in parse_function (caller)</span> +</span><span id="L-3218"><a href="#L-3218"><span class="linenos">3218</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-3219"><a href="#L-3219"><span class="linenos">3219</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</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-3220"><a href="#L-3220"><span class="linenos">3220</span></a> +</span><span id="L-3221"><a href="#L-3221"><span class="linenos">3221</span></a> <span class="k">def</span> <span class="nf">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3222"><a href="#L-3222"><span class="linenos">3222</span></a> <span class="n">to</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="L-3223"><a href="#L-3223"><span class="linenos">3223</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="L-3224"><a href="#L-3224"><span class="linenos">3224</span></a> +</span><span id="L-3225"><a href="#L-3225"><span class="linenos">3225</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="L-3226"><a href="#L-3226"><span class="linenos">3226</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> +</span><span id="L-3227"><a href="#L-3227"><span class="linenos">3227</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-3228"><a href="#L-3228"><span class="linenos">3228</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="L-3229"><a href="#L-3229"><span class="linenos">3229</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3230"><a href="#L-3230"><span class="linenos">3230</span></a> <span class="n">to</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3231"><a href="#L-3231"><span class="linenos">3231</span></a> +</span><span id="L-3232"><a href="#L-3232"><span class="linenos">3232</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</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">to</span><span class="o">=</span><span class="n">to</span><span class="p">)</span> </span><span id="L-3233"><a href="#L-3233"><span class="linenos">3233</span></a> -</span><span id="L-3234"><a href="#L-3234"><span class="linenos">3234</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</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-3235"><a href="#L-3235"><span class="linenos">3235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-3234"><a href="#L-3234"><span class="linenos">3234</span></a> <span class="k">def</span> <span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3235"><a href="#L-3235"><span class="linenos">3235</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> </span><span id="L-3236"><a href="#L-3236"><span class="linenos">3236</span></a> -</span><span id="L-3237"><a href="#L-3237"><span class="linenos">3237</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3238"><a href="#L-3238"><span class="linenos">3238</span></a> -</span><span id="L-3239"><a href="#L-3239"><span class="linenos">3239</span></a> <span class="k">def</span> <span class="nf">_parse_trim</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3240"><a href="#L-3240"><span class="linenos">3240</span></a> <span class="c1"># https://www.w3resource.com/sql/character-functions/trim.php</span> -</span><span id="L-3241"><a href="#L-3241"><span class="linenos">3241</span></a> <span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html</span> -</span><span id="L-3242"><a href="#L-3242"><span class="linenos">3242</span></a> -</span><span id="L-3243"><a href="#L-3243"><span class="linenos">3243</span></a> <span class="n">position</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3244"><a href="#L-3244"><span class="linenos">3244</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3245"><a href="#L-3245"><span class="linenos">3245</span></a> -</span><span id="L-3246"><a href="#L-3246"><span class="linenos">3246</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRIM_TYPES</span><span class="p">):</span> -</span><span id="L-3247"><a href="#L-3247"><span class="linenos">3247</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-3237"><a href="#L-3237"><span class="linenos">3237</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="L-3238"><a href="#L-3238"><span class="linenos">3238</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3239"><a href="#L-3239"><span class="linenos">3239</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</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">0</span><span class="p">)</span> +</span><span id="L-3240"><a href="#L-3240"><span class="linenos">3240</span></a> <span class="p">)</span> +</span><span id="L-3241"><a href="#L-3241"><span class="linenos">3241</span></a> +</span><span id="L-3242"><a href="#L-3242"><span class="linenos">3242</span></a> <span class="k">if</span> <span class="n">haystack_first</span><span class="p">:</span> +</span><span id="L-3243"><a href="#L-3243"><span class="linenos">3243</span></a> <span class="n">haystack</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-3244"><a href="#L-3244"><span class="linenos">3244</span></a> <span class="n">needle</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-3245"><a href="#L-3245"><span class="linenos">3245</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3246"><a href="#L-3246"><span class="linenos">3246</span></a> <span class="n">needle</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-3247"><a href="#L-3247"><span class="linenos">3247</span></a> <span class="n">haystack</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-3248"><a href="#L-3248"><span class="linenos">3248</span></a> -</span><span id="L-3249"><a href="#L-3249"><span class="linenos">3249</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-3250"><a href="#L-3250"><span class="linenos">3250</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> -</span><span id="L-3251"><a href="#L-3251"><span class="linenos">3251</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="L-3252"><a href="#L-3252"><span class="linenos">3252</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3253"><a href="#L-3253"><span class="linenos">3253</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="L-3254"><a href="#L-3254"><span class="linenos">3254</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3255"><a href="#L-3255"><span class="linenos">3255</span></a> -</span><span id="L-3256"><a href="#L-3256"><span class="linenos">3256</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">):</span> -</span><span id="L-3257"><a href="#L-3257"><span class="linenos">3257</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-3249"><a href="#L-3249"><span class="linenos">3249</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">haystack</span><span class="p">,</span> <span class="n">substr</span><span class="o">=</span><span class="n">needle</span><span class="p">,</span> <span class="n">position</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-3250"><a href="#L-3250"><span class="linenos">3250</span></a> +</span><span id="L-3251"><a href="#L-3251"><span class="linenos">3251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="L-3252"><a href="#L-3252"><span class="linenos">3252</span></a> +</span><span id="L-3253"><a href="#L-3253"><span class="linenos">3253</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3254"><a href="#L-3254"><span class="linenos">3254</span></a> +</span><span id="L-3255"><a href="#L-3255"><span class="linenos">3255</span></a> <span class="k">def</span> <span class="nf">_parse_join_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3256"><a href="#L-3256"><span class="linenos">3256</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> +</span><span id="L-3257"><a href="#L-3257"><span class="linenos">3257</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">func_name</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> </span><span id="L-3258"><a href="#L-3258"><span class="linenos">3258</span></a> -</span><span id="L-3259"><a href="#L-3259"><span class="linenos">3259</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3260"><a href="#L-3260"><span class="linenos">3260</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">,</span> -</span><span id="L-3261"><a href="#L-3261"><span class="linenos">3261</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3262"><a href="#L-3262"><span class="linenos">3262</span></a> <span class="n">position</span><span class="o">=</span><span class="n">position</span><span class="p">,</span> -</span><span id="L-3263"><a href="#L-3263"><span class="linenos">3263</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="L-3264"><a href="#L-3264"><span class="linenos">3264</span></a> <span class="n">collation</span><span class="o">=</span><span class="n">collation</span><span class="p">,</span> -</span><span id="L-3265"><a href="#L-3265"><span class="linenos">3265</span></a> <span class="p">)</span> -</span><span id="L-3266"><a href="#L-3266"><span class="linenos">3266</span></a> -</span><span id="L-3267"><a href="#L-3267"><span class="linenos">3267</span></a> <span class="k">def</span> <span class="nf">_parse_window_clause</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="L-3268"><a href="#L-3268"><span class="linenos">3268</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">)</span> +</span><span id="L-3259"><a href="#L-3259"><span class="linenos">3259</span></a> <span class="k">def</span> <span class="nf">_parse_substring</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3260"><a href="#L-3260"><span class="linenos">3260</span></a> <span class="c1"># Postgres supports the form: substring(string [from int] [for int])</span> +</span><span id="L-3261"><a href="#L-3261"><span class="linenos">3261</span></a> <span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> +</span><span id="L-3262"><a href="#L-3262"><span class="linenos">3262</span></a> +</span><span id="L-3263"><a href="#L-3263"><span class="linenos">3263</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="L-3264"><a href="#L-3264"><span class="linenos">3264</span></a> +</span><span id="L-3265"><a href="#L-3265"><span class="linenos">3265</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="L-3266"><a href="#L-3266"><span class="linenos">3266</span></a> <span class="n">args</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">_parse_bitwise</span><span class="p">())</span> +</span><span id="L-3267"><a href="#L-3267"><span class="linenos">3267</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="L-3268"><a href="#L-3268"><span class="linenos">3268</span></a> <span class="n">args</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">_parse_bitwise</span><span class="p">())</span> </span><span id="L-3269"><a href="#L-3269"><span class="linenos">3269</span></a> -</span><span id="L-3270"><a href="#L-3270"><span class="linenos">3270</span></a> <span class="k">def</span> <span class="nf">_parse_named_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3271"><a href="#L-3271"><span class="linenos">3271</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> <span class="n">alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3270"><a href="#L-3270"><span class="linenos">3270</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</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-3271"><a href="#L-3271"><span class="linenos">3271</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> </span><span id="L-3272"><a href="#L-3272"><span class="linenos">3272</span></a> -</span><span id="L-3273"><a href="#L-3273"><span class="linenos">3273</span></a> <span class="k">def</span> <span class="nf">_parse_window</span><span class="p">(</span> -</span><span id="L-3274"><a href="#L-3274"><span class="linenos">3274</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3275"><a href="#L-3275"><span class="linenos">3275</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3276"><a href="#L-3276"><span class="linenos">3276</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">):</span> -</span><span id="L-3277"><a href="#L-3277"><span class="linenos">3277</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">)</span> -</span><span id="L-3278"><a href="#L-3278"><span class="linenos">3278</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Filter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> -</span><span id="L-3279"><a href="#L-3279"><span class="linenos">3279</span></a> -</span><span id="L-3280"><a href="#L-3280"><span class="linenos">3280</span></a> <span class="c1"># T-SQL allows the OVER (...) syntax after WITHIN GROUP.</span> -</span><span id="L-3281"><a href="#L-3281"><span class="linenos">3281</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16</span> -</span><span id="L-3282"><a href="#L-3282"><span class="linenos">3282</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">):</span> -</span><span id="L-3283"><a href="#L-3283"><span class="linenos">3283</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">)</span> -</span><span id="L-3284"><a href="#L-3284"><span class="linenos">3284</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">order</span><span class="p">)</span> -</span><span id="L-3285"><a href="#L-3285"><span class="linenos">3285</span></a> -</span><span id="L-3286"><a href="#L-3286"><span class="linenos">3286</span></a> <span class="c1"># SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER</span> -</span><span id="L-3287"><a href="#L-3287"><span class="linenos">3287</span></a> <span class="c1"># Some dialects choose to implement and some do not.</span> -</span><span id="L-3288"><a href="#L-3288"><span class="linenos">3288</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html</span> -</span><span id="L-3289"><a href="#L-3289"><span class="linenos">3289</span></a> -</span><span id="L-3290"><a href="#L-3290"><span class="linenos">3290</span></a> <span class="c1"># There is some code above in _parse_lambda that handles</span> -</span><span id="L-3291"><a href="#L-3291"><span class="linenos">3291</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...</span> -</span><span id="L-3292"><a href="#L-3292"><span class="linenos">3292</span></a> -</span><span id="L-3293"><a href="#L-3293"><span class="linenos">3293</span></a> <span class="c1"># The below changes handle</span> -</span><span id="L-3294"><a href="#L-3294"><span class="linenos">3294</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...</span> -</span><span id="L-3295"><a href="#L-3295"><span class="linenos">3295</span></a> -</span><span id="L-3296"><a href="#L-3296"><span class="linenos">3296</span></a> <span class="c1"># Oracle allows both formats</span> -</span><span id="L-3297"><a href="#L-3297"><span class="linenos">3297</span></a> <span class="c1"># (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)</span> -</span><span id="L-3298"><a href="#L-3298"><span class="linenos">3298</span></a> <span class="c1"># and Snowflake chose to do the same for familiarity</span> -</span><span id="L-3299"><a href="#L-3299"><span class="linenos">3299</span></a> <span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes</span> -</span><span id="L-3300"><a href="#L-3300"><span class="linenos">3300</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">):</span> -</span><span id="L-3301"><a href="#L-3301"><span class="linenos">3301</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-3302"><a href="#L-3302"><span class="linenos">3302</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">):</span> -</span><span id="L-3303"><a href="#L-3303"><span class="linenos">3303</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="L-3304"><a href="#L-3304"><span class="linenos">3304</span></a> -</span><span id="L-3305"><a href="#L-3305"><span class="linenos">3305</span></a> <span class="c1"># bigquery select from window x AS (partition by ...)</span> -</span><span id="L-3306"><a href="#L-3306"><span class="linenos">3306</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-3307"><a href="#L-3307"><span class="linenos">3307</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-3308"><a href="#L-3308"><span class="linenos">3308</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">):</span> -</span><span id="L-3309"><a href="#L-3309"><span class="linenos">3309</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3310"><a href="#L-3310"><span class="linenos">3310</span></a> -</span><span id="L-3311"><a href="#L-3311"><span class="linenos">3311</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-3312"><a href="#L-3312"><span class="linenos">3312</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Window</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">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="kc">False</span><span class="p">))</span> -</span><span id="L-3313"><a href="#L-3313"><span class="linenos">3313</span></a> -</span><span id="L-3314"><a href="#L-3314"><span class="linenos">3314</span></a> <span class="n">window_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="L-3315"><a href="#L-3315"><span class="linenos">3315</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> -</span><span id="L-3316"><a href="#L-3316"><span class="linenos">3316</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> -</span><span id="L-3317"><a href="#L-3317"><span class="linenos">3317</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-3318"><a href="#L-3318"><span class="linenos">3318</span></a> -</span><span id="L-3319"><a href="#L-3319"><span class="linenos">3319</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="L-3320"><a href="#L-3320"><span class="linenos">3320</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> -</span><span id="L-3321"><a href="#L-3321"><span class="linenos">3321</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> -</span><span id="L-3322"><a href="#L-3322"><span class="linenos">3322</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> -</span><span id="L-3323"><a href="#L-3323"><span class="linenos">3323</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> -</span><span id="L-3324"><a href="#L-3324"><span class="linenos">3324</span></a> -</span><span id="L-3325"><a href="#L-3325"><span class="linenos">3325</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3326"><a href="#L-3326"><span class="linenos">3326</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WindowSpec</span><span class="p">,</span> -</span><span id="L-3327"><a href="#L-3327"><span class="linenos">3327</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="L-3328"><a href="#L-3328"><span class="linenos">3328</span></a> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> -</span><span id="L-3329"><a href="#L-3329"><span class="linenos">3329</span></a> <span class="n">start_side</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> -</span><span id="L-3330"><a href="#L-3330"><span class="linenos">3330</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> -</span><span id="L-3331"><a href="#L-3331"><span class="linenos">3331</span></a> <span class="n">end_side</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> -</span><span id="L-3332"><a href="#L-3332"><span class="linenos">3332</span></a> <span class="p">)</span> -</span><span id="L-3333"><a href="#L-3333"><span class="linenos">3333</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3334"><a href="#L-3334"><span class="linenos">3334</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3335"><a href="#L-3335"><span class="linenos">3335</span></a> -</span><span id="L-3336"><a href="#L-3336"><span class="linenos">3336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3337"><a href="#L-3337"><span class="linenos">3337</span></a> -</span><span id="L-3338"><a href="#L-3338"><span class="linenos">3338</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3339"><a href="#L-3339"><span class="linenos">3339</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> -</span><span id="L-3340"><a href="#L-3340"><span class="linenos">3340</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3341"><a href="#L-3341"><span class="linenos">3341</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="L-3342"><a href="#L-3342"><span class="linenos">3342</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> -</span><span id="L-3343"><a href="#L-3343"><span class="linenos">3343</span></a> <span class="n">spec</span><span class="o">=</span><span class="n">spec</span><span class="p">,</span> -</span><span id="L-3344"><a href="#L-3344"><span class="linenos">3344</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">window_alias</span><span class="p">,</span> -</span><span id="L-3345"><a href="#L-3345"><span class="linenos">3345</span></a> <span class="p">)</span> +</span><span id="L-3273"><a href="#L-3273"><span class="linenos">3273</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3274"><a href="#L-3274"><span class="linenos">3274</span></a> +</span><span id="L-3275"><a href="#L-3275"><span class="linenos">3275</span></a> <span class="k">def</span> <span class="nf">_parse_trim</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3276"><a href="#L-3276"><span class="linenos">3276</span></a> <span class="c1"># https://www.w3resource.com/sql/character-functions/trim.php</span> +</span><span id="L-3277"><a href="#L-3277"><span class="linenos">3277</span></a> <span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html</span> +</span><span id="L-3278"><a href="#L-3278"><span class="linenos">3278</span></a> +</span><span id="L-3279"><a href="#L-3279"><span class="linenos">3279</span></a> <span class="n">position</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3280"><a href="#L-3280"><span class="linenos">3280</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3281"><a href="#L-3281"><span class="linenos">3281</span></a> +</span><span id="L-3282"><a href="#L-3282"><span class="linenos">3282</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRIM_TYPES</span><span class="p">):</span> +</span><span id="L-3283"><a href="#L-3283"><span class="linenos">3283</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-3284"><a href="#L-3284"><span class="linenos">3284</span></a> +</span><span id="L-3285"><a href="#L-3285"><span class="linenos">3285</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-3286"><a href="#L-3286"><span class="linenos">3286</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> +</span><span id="L-3287"><a href="#L-3287"><span class="linenos">3287</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-3288"><a href="#L-3288"><span class="linenos">3288</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3289"><a href="#L-3289"><span class="linenos">3289</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="L-3290"><a href="#L-3290"><span class="linenos">3290</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3291"><a href="#L-3291"><span class="linenos">3291</span></a> +</span><span id="L-3292"><a href="#L-3292"><span class="linenos">3292</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">):</span> +</span><span id="L-3293"><a href="#L-3293"><span class="linenos">3293</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="L-3294"><a href="#L-3294"><span class="linenos">3294</span></a> +</span><span id="L-3295"><a href="#L-3295"><span class="linenos">3295</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3296"><a href="#L-3296"><span class="linenos">3296</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">,</span> +</span><span id="L-3297"><a href="#L-3297"><span class="linenos">3297</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3298"><a href="#L-3298"><span class="linenos">3298</span></a> <span class="n">position</span><span class="o">=</span><span class="n">position</span><span class="p">,</span> +</span><span id="L-3299"><a href="#L-3299"><span class="linenos">3299</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="L-3300"><a href="#L-3300"><span class="linenos">3300</span></a> <span class="n">collation</span><span class="o">=</span><span class="n">collation</span><span class="p">,</span> +</span><span id="L-3301"><a href="#L-3301"><span class="linenos">3301</span></a> <span class="p">)</span> +</span><span id="L-3302"><a href="#L-3302"><span class="linenos">3302</span></a> +</span><span id="L-3303"><a href="#L-3303"><span class="linenos">3303</span></a> <span class="k">def</span> <span class="nf">_parse_window_clause</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="L-3304"><a href="#L-3304"><span class="linenos">3304</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">)</span> +</span><span id="L-3305"><a href="#L-3305"><span class="linenos">3305</span></a> +</span><span id="L-3306"><a href="#L-3306"><span class="linenos">3306</span></a> <span class="k">def</span> <span class="nf">_parse_named_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3307"><a href="#L-3307"><span class="linenos">3307</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> <span class="n">alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3308"><a href="#L-3308"><span class="linenos">3308</span></a> +</span><span id="L-3309"><a href="#L-3309"><span class="linenos">3309</span></a> <span class="k">def</span> <span class="nf">_parse_window</span><span class="p">(</span> +</span><span id="L-3310"><a href="#L-3310"><span class="linenos">3310</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3311"><a href="#L-3311"><span class="linenos">3311</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3312"><a href="#L-3312"><span class="linenos">3312</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">):</span> +</span><span id="L-3313"><a href="#L-3313"><span class="linenos">3313</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">)</span> +</span><span id="L-3314"><a href="#L-3314"><span class="linenos">3314</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Filter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> +</span><span id="L-3315"><a href="#L-3315"><span class="linenos">3315</span></a> +</span><span id="L-3316"><a href="#L-3316"><span class="linenos">3316</span></a> <span class="c1"># T-SQL allows the OVER (...) syntax after WITHIN GROUP.</span> +</span><span id="L-3317"><a href="#L-3317"><span class="linenos">3317</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16</span> +</span><span id="L-3318"><a href="#L-3318"><span class="linenos">3318</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">):</span> +</span><span id="L-3319"><a href="#L-3319"><span class="linenos">3319</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">)</span> +</span><span id="L-3320"><a href="#L-3320"><span class="linenos">3320</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">order</span><span class="p">)</span> +</span><span id="L-3321"><a href="#L-3321"><span class="linenos">3321</span></a> +</span><span id="L-3322"><a href="#L-3322"><span class="linenos">3322</span></a> <span class="c1"># SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER</span> +</span><span id="L-3323"><a href="#L-3323"><span class="linenos">3323</span></a> <span class="c1"># Some dialects choose to implement and some do not.</span> +</span><span id="L-3324"><a href="#L-3324"><span class="linenos">3324</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html</span> +</span><span id="L-3325"><a href="#L-3325"><span class="linenos">3325</span></a> +</span><span id="L-3326"><a href="#L-3326"><span class="linenos">3326</span></a> <span class="c1"># There is some code above in _parse_lambda that handles</span> +</span><span id="L-3327"><a href="#L-3327"><span class="linenos">3327</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...</span> +</span><span id="L-3328"><a href="#L-3328"><span class="linenos">3328</span></a> +</span><span id="L-3329"><a href="#L-3329"><span class="linenos">3329</span></a> <span class="c1"># The below changes handle</span> +</span><span id="L-3330"><a href="#L-3330"><span class="linenos">3330</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...</span> +</span><span id="L-3331"><a href="#L-3331"><span class="linenos">3331</span></a> +</span><span id="L-3332"><a href="#L-3332"><span class="linenos">3332</span></a> <span class="c1"># Oracle allows both formats</span> +</span><span id="L-3333"><a href="#L-3333"><span class="linenos">3333</span></a> <span class="c1"># (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)</span> +</span><span id="L-3334"><a href="#L-3334"><span class="linenos">3334</span></a> <span class="c1"># and Snowflake chose to do the same for familiarity</span> +</span><span id="L-3335"><a href="#L-3335"><span class="linenos">3335</span></a> <span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes</span> +</span><span id="L-3336"><a href="#L-3336"><span class="linenos">3336</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">):</span> +</span><span id="L-3337"><a href="#L-3337"><span class="linenos">3337</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-3338"><a href="#L-3338"><span class="linenos">3338</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">):</span> +</span><span id="L-3339"><a href="#L-3339"><span class="linenos">3339</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="L-3340"><a href="#L-3340"><span class="linenos">3340</span></a> +</span><span id="L-3341"><a href="#L-3341"><span class="linenos">3341</span></a> <span class="c1"># bigquery select from window x AS (partition by ...)</span> +</span><span id="L-3342"><a href="#L-3342"><span class="linenos">3342</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-3343"><a href="#L-3343"><span class="linenos">3343</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="L-3344"><a href="#L-3344"><span class="linenos">3344</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">):</span> +</span><span id="L-3345"><a href="#L-3345"><span class="linenos">3345</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="L-3346"><a href="#L-3346"><span class="linenos">3346</span></a> -</span><span id="L-3347"><a href="#L-3347"><span class="linenos">3347</span></a> <span class="k">def</span> <span class="nf">_parse_window_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-3348"><a href="#L-3348"><span class="linenos">3348</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> +</span><span id="L-3347"><a href="#L-3347"><span class="linenos">3347</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-3348"><a href="#L-3348"><span class="linenos">3348</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Window</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">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="kc">False</span><span class="p">))</span> </span><span id="L-3349"><a href="#L-3349"><span class="linenos">3349</span></a> -</span><span id="L-3350"><a href="#L-3350"><span class="linenos">3350</span></a> <span class="k">return</span> <span class="p">{</span> -</span><span id="L-3351"><a href="#L-3351"><span class="linenos">3351</span></a> <span class="s2">"value"</span><span class="p">:</span> <span class="p">(</span> -</span><span id="L-3352"><a href="#L-3352"><span class="linenos">3352</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_ROW</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-3353"><a href="#L-3353"><span class="linenos">3353</span></a> <span class="p">)</span> -</span><span id="L-3354"><a href="#L-3354"><span class="linenos">3354</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="L-3355"><a href="#L-3355"><span class="linenos">3355</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="L-3356"><a href="#L-3356"><span class="linenos">3356</span></a> <span class="p">}</span> -</span><span id="L-3357"><a href="#L-3357"><span class="linenos">3357</span></a> -</span><span id="L-3358"><a href="#L-3358"><span class="linenos">3358</span></a> <span class="k">def</span> <span class="nf">_parse_alias</span><span class="p">(</span> -</span><span id="L-3359"><a href="#L-3359"><span class="linenos">3359</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-3360"><a href="#L-3360"><span class="linenos">3360</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3361"><a href="#L-3361"><span class="linenos">3361</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="L-3362"><a href="#L-3362"><span class="linenos">3362</span></a> -</span><span id="L-3363"><a href="#L-3363"><span class="linenos">3363</span></a> <span class="k">if</span> <span class="n">explicit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">any_token</span><span class="p">:</span> -</span><span id="L-3364"><a href="#L-3364"><span class="linenos">3364</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3365"><a href="#L-3365"><span class="linenos">3365</span></a> -</span><span id="L-3366"><a href="#L-3366"><span class="linenos">3366</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-3367"><a href="#L-3367"><span class="linenos">3367</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3368"><a href="#L-3368"><span class="linenos">3368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Aliases</span><span class="p">,</span> -</span><span id="L-3369"><a href="#L-3369"><span class="linenos">3369</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3370"><a href="#L-3370"><span class="linenos">3370</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)),</span> -</span><span id="L-3371"><a href="#L-3371"><span class="linenos">3371</span></a> <span class="p">)</span> -</span><span id="L-3372"><a href="#L-3372"><span class="linenos">3372</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span> -</span><span id="L-3373"><a href="#L-3373"><span class="linenos">3373</span></a> <span class="k">return</span> <span class="n">aliases</span> -</span><span id="L-3374"><a href="#L-3374"><span class="linenos">3374</span></a> -</span><span id="L-3375"><a href="#L-3375"><span class="linenos">3375</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)</span> -</span><span id="L-3376"><a href="#L-3376"><span class="linenos">3376</span></a> -</span><span id="L-3377"><a href="#L-3377"><span class="linenos">3377</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="L-3378"><a href="#L-3378"><span class="linenos">3378</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="L-3379"><a href="#L-3379"><span class="linenos">3379</span></a> -</span><span id="L-3380"><a href="#L-3380"><span class="linenos">3380</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3381"><a href="#L-3381"><span class="linenos">3381</span></a> -</span><span id="L-3382"><a href="#L-3382"><span class="linenos">3382</span></a> <span class="k">def</span> <span class="nf">_parse_id_var</span><span class="p">(</span> -</span><span id="L-3383"><a href="#L-3383"><span class="linenos">3383</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-3384"><a href="#L-3384"><span class="linenos">3384</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="L-3385"><a href="#L-3385"><span class="linenos">3385</span></a> <span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-3386"><a href="#L-3386"><span class="linenos">3386</span></a> <span class="n">prefix_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="L-3387"><a href="#L-3387"><span class="linenos">3387</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3388"><a href="#L-3388"><span class="linenos">3388</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> -</span><span id="L-3389"><a href="#L-3389"><span class="linenos">3389</span></a> -</span><span id="L-3390"><a href="#L-3390"><span class="linenos">3390</span></a> <span class="k">if</span> <span class="n">identifier</span><span class="p">:</span> -</span><span id="L-3391"><a href="#L-3391"><span class="linenos">3391</span></a> <span class="k">return</span> <span class="n">identifier</span> -</span><span id="L-3392"><a href="#L-3392"><span class="linenos">3392</span></a> -</span><span id="L-3393"><a href="#L-3393"><span class="linenos">3393</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-3394"><a href="#L-3394"><span class="linenos">3394</span></a> -</span><span id="L-3395"><a href="#L-3395"><span class="linenos">3395</span></a> <span class="k">if</span> <span class="n">prefix_tokens</span><span class="p">:</span> -</span><span id="L-3396"><a href="#L-3396"><span class="linenos">3396</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">prefix_tokens</span><span class="p">):</span> -</span><span id="L-3397"><a href="#L-3397"><span class="linenos">3397</span></a> <span class="n">prefix</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-3350"><a href="#L-3350"><span class="linenos">3350</span></a> <span class="n">window_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="L-3351"><a href="#L-3351"><span class="linenos">3351</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> +</span><span id="L-3352"><a href="#L-3352"><span class="linenos">3352</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> +</span><span id="L-3353"><a href="#L-3353"><span class="linenos">3353</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-3354"><a href="#L-3354"><span class="linenos">3354</span></a> +</span><span id="L-3355"><a href="#L-3355"><span class="linenos">3355</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="L-3356"><a href="#L-3356"><span class="linenos">3356</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> +</span><span id="L-3357"><a href="#L-3357"><span class="linenos">3357</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> +</span><span id="L-3358"><a href="#L-3358"><span class="linenos">3358</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> +</span><span id="L-3359"><a href="#L-3359"><span class="linenos">3359</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> +</span><span id="L-3360"><a href="#L-3360"><span class="linenos">3360</span></a> +</span><span id="L-3361"><a href="#L-3361"><span class="linenos">3361</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3362"><a href="#L-3362"><span class="linenos">3362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WindowSpec</span><span class="p">,</span> +</span><span id="L-3363"><a href="#L-3363"><span class="linenos">3363</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="L-3364"><a href="#L-3364"><span class="linenos">3364</span></a> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> +</span><span id="L-3365"><a href="#L-3365"><span class="linenos">3365</span></a> <span class="n">start_side</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> +</span><span id="L-3366"><a href="#L-3366"><span class="linenos">3366</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> +</span><span id="L-3367"><a href="#L-3367"><span class="linenos">3367</span></a> <span class="n">end_side</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> +</span><span id="L-3368"><a href="#L-3368"><span class="linenos">3368</span></a> <span class="p">)</span> +</span><span id="L-3369"><a href="#L-3369"><span class="linenos">3369</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3370"><a href="#L-3370"><span class="linenos">3370</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3371"><a href="#L-3371"><span class="linenos">3371</span></a> +</span><span id="L-3372"><a href="#L-3372"><span class="linenos">3372</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3373"><a href="#L-3373"><span class="linenos">3373</span></a> +</span><span id="L-3374"><a href="#L-3374"><span class="linenos">3374</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3375"><a href="#L-3375"><span class="linenos">3375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> +</span><span id="L-3376"><a href="#L-3376"><span class="linenos">3376</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3377"><a href="#L-3377"><span class="linenos">3377</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="L-3378"><a href="#L-3378"><span class="linenos">3378</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> +</span><span id="L-3379"><a href="#L-3379"><span class="linenos">3379</span></a> <span class="n">spec</span><span class="o">=</span><span class="n">spec</span><span class="p">,</span> +</span><span id="L-3380"><a href="#L-3380"><span class="linenos">3380</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">window_alias</span><span class="p">,</span> +</span><span id="L-3381"><a href="#L-3381"><span class="linenos">3381</span></a> <span class="p">)</span> +</span><span id="L-3382"><a href="#L-3382"><span class="linenos">3382</span></a> +</span><span id="L-3383"><a href="#L-3383"><span class="linenos">3383</span></a> <span class="k">def</span> <span class="nf">_parse_window_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-3384"><a href="#L-3384"><span class="linenos">3384</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> +</span><span id="L-3385"><a href="#L-3385"><span class="linenos">3385</span></a> +</span><span id="L-3386"><a href="#L-3386"><span class="linenos">3386</span></a> <span class="k">return</span> <span class="p">{</span> +</span><span id="L-3387"><a href="#L-3387"><span class="linenos">3387</span></a> <span class="s2">"value"</span><span class="p">:</span> <span class="p">(</span> +</span><span id="L-3388"><a href="#L-3388"><span class="linenos">3388</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_ROW</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-3389"><a href="#L-3389"><span class="linenos">3389</span></a> <span class="p">)</span> +</span><span id="L-3390"><a href="#L-3390"><span class="linenos">3390</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="L-3391"><a href="#L-3391"><span class="linenos">3391</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="L-3392"><a href="#L-3392"><span class="linenos">3392</span></a> <span class="p">}</span> +</span><span id="L-3393"><a href="#L-3393"><span class="linenos">3393</span></a> +</span><span id="L-3394"><a href="#L-3394"><span class="linenos">3394</span></a> <span class="k">def</span> <span class="nf">_parse_alias</span><span class="p">(</span> +</span><span id="L-3395"><a href="#L-3395"><span class="linenos">3395</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-3396"><a href="#L-3396"><span class="linenos">3396</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3397"><a href="#L-3397"><span class="linenos">3397</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> </span><span id="L-3398"><a href="#L-3398"><span class="linenos">3398</span></a> -</span><span id="L-3399"><a href="#L-3399"><span class="linenos">3399</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">):</span> -</span><span id="L-3400"><a href="#L-3400"><span class="linenos">3400</span></a> <span class="n">quoted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> -</span><span id="L-3401"><a href="#L-3401"><span class="linenos">3401</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> -</span><span id="L-3402"><a href="#L-3402"><span class="linenos">3402</span></a> -</span><span id="L-3403"><a href="#L-3403"><span class="linenos">3403</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3404"><a href="#L-3404"><span class="linenos">3404</span></a> -</span><span id="L-3405"><a href="#L-3405"><span class="linenos">3405</span></a> <span class="k">def</span> <span class="nf">_parse_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3406"><a href="#L-3406"><span class="linenos">3406</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> -</span><span id="L-3407"><a href="#L-3407"><span class="linenos">3407</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-3408"><a href="#L-3408"><span class="linenos">3408</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-3409"><a href="#L-3409"><span class="linenos">3409</span></a> -</span><span id="L-3410"><a href="#L-3410"><span class="linenos">3410</span></a> <span class="k">def</span> <span class="nf">_parse_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3411"><a href="#L-3411"><span class="linenos">3411</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> -</span><span id="L-3412"><a href="#L-3412"><span class="linenos">3412</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-3413"><a href="#L-3413"><span class="linenos">3413</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-3414"><a href="#L-3414"><span class="linenos">3414</span></a> -</span><span id="L-3415"><a href="#L-3415"><span class="linenos">3415</span></a> <span class="k">def</span> <span class="nf">_parse_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3416"><a href="#L-3416"><span class="linenos">3416</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">):</span> -</span><span id="L-3417"><a href="#L-3417"><span class="linenos">3417</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3418"><a href="#L-3418"><span class="linenos">3418</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-3419"><a href="#L-3419"><span class="linenos">3419</span></a> -</span><span id="L-3420"><a href="#L-3420"><span class="linenos">3420</span></a> <span class="k">def</span> <span class="nf">_parse_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3421"><a href="#L-3421"><span class="linenos">3421</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> -</span><span id="L-3422"><a href="#L-3422"><span class="linenos">3422</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-3423"><a href="#L-3423"><span class="linenos">3423</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="L-3424"><a href="#L-3424"><span class="linenos">3424</span></a> -</span><span id="L-3425"><a href="#L-3425"><span class="linenos">3425</span></a> <span class="k">def</span> <span class="nf">_advance_any</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="L-3426"><a href="#L-3426"><span class="linenos">3426</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_KEYWORDS</span><span class="p">:</span> -</span><span id="L-3427"><a href="#L-3427"><span class="linenos">3427</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3428"><a href="#L-3428"><span class="linenos">3428</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="L-3429"><a href="#L-3429"><span class="linenos">3429</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3399"><a href="#L-3399"><span class="linenos">3399</span></a> <span class="k">if</span> <span class="n">explicit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">any_token</span><span class="p">:</span> +</span><span id="L-3400"><a href="#L-3400"><span class="linenos">3400</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3401"><a href="#L-3401"><span class="linenos">3401</span></a> +</span><span id="L-3402"><a href="#L-3402"><span class="linenos">3402</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-3403"><a href="#L-3403"><span class="linenos">3403</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3404"><a href="#L-3404"><span class="linenos">3404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Aliases</span><span class="p">,</span> +</span><span id="L-3405"><a href="#L-3405"><span class="linenos">3405</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3406"><a href="#L-3406"><span class="linenos">3406</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)),</span> +</span><span id="L-3407"><a href="#L-3407"><span class="linenos">3407</span></a> <span class="p">)</span> +</span><span id="L-3408"><a href="#L-3408"><span class="linenos">3408</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span> +</span><span id="L-3409"><a href="#L-3409"><span class="linenos">3409</span></a> <span class="k">return</span> <span class="n">aliases</span> +</span><span id="L-3410"><a href="#L-3410"><span class="linenos">3410</span></a> +</span><span id="L-3411"><a href="#L-3411"><span class="linenos">3411</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)</span> +</span><span id="L-3412"><a href="#L-3412"><span class="linenos">3412</span></a> +</span><span id="L-3413"><a href="#L-3413"><span class="linenos">3413</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="L-3414"><a href="#L-3414"><span class="linenos">3414</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="L-3415"><a href="#L-3415"><span class="linenos">3415</span></a> +</span><span id="L-3416"><a href="#L-3416"><span class="linenos">3416</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3417"><a href="#L-3417"><span class="linenos">3417</span></a> +</span><span id="L-3418"><a href="#L-3418"><span class="linenos">3418</span></a> <span class="k">def</span> <span class="nf">_parse_id_var</span><span class="p">(</span> +</span><span id="L-3419"><a href="#L-3419"><span class="linenos">3419</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-3420"><a href="#L-3420"><span class="linenos">3420</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="L-3421"><a href="#L-3421"><span class="linenos">3421</span></a> <span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-3422"><a href="#L-3422"><span class="linenos">3422</span></a> <span class="n">prefix_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="L-3423"><a href="#L-3423"><span class="linenos">3423</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3424"><a href="#L-3424"><span class="linenos">3424</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> +</span><span id="L-3425"><a href="#L-3425"><span class="linenos">3425</span></a> +</span><span id="L-3426"><a href="#L-3426"><span class="linenos">3426</span></a> <span class="k">if</span> <span class="n">identifier</span><span class="p">:</span> +</span><span id="L-3427"><a href="#L-3427"><span class="linenos">3427</span></a> <span class="k">return</span> <span class="n">identifier</span> +</span><span id="L-3428"><a href="#L-3428"><span class="linenos">3428</span></a> +</span><span id="L-3429"><a href="#L-3429"><span class="linenos">3429</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="L-3430"><a href="#L-3430"><span class="linenos">3430</span></a> -</span><span id="L-3431"><a href="#L-3431"><span class="linenos">3431</span></a> <span class="k">def</span> <span class="nf">_parse_var_or_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3432"><a href="#L-3432"><span class="linenos">3432</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="L-3433"><a href="#L-3433"><span class="linenos">3433</span></a> -</span><span id="L-3434"><a href="#L-3434"><span class="linenos">3434</span></a> <span class="k">def</span> <span class="nf">_parse_null</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3435"><a href="#L-3435"><span class="linenos">3435</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> -</span><span id="L-3436"><a href="#L-3436"><span class="linenos">3436</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-3437"><a href="#L-3437"><span class="linenos">3437</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3431"><a href="#L-3431"><span class="linenos">3431</span></a> <span class="k">if</span> <span class="n">prefix_tokens</span><span class="p">:</span> +</span><span id="L-3432"><a href="#L-3432"><span class="linenos">3432</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">prefix_tokens</span><span class="p">):</span> +</span><span id="L-3433"><a href="#L-3433"><span class="linenos">3433</span></a> <span class="n">prefix</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-3434"><a href="#L-3434"><span class="linenos">3434</span></a> +</span><span id="L-3435"><a href="#L-3435"><span class="linenos">3435</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">):</span> +</span><span id="L-3436"><a href="#L-3436"><span class="linenos">3436</span></a> <span class="n">quoted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> +</span><span id="L-3437"><a href="#L-3437"><span class="linenos">3437</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> </span><span id="L-3438"><a href="#L-3438"><span class="linenos">3438</span></a> -</span><span id="L-3439"><a href="#L-3439"><span class="linenos">3439</span></a> <span class="k">def</span> <span class="nf">_parse_boolean</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3440"><a href="#L-3440"><span class="linenos">3440</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">):</span> -</span><span id="L-3441"><a href="#L-3441"><span class="linenos">3441</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-3442"><a href="#L-3442"><span class="linenos">3442</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">):</span> -</span><span id="L-3443"><a href="#L-3443"><span class="linenos">3443</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-3444"><a href="#L-3444"><span class="linenos">3444</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3439"><a href="#L-3439"><span class="linenos">3439</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3440"><a href="#L-3440"><span class="linenos">3440</span></a> +</span><span id="L-3441"><a href="#L-3441"><span class="linenos">3441</span></a> <span class="k">def</span> <span class="nf">_parse_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3442"><a href="#L-3442"><span class="linenos">3442</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> +</span><span id="L-3443"><a href="#L-3443"><span class="linenos">3443</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-3444"><a href="#L-3444"><span class="linenos">3444</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> </span><span id="L-3445"><a href="#L-3445"><span class="linenos">3445</span></a> -</span><span id="L-3446"><a href="#L-3446"><span class="linenos">3446</span></a> <span class="k">def</span> <span class="nf">_parse_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3447"><a href="#L-3447"><span class="linenos">3447</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span> -</span><span id="L-3448"><a href="#L-3448"><span class="linenos">3448</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-3449"><a href="#L-3449"><span class="linenos">3449</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3446"><a href="#L-3446"><span class="linenos">3446</span></a> <span class="k">def</span> <span class="nf">_parse_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3447"><a href="#L-3447"><span class="linenos">3447</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> +</span><span id="L-3448"><a href="#L-3448"><span class="linenos">3448</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-3449"><a href="#L-3449"><span class="linenos">3449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> </span><span id="L-3450"><a href="#L-3450"><span class="linenos">3450</span></a> -</span><span id="L-3451"><a href="#L-3451"><span class="linenos">3451</span></a> <span class="k">def</span> <span class="nf">_parse_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3452"><a href="#L-3452"><span class="linenos">3452</span></a> <span class="n">wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)</span> -</span><span id="L-3453"><a href="#L-3453"><span class="linenos">3453</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="L-3454"><a href="#L-3454"><span class="linenos">3454</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> -</span><span id="L-3455"><a href="#L-3455"><span class="linenos">3455</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Parameter</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">wrapped</span><span class="o">=</span><span class="n">wrapped</span><span class="p">)</span> -</span><span id="L-3456"><a href="#L-3456"><span class="linenos">3456</span></a> -</span><span id="L-3457"><a href="#L-3457"><span class="linenos">3457</span></a> <span class="k">def</span> <span class="nf">_parse_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3458"><a href="#L-3458"><span class="linenos">3458</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">):</span> -</span><span id="L-3459"><a href="#L-3459"><span class="linenos">3459</span></a> <span class="n">placeholder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-3460"><a href="#L-3460"><span class="linenos">3460</span></a> <span class="k">if</span> <span class="n">placeholder</span><span class="p">:</span> -</span><span id="L-3461"><a href="#L-3461"><span class="linenos">3461</span></a> <span class="k">return</span> <span class="n">placeholder</span> -</span><span id="L-3462"><a href="#L-3462"><span class="linenos">3462</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> -</span><span id="L-3463"><a href="#L-3463"><span class="linenos">3463</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3464"><a href="#L-3464"><span class="linenos">3464</span></a> -</span><span id="L-3465"><a href="#L-3465"><span class="linenos">3465</span></a> <span class="k">def</span> <span class="nf">_parse_except</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="L-3466"><a href="#L-3466"><span class="linenos">3466</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">):</span> -</span><span id="L-3467"><a href="#L-3467"><span class="linenos">3467</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3468"><a href="#L-3468"><span class="linenos">3468</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3469"><a href="#L-3469"><span class="linenos">3469</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-3470"><a href="#L-3470"><span class="linenos">3470</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="L-3471"><a href="#L-3471"><span class="linenos">3471</span></a> -</span><span id="L-3472"><a href="#L-3472"><span class="linenos">3472</span></a> <span class="k">def</span> <span class="nf">_parse_replace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="L-3473"><a href="#L-3473"><span class="linenos">3473</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">):</span> -</span><span id="L-3474"><a href="#L-3474"><span class="linenos">3474</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3475"><a href="#L-3475"><span class="linenos">3475</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3476"><a href="#L-3476"><span class="linenos">3476</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="L-3477"><a href="#L-3477"><span class="linenos">3477</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="L-3478"><a href="#L-3478"><span class="linenos">3478</span></a> -</span><span id="L-3479"><a href="#L-3479"><span class="linenos">3479</span></a> <span class="k">def</span> <span class="nf">_parse_csv</span><span class="p">(</span> -</span><span id="L-3480"><a href="#L-3480"><span class="linenos">3480</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> -</span><span id="L-3481"><a href="#L-3481"><span class="linenos">3481</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-3482"><a href="#L-3482"><span class="linenos">3482</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-3483"><a href="#L-3483"><span class="linenos">3483</span></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[</span><span class="n">parse_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="L-3484"><a href="#L-3484"><span class="linenos">3484</span></a> -</span><span id="L-3485"><a href="#L-3485"><span class="linenos">3485</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">):</span> -</span><span id="L-3486"><a href="#L-3486"><span class="linenos">3486</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="L-3487"><a href="#L-3487"><span class="linenos">3487</span></a> <span class="n">parse_result</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-3488"><a href="#L-3488"><span class="linenos">3488</span></a> -</span><span id="L-3489"><a href="#L-3489"><span class="linenos">3489</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-3490"><a href="#L-3490"><span class="linenos">3490</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-3491"><a href="#L-3491"><span class="linenos">3491</span></a> <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> +</span><span id="L-3451"><a href="#L-3451"><span class="linenos">3451</span></a> <span class="k">def</span> <span class="nf">_parse_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3452"><a href="#L-3452"><span class="linenos">3452</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">):</span> +</span><span id="L-3453"><a href="#L-3453"><span class="linenos">3453</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3454"><a href="#L-3454"><span class="linenos">3454</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-3455"><a href="#L-3455"><span class="linenos">3455</span></a> +</span><span id="L-3456"><a href="#L-3456"><span class="linenos">3456</span></a> <span class="k">def</span> <span class="nf">_parse_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3457"><a href="#L-3457"><span class="linenos">3457</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> +</span><span id="L-3458"><a href="#L-3458"><span class="linenos">3458</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-3459"><a href="#L-3459"><span class="linenos">3459</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="L-3460"><a href="#L-3460"><span class="linenos">3460</span></a> +</span><span id="L-3461"><a href="#L-3461"><span class="linenos">3461</span></a> <span class="k">def</span> <span class="nf">_advance_any</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="L-3462"><a href="#L-3462"><span class="linenos">3462</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_KEYWORDS</span><span class="p">:</span> +</span><span id="L-3463"><a href="#L-3463"><span class="linenos">3463</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3464"><a href="#L-3464"><span class="linenos">3464</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="L-3465"><a href="#L-3465"><span class="linenos">3465</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3466"><a href="#L-3466"><span class="linenos">3466</span></a> +</span><span id="L-3467"><a href="#L-3467"><span class="linenos">3467</span></a> <span class="k">def</span> <span class="nf">_parse_var_or_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3468"><a href="#L-3468"><span class="linenos">3468</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="L-3469"><a href="#L-3469"><span class="linenos">3469</span></a> +</span><span id="L-3470"><a href="#L-3470"><span class="linenos">3470</span></a> <span class="k">def</span> <span class="nf">_parse_null</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3471"><a href="#L-3471"><span class="linenos">3471</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> +</span><span id="L-3472"><a href="#L-3472"><span class="linenos">3472</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-3473"><a href="#L-3473"><span class="linenos">3473</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3474"><a href="#L-3474"><span class="linenos">3474</span></a> +</span><span id="L-3475"><a href="#L-3475"><span class="linenos">3475</span></a> <span class="k">def</span> <span class="nf">_parse_boolean</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3476"><a href="#L-3476"><span class="linenos">3476</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">):</span> +</span><span id="L-3477"><a href="#L-3477"><span class="linenos">3477</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-3478"><a href="#L-3478"><span class="linenos">3478</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">):</span> +</span><span id="L-3479"><a href="#L-3479"><span class="linenos">3479</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-3480"><a href="#L-3480"><span class="linenos">3480</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3481"><a href="#L-3481"><span class="linenos">3481</span></a> +</span><span id="L-3482"><a href="#L-3482"><span class="linenos">3482</span></a> <span class="k">def</span> <span class="nf">_parse_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3483"><a href="#L-3483"><span class="linenos">3483</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span> +</span><span id="L-3484"><a href="#L-3484"><span class="linenos">3484</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-3485"><a href="#L-3485"><span class="linenos">3485</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3486"><a href="#L-3486"><span class="linenos">3486</span></a> +</span><span id="L-3487"><a href="#L-3487"><span class="linenos">3487</span></a> <span class="k">def</span> <span class="nf">_parse_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3488"><a href="#L-3488"><span class="linenos">3488</span></a> <span class="n">wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)</span> +</span><span id="L-3489"><a href="#L-3489"><span class="linenos">3489</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="L-3490"><a href="#L-3490"><span class="linenos">3490</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> +</span><span id="L-3491"><a href="#L-3491"><span class="linenos">3491</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Parameter</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">wrapped</span><span class="o">=</span><span class="n">wrapped</span><span class="p">)</span> </span><span id="L-3492"><a href="#L-3492"><span class="linenos">3492</span></a> -</span><span id="L-3493"><a href="#L-3493"><span class="linenos">3493</span></a> <span class="k">return</span> <span class="n">items</span> -</span><span id="L-3494"><a href="#L-3494"><span class="linenos">3494</span></a> -</span><span id="L-3495"><a href="#L-3495"><span class="linenos">3495</span></a> <span class="k">def</span> <span class="nf">_parse_tokens</span><span class="p">(</span> -</span><span id="L-3496"><a href="#L-3496"><span class="linenos">3496</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> -</span><span id="L-3497"><a href="#L-3497"><span class="linenos">3497</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3498"><a href="#L-3498"><span class="linenos">3498</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-3499"><a href="#L-3499"><span class="linenos">3499</span></a> -</span><span id="L-3500"><a href="#L-3500"><span class="linenos">3500</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> -</span><span id="L-3501"><a href="#L-3501"><span class="linenos">3501</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3502"><a href="#L-3502"><span class="linenos">3502</span></a> <span class="n">expressions</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="L-3503"><a href="#L-3503"><span class="linenos">3503</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="L-3504"><a href="#L-3504"><span class="linenos">3504</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> -</span><span id="L-3505"><a href="#L-3505"><span class="linenos">3505</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">parse_method</span><span class="p">(),</span> -</span><span id="L-3506"><a href="#L-3506"><span class="linenos">3506</span></a> <span class="p">)</span> +</span><span id="L-3493"><a href="#L-3493"><span class="linenos">3493</span></a> <span class="k">def</span> <span class="nf">_parse_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3494"><a href="#L-3494"><span class="linenos">3494</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">):</span> +</span><span id="L-3495"><a href="#L-3495"><span class="linenos">3495</span></a> <span class="n">placeholder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-3496"><a href="#L-3496"><span class="linenos">3496</span></a> <span class="k">if</span> <span class="n">placeholder</span><span class="p">:</span> +</span><span id="L-3497"><a href="#L-3497"><span class="linenos">3497</span></a> <span class="k">return</span> <span class="n">placeholder</span> +</span><span id="L-3498"><a href="#L-3498"><span class="linenos">3498</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> +</span><span id="L-3499"><a href="#L-3499"><span class="linenos">3499</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3500"><a href="#L-3500"><span class="linenos">3500</span></a> +</span><span id="L-3501"><a href="#L-3501"><span class="linenos">3501</span></a> <span class="k">def</span> <span class="nf">_parse_except</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="L-3502"><a href="#L-3502"><span class="linenos">3502</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">):</span> +</span><span id="L-3503"><a href="#L-3503"><span class="linenos">3503</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3504"><a href="#L-3504"><span class="linenos">3504</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3505"><a href="#L-3505"><span class="linenos">3505</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="L-3506"><a href="#L-3506"><span class="linenos">3506</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> </span><span id="L-3507"><a href="#L-3507"><span class="linenos">3507</span></a> -</span><span id="L-3508"><a href="#L-3508"><span class="linenos">3508</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3509"><a href="#L-3509"><span class="linenos">3509</span></a> -</span><span id="L-3510"><a href="#L-3510"><span class="linenos">3510</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-3511"><a href="#L-3511"><span class="linenos">3511</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> -</span><span id="L-3512"><a href="#L-3512"><span class="linenos">3512</span></a> -</span><span id="L-3513"><a href="#L-3513"><span class="linenos">3513</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_csv</span><span class="p">(</span> -</span><span id="L-3514"><a href="#L-3514"><span class="linenos">3514</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> -</span><span id="L-3515"><a href="#L-3515"><span class="linenos">3515</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="L-3516"><a href="#L-3516"><span class="linenos">3516</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">parse_method</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">))</span> -</span><span id="L-3517"><a href="#L-3517"><span class="linenos">3517</span></a> -</span><span id="L-3518"><a href="#L-3518"><span class="linenos">3518</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span> -</span><span id="L-3519"><a href="#L-3519"><span class="linenos">3519</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="L-3520"><a href="#L-3520"><span class="linenos">3520</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="L-3521"><a href="#L-3521"><span class="linenos">3521</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="L-3522"><a href="#L-3522"><span class="linenos">3522</span></a> <span class="k">return</span> <span class="n">parse_result</span> -</span><span id="L-3523"><a href="#L-3523"><span class="linenos">3523</span></a> -</span><span id="L-3524"><a href="#L-3524"><span class="linenos">3524</span></a> <span class="k">def</span> <span class="nf">_parse_select_or_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3525"><a href="#L-3525"><span class="linenos">3525</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="L-3526"><a href="#L-3526"><span class="linenos">3526</span></a> -</span><span id="L-3527"><a href="#L-3527"><span class="linenos">3527</span></a> <span class="k">def</span> <span class="nf">_parse_ddl_select</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3528"><a href="#L-3528"><span class="linenos">3528</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> -</span><span id="L-3529"><a href="#L-3529"><span class="linenos">3529</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="L-3530"><a href="#L-3530"><span class="linenos">3530</span></a> <span class="p">)</span> -</span><span id="L-3531"><a href="#L-3531"><span class="linenos">3531</span></a> -</span><span id="L-3532"><a href="#L-3532"><span class="linenos">3532</span></a> <span class="k">def</span> <span class="nf">_parse_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3533"><a href="#L-3533"><span class="linenos">3533</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3534"><a href="#L-3534"><span class="linenos">3534</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_KIND</span><span class="p">):</span> -</span><span id="L-3535"><a href="#L-3535"><span class="linenos">3535</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="L-3536"><a href="#L-3536"><span class="linenos">3536</span></a> -</span><span id="L-3537"><a href="#L-3537"><span class="linenos">3537</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">({</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">})</span> -</span><span id="L-3538"><a href="#L-3538"><span class="linenos">3538</span></a> -</span><span id="L-3539"><a href="#L-3539"><span class="linenos">3539</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3540"><a href="#L-3540"><span class="linenos">3540</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-3541"><a href="#L-3541"><span class="linenos">3541</span></a> <span class="n">mode</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3542"><a href="#L-3542"><span class="linenos">3542</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> -</span><span id="L-3543"><a href="#L-3543"><span class="linenos">3543</span></a> <span class="n">mode</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">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-3544"><a href="#L-3544"><span class="linenos">3544</span></a> -</span><span id="L-3545"><a href="#L-3545"><span class="linenos">3545</span></a> <span class="k">if</span> <span class="n">mode</span><span class="p">:</span> -</span><span id="L-3546"><a href="#L-3546"><span class="linenos">3546</span></a> <span class="n">modes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mode</span><span class="p">))</span> -</span><span id="L-3547"><a href="#L-3547"><span class="linenos">3547</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="L-3548"><a href="#L-3548"><span class="linenos">3548</span></a> <span class="k">break</span> -</span><span id="L-3549"><a href="#L-3549"><span class="linenos">3549</span></a> -</span><span id="L-3550"><a href="#L-3550"><span class="linenos">3550</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Transaction</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">modes</span><span class="o">=</span><span class="n">modes</span><span class="p">)</span> -</span><span id="L-3551"><a href="#L-3551"><span class="linenos">3551</span></a> -</span><span id="L-3552"><a href="#L-3552"><span class="linenos">3552</span></a> <span class="k">def</span> <span class="nf">_parse_commit_or_rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3553"><a href="#L-3553"><span class="linenos">3553</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3554"><a href="#L-3554"><span class="linenos">3554</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3555"><a href="#L-3555"><span class="linenos">3555</span></a> <span class="n">is_rollback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span> -</span><span id="L-3556"><a href="#L-3556"><span class="linenos">3556</span></a> -</span><span id="L-3557"><a href="#L-3557"><span class="linenos">3557</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">({</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">})</span> -</span><span id="L-3558"><a href="#L-3558"><span class="linenos">3558</span></a> -</span><span id="L-3559"><a href="#L-3559"><span class="linenos">3559</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> -</span><span id="L-3560"><a href="#L-3560"><span class="linenos">3560</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SAVEPOINT"</span><span class="p">)</span> -</span><span id="L-3561"><a href="#L-3561"><span class="linenos">3561</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-3508"><a href="#L-3508"><span class="linenos">3508</span></a> <span class="k">def</span> <span class="nf">_parse_replace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="L-3509"><a href="#L-3509"><span class="linenos">3509</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">):</span> +</span><span id="L-3510"><a href="#L-3510"><span class="linenos">3510</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3511"><a href="#L-3511"><span class="linenos">3511</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3512"><a href="#L-3512"><span class="linenos">3512</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="L-3513"><a href="#L-3513"><span class="linenos">3513</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="L-3514"><a href="#L-3514"><span class="linenos">3514</span></a> +</span><span id="L-3515"><a href="#L-3515"><span class="linenos">3515</span></a> <span class="k">def</span> <span class="nf">_parse_csv</span><span class="p">(</span> +</span><span id="L-3516"><a href="#L-3516"><span class="linenos">3516</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> +</span><span id="L-3517"><a href="#L-3517"><span class="linenos">3517</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-3518"><a href="#L-3518"><span class="linenos">3518</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="L-3519"><a href="#L-3519"><span class="linenos">3519</span></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[</span><span class="n">parse_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="L-3520"><a href="#L-3520"><span class="linenos">3520</span></a> +</span><span id="L-3521"><a href="#L-3521"><span class="linenos">3521</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">):</span> +</span><span id="L-3522"><a href="#L-3522"><span class="linenos">3522</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="L-3523"><a href="#L-3523"><span class="linenos">3523</span></a> <span class="n">parse_result</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-3524"><a href="#L-3524"><span class="linenos">3524</span></a> +</span><span id="L-3525"><a href="#L-3525"><span class="linenos">3525</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="L-3526"><a href="#L-3526"><span class="linenos">3526</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-3527"><a href="#L-3527"><span class="linenos">3527</span></a> <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> +</span><span id="L-3528"><a href="#L-3528"><span class="linenos">3528</span></a> +</span><span id="L-3529"><a href="#L-3529"><span class="linenos">3529</span></a> <span class="k">return</span> <span class="n">items</span> +</span><span id="L-3530"><a href="#L-3530"><span class="linenos">3530</span></a> +</span><span id="L-3531"><a href="#L-3531"><span class="linenos">3531</span></a> <span class="k">def</span> <span class="nf">_parse_tokens</span><span class="p">(</span> +</span><span id="L-3532"><a href="#L-3532"><span class="linenos">3532</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> +</span><span id="L-3533"><a href="#L-3533"><span class="linenos">3533</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3534"><a href="#L-3534"><span class="linenos">3534</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="L-3535"><a href="#L-3535"><span class="linenos">3535</span></a> +</span><span id="L-3536"><a href="#L-3536"><span class="linenos">3536</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> +</span><span id="L-3537"><a href="#L-3537"><span class="linenos">3537</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3538"><a href="#L-3538"><span class="linenos">3538</span></a> <span class="n">expressions</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> +</span><span id="L-3539"><a href="#L-3539"><span class="linenos">3539</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="L-3540"><a href="#L-3540"><span class="linenos">3540</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> +</span><span id="L-3541"><a href="#L-3541"><span class="linenos">3541</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">parse_method</span><span class="p">(),</span> +</span><span id="L-3542"><a href="#L-3542"><span class="linenos">3542</span></a> <span class="p">)</span> +</span><span id="L-3543"><a href="#L-3543"><span class="linenos">3543</span></a> +</span><span id="L-3544"><a href="#L-3544"><span class="linenos">3544</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3545"><a href="#L-3545"><span class="linenos">3545</span></a> +</span><span id="L-3546"><a href="#L-3546"><span class="linenos">3546</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-3547"><a href="#L-3547"><span class="linenos">3547</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> +</span><span id="L-3548"><a href="#L-3548"><span class="linenos">3548</span></a> +</span><span id="L-3549"><a href="#L-3549"><span class="linenos">3549</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_csv</span><span class="p">(</span> +</span><span id="L-3550"><a href="#L-3550"><span class="linenos">3550</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> +</span><span id="L-3551"><a href="#L-3551"><span class="linenos">3551</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="L-3552"><a href="#L-3552"><span class="linenos">3552</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">parse_method</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">))</span> +</span><span id="L-3553"><a href="#L-3553"><span class="linenos">3553</span></a> +</span><span id="L-3554"><a href="#L-3554"><span class="linenos">3554</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span> +</span><span id="L-3555"><a href="#L-3555"><span class="linenos">3555</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="L-3556"><a href="#L-3556"><span class="linenos">3556</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="L-3557"><a href="#L-3557"><span class="linenos">3557</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="L-3558"><a href="#L-3558"><span class="linenos">3558</span></a> <span class="k">return</span> <span class="n">parse_result</span> +</span><span id="L-3559"><a href="#L-3559"><span class="linenos">3559</span></a> +</span><span id="L-3560"><a href="#L-3560"><span class="linenos">3560</span></a> <span class="k">def</span> <span class="nf">_parse_select_or_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3561"><a href="#L-3561"><span class="linenos">3561</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> </span><span id="L-3562"><a href="#L-3562"><span class="linenos">3562</span></a> -</span><span id="L-3563"><a href="#L-3563"><span class="linenos">3563</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">):</span> -</span><span id="L-3564"><a href="#L-3564"><span class="linenos">3564</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="L-3565"><a href="#L-3565"><span class="linenos">3565</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHAIN"</span><span class="p">)</span> -</span><span id="L-3566"><a href="#L-3566"><span class="linenos">3566</span></a> -</span><span id="L-3567"><a href="#L-3567"><span class="linenos">3567</span></a> <span class="k">if</span> <span class="n">is_rollback</span><span class="p">:</span> -</span><span id="L-3568"><a href="#L-3568"><span class="linenos">3568</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">,</span> <span class="n">savepoint</span><span class="o">=</span><span class="n">savepoint</span><span class="p">)</span> -</span><span id="L-3569"><a href="#L-3569"><span class="linenos">3569</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Commit</span><span class="p">,</span> <span class="n">chain</span><span class="o">=</span><span class="n">chain</span><span class="p">)</span> -</span><span id="L-3570"><a href="#L-3570"><span class="linenos">3570</span></a> -</span><span id="L-3571"><a href="#L-3571"><span class="linenos">3571</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3572"><a href="#L-3572"><span class="linenos">3572</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> -</span><span id="L-3573"><a href="#L-3573"><span class="linenos">3573</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3563"><a href="#L-3563"><span class="linenos">3563</span></a> <span class="k">def</span> <span class="nf">_parse_ddl_select</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3564"><a href="#L-3564"><span class="linenos">3564</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> +</span><span id="L-3565"><a href="#L-3565"><span class="linenos">3565</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="L-3566"><a href="#L-3566"><span class="linenos">3566</span></a> <span class="p">)</span> +</span><span id="L-3567"><a href="#L-3567"><span class="linenos">3567</span></a> +</span><span id="L-3568"><a href="#L-3568"><span class="linenos">3568</span></a> <span class="k">def</span> <span class="nf">_parse_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3569"><a href="#L-3569"><span class="linenos">3569</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3570"><a href="#L-3570"><span class="linenos">3570</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_KIND</span><span class="p">):</span> +</span><span id="L-3571"><a href="#L-3571"><span class="linenos">3571</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="L-3572"><a href="#L-3572"><span class="linenos">3572</span></a> +</span><span id="L-3573"><a href="#L-3573"><span class="linenos">3573</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">({</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">})</span> </span><span id="L-3574"><a href="#L-3574"><span class="linenos">3574</span></a> -</span><span id="L-3575"><a href="#L-3575"><span class="linenos">3575</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> -</span><span id="L-3576"><a href="#L-3576"><span class="linenos">3576</span></a> <span class="n">exists_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3577"><a href="#L-3577"><span class="linenos">3577</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-3578"><a href="#L-3578"><span class="linenos">3578</span></a> -</span><span id="L-3579"><a href="#L-3579"><span class="linenos">3579</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="L-3580"><a href="#L-3580"><span class="linenos">3580</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"exists"</span><span class="p">,</span> <span class="n">exists_column</span><span class="p">)</span> -</span><span id="L-3581"><a href="#L-3581"><span class="linenos">3581</span></a> -</span><span id="L-3582"><a href="#L-3582"><span class="linenos">3582</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-3583"><a href="#L-3583"><span class="linenos">3583</span></a> -</span><span id="L-3584"><a href="#L-3584"><span class="linenos">3584</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3585"><a href="#L-3585"><span class="linenos">3585</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(</span><span class="n">default_kind</span><span class="o">=</span><span class="s2">"COLUMN"</span><span class="p">)</span> -</span><span id="L-3586"><a href="#L-3586"><span class="linenos">3586</span></a> -</span><span id="L-3587"><a href="#L-3587"><span class="linenos">3587</span></a> <span class="c1"># https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html</span> -</span><span id="L-3588"><a href="#L-3588"><span class="linenos">3588</span></a> <span class="k">def</span> <span class="nf">_parse_drop_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</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 class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3589"><a href="#L-3589"><span class="linenos">3589</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3590"><a href="#L-3590"><span class="linenos">3590</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">),</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span> -</span><span id="L-3591"><a href="#L-3591"><span class="linenos">3591</span></a> <span class="p">)</span> +</span><span id="L-3575"><a href="#L-3575"><span class="linenos">3575</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3576"><a href="#L-3576"><span class="linenos">3576</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-3577"><a href="#L-3577"><span class="linenos">3577</span></a> <span class="n">mode</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3578"><a href="#L-3578"><span class="linenos">3578</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> +</span><span id="L-3579"><a href="#L-3579"><span class="linenos">3579</span></a> <span class="n">mode</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">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-3580"><a href="#L-3580"><span class="linenos">3580</span></a> +</span><span id="L-3581"><a href="#L-3581"><span class="linenos">3581</span></a> <span class="k">if</span> <span class="n">mode</span><span class="p">:</span> +</span><span id="L-3582"><a href="#L-3582"><span class="linenos">3582</span></a> <span class="n">modes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mode</span><span class="p">))</span> +</span><span id="L-3583"><a href="#L-3583"><span class="linenos">3583</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="L-3584"><a href="#L-3584"><span class="linenos">3584</span></a> <span class="k">break</span> +</span><span id="L-3585"><a href="#L-3585"><span class="linenos">3585</span></a> +</span><span id="L-3586"><a href="#L-3586"><span class="linenos">3586</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Transaction</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">modes</span><span class="o">=</span><span class="n">modes</span><span class="p">)</span> +</span><span id="L-3587"><a href="#L-3587"><span class="linenos">3587</span></a> +</span><span id="L-3588"><a href="#L-3588"><span class="linenos">3588</span></a> <span class="k">def</span> <span class="nf">_parse_commit_or_rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3589"><a href="#L-3589"><span class="linenos">3589</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3590"><a href="#L-3590"><span class="linenos">3590</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3591"><a href="#L-3591"><span class="linenos">3591</span></a> <span class="n">is_rollback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span> </span><span id="L-3592"><a href="#L-3592"><span class="linenos">3592</span></a> -</span><span id="L-3593"><a href="#L-3593"><span class="linenos">3593</span></a> <span class="k">def</span> <span class="nf">_parse_add_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3594"><a href="#L-3594"><span class="linenos">3594</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3595"><a href="#L-3595"><span class="linenos">3595</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="L-3596"><a href="#L-3596"><span class="linenos">3596</span></a> -</span><span id="L-3597"><a href="#L-3597"><span class="linenos">3597</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">:</span> -</span><span id="L-3598"><a href="#L-3598"><span class="linenos">3598</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="L-3599"><a href="#L-3599"><span class="linenos">3599</span></a> -</span><span id="L-3600"><a href="#L-3600"><span class="linenos">3600</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECK"</span><span class="p">):</span> -</span><span id="L-3601"><a href="#L-3601"><span class="linenos">3601</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="L-3602"><a href="#L-3602"><span class="linenos">3602</span></a> <span class="n">enforced</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENFORCED"</span><span class="p">)</span> -</span><span id="L-3603"><a href="#L-3603"><span class="linenos">3603</span></a> -</span><span id="L-3604"><a href="#L-3604"><span class="linenos">3604</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3605"><a href="#L-3605"><span class="linenos">3605</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">enforced</span><span class="o">=</span><span class="n">enforced</span> -</span><span id="L-3606"><a href="#L-3606"><span class="linenos">3606</span></a> <span class="p">)</span> -</span><span id="L-3607"><a href="#L-3607"><span class="linenos">3607</span></a> -</span><span id="L-3608"><a href="#L-3608"><span class="linenos">3608</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">):</span> -</span><span id="L-3609"><a href="#L-3609"><span class="linenos">3609</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">()</span> -</span><span id="L-3610"><a href="#L-3610"><span class="linenos">3610</span></a> <span class="k">elif</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">):</span> -</span><span id="L-3611"><a href="#L-3611"><span class="linenos">3611</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">()</span> -</span><span id="L-3612"><a href="#L-3612"><span class="linenos">3612</span></a> -</span><span id="L-3613"><a href="#L-3613"><span class="linenos">3613</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-3593"><a href="#L-3593"><span class="linenos">3593</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">({</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">})</span> +</span><span id="L-3594"><a href="#L-3594"><span class="linenos">3594</span></a> +</span><span id="L-3595"><a href="#L-3595"><span class="linenos">3595</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> +</span><span id="L-3596"><a href="#L-3596"><span class="linenos">3596</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SAVEPOINT"</span><span class="p">)</span> +</span><span id="L-3597"><a href="#L-3597"><span class="linenos">3597</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="L-3598"><a href="#L-3598"><span class="linenos">3598</span></a> +</span><span id="L-3599"><a href="#L-3599"><span class="linenos">3599</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">):</span> +</span><span id="L-3600"><a href="#L-3600"><span class="linenos">3600</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="L-3601"><a href="#L-3601"><span class="linenos">3601</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHAIN"</span><span class="p">)</span> +</span><span id="L-3602"><a href="#L-3602"><span class="linenos">3602</span></a> +</span><span id="L-3603"><a href="#L-3603"><span class="linenos">3603</span></a> <span class="k">if</span> <span class="n">is_rollback</span><span class="p">:</span> +</span><span id="L-3604"><a href="#L-3604"><span class="linenos">3604</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">,</span> <span class="n">savepoint</span><span class="o">=</span><span class="n">savepoint</span><span class="p">)</span> +</span><span id="L-3605"><a href="#L-3605"><span class="linenos">3605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Commit</span><span class="p">,</span> <span class="n">chain</span><span class="o">=</span><span class="n">chain</span><span class="p">)</span> +</span><span id="L-3606"><a href="#L-3606"><span class="linenos">3606</span></a> +</span><span id="L-3607"><a href="#L-3607"><span class="linenos">3607</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3608"><a href="#L-3608"><span class="linenos">3608</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> +</span><span id="L-3609"><a href="#L-3609"><span class="linenos">3609</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3610"><a href="#L-3610"><span class="linenos">3610</span></a> +</span><span id="L-3611"><a href="#L-3611"><span class="linenos">3611</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> +</span><span id="L-3612"><a href="#L-3612"><span class="linenos">3612</span></a> <span class="n">exists_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3613"><a href="#L-3613"><span class="linenos">3613</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> </span><span id="L-3614"><a href="#L-3614"><span class="linenos">3614</span></a> -</span><span id="L-3615"><a href="#L-3615"><span class="linenos">3615</span></a> <span class="k">def</span> <span class="nf">_parse_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3616"><a href="#L-3616"><span class="linenos">3616</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="L-3617"><a href="#L-3617"><span class="linenos">3617</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="L-3618"><a href="#L-3618"><span class="linenos">3618</span></a> -</span><span id="L-3619"><a href="#L-3619"><span class="linenos">3619</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="L-3620"><a href="#L-3620"><span class="linenos">3620</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3621"><a href="#L-3621"><span class="linenos">3621</span></a> -</span><span id="L-3622"><a href="#L-3622"><span class="linenos">3622</span></a> <span class="n">actions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-3623"><a href="#L-3623"><span class="linenos">3623</span></a> -</span><span id="L-3624"><a href="#L-3624"><span class="linenos">3624</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-3625"><a href="#L-3625"><span class="linenos">3625</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> -</span><span id="L-3626"><a href="#L-3626"><span class="linenos">3626</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">())]</span> -</span><span id="L-3627"><a href="#L-3627"><span class="linenos">3627</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> -</span><span id="L-3628"><a href="#L-3628"><span class="linenos">3628</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ADD_CONSTRAINT_TOKENS</span><span class="p">):</span> -</span><span id="L-3629"><a href="#L-3629"><span class="linenos">3629</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_constraint</span><span class="p">)</span> -</span><span id="L-3630"><a href="#L-3630"><span class="linenos">3630</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3631"><a href="#L-3631"><span class="linenos">3631</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-3632"><a href="#L-3632"><span class="linenos">3632</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_column</span><span class="p">)</span> -</span><span id="L-3633"><a href="#L-3633"><span class="linenos">3633</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">):</span> -</span><span id="L-3634"><a href="#L-3634"><span class="linenos">3634</span></a> <span class="n">partition_exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="L-3615"><a href="#L-3615"><span class="linenos">3615</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="L-3616"><a href="#L-3616"><span class="linenos">3616</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"exists"</span><span class="p">,</span> <span class="n">exists_column</span><span class="p">)</span> +</span><span id="L-3617"><a href="#L-3617"><span class="linenos">3617</span></a> +</span><span id="L-3618"><a href="#L-3618"><span class="linenos">3618</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-3619"><a href="#L-3619"><span class="linenos">3619</span></a> +</span><span id="L-3620"><a href="#L-3620"><span class="linenos">3620</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3621"><a href="#L-3621"><span class="linenos">3621</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(</span><span class="n">default_kind</span><span class="o">=</span><span class="s2">"COLUMN"</span><span class="p">)</span> +</span><span id="L-3622"><a href="#L-3622"><span class="linenos">3622</span></a> +</span><span id="L-3623"><a href="#L-3623"><span class="linenos">3623</span></a> <span class="c1"># https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html</span> +</span><span id="L-3624"><a href="#L-3624"><span class="linenos">3624</span></a> <span class="k">def</span> <span class="nf">_parse_drop_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</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 class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3625"><a href="#L-3625"><span class="linenos">3625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3626"><a href="#L-3626"><span class="linenos">3626</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">),</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span> +</span><span id="L-3627"><a href="#L-3627"><span class="linenos">3627</span></a> <span class="p">)</span> +</span><span id="L-3628"><a href="#L-3628"><span class="linenos">3628</span></a> +</span><span id="L-3629"><a href="#L-3629"><span class="linenos">3629</span></a> <span class="k">def</span> <span class="nf">_parse_add_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3630"><a href="#L-3630"><span class="linenos">3630</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3631"><a href="#L-3631"><span class="linenos">3631</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="L-3632"><a href="#L-3632"><span class="linenos">3632</span></a> +</span><span id="L-3633"><a href="#L-3633"><span class="linenos">3633</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">:</span> +</span><span id="L-3634"><a href="#L-3634"><span class="linenos">3634</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> </span><span id="L-3635"><a href="#L-3635"><span class="linenos">3635</span></a> -</span><span id="L-3636"><a href="#L-3636"><span class="linenos">3636</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="L-3637"><a href="#L-3637"><span class="linenos">3637</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="L-3638"><a href="#L-3638"><span class="linenos">3638</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_partition</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="n">partition_exists</span><span class="p">)</span> -</span><span id="L-3639"><a href="#L-3639"><span class="linenos">3639</span></a> <span class="p">)</span> -</span><span id="L-3640"><a href="#L-3640"><span class="linenos">3640</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3641"><a href="#L-3641"><span class="linenos">3641</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-3642"><a href="#L-3642"><span class="linenos">3642</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_column</span><span class="p">)</span> -</span><span id="L-3643"><a href="#L-3643"><span class="linenos">3643</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RENAME"</span><span class="p">,</span> <span class="s2">"TO"</span><span class="p">):</span> -</span><span id="L-3644"><a href="#L-3644"><span class="linenos">3644</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameTable</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="L-3645"><a href="#L-3645"><span class="linenos">3645</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALTER"</span><span class="p">):</span> -</span><span id="L-3646"><a href="#L-3646"><span class="linenos">3646</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> -</span><span id="L-3647"><a href="#L-3647"><span class="linenos">3647</span></a> <span class="n">column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3636"><a href="#L-3636"><span class="linenos">3636</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECK"</span><span class="p">):</span> +</span><span id="L-3637"><a href="#L-3637"><span class="linenos">3637</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="L-3638"><a href="#L-3638"><span class="linenos">3638</span></a> <span class="n">enforced</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENFORCED"</span><span class="p">)</span> +</span><span id="L-3639"><a href="#L-3639"><span class="linenos">3639</span></a> +</span><span id="L-3640"><a href="#L-3640"><span class="linenos">3640</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3641"><a href="#L-3641"><span class="linenos">3641</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">enforced</span><span class="o">=</span><span class="n">enforced</span> +</span><span id="L-3642"><a href="#L-3642"><span class="linenos">3642</span></a> <span class="p">)</span> +</span><span id="L-3643"><a href="#L-3643"><span class="linenos">3643</span></a> +</span><span id="L-3644"><a href="#L-3644"><span class="linenos">3644</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">):</span> +</span><span id="L-3645"><a href="#L-3645"><span class="linenos">3645</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">()</span> +</span><span id="L-3646"><a href="#L-3646"><span class="linenos">3646</span></a> <span class="k">elif</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">):</span> +</span><span id="L-3647"><a href="#L-3647"><span class="linenos">3647</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">()</span> </span><span id="L-3648"><a href="#L-3648"><span class="linenos">3648</span></a> -</span><span id="L-3649"><a href="#L-3649"><span class="linenos">3649</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="L-3650"><a href="#L-3650"><span class="linenos">3650</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="L-3651"><a href="#L-3651"><span class="linenos">3651</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="L-3652"><a href="#L-3652"><span class="linenos">3652</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3653"><a href="#L-3653"><span class="linenos">3653</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-3654"><a href="#L-3654"><span class="linenos">3654</span></a> <span class="p">)</span> -</span><span id="L-3655"><a href="#L-3655"><span class="linenos">3655</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3656"><a href="#L-3656"><span class="linenos">3656</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">)</span> -</span><span id="L-3657"><a href="#L-3657"><span class="linenos">3657</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3658"><a href="#L-3658"><span class="linenos">3658</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> -</span><span id="L-3659"><a href="#L-3659"><span class="linenos">3659</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> -</span><span id="L-3660"><a href="#L-3660"><span class="linenos">3660</span></a> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TYPE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> -</span><span id="L-3661"><a href="#L-3661"><span class="linenos">3661</span></a> <span class="n">collate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="L-3662"><a href="#L-3662"><span class="linenos">3662</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> -</span><span id="L-3663"><a href="#L-3663"><span class="linenos">3663</span></a> <span class="p">)</span> -</span><span id="L-3664"><a href="#L-3664"><span class="linenos">3664</span></a> -</span><span id="L-3665"><a href="#L-3665"><span class="linenos">3665</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">actions</span><span class="p">)</span> -</span><span id="L-3666"><a href="#L-3666"><span class="linenos">3666</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</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">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> <span class="n">actions</span><span class="o">=</span><span class="n">actions</span><span class="p">)</span> -</span><span id="L-3667"><a href="#L-3667"><span class="linenos">3667</span></a> -</span><span id="L-3668"><a href="#L-3668"><span class="linenos">3668</span></a> <span class="k">def</span> <span class="nf">_parse_show</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3669"><a href="#L-3669"><span class="linenos">3669</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SHOW_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_show_trie</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-3670"><a href="#L-3670"><span class="linenos">3670</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="L-3671"><a href="#L-3671"><span class="linenos">3671</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="L-3672"><a href="#L-3672"><span class="linenos">3672</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3673"><a href="#L-3673"><span class="linenos">3673</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Show</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="L-3674"><a href="#L-3674"><span class="linenos">3674</span></a> -</span><span id="L-3675"><a href="#L-3675"><span class="linenos">3675</span></a> <span class="k">def</span> <span class="nf">_default_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3676"><a href="#L-3676"><span class="linenos">3676</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3677"><a href="#L-3677"><span class="linenos">3677</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> -</span><span id="L-3678"><a href="#L-3678"><span class="linenos">3678</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">(),</span> -</span><span id="L-3679"><a href="#L-3679"><span class="linenos">3679</span></a> <span class="p">)</span> -</span><span id="L-3680"><a href="#L-3680"><span class="linenos">3680</span></a> -</span><span id="L-3681"><a href="#L-3681"><span class="linenos">3681</span></a> <span class="k">def</span> <span class="nf">_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="L-3682"><a href="#L-3682"><span class="linenos">3682</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_trie</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-3683"><a href="#L-3683"><span class="linenos">3683</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">if</span> <span class="n">parser</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_default_parse_set_item</span><span class="p">()</span> +</span><span id="L-3649"><a href="#L-3649"><span class="linenos">3649</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="L-3650"><a href="#L-3650"><span class="linenos">3650</span></a> +</span><span id="L-3651"><a href="#L-3651"><span class="linenos">3651</span></a> <span class="k">def</span> <span class="nf">_parse_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3652"><a href="#L-3652"><span class="linenos">3652</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="L-3653"><a href="#L-3653"><span class="linenos">3653</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="L-3654"><a href="#L-3654"><span class="linenos">3654</span></a> +</span><span id="L-3655"><a href="#L-3655"><span class="linenos">3655</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="L-3656"><a href="#L-3656"><span class="linenos">3656</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3657"><a href="#L-3657"><span class="linenos">3657</span></a> +</span><span id="L-3658"><a href="#L-3658"><span class="linenos">3658</span></a> <span class="n">actions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-3659"><a href="#L-3659"><span class="linenos">3659</span></a> +</span><span id="L-3660"><a href="#L-3660"><span class="linenos">3660</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-3661"><a href="#L-3661"><span class="linenos">3661</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> +</span><span id="L-3662"><a href="#L-3662"><span class="linenos">3662</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">())]</span> +</span><span id="L-3663"><a href="#L-3663"><span class="linenos">3663</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> +</span><span id="L-3664"><a href="#L-3664"><span class="linenos">3664</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ADD_CONSTRAINT_TOKENS</span><span class="p">):</span> +</span><span id="L-3665"><a href="#L-3665"><span class="linenos">3665</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_constraint</span><span class="p">)</span> +</span><span id="L-3666"><a href="#L-3666"><span class="linenos">3666</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3667"><a href="#L-3667"><span class="linenos">3667</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3668"><a href="#L-3668"><span class="linenos">3668</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_column</span><span class="p">)</span> +</span><span id="L-3669"><a href="#L-3669"><span class="linenos">3669</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">):</span> +</span><span id="L-3670"><a href="#L-3670"><span class="linenos">3670</span></a> <span class="n">partition_exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="L-3671"><a href="#L-3671"><span class="linenos">3671</span></a> +</span><span id="L-3672"><a href="#L-3672"><span class="linenos">3672</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="L-3673"><a href="#L-3673"><span class="linenos">3673</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="L-3674"><a href="#L-3674"><span class="linenos">3674</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_partition</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="n">partition_exists</span><span class="p">)</span> +</span><span id="L-3675"><a href="#L-3675"><span class="linenos">3675</span></a> <span class="p">)</span> +</span><span id="L-3676"><a href="#L-3676"><span class="linenos">3676</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3677"><a href="#L-3677"><span class="linenos">3677</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3678"><a href="#L-3678"><span class="linenos">3678</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_column</span><span class="p">)</span> +</span><span id="L-3679"><a href="#L-3679"><span class="linenos">3679</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RENAME"</span><span class="p">,</span> <span class="s2">"TO"</span><span class="p">):</span> +</span><span id="L-3680"><a href="#L-3680"><span class="linenos">3680</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameTable</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="L-3681"><a href="#L-3681"><span class="linenos">3681</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALTER"</span><span class="p">):</span> +</span><span id="L-3682"><a href="#L-3682"><span class="linenos">3682</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> +</span><span id="L-3683"><a href="#L-3683"><span class="linenos">3683</span></a> <span class="n">column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-3684"><a href="#L-3684"><span class="linenos">3684</span></a> -</span><span id="L-3685"><a href="#L-3685"><span class="linenos">3685</span></a> <span class="k">def</span> <span class="nf">_parse_merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3686"><a href="#L-3686"><span class="linenos">3686</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="L-3687"><a href="#L-3687"><span class="linenos">3687</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="L-3688"><a href="#L-3688"><span class="linenos">3688</span></a> -</span><span id="L-3689"><a href="#L-3689"><span class="linenos">3689</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> -</span><span id="L-3690"><a href="#L-3690"><span class="linenos">3690</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="L-3691"><a href="#L-3691"><span class="linenos">3691</span></a> -</span><span id="L-3692"><a href="#L-3692"><span class="linenos">3692</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="L-3693"><a href="#L-3693"><span class="linenos">3693</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-3694"><a href="#L-3694"><span class="linenos">3694</span></a> -</span><span id="L-3695"><a href="#L-3695"><span class="linenos">3695</span></a> <span class="n">whens</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3696"><a href="#L-3696"><span class="linenos">3696</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> -</span><span id="L-3697"><a href="#L-3697"><span class="linenos">3697</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="L-3698"><a href="#L-3698"><span class="linenos">3698</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="L-3699"><a href="#L-3699"><span class="linenos">3699</span></a> -</span><span id="L-3700"><a href="#L-3700"><span class="linenos">3700</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">):</span> -</span><span id="L-3701"><a href="#L-3701"><span class="linenos">3701</span></a> <span class="n">_this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="L-3702"><a href="#L-3702"><span class="linenos">3702</span></a> <span class="k">if</span> <span class="n">_this</span><span class="p">:</span> -</span><span id="L-3703"><a href="#L-3703"><span class="linenos">3703</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">_this</span><span class="p">)</span> -</span><span id="L-3704"><a href="#L-3704"><span class="linenos">3704</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3705"><a href="#L-3705"><span class="linenos">3705</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3706"><a href="#L-3706"><span class="linenos">3706</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> -</span><span id="L-3707"><a href="#L-3707"><span class="linenos">3707</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> -</span><span id="L-3708"><a href="#L-3708"><span class="linenos">3708</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> -</span><span id="L-3709"><a href="#L-3709"><span class="linenos">3709</span></a> <span class="p">)</span> -</span><span id="L-3710"><a href="#L-3710"><span class="linenos">3710</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">):</span> -</span><span id="L-3711"><a href="#L-3711"><span class="linenos">3711</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="L-3712"><a href="#L-3712"><span class="linenos">3712</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="L-3713"><a href="#L-3713"><span class="linenos">3713</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="L-3714"><a href="#L-3714"><span class="linenos">3714</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3715"><a href="#L-3715"><span class="linenos">3715</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3716"><a href="#L-3716"><span class="linenos">3716</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> -</span><span id="L-3717"><a href="#L-3717"><span class="linenos">3717</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> -</span><span id="L-3718"><a href="#L-3718"><span class="linenos">3718</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> -</span><span id="L-3719"><a href="#L-3719"><span class="linenos">3719</span></a> <span class="p">)</span> -</span><span id="L-3720"><a href="#L-3720"><span class="linenos">3720</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> -</span><span id="L-3721"><a href="#L-3721"><span class="linenos">3721</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="L-3722"><a href="#L-3722"><span class="linenos">3722</span></a> -</span><span id="L-3723"><a href="#L-3723"><span class="linenos">3723</span></a> <span class="n">whens</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">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">When</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">then</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> +</span><span id="L-3685"><a href="#L-3685"><span class="linenos">3685</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="L-3686"><a href="#L-3686"><span class="linenos">3686</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="L-3687"><a href="#L-3687"><span class="linenos">3687</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="L-3688"><a href="#L-3688"><span class="linenos">3688</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3689"><a href="#L-3689"><span class="linenos">3689</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3690"><a href="#L-3690"><span class="linenos">3690</span></a> <span class="p">)</span> +</span><span id="L-3691"><a href="#L-3691"><span class="linenos">3691</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3692"><a href="#L-3692"><span class="linenos">3692</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">)</span> +</span><span id="L-3693"><a href="#L-3693"><span class="linenos">3693</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3694"><a href="#L-3694"><span class="linenos">3694</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> +</span><span id="L-3695"><a href="#L-3695"><span class="linenos">3695</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> +</span><span id="L-3696"><a href="#L-3696"><span class="linenos">3696</span></a> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TYPE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> +</span><span id="L-3697"><a href="#L-3697"><span class="linenos">3697</span></a> <span class="n">collate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> +</span><span id="L-3698"><a href="#L-3698"><span class="linenos">3698</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> +</span><span id="L-3699"><a href="#L-3699"><span class="linenos">3699</span></a> <span class="p">)</span> +</span><span id="L-3700"><a href="#L-3700"><span class="linenos">3700</span></a> +</span><span id="L-3701"><a href="#L-3701"><span class="linenos">3701</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">actions</span><span class="p">)</span> +</span><span id="L-3702"><a href="#L-3702"><span class="linenos">3702</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</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">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> <span class="n">actions</span><span class="o">=</span><span class="n">actions</span><span class="p">)</span> +</span><span id="L-3703"><a href="#L-3703"><span class="linenos">3703</span></a> +</span><span id="L-3704"><a href="#L-3704"><span class="linenos">3704</span></a> <span class="k">def</span> <span class="nf">_parse_show</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3705"><a href="#L-3705"><span class="linenos">3705</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SHOW_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_show_trie</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-3706"><a href="#L-3706"><span class="linenos">3706</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="L-3707"><a href="#L-3707"><span class="linenos">3707</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="L-3708"><a href="#L-3708"><span class="linenos">3708</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3709"><a href="#L-3709"><span class="linenos">3709</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Show</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="L-3710"><a href="#L-3710"><span class="linenos">3710</span></a> +</span><span id="L-3711"><a href="#L-3711"><span class="linenos">3711</span></a> <span class="k">def</span> <span class="nf">_default_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3712"><a href="#L-3712"><span class="linenos">3712</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3713"><a href="#L-3713"><span class="linenos">3713</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> +</span><span id="L-3714"><a href="#L-3714"><span class="linenos">3714</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">(),</span> +</span><span id="L-3715"><a href="#L-3715"><span class="linenos">3715</span></a> <span class="p">)</span> +</span><span id="L-3716"><a href="#L-3716"><span class="linenos">3716</span></a> +</span><span id="L-3717"><a href="#L-3717"><span class="linenos">3717</span></a> <span class="k">def</span> <span class="nf">_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="L-3718"><a href="#L-3718"><span class="linenos">3718</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_trie</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-3719"><a href="#L-3719"><span class="linenos">3719</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">if</span> <span class="n">parser</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_default_parse_set_item</span><span class="p">()</span> +</span><span id="L-3720"><a href="#L-3720"><span class="linenos">3720</span></a> +</span><span id="L-3721"><a href="#L-3721"><span class="linenos">3721</span></a> <span class="k">def</span> <span class="nf">_parse_merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3722"><a href="#L-3722"><span class="linenos">3722</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="L-3723"><a href="#L-3723"><span class="linenos">3723</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> </span><span id="L-3724"><a href="#L-3724"><span class="linenos">3724</span></a> -</span><span id="L-3725"><a href="#L-3725"><span class="linenos">3725</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="L-3726"><a href="#L-3726"><span class="linenos">3726</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">,</span> -</span><span id="L-3727"><a href="#L-3727"><span class="linenos">3727</span></a> <span class="n">this</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> -</span><span id="L-3728"><a href="#L-3728"><span class="linenos">3728</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> -</span><span id="L-3729"><a href="#L-3729"><span class="linenos">3729</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> -</span><span id="L-3730"><a href="#L-3730"><span class="linenos">3730</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">whens</span><span class="p">,</span> -</span><span id="L-3731"><a href="#L-3731"><span class="linenos">3731</span></a> <span class="p">)</span> -</span><span id="L-3732"><a href="#L-3732"><span class="linenos">3732</span></a> -</span><span id="L-3733"><a href="#L-3733"><span class="linenos">3733</span></a> <span class="k">def</span> <span class="nf">_parse_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="L-3734"><a href="#L-3734"><span class="linenos">3734</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Set</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">))</span> +</span><span id="L-3725"><a href="#L-3725"><span class="linenos">3725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> +</span><span id="L-3726"><a href="#L-3726"><span class="linenos">3726</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="L-3727"><a href="#L-3727"><span class="linenos">3727</span></a> +</span><span id="L-3728"><a href="#L-3728"><span class="linenos">3728</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="L-3729"><a href="#L-3729"><span class="linenos">3729</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3730"><a href="#L-3730"><span class="linenos">3730</span></a> +</span><span id="L-3731"><a href="#L-3731"><span class="linenos">3731</span></a> <span class="n">whens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3732"><a href="#L-3732"><span class="linenos">3732</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> +</span><span id="L-3733"><a href="#L-3733"><span class="linenos">3733</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="L-3734"><a href="#L-3734"><span class="linenos">3734</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> </span><span id="L-3735"><a href="#L-3735"><span class="linenos">3735</span></a> -</span><span id="L-3736"><a href="#L-3736"><span class="linenos">3736</span></a> <span class="k">def</span> <span class="nf">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="L-3737"><a href="#L-3737"><span class="linenos">3737</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-3738"><a href="#L-3738"><span class="linenos">3738</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3739"><a href="#L-3739"><span class="linenos">3739</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">))</span> -</span><span id="L-3740"><a href="#L-3740"><span class="linenos">3740</span></a> -</span><span id="L-3741"><a href="#L-3741"><span class="linenos">3741</span></a> <span class="k">def</span> <span class="nf">_find_parser</span><span class="p">(</span> -</span><span id="L-3742"><a href="#L-3742"><span class="linenos">3742</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parsers</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">],</span> <span class="n">trie</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> -</span><span id="L-3743"><a href="#L-3743"><span class="linenos">3743</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]:</span> -</span><span id="L-3744"><a href="#L-3744"><span class="linenos">3744</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-3745"><a href="#L-3745"><span class="linenos">3745</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-3746"><a href="#L-3746"><span class="linenos">3746</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-3747"><a href="#L-3747"><span class="linenos">3747</span></a> <span class="c1"># The current token might be multiple words</span> -</span><span id="L-3748"><a href="#L-3748"><span class="linenos">3748</span></a> <span class="n">curr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-3749"><a href="#L-3749"><span class="linenos">3749</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">curr</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="L-3750"><a href="#L-3750"><span class="linenos">3750</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr</span><span class="p">)</span> -</span><span id="L-3751"><a href="#L-3751"><span class="linenos">3751</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3752"><a href="#L-3752"><span class="linenos">3752</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> -</span><span id="L-3753"><a href="#L-3753"><span class="linenos">3753</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-3754"><a href="#L-3754"><span class="linenos">3754</span></a> <span class="k">break</span> -</span><span id="L-3755"><a href="#L-3755"><span class="linenos">3755</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="L-3756"><a href="#L-3756"><span class="linenos">3756</span></a> <span class="n">subparser</span> <span class="o">=</span> <span class="n">parsers</span><span class="p">[</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">this</span><span class="p">)]</span> -</span><span id="L-3757"><a href="#L-3757"><span class="linenos">3757</span></a> <span class="k">return</span> <span class="n">subparser</span> -</span><span id="L-3758"><a href="#L-3758"><span class="linenos">3758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-3759"><a href="#L-3759"><span class="linenos">3759</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3736"><a href="#L-3736"><span class="linenos">3736</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">):</span> +</span><span id="L-3737"><a href="#L-3737"><span class="linenos">3737</span></a> <span class="n">_this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="L-3738"><a href="#L-3738"><span class="linenos">3738</span></a> <span class="k">if</span> <span class="n">_this</span><span class="p">:</span> +</span><span id="L-3739"><a href="#L-3739"><span class="linenos">3739</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">_this</span><span class="p">)</span> +</span><span id="L-3740"><a href="#L-3740"><span class="linenos">3740</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3741"><a href="#L-3741"><span class="linenos">3741</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3742"><a href="#L-3742"><span class="linenos">3742</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> +</span><span id="L-3743"><a href="#L-3743"><span class="linenos">3743</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> +</span><span id="L-3744"><a href="#L-3744"><span class="linenos">3744</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> +</span><span id="L-3745"><a href="#L-3745"><span class="linenos">3745</span></a> <span class="p">)</span> +</span><span id="L-3746"><a href="#L-3746"><span class="linenos">3746</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">):</span> +</span><span id="L-3747"><a href="#L-3747"><span class="linenos">3747</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="L-3748"><a href="#L-3748"><span class="linenos">3748</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="L-3749"><a href="#L-3749"><span class="linenos">3749</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="L-3750"><a href="#L-3750"><span class="linenos">3750</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3751"><a href="#L-3751"><span class="linenos">3751</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3752"><a href="#L-3752"><span class="linenos">3752</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> +</span><span id="L-3753"><a href="#L-3753"><span class="linenos">3753</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> +</span><span id="L-3754"><a href="#L-3754"><span class="linenos">3754</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> +</span><span id="L-3755"><a href="#L-3755"><span class="linenos">3755</span></a> <span class="p">)</span> +</span><span id="L-3756"><a href="#L-3756"><span class="linenos">3756</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> +</span><span id="L-3757"><a href="#L-3757"><span class="linenos">3757</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="L-3758"><a href="#L-3758"><span class="linenos">3758</span></a> +</span><span id="L-3759"><a href="#L-3759"><span class="linenos">3759</span></a> <span class="n">whens</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">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">When</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">then</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> </span><span id="L-3760"><a href="#L-3760"><span class="linenos">3760</span></a> -</span><span id="L-3761"><a href="#L-3761"><span class="linenos">3761</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-3762"><a href="#L-3762"><span class="linenos">3762</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-3763"><a href="#L-3763"><span class="linenos">3763</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3764"><a href="#L-3764"><span class="linenos">3764</span></a> -</span><span id="L-3765"><a href="#L-3765"><span class="linenos">3765</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span> -</span><span id="L-3766"><a href="#L-3766"><span class="linenos">3766</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="L-3767"><a href="#L-3767"><span class="linenos">3767</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3768"><a href="#L-3768"><span class="linenos">3768</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-3769"><a href="#L-3769"><span class="linenos">3769</span></a> -</span><span id="L-3770"><a href="#L-3770"><span class="linenos">3770</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3761"><a href="#L-3761"><span class="linenos">3761</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="L-3762"><a href="#L-3762"><span class="linenos">3762</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">,</span> +</span><span id="L-3763"><a href="#L-3763"><span class="linenos">3763</span></a> <span class="n">this</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> +</span><span id="L-3764"><a href="#L-3764"><span class="linenos">3764</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> +</span><span id="L-3765"><a href="#L-3765"><span class="linenos">3765</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> +</span><span id="L-3766"><a href="#L-3766"><span class="linenos">3766</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">whens</span><span class="p">,</span> +</span><span id="L-3767"><a href="#L-3767"><span class="linenos">3767</span></a> <span class="p">)</span> +</span><span id="L-3768"><a href="#L-3768"><span class="linenos">3768</span></a> +</span><span id="L-3769"><a href="#L-3769"><span class="linenos">3769</span></a> <span class="k">def</span> <span class="nf">_parse_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="L-3770"><a href="#L-3770"><span class="linenos">3770</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Set</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">))</span> </span><span id="L-3771"><a href="#L-3771"><span class="linenos">3771</span></a> -</span><span id="L-3772"><a href="#L-3772"><span class="linenos">3772</span></a> <span class="k">def</span> <span class="nf">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">types</span><span class="p">):</span> -</span><span id="L-3773"><a href="#L-3773"><span class="linenos">3773</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="L-3774"><a href="#L-3774"><span class="linenos">3774</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3775"><a href="#L-3775"><span class="linenos">3775</span></a> -</span><span id="L-3776"><a href="#L-3776"><span class="linenos">3776</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="n">types</span><span class="p">:</span> -</span><span id="L-3777"><a href="#L-3777"><span class="linenos">3777</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3778"><a href="#L-3778"><span class="linenos">3778</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-3779"><a href="#L-3779"><span class="linenos">3779</span></a> -</span><span id="L-3780"><a href="#L-3780"><span class="linenos">3780</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3781"><a href="#L-3781"><span class="linenos">3781</span></a> -</span><span id="L-3782"><a href="#L-3782"><span class="linenos">3782</span></a> <span class="k">def</span> <span class="nf">_match_pair</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type_a</span><span class="p">,</span> <span class="n">token_type_b</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-3783"><a href="#L-3783"><span class="linenos">3783</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="L-3784"><a href="#L-3784"><span class="linenos">3784</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3785"><a href="#L-3785"><span class="linenos">3785</span></a> -</span><span id="L-3786"><a href="#L-3786"><span class="linenos">3786</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_a</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_b</span><span class="p">:</span> -</span><span id="L-3787"><a href="#L-3787"><span class="linenos">3787</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="L-3788"><a href="#L-3788"><span class="linenos">3788</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> -</span><span id="L-3789"><a href="#L-3789"><span class="linenos">3789</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-3790"><a href="#L-3790"><span class="linenos">3790</span></a> -</span><span id="L-3791"><a href="#L-3791"><span class="linenos">3791</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="L-3792"><a href="#L-3792"><span class="linenos">3792</span></a> -</span><span id="L-3793"><a href="#L-3793"><span class="linenos">3793</span></a> <span class="k">def</span> <span class="nf">_match_l_paren</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="kc">None</span><span class="p">):</span> -</span><span id="L-3794"><a href="#L-3794"><span class="linenos">3794</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="L-3795"><a href="#L-3795"><span class="linenos">3795</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> -</span><span id="L-3796"><a href="#L-3796"><span class="linenos">3796</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="L-3797"><a href="#L-3797"><span class="linenos">3797</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-3798"><a href="#L-3798"><span class="linenos">3798</span></a> -</span><span id="L-3799"><a href="#L-3799"><span class="linenos">3799</span></a> <span class="k">def</span> <span class="nf">_match_r_paren</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="kc">None</span><span class="p">):</span> -</span><span id="L-3800"><a href="#L-3800"><span class="linenos">3800</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="L-3801"><a href="#L-3801"><span class="linenos">3801</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">)</span> -</span><span id="L-3802"><a href="#L-3802"><span class="linenos">3802</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="L-3803"><a href="#L-3803"><span class="linenos">3803</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="L-3804"><a href="#L-3804"><span class="linenos">3804</span></a> -</span><span id="L-3805"><a href="#L-3805"><span class="linenos">3805</span></a> <span class="k">def</span> <span class="nf">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">texts</span><span class="p">):</span> -</span><span id="L-3806"><a href="#L-3806"><span class="linenos">3806</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> -</span><span id="L-3807"><a href="#L-3807"><span class="linenos">3807</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3808"><a href="#L-3808"><span class="linenos">3808</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-3809"><a href="#L-3809"><span class="linenos">3809</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="L-3810"><a href="#L-3810"><span class="linenos">3810</span></a> -</span><span id="L-3811"><a href="#L-3811"><span class="linenos">3811</span></a> <span class="k">def</span> <span class="nf">_match_text_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="L-3812"><a href="#L-3812"><span class="linenos">3812</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="L-3813"><a href="#L-3813"><span class="linenos">3813</span></a> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> -</span><span id="L-3814"><a href="#L-3814"><span class="linenos">3814</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="n">text</span><span class="p">:</span> -</span><span id="L-3815"><a href="#L-3815"><span class="linenos">3815</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-3816"><a href="#L-3816"><span class="linenos">3816</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-3817"><a href="#L-3817"><span class="linenos">3817</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="L-3818"><a href="#L-3818"><span class="linenos">3818</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="L-3819"><a href="#L-3819"><span class="linenos">3819</span></a> -</span><span id="L-3820"><a href="#L-3820"><span class="linenos">3820</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="L-3821"><a href="#L-3821"><span class="linenos">3821</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3772"><a href="#L-3772"><span class="linenos">3772</span></a> <span class="k">def</span> <span class="nf">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="L-3773"><a href="#L-3773"><span class="linenos">3773</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-3774"><a href="#L-3774"><span class="linenos">3774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3775"><a href="#L-3775"><span class="linenos">3775</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">))</span> +</span><span id="L-3776"><a href="#L-3776"><span class="linenos">3776</span></a> +</span><span id="L-3777"><a href="#L-3777"><span class="linenos">3777</span></a> <span class="k">def</span> <span class="nf">_find_parser</span><span class="p">(</span> +</span><span id="L-3778"><a href="#L-3778"><span class="linenos">3778</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parsers</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">],</span> <span class="n">trie</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> +</span><span id="L-3779"><a href="#L-3779"><span class="linenos">3779</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]:</span> +</span><span id="L-3780"><a href="#L-3780"><span class="linenos">3780</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-3781"><a href="#L-3781"><span class="linenos">3781</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-3782"><a href="#L-3782"><span class="linenos">3782</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-3783"><a href="#L-3783"><span class="linenos">3783</span></a> <span class="c1"># The current token might be multiple words</span> +</span><span id="L-3784"><a href="#L-3784"><span class="linenos">3784</span></a> <span class="n">curr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-3785"><a href="#L-3785"><span class="linenos">3785</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">curr</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="L-3786"><a href="#L-3786"><span class="linenos">3786</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr</span><span class="p">)</span> +</span><span id="L-3787"><a href="#L-3787"><span class="linenos">3787</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3788"><a href="#L-3788"><span class="linenos">3788</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> +</span><span id="L-3789"><a href="#L-3789"><span class="linenos">3789</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-3790"><a href="#L-3790"><span class="linenos">3790</span></a> <span class="k">break</span> +</span><span id="L-3791"><a href="#L-3791"><span class="linenos">3791</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="L-3792"><a href="#L-3792"><span class="linenos">3792</span></a> <span class="n">subparser</span> <span class="o">=</span> <span class="n">parsers</span><span class="p">[</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">this</span><span class="p">)]</span> +</span><span id="L-3793"><a href="#L-3793"><span class="linenos">3793</span></a> <span class="k">return</span> <span class="n">subparser</span> +</span><span id="L-3794"><a href="#L-3794"><span class="linenos">3794</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3795"><a href="#L-3795"><span class="linenos">3795</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3796"><a href="#L-3796"><span class="linenos">3796</span></a> +</span><span id="L-3797"><a href="#L-3797"><span class="linenos">3797</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-3798"><a href="#L-3798"><span class="linenos">3798</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-3799"><a href="#L-3799"><span class="linenos">3799</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3800"><a href="#L-3800"><span class="linenos">3800</span></a> +</span><span id="L-3801"><a href="#L-3801"><span class="linenos">3801</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span> +</span><span id="L-3802"><a href="#L-3802"><span class="linenos">3802</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-3803"><a href="#L-3803"><span class="linenos">3803</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3804"><a href="#L-3804"><span class="linenos">3804</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-3805"><a href="#L-3805"><span class="linenos">3805</span></a> +</span><span id="L-3806"><a href="#L-3806"><span class="linenos">3806</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3807"><a href="#L-3807"><span class="linenos">3807</span></a> +</span><span id="L-3808"><a href="#L-3808"><span class="linenos">3808</span></a> <span class="k">def</span> <span class="nf">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">types</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-3809"><a href="#L-3809"><span class="linenos">3809</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="L-3810"><a href="#L-3810"><span class="linenos">3810</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3811"><a href="#L-3811"><span class="linenos">3811</span></a> +</span><span id="L-3812"><a href="#L-3812"><span class="linenos">3812</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="n">types</span><span class="p">:</span> +</span><span id="L-3813"><a href="#L-3813"><span class="linenos">3813</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-3814"><a href="#L-3814"><span class="linenos">3814</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3815"><a href="#L-3815"><span class="linenos">3815</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-3816"><a href="#L-3816"><span class="linenos">3816</span></a> +</span><span id="L-3817"><a href="#L-3817"><span class="linenos">3817</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3818"><a href="#L-3818"><span class="linenos">3818</span></a> +</span><span id="L-3819"><a href="#L-3819"><span class="linenos">3819</span></a> <span class="k">def</span> <span class="nf">_match_pair</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type_a</span><span class="p">,</span> <span class="n">token_type_b</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-3820"><a href="#L-3820"><span class="linenos">3820</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="L-3821"><a href="#L-3821"><span class="linenos">3821</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-3822"><a href="#L-3822"><span class="linenos">3822</span></a> -</span><span id="L-3823"><a href="#L-3823"><span class="linenos">3823</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-3824"><a href="#L-3824"><span class="linenos">3824</span></a> -</span><span id="L-3825"><a href="#L-3825"><span class="linenos">3825</span></a> <span class="k">def</span> <span class="nf">_replace_columns_with_dots</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">):</span> -</span><span id="L-3826"><a href="#L-3826"><span class="linenos">3826</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> -</span><span id="L-3827"><a href="#L-3827"><span class="linenos">3827</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">)</span> -</span><span id="L-3828"><a href="#L-3828"><span class="linenos">3828</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="L-3829"><a href="#L-3829"><span class="linenos">3829</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">)</span> -</span><span id="L-3830"><a href="#L-3830"><span class="linenos">3830</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">)</span> -</span><span id="L-3831"><a href="#L-3831"><span class="linenos">3831</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-3832"><a href="#L-3832"><span class="linenos">3832</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</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-3833"><a href="#L-3833"><span class="linenos">3833</span></a> <span class="k">if</span> <span class="n">table</span> -</span><span id="L-3834"><a href="#L-3834"><span class="linenos">3834</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-3835"><a href="#L-3835"><span class="linenos">3835</span></a> <span class="p">)</span> -</span><span id="L-3836"><a href="#L-3836"><span class="linenos">3836</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="L-3837"><a href="#L-3837"><span class="linenos">3837</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="L-3838"><a href="#L-3838"><span class="linenos">3838</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="L-3839"><a href="#L-3839"><span class="linenos">3839</span></a> -</span><span id="L-3840"><a href="#L-3840"><span class="linenos">3840</span></a> <span class="k">def</span> <span class="nf">_replace_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">,</span> <span class="n">lambda_variables</span><span class="p">):</span> -</span><span id="L-3841"><a href="#L-3841"><span class="linenos">3841</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="L-3842"><a href="#L-3842"><span class="linenos">3842</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">lambda_variables</span><span class="p">:</span> -</span><span id="L-3843"><a href="#L-3843"><span class="linenos">3843</span></a> <span class="k">return</span> <span class="n">node</span><span class="o">.</span><span class="n">this</span> -</span><span id="L-3844"><a href="#L-3844"><span class="linenos">3844</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-3823"><a href="#L-3823"><span class="linenos">3823</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_a</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_b</span><span class="p">:</span> +</span><span id="L-3824"><a href="#L-3824"><span class="linenos">3824</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-3825"><a href="#L-3825"><span class="linenos">3825</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> +</span><span id="L-3826"><a href="#L-3826"><span class="linenos">3826</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-3827"><a href="#L-3827"><span class="linenos">3827</span></a> +</span><span id="L-3828"><a href="#L-3828"><span class="linenos">3828</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="L-3829"><a href="#L-3829"><span class="linenos">3829</span></a> +</span><span id="L-3830"><a href="#L-3830"><span class="linenos">3830</span></a> <span class="k">def</span> <span class="nf">_match_l_paren</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="kc">None</span><span class="p">):</span> +</span><span id="L-3831"><a href="#L-3831"><span class="linenos">3831</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="L-3832"><a href="#L-3832"><span class="linenos">3832</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> +</span><span id="L-3833"><a href="#L-3833"><span class="linenos">3833</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="L-3834"><a href="#L-3834"><span class="linenos">3834</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-3835"><a href="#L-3835"><span class="linenos">3835</span></a> +</span><span id="L-3836"><a href="#L-3836"><span class="linenos">3836</span></a> <span class="k">def</span> <span class="nf">_match_r_paren</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="kc">None</span><span class="p">):</span> +</span><span id="L-3837"><a href="#L-3837"><span class="linenos">3837</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="L-3838"><a href="#L-3838"><span class="linenos">3838</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">)</span> +</span><span id="L-3839"><a href="#L-3839"><span class="linenos">3839</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="L-3840"><a href="#L-3840"><span class="linenos">3840</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="L-3841"><a href="#L-3841"><span class="linenos">3841</span></a> +</span><span id="L-3842"><a href="#L-3842"><span class="linenos">3842</span></a> <span class="k">def</span> <span class="nf">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-3843"><a href="#L-3843"><span class="linenos">3843</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> +</span><span id="L-3844"><a href="#L-3844"><span class="linenos">3844</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-3845"><a href="#L-3845"><span class="linenos">3845</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3846"><a href="#L-3846"><span class="linenos">3846</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-3847"><a href="#L-3847"><span class="linenos">3847</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-3848"><a href="#L-3848"><span class="linenos">3848</span></a> +</span><span id="L-3849"><a href="#L-3849"><span class="linenos">3849</span></a> <span class="k">def</span> <span class="nf">_match_text_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="L-3850"><a href="#L-3850"><span class="linenos">3850</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="L-3851"><a href="#L-3851"><span class="linenos">3851</span></a> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> +</span><span id="L-3852"><a href="#L-3852"><span class="linenos">3852</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="n">text</span><span class="p">:</span> +</span><span id="L-3853"><a href="#L-3853"><span class="linenos">3853</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-3854"><a href="#L-3854"><span class="linenos">3854</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-3855"><a href="#L-3855"><span class="linenos">3855</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3856"><a href="#L-3856"><span class="linenos">3856</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-3857"><a href="#L-3857"><span class="linenos">3857</span></a> +</span><span id="L-3858"><a href="#L-3858"><span class="linenos">3858</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="L-3859"><a href="#L-3859"><span class="linenos">3859</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="L-3860"><a href="#L-3860"><span class="linenos">3860</span></a> +</span><span id="L-3861"><a href="#L-3861"><span class="linenos">3861</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-3862"><a href="#L-3862"><span class="linenos">3862</span></a> +</span><span id="L-3863"><a href="#L-3863"><span class="linenos">3863</span></a> <span class="k">def</span> <span class="nf">_replace_columns_with_dots</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">):</span> +</span><span id="L-3864"><a href="#L-3864"><span class="linenos">3864</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> +</span><span id="L-3865"><a href="#L-3865"><span class="linenos">3865</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">)</span> +</span><span id="L-3866"><a href="#L-3866"><span class="linenos">3866</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="L-3867"><a href="#L-3867"><span class="linenos">3867</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">)</span> +</span><span id="L-3868"><a href="#L-3868"><span class="linenos">3868</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">)</span> +</span><span id="L-3869"><a href="#L-3869"><span class="linenos">3869</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-3870"><a href="#L-3870"><span class="linenos">3870</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</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-3871"><a href="#L-3871"><span class="linenos">3871</span></a> <span class="k">if</span> <span class="n">table</span> +</span><span id="L-3872"><a href="#L-3872"><span class="linenos">3872</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-3873"><a href="#L-3873"><span class="linenos">3873</span></a> <span class="p">)</span> +</span><span id="L-3874"><a href="#L-3874"><span class="linenos">3874</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="L-3875"><a href="#L-3875"><span class="linenos">3875</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="L-3876"><a href="#L-3876"><span class="linenos">3876</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="L-3877"><a href="#L-3877"><span class="linenos">3877</span></a> +</span><span id="L-3878"><a href="#L-3878"><span class="linenos">3878</span></a> <span class="k">def</span> <span class="nf">_replace_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">,</span> <span class="n">lambda_variables</span><span class="p">):</span> +</span><span id="L-3879"><a href="#L-3879"><span class="linenos">3879</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="L-3880"><a href="#L-3880"><span class="linenos">3880</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">lambda_variables</span><span class="p">:</span> +</span><span id="L-3881"><a href="#L-3881"><span class="linenos">3881</span></a> <span class="k">return</span> <span class="n">node</span><span class="o">.</span><span class="n">this</span> +</span><span id="L-3882"><a href="#L-3882"><span class="linenos">3882</span></a> <span class="k">return</span> <span class="n">node</span> </span></pre></div> @@ -4077,937 +4115,937 @@ </span><span id="Parser-145"><a href="#Parser-145"><span class="linenos"> 145</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IMAGE</span><span class="p">,</span> </span><span id="Parser-146"><a href="#Parser-146"><span class="linenos"> 146</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> </span><span id="Parser-147"><a href="#Parser-147"><span class="linenos"> 147</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="Parser-148"><a href="#Parser-148"><span class="linenos"> 148</span></a> <span class="o">*</span><span class="n">NESTED_TYPE_TOKENS</span><span class="p">,</span> -</span><span id="Parser-149"><a href="#Parser-149"><span class="linenos"> 149</span></a> <span class="p">}</span> -</span><span id="Parser-150"><a href="#Parser-150"><span class="linenos"> 150</span></a> -</span><span id="Parser-151"><a href="#Parser-151"><span class="linenos"> 151</span></a> <span class="n">SUBQUERY_PREDICATES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-152"><a href="#Parser-152"><span class="linenos"> 152</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> -</span><span id="Parser-153"><a href="#Parser-153"><span class="linenos"> 153</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">All</span><span class="p">,</span> -</span><span id="Parser-154"><a href="#Parser-154"><span class="linenos"> 154</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">,</span> -</span><span id="Parser-155"><a href="#Parser-155"><span class="linenos"> 155</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> -</span><span id="Parser-156"><a href="#Parser-156"><span class="linenos"> 156</span></a> <span class="p">}</span> -</span><span id="Parser-157"><a href="#Parser-157"><span class="linenos"> 157</span></a> -</span><span id="Parser-158"><a href="#Parser-158"><span class="linenos"> 158</span></a> <span class="n">RESERVED_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span> -</span><span id="Parser-159"><a href="#Parser-159"><span class="linenos"> 159</span></a> -</span><span id="Parser-160"><a href="#Parser-160"><span class="linenos"> 160</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-161"><a href="#Parser-161"><span class="linenos"> 161</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> -</span><span id="Parser-162"><a href="#Parser-162"><span class="linenos"> 162</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="Parser-163"><a href="#Parser-163"><span class="linenos"> 163</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="Parser-164"><a href="#Parser-164"><span class="linenos"> 164</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="Parser-165"><a href="#Parser-165"><span class="linenos"> 165</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> -</span><span id="Parser-166"><a href="#Parser-166"><span class="linenos"> 166</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> -</span><span id="Parser-167"><a href="#Parser-167"><span class="linenos"> 167</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">,</span> -</span><span id="Parser-168"><a href="#Parser-168"><span class="linenos"> 168</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> -</span><span id="Parser-169"><a href="#Parser-169"><span class="linenos"> 169</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> -</span><span id="Parser-170"><a href="#Parser-170"><span class="linenos"> 170</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="Parser-171"><a href="#Parser-171"><span class="linenos"> 171</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="Parser-172"><a href="#Parser-172"><span class="linenos"> 172</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Parser-173"><a href="#Parser-173"><span class="linenos"> 173</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> -</span><span id="Parser-174"><a href="#Parser-174"><span class="linenos"> 174</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> -</span><span id="Parser-175"><a href="#Parser-175"><span class="linenos"> 175</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="Parser-176"><a href="#Parser-176"><span class="linenos"> 176</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="Parser-177"><a href="#Parser-177"><span class="linenos"> 177</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> -</span><span id="Parser-178"><a href="#Parser-178"><span class="linenos"> 178</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> -</span><span id="Parser-179"><a href="#Parser-179"><span class="linenos"> 179</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> -</span><span id="Parser-180"><a href="#Parser-180"><span class="linenos"> 180</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> -</span><span id="Parser-181"><a href="#Parser-181"><span class="linenos"> 181</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> -</span><span id="Parser-182"><a href="#Parser-182"><span class="linenos"> 182</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="Parser-183"><a href="#Parser-183"><span class="linenos"> 183</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> -</span><span id="Parser-184"><a href="#Parser-184"><span class="linenos"> 184</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> -</span><span id="Parser-185"><a href="#Parser-185"><span class="linenos"> 185</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="Parser-186"><a href="#Parser-186"><span class="linenos"> 186</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="Parser-187"><a href="#Parser-187"><span class="linenos"> 187</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">,</span> -</span><span id="Parser-188"><a href="#Parser-188"><span class="linenos"> 188</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="Parser-189"><a href="#Parser-189"><span class="linenos"> 189</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="Parser-190"><a href="#Parser-190"><span class="linenos"> 190</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">,</span> -</span><span id="Parser-191"><a href="#Parser-191"><span class="linenos"> 191</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="Parser-192"><a href="#Parser-192"><span class="linenos"> 192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="Parser-193"><a href="#Parser-193"><span class="linenos"> 193</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="Parser-194"><a href="#Parser-194"><span class="linenos"> 194</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">,</span> -</span><span id="Parser-195"><a href="#Parser-195"><span class="linenos"> 195</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> -</span><span id="Parser-196"><a href="#Parser-196"><span class="linenos"> 196</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Parser-197"><a href="#Parser-197"><span class="linenos"> 197</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">,</span> -</span><span id="Parser-198"><a href="#Parser-198"><span class="linenos"> 198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">,</span> -</span><span id="Parser-199"><a href="#Parser-199"><span class="linenos"> 199</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="Parser-200"><a href="#Parser-200"><span class="linenos"> 200</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="Parser-201"><a href="#Parser-201"><span class="linenos"> 201</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> -</span><span id="Parser-202"><a href="#Parser-202"><span class="linenos"> 202</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="Parser-203"><a href="#Parser-203"><span class="linenos"> 203</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> -</span><span id="Parser-204"><a href="#Parser-204"><span class="linenos"> 204</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">,</span> -</span><span id="Parser-205"><a href="#Parser-205"><span class="linenos"> 205</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> -</span><span id="Parser-206"><a href="#Parser-206"><span class="linenos"> 206</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> -</span><span id="Parser-207"><a href="#Parser-207"><span class="linenos"> 207</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> -</span><span id="Parser-208"><a href="#Parser-208"><span class="linenos"> 208</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> -</span><span id="Parser-209"><a href="#Parser-209"><span class="linenos"> 209</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="Parser-210"><a href="#Parser-210"><span class="linenos"> 210</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> -</span><span id="Parser-211"><a href="#Parser-211"><span class="linenos"> 211</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Parser-212"><a href="#Parser-212"><span class="linenos"> 212</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="Parser-213"><a href="#Parser-213"><span class="linenos"> 213</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> -</span><span id="Parser-214"><a href="#Parser-214"><span class="linenos"> 214</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="Parser-215"><a href="#Parser-215"><span class="linenos"> 215</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">,</span> -</span><span id="Parser-216"><a href="#Parser-216"><span class="linenos"> 216</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="Parser-217"><a href="#Parser-217"><span class="linenos"> 217</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="Parser-218"><a href="#Parser-218"><span class="linenos"> 218</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="Parser-219"><a href="#Parser-219"><span class="linenos"> 219</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">,</span> -</span><span id="Parser-220"><a href="#Parser-220"><span class="linenos"> 220</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Parser-221"><a href="#Parser-221"><span class="linenos"> 221</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="Parser-222"><a href="#Parser-222"><span class="linenos"> 222</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> -</span><span id="Parser-223"><a href="#Parser-223"><span class="linenos"> 223</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> -</span><span id="Parser-224"><a href="#Parser-224"><span class="linenos"> 224</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> -</span><span id="Parser-225"><a href="#Parser-225"><span class="linenos"> 225</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> -</span><span id="Parser-226"><a href="#Parser-226"><span class="linenos"> 226</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> -</span><span id="Parser-227"><a href="#Parser-227"><span class="linenos"> 227</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">,</span> -</span><span id="Parser-228"><a href="#Parser-228"><span class="linenos"> 228</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> -</span><span id="Parser-229"><a href="#Parser-229"><span class="linenos"> 229</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="Parser-230"><a href="#Parser-230"><span class="linenos"> 230</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="Parser-231"><a href="#Parser-231"><span class="linenos"> 231</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="Parser-232"><a href="#Parser-232"><span class="linenos"> 232</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="Parser-233"><a href="#Parser-233"><span class="linenos"> 233</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> -</span><span id="Parser-234"><a href="#Parser-234"><span class="linenos"> 234</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> -</span><span id="Parser-235"><a href="#Parser-235"><span class="linenos"> 235</span></a> <span class="o">*</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">,</span> -</span><span id="Parser-236"><a href="#Parser-236"><span class="linenos"> 236</span></a> <span class="p">}</span> -</span><span id="Parser-237"><a href="#Parser-237"><span class="linenos"> 237</span></a> -</span><span id="Parser-238"><a href="#Parser-238"><span class="linenos"> 238</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span> -</span><span id="Parser-239"><a href="#Parser-239"><span class="linenos"> 239</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="Parser-240"><a href="#Parser-240"><span class="linenos"> 240</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Parser-241"><a href="#Parser-241"><span class="linenos"> 241</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="Parser-242"><a href="#Parser-242"><span class="linenos"> 242</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="Parser-243"><a href="#Parser-243"><span class="linenos"> 243</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Parser-244"><a href="#Parser-244"><span class="linenos"> 244</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="Parser-245"><a href="#Parser-245"><span class="linenos"> 245</span></a> <span class="p">}</span> -</span><span id="Parser-246"><a href="#Parser-246"><span class="linenos"> 246</span></a> -</span><span id="Parser-247"><a href="#Parser-247"><span class="linenos"> 247</span></a> <span class="n">UPDATE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">}</span> -</span><span id="Parser-248"><a href="#Parser-248"><span class="linenos"> 248</span></a> -</span><span id="Parser-249"><a href="#Parser-249"><span class="linenos"> 249</span></a> <span class="n">TRIM_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">}</span> -</span><span id="Parser-250"><a href="#Parser-250"><span class="linenos"> 250</span></a> -</span><span id="Parser-251"><a href="#Parser-251"><span class="linenos"> 251</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-252"><a href="#Parser-252"><span class="linenos"> 252</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Parser-253"><a href="#Parser-253"><span class="linenos"> 253</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> -</span><span id="Parser-254"><a href="#Parser-254"><span class="linenos"> 254</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> -</span><span id="Parser-255"><a href="#Parser-255"><span class="linenos"> 255</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> -</span><span id="Parser-256"><a href="#Parser-256"><span class="linenos"> 256</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> -</span><span id="Parser-257"><a href="#Parser-257"><span class="linenos"> 257</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="Parser-258"><a href="#Parser-258"><span class="linenos"> 258</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="Parser-259"><a href="#Parser-259"><span class="linenos"> 259</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="Parser-260"><a href="#Parser-260"><span class="linenos"> 260</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="Parser-261"><a href="#Parser-261"><span class="linenos"> 261</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="Parser-262"><a href="#Parser-262"><span class="linenos"> 262</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="Parser-263"><a href="#Parser-263"><span class="linenos"> 263</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="Parser-264"><a href="#Parser-264"><span class="linenos"> 264</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="Parser-265"><a href="#Parser-265"><span class="linenos"> 265</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="Parser-266"><a href="#Parser-266"><span class="linenos"> 266</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="Parser-267"><a href="#Parser-267"><span class="linenos"> 267</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> -</span><span id="Parser-268"><a href="#Parser-268"><span class="linenos"> 268</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="Parser-269"><a href="#Parser-269"><span class="linenos"> 269</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="Parser-270"><a href="#Parser-270"><span class="linenos"> 270</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="Parser-271"><a href="#Parser-271"><span class="linenos"> 271</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> -</span><span id="Parser-272"><a href="#Parser-272"><span class="linenos"> 272</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Parser-273"><a href="#Parser-273"><span class="linenos"> 273</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Parser-274"><a href="#Parser-274"><span class="linenos"> 274</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="Parser-275"><a href="#Parser-275"><span class="linenos"> 275</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="Parser-276"><a href="#Parser-276"><span class="linenos"> 276</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Parser-277"><a href="#Parser-277"><span class="linenos"> 277</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Parser-278"><a href="#Parser-278"><span class="linenos"> 278</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="Parser-279"><a href="#Parser-279"><span class="linenos"> 279</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="Parser-280"><a href="#Parser-280"><span class="linenos"> 280</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> -</span><span id="Parser-281"><a href="#Parser-281"><span class="linenos"> 281</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> -</span><span id="Parser-282"><a href="#Parser-282"><span class="linenos"> 282</span></a> <span class="p">}</span> -</span><span id="Parser-283"><a href="#Parser-283"><span class="linenos"> 283</span></a> -</span><span id="Parser-284"><a href="#Parser-284"><span class="linenos"> 284</span></a> <span class="n">CONJUNCTION</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-285"><a href="#Parser-285"><span class="linenos"> 285</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">,</span> -</span><span id="Parser-286"><a href="#Parser-286"><span class="linenos"> 286</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">,</span> -</span><span id="Parser-287"><a href="#Parser-287"><span class="linenos"> 287</span></a> <span class="p">}</span> -</span><span id="Parser-288"><a href="#Parser-288"><span class="linenos"> 288</span></a> -</span><span id="Parser-289"><a href="#Parser-289"><span class="linenos"> 289</span></a> <span class="n">EQUALITY</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-290"><a href="#Parser-290"><span class="linenos"> 290</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="Parser-291"><a href="#Parser-291"><span class="linenos"> 291</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="Parser-292"><a href="#Parser-292"><span class="linenos"> 292</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span><span class="p">,</span> -</span><span id="Parser-293"><a href="#Parser-293"><span class="linenos"> 293</span></a> <span class="p">}</span> -</span><span id="Parser-294"><a href="#Parser-294"><span class="linenos"> 294</span></a> -</span><span id="Parser-295"><a href="#Parser-295"><span class="linenos"> 295</span></a> <span class="n">COMPARISON</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-296"><a href="#Parser-296"><span class="linenos"> 296</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> -</span><span id="Parser-297"><a href="#Parser-297"><span class="linenos"> 297</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> -</span><span id="Parser-298"><a href="#Parser-298"><span class="linenos"> 298</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> -</span><span id="Parser-299"><a href="#Parser-299"><span class="linenos"> 299</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> -</span><span id="Parser-300"><a href="#Parser-300"><span class="linenos"> 300</span></a> <span class="p">}</span> -</span><span id="Parser-301"><a href="#Parser-301"><span class="linenos"> 301</span></a> -</span><span id="Parser-302"><a href="#Parser-302"><span class="linenos"> 302</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-303"><a href="#Parser-303"><span class="linenos"> 303</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</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="Parser-304"><a href="#Parser-304"><span class="linenos"> 304</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</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="Parser-305"><a href="#Parser-305"><span class="linenos"> 305</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</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="Parser-306"><a href="#Parser-306"><span class="linenos"> 306</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">,</span> -</span><span id="Parser-307"><a href="#Parser-307"><span class="linenos"> 307</span></a> <span class="p">}</span> -</span><span id="Parser-308"><a href="#Parser-308"><span class="linenos"> 308</span></a> -</span><span id="Parser-309"><a href="#Parser-309"><span class="linenos"> 309</span></a> <span class="n">TERM</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-310"><a href="#Parser-310"><span class="linenos"> 310</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">,</span> -</span><span id="Parser-311"><a href="#Parser-311"><span class="linenos"> 311</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> -</span><span id="Parser-312"><a href="#Parser-312"><span class="linenos"> 312</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">,</span> -</span><span id="Parser-313"><a href="#Parser-313"><span class="linenos"> 313</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Collate</span><span class="p">,</span> -</span><span id="Parser-314"><a href="#Parser-314"><span class="linenos"> 314</span></a> <span class="p">}</span> -</span><span id="Parser-315"><a href="#Parser-315"><span class="linenos"> 315</span></a> -</span><span id="Parser-316"><a href="#Parser-316"><span class="linenos"> 316</span></a> <span class="n">FACTOR</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-317"><a href="#Parser-317"><span class="linenos"> 317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">,</span> -</span><span id="Parser-318"><a href="#Parser-318"><span class="linenos"> 318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distance</span><span class="p">,</span> -</span><span id="Parser-319"><a href="#Parser-319"><span class="linenos"> 319</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">,</span> -</span><span id="Parser-320"><a href="#Parser-320"><span class="linenos"> 320</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">,</span> -</span><span id="Parser-321"><a href="#Parser-321"><span class="linenos"> 321</span></a> <span class="p">}</span> -</span><span id="Parser-322"><a href="#Parser-322"><span class="linenos"> 322</span></a> -</span><span id="Parser-323"><a href="#Parser-323"><span class="linenos"> 323</span></a> <span class="n">TIMESTAMPS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-324"><a href="#Parser-324"><span class="linenos"> 324</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="Parser-325"><a href="#Parser-325"><span class="linenos"> 325</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Parser-326"><a href="#Parser-326"><span class="linenos"> 326</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="Parser-327"><a href="#Parser-327"><span class="linenos"> 327</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="Parser-328"><a href="#Parser-328"><span class="linenos"> 328</span></a> <span class="p">}</span> -</span><span id="Parser-329"><a href="#Parser-329"><span class="linenos"> 329</span></a> -</span><span id="Parser-330"><a href="#Parser-330"><span class="linenos"> 330</span></a> <span class="n">SET_OPERATIONS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-331"><a href="#Parser-331"><span class="linenos"> 331</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> -</span><span id="Parser-332"><a href="#Parser-332"><span class="linenos"> 332</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> -</span><span id="Parser-333"><a href="#Parser-333"><span class="linenos"> 333</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="Parser-334"><a href="#Parser-334"><span class="linenos"> 334</span></a> <span class="p">}</span> -</span><span id="Parser-335"><a href="#Parser-335"><span class="linenos"> 335</span></a> -</span><span id="Parser-336"><a href="#Parser-336"><span class="linenos"> 336</span></a> <span class="n">JOIN_SIDES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-337"><a href="#Parser-337"><span class="linenos"> 337</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Parser-338"><a href="#Parser-338"><span class="linenos"> 338</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Parser-339"><a href="#Parser-339"><span class="linenos"> 339</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> -</span><span id="Parser-340"><a href="#Parser-340"><span class="linenos"> 340</span></a> <span class="p">}</span> -</span><span id="Parser-341"><a href="#Parser-341"><span class="linenos"> 341</span></a> -</span><span id="Parser-342"><a href="#Parser-342"><span class="linenos"> 342</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-343"><a href="#Parser-343"><span class="linenos"> 343</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> -</span><span id="Parser-344"><a href="#Parser-344"><span class="linenos"> 344</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> -</span><span id="Parser-345"><a href="#Parser-345"><span class="linenos"> 345</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> -</span><span id="Parser-346"><a href="#Parser-346"><span class="linenos"> 346</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="Parser-347"><a href="#Parser-347"><span class="linenos"> 347</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="Parser-348"><a href="#Parser-348"><span class="linenos"> 348</span></a> <span class="p">}</span> -</span><span id="Parser-349"><a href="#Parser-349"><span class="linenos"> 349</span></a> -</span><span id="Parser-350"><a href="#Parser-350"><span class="linenos"> 350</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-351"><a href="#Parser-351"><span class="linenos"> 351</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-352"><a href="#Parser-352"><span class="linenos"> 352</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">,</span> -</span><span id="Parser-353"><a href="#Parser-353"><span class="linenos"> 353</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> -</span><span id="Parser-354"><a href="#Parser-354"><span class="linenos"> 354</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_lambda</span><span class="p">,</span> <span class="p">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">}</span> -</span><span id="Parser-355"><a href="#Parser-355"><span class="linenos"> 355</span></a> <span class="p">),</span> -</span><span id="Parser-356"><a href="#Parser-356"><span class="linenos"> 356</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-357"><a href="#Parser-357"><span class="linenos"> 357</span></a> <span class="p">),</span> -</span><span id="Parser-358"><a href="#Parser-358"><span class="linenos"> 358</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-359"><a href="#Parser-359"><span class="linenos"> 359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kwarg</span><span class="p">,</span> -</span><span id="Parser-360"><a href="#Parser-360"><span class="linenos"> 360</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> -</span><span id="Parser-361"><a href="#Parser-361"><span class="linenos"> 361</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> -</span><span id="Parser-362"><a href="#Parser-362"><span class="linenos"> 362</span></a> <span class="p">),</span> -</span><span id="Parser-363"><a href="#Parser-363"><span class="linenos"> 363</span></a> <span class="p">}</span> -</span><span id="Parser-364"><a href="#Parser-364"><span class="linenos"> 364</span></a> -</span><span id="Parser-365"><a href="#Parser-365"><span class="linenos"> 365</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-366"><a href="#Parser-366"><span class="linenos"> 366</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-367"><a href="#Parser-367"><span class="linenos"> 367</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-368"><a href="#Parser-368"><span class="linenos"> 368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> -</span><span id="Parser-369"><a href="#Parser-369"><span class="linenos"> 369</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-370"><a href="#Parser-370"><span class="linenos"> 370</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> -</span><span id="Parser-371"><a href="#Parser-371"><span class="linenos"> 371</span></a> <span class="p">),</span> -</span><span id="Parser-372"><a href="#Parser-372"><span class="linenos"> 372</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-373"><a href="#Parser-373"><span class="linenos"> 373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> -</span><span id="Parser-374"><a href="#Parser-374"><span class="linenos"> 374</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-375"><a href="#Parser-375"><span class="linenos"> 375</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="Parser-376"><a href="#Parser-376"><span class="linenos"> 376</span></a> <span class="p">),</span> -</span><span id="Parser-377"><a href="#Parser-377"><span class="linenos"> 377</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-378"><a href="#Parser-378"><span class="linenos"> 378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> -</span><span id="Parser-379"><a href="#Parser-379"><span class="linenos"> 379</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-380"><a href="#Parser-380"><span class="linenos"> 380</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="Parser-381"><a href="#Parser-381"><span class="linenos"> 381</span></a> <span class="p">),</span> -</span><span id="Parser-382"><a href="#Parser-382"><span class="linenos"> 382</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-383"><a href="#Parser-383"><span class="linenos"> 383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">,</span> -</span><span id="Parser-384"><a href="#Parser-384"><span class="linenos"> 384</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-385"><a href="#Parser-385"><span class="linenos"> 385</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="Parser-386"><a href="#Parser-386"><span class="linenos"> 386</span></a> <span class="p">),</span> -</span><span id="Parser-387"><a href="#Parser-387"><span class="linenos"> 387</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-388"><a href="#Parser-388"><span class="linenos"> 388</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">,</span> -</span><span id="Parser-389"><a href="#Parser-389"><span class="linenos"> 389</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-390"><a href="#Parser-390"><span class="linenos"> 390</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> -</span><span id="Parser-391"><a href="#Parser-391"><span class="linenos"> 391</span></a> <span class="p">),</span> -</span><span id="Parser-392"><a href="#Parser-392"><span class="linenos"> 392</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-393"><a href="#Parser-393"><span class="linenos"> 393</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">,</span> -</span><span id="Parser-394"><a href="#Parser-394"><span class="linenos"> 394</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-395"><a href="#Parser-395"><span class="linenos"> 395</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> -</span><span id="Parser-396"><a href="#Parser-396"><span class="linenos"> 396</span></a> <span class="p">),</span> -</span><span id="Parser-397"><a href="#Parser-397"><span class="linenos"> 397</span></a> <span class="p">}</span> -</span><span id="Parser-398"><a href="#Parser-398"><span class="linenos"> 398</span></a> -</span><span id="Parser-399"><a href="#Parser-399"><span class="linenos"> 399</span></a> <span class="n">EXPRESSION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-400"><a href="#Parser-400"><span class="linenos"> 400</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> -</span><span id="Parser-401"><a href="#Parser-401"><span class="linenos"> 401</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> -</span><span id="Parser-402"><a href="#Parser-402"><span class="linenos"> 402</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(),</span> -</span><span id="Parser-403"><a href="#Parser-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="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> -</span><span id="Parser-404"><a href="#Parser-404"><span class="linenos"> 404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> -</span><span id="Parser-405"><a href="#Parser-405"><span class="linenos"> 405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">(),</span> -</span><span id="Parser-406"><a href="#Parser-406"><span class="linenos"> 406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">(),</span> -</span><span id="Parser-407"><a href="#Parser-407"><span class="linenos"> 407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> -</span><span id="Parser-408"><a href="#Parser-408"><span class="linenos"> 408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">),</span> -</span><span id="Parser-409"><a href="#Parser-409"><span class="linenos"> 409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">),</span> -</span><span id="Parser-410"><a href="#Parser-410"><span class="linenos"> 410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(),</span> -</span><span id="Parser-411"><a href="#Parser-411"><span class="linenos"> 411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> -</span><span id="Parser-412"><a href="#Parser-412"><span class="linenos"> 412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> -</span><span id="Parser-413"><a href="#Parser-413"><span class="linenos"> 413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> -</span><span id="Parser-414"><a href="#Parser-414"><span class="linenos"> 414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(),</span> -</span><span id="Parser-415"><a href="#Parser-415"><span class="linenos"> 415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Condition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> -</span><span id="Parser-416"><a href="#Parser-416"><span class="linenos"> 416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">(),</span> -</span><span id="Parser-417"><a href="#Parser-417"><span class="linenos"> 417</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(),</span> -</span><span id="Parser-418"><a href="#Parser-418"><span class="linenos"> 418</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="Parser-419"><a href="#Parser-419"><span class="linenos"> 419</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(),</span> -</span><span id="Parser-420"><a href="#Parser-420"><span class="linenos"> 420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> -</span><span id="Parser-421"><a href="#Parser-421"><span class="linenos"> 421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">(),</span> -</span><span id="Parser-422"><a href="#Parser-422"><span class="linenos"> 422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">(),</span> -</span><span id="Parser-423"><a href="#Parser-423"><span class="linenos"> 423</span></a> <span class="s2">"JOIN_TYPE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_side_and_kind</span><span class="p">(),</span> -</span><span id="Parser-424"><a href="#Parser-424"><span class="linenos"> 424</span></a> <span class="p">}</span> -</span><span id="Parser-425"><a href="#Parser-425"><span class="linenos"> 425</span></a> -</span><span id="Parser-426"><a href="#Parser-426"><span class="linenos"> 426</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-427"><a href="#Parser-427"><span class="linenos"> 427</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter</span><span class="p">(),</span> -</span><span id="Parser-428"><a href="#Parser-428"><span class="linenos"> 428</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_transaction</span><span class="p">(),</span> -</span><span id="Parser-429"><a href="#Parser-429"><span class="linenos"> 429</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cache</span><span class="p">(),</span> -</span><span id="Parser-430"><a href="#Parser-430"><span class="linenos"> 430</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="Parser-431"><a href="#Parser-431"><span class="linenos"> 431</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create</span><span class="p">(),</span> -</span><span id="Parser-432"><a href="#Parser-432"><span class="linenos"> 432</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_delete</span><span class="p">(),</span> -</span><span id="Parser-433"><a href="#Parser-433"><span class="linenos"> 433</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> -</span><span id="Parser-434"><a href="#Parser-434"><span class="linenos"> 434</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> -</span><span id="Parser-435"><a href="#Parser-435"><span class="linenos"> 435</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(),</span> -</span><span id="Parser-436"><a href="#Parser-436"><span class="linenos"> 436</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="Parser-437"><a href="#Parser-437"><span class="linenos"> 437</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_insert</span><span class="p">(),</span> -</span><span id="Parser-438"><a href="#Parser-438"><span class="linenos"> 438</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD_DATA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_load_data</span><span class="p">(),</span> -</span><span id="Parser-439"><a href="#Parser-439"><span class="linenos"> 439</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_merge</span><span class="p">(),</span> -</span><span id="Parser-440"><a href="#Parser-440"><span class="linenos"> 440</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> -</span><span id="Parser-441"><a href="#Parser-441"><span class="linenos"> 441</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_uncache</span><span class="p">(),</span> -</span><span id="Parser-442"><a href="#Parser-442"><span class="linenos"> 442</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_update</span><span class="p">(),</span> -</span><span id="Parser-443"><a href="#Parser-443"><span class="linenos"> 443</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-444"><a href="#Parser-444"><span class="linenos"> 444</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Use</span><span class="p">,</span> -</span><span id="Parser-445"><a href="#Parser-445"><span class="linenos"> 445</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"ROLE"</span><span class="p">,</span> <span class="s2">"WAREHOUSE"</span><span class="p">,</span> <span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">))</span> -</span><span id="Parser-446"><a href="#Parser-446"><span class="linenos"> 446</span></a> <span class="ow">and</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="Parser-447"><a href="#Parser-447"><span class="linenos"> 447</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-448"><a href="#Parser-448"><span class="linenos"> 448</span></a> <span class="p">),</span> -</span><span id="Parser-449"><a href="#Parser-449"><span class="linenos"> 449</span></a> <span class="p">}</span> -</span><span id="Parser-450"><a href="#Parser-450"><span class="linenos"> 450</span></a> -</span><span id="Parser-451"><a href="#Parser-451"><span class="linenos"> 451</span></a> <span class="n">UNARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-452"><a href="#Parser-452"><span class="linenos"> 452</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">(),</span> <span class="c1"># Unary + is handled as a no-op</span> -</span><span id="Parser-453"><a href="#Parser-453"><span class="linenos"> 453</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">()),</span> -</span><span id="Parser-454"><a href="#Parser-454"><span class="linenos"> 454</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="Parser-455"><a href="#Parser-455"><span class="linenos"> 455</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Neg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> -</span><span id="Parser-456"><a href="#Parser-456"><span class="linenos"> 456</span></a> <span class="p">}</span> -</span><span id="Parser-457"><a href="#Parser-457"><span class="linenos"> 457</span></a> -</span><span id="Parser-458"><a href="#Parser-458"><span class="linenos"> 458</span></a> <span class="n">PRIMARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-459"><a href="#Parser-459"><span class="linenos"> 459</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-460"><a href="#Parser-460"><span class="linenos"> 460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span> -</span><span id="Parser-461"><a href="#Parser-461"><span class="linenos"> 461</span></a> <span class="p">),</span> -</span><span id="Parser-462"><a href="#Parser-462"><span class="linenos"> 462</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-463"><a href="#Parser-463"><span class="linenos"> 463</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span> -</span><span id="Parser-464"><a href="#Parser-464"><span class="linenos"> 464</span></a> <span class="p">),</span> -</span><span id="Parser-465"><a href="#Parser-465"><span class="linenos"> 465</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-466"><a href="#Parser-466"><span class="linenos"> 466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">,</span> -</span><span id="Parser-467"><a href="#Parser-467"><span class="linenos"> 467</span></a> <span class="o">**</span><span class="p">{</span><span class="s2">"except"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_except</span><span class="p">(),</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_replace</span><span class="p">()},</span> -</span><span id="Parser-468"><a href="#Parser-468"><span class="linenos"> 468</span></a> <span class="p">),</span> -</span><span id="Parser-469"><a href="#Parser-469"><span class="linenos"> 469</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">),</span> -</span><span id="Parser-470"><a href="#Parser-470"><span class="linenos"> 470</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-471"><a href="#Parser-471"><span class="linenos"> 471</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-472"><a href="#Parser-472"><span class="linenos"> 472</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="Parser-473"><a href="#Parser-473"><span class="linenos"> 473</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HexString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="Parser-474"><a href="#Parser-474"><span class="linenos"> 474</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ByteString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> -</span><span id="Parser-475"><a href="#Parser-475"><span class="linenos"> 475</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTRODUCER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_introducer</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> -</span><span id="Parser-476"><a href="#Parser-476"><span class="linenos"> 476</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_national</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> -</span><span id="Parser-477"><a href="#Parser-477"><span class="linenos"> 477</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SESSION_PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_session_parameter</span><span class="p">(),</span> -</span><span id="Parser-478"><a href="#Parser-478"><span class="linenos"> 478</span></a> <span class="p">}</span> -</span><span id="Parser-479"><a href="#Parser-479"><span class="linenos"> 479</span></a> -</span><span id="Parser-480"><a href="#Parser-480"><span class="linenos"> 480</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-481"><a href="#Parser-481"><span class="linenos"> 481</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">),</span> -</span><span id="Parser-482"><a href="#Parser-482"><span class="linenos"> 482</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_parameter</span><span class="p">(),</span> -</span><span id="Parser-483"><a href="#Parser-483"><span class="linenos"> 483</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-484"><a href="#Parser-484"><span class="linenos"> 484</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">))</span> -</span><span id="Parser-485"><a href="#Parser-485"><span class="linenos"> 485</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-486"><a href="#Parser-486"><span class="linenos"> 486</span></a> <span class="p">}</span> -</span><span id="Parser-487"><a href="#Parser-487"><span class="linenos"> 487</span></a> -</span><span id="Parser-488"><a href="#Parser-488"><span class="linenos"> 488</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-489"><a href="#Parser-489"><span class="linenos"> 489</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_between</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="Parser-490"><a href="#Parser-490"><span class="linenos"> 490</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="Parser-491"><a href="#Parser-491"><span class="linenos"> 491</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Glob</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-492"><a href="#Parser-492"><span class="linenos"> 492</span></a> <span class="p">),</span> -</span><span id="Parser-493"><a href="#Parser-493"><span class="linenos"> 493</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="Parser-494"><a href="#Parser-494"><span class="linenos"> 494</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> -</span><span id="Parser-495"><a href="#Parser-495"><span class="linenos"> 495</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="Parser-496"><a href="#Parser-496"><span class="linenos"> 496</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-497"><a href="#Parser-497"><span class="linenos"> 497</span></a> <span class="p">),</span> -</span><span id="Parser-498"><a href="#Parser-498"><span class="linenos"> 498</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> -</span><span id="Parser-499"><a href="#Parser-499"><span class="linenos"> 499</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-500"><a href="#Parser-500"><span class="linenos"> 500</span></a> <span class="p">),</span> -</span><span id="Parser-501"><a href="#Parser-501"><span class="linenos"> 501</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-502"><a href="#Parser-502"><span class="linenos"> 502</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-503"><a href="#Parser-503"><span class="linenos"> 503</span></a> <span class="p">),</span> -</span><span id="Parser-504"><a href="#Parser-504"><span class="linenos"> 504</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-505"><a href="#Parser-505"><span class="linenos"> 505</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-506"><a href="#Parser-506"><span class="linenos"> 506</span></a> <span class="p">),</span> -</span><span id="Parser-507"><a href="#Parser-507"><span class="linenos"> 507</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-508"><a href="#Parser-508"><span class="linenos"> 508</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SimilarTo</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-509"><a href="#Parser-509"><span class="linenos"> 509</span></a> <span class="p">),</span> -</span><span id="Parser-510"><a href="#Parser-510"><span class="linenos"> 510</span></a> <span class="p">}</span> -</span><span id="Parser-511"><a href="#Parser-511"><span class="linenos"> 511</span></a> -</span><span id="Parser-512"><a href="#Parser-512"><span class="linenos"> 512</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-513"><a href="#Parser-513"><span class="linenos"> 513</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">),</span> -</span><span id="Parser-514"><a href="#Parser-514"><span class="linenos"> 514</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(),</span> -</span><span id="Parser-515"><a href="#Parser-515"><span class="linenos"> 515</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-516"><a href="#Parser-516"><span class="linenos"> 516</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="Parser-517"><a href="#Parser-517"><span class="linenos"> 517</span></a> <span class="p">),</span> -</span><span id="Parser-518"><a href="#Parser-518"><span class="linenos"> 518</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</span><span class="p">),</span> -</span><span id="Parser-519"><a href="#Parser-519"><span class="linenos"> 519</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="Parser-520"><a href="#Parser-520"><span class="linenos"> 520</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="Parser-521"><a href="#Parser-521"><span class="linenos"> 521</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> -</span><span id="Parser-522"><a href="#Parser-522"><span class="linenos"> 522</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">),</span> -</span><span id="Parser-523"><a href="#Parser-523"><span class="linenos"> 523</span></a> <span class="s2">"STORED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> -</span><span id="Parser-524"><a href="#Parser-524"><span class="linenos"> 524</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_distkey</span><span class="p">(),</span> -</span><span id="Parser-525"><a href="#Parser-525"><span class="linenos"> 525</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">),</span> -</span><span id="Parser-526"><a href="#Parser-526"><span class="linenos"> 526</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(),</span> -</span><span id="Parser-527"><a href="#Parser-527"><span class="linenos"> 527</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> -</span><span id="Parser-528"><a href="#Parser-528"><span class="linenos"> 528</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returns</span><span class="p">(),</span> -</span><span id="Parser-529"><a href="#Parser-529"><span class="linenos"> 529</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row</span><span class="p">(),</span> -</span><span id="Parser-530"><a href="#Parser-530"><span class="linenos"> 530</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">),</span> -</span><span id="Parser-531"><a href="#Parser-531"><span class="linenos"> 531</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> -</span><span id="Parser-532"><a href="#Parser-532"><span class="linenos"> 532</span></a> <span class="s2">"TABLE_FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">),</span> -</span><span id="Parser-533"><a href="#Parser-533"><span class="linenos"> 533</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">),</span> -</span><span id="Parser-534"><a href="#Parser-534"><span class="linenos"> 534</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">),</span> -</span><span id="Parser-535"><a href="#Parser-535"><span class="linenos"> 535</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">),</span> -</span><span id="Parser-536"><a href="#Parser-536"><span class="linenos"> 536</span></a> <span class="s2">"DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-537"><a href="#Parser-537"><span class="linenos"> 537</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> -</span><span id="Parser-538"><a href="#Parser-538"><span class="linenos"> 538</span></a> <span class="p">),</span> -</span><span id="Parser-539"><a href="#Parser-539"><span class="linenos"> 539</span></a> <span class="s2">"IMMUTABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-540"><a href="#Parser-540"><span class="linenos"> 540</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> -</span><span id="Parser-541"><a href="#Parser-541"><span class="linenos"> 541</span></a> <span class="p">),</span> -</span><span id="Parser-542"><a href="#Parser-542"><span class="linenos"> 542</span></a> <span class="s2">"STABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-543"><a href="#Parser-543"><span class="linenos"> 543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"STABLE"</span><span class="p">)</span> -</span><span id="Parser-544"><a href="#Parser-544"><span class="linenos"> 544</span></a> <span class="p">),</span> -</span><span id="Parser-545"><a href="#Parser-545"><span class="linenos"> 545</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-546"><a href="#Parser-546"><span class="linenos"> 546</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> +</span><span id="Parser-148"><a href="#Parser-148"><span class="linenos"> 148</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> +</span><span id="Parser-149"><a href="#Parser-149"><span class="linenos"> 149</span></a> <span class="o">*</span><span class="n">NESTED_TYPE_TOKENS</span><span class="p">,</span> +</span><span id="Parser-150"><a href="#Parser-150"><span class="linenos"> 150</span></a> <span class="p">}</span> +</span><span id="Parser-151"><a href="#Parser-151"><span class="linenos"> 151</span></a> +</span><span id="Parser-152"><a href="#Parser-152"><span class="linenos"> 152</span></a> <span class="n">SUBQUERY_PREDICATES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-153"><a href="#Parser-153"><span class="linenos"> 153</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="Parser-154"><a href="#Parser-154"><span class="linenos"> 154</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">All</span><span class="p">,</span> +</span><span id="Parser-155"><a href="#Parser-155"><span class="linenos"> 155</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">,</span> +</span><span id="Parser-156"><a href="#Parser-156"><span class="linenos"> 156</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> +</span><span id="Parser-157"><a href="#Parser-157"><span class="linenos"> 157</span></a> <span class="p">}</span> +</span><span id="Parser-158"><a href="#Parser-158"><span class="linenos"> 158</span></a> +</span><span id="Parser-159"><a href="#Parser-159"><span class="linenos"> 159</span></a> <span class="n">RESERVED_KEYWORDS</span> <span class="o">=</span> <span class="p">{</span><span class="o">*</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="o">.</span><span class="n">values</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">}</span> +</span><span id="Parser-160"><a href="#Parser-160"><span class="linenos"> 160</span></a> +</span><span id="Parser-161"><a href="#Parser-161"><span class="linenos"> 161</span></a> <span class="n">ID_VAR_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-162"><a href="#Parser-162"><span class="linenos"> 162</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> +</span><span id="Parser-163"><a href="#Parser-163"><span class="linenos"> 163</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="Parser-164"><a href="#Parser-164"><span class="linenos"> 164</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="Parser-165"><a href="#Parser-165"><span class="linenos"> 165</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="Parser-166"><a href="#Parser-166"><span class="linenos"> 166</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span> +</span><span id="Parser-167"><a href="#Parser-167"><span class="linenos"> 167</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> +</span><span id="Parser-168"><a href="#Parser-168"><span class="linenos"> 168</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">,</span> +</span><span id="Parser-169"><a href="#Parser-169"><span class="linenos"> 169</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> +</span><span id="Parser-170"><a href="#Parser-170"><span class="linenos"> 170</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> +</span><span id="Parser-171"><a href="#Parser-171"><span class="linenos"> 171</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="Parser-172"><a href="#Parser-172"><span class="linenos"> 172</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="Parser-173"><a href="#Parser-173"><span class="linenos"> 173</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Parser-174"><a href="#Parser-174"><span class="linenos"> 174</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> +</span><span id="Parser-175"><a href="#Parser-175"><span class="linenos"> 175</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> +</span><span id="Parser-176"><a href="#Parser-176"><span class="linenos"> 176</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="Parser-177"><a href="#Parser-177"><span class="linenos"> 177</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="Parser-178"><a href="#Parser-178"><span class="linenos"> 178</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> +</span><span id="Parser-179"><a href="#Parser-179"><span class="linenos"> 179</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> +</span><span id="Parser-180"><a href="#Parser-180"><span class="linenos"> 180</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> +</span><span id="Parser-181"><a href="#Parser-181"><span class="linenos"> 181</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> +</span><span id="Parser-182"><a href="#Parser-182"><span class="linenos"> 182</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> +</span><span id="Parser-183"><a href="#Parser-183"><span class="linenos"> 183</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="Parser-184"><a href="#Parser-184"><span class="linenos"> 184</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> +</span><span id="Parser-185"><a href="#Parser-185"><span class="linenos"> 185</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> +</span><span id="Parser-186"><a href="#Parser-186"><span class="linenos"> 186</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="Parser-187"><a href="#Parser-187"><span class="linenos"> 187</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="Parser-188"><a href="#Parser-188"><span class="linenos"> 188</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">,</span> +</span><span id="Parser-189"><a href="#Parser-189"><span class="linenos"> 189</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="Parser-190"><a href="#Parser-190"><span class="linenos"> 190</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="Parser-191"><a href="#Parser-191"><span class="linenos"> 191</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">,</span> +</span><span id="Parser-192"><a href="#Parser-192"><span class="linenos"> 192</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="Parser-193"><a href="#Parser-193"><span class="linenos"> 193</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="Parser-194"><a href="#Parser-194"><span class="linenos"> 194</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="Parser-195"><a href="#Parser-195"><span class="linenos"> 195</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">,</span> +</span><span id="Parser-196"><a href="#Parser-196"><span class="linenos"> 196</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> +</span><span id="Parser-197"><a href="#Parser-197"><span class="linenos"> 197</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Parser-198"><a href="#Parser-198"><span class="linenos"> 198</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">,</span> +</span><span id="Parser-199"><a href="#Parser-199"><span class="linenos"> 199</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">,</span> +</span><span id="Parser-200"><a href="#Parser-200"><span class="linenos"> 200</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="Parser-201"><a href="#Parser-201"><span class="linenos"> 201</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="Parser-202"><a href="#Parser-202"><span class="linenos"> 202</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> +</span><span id="Parser-203"><a href="#Parser-203"><span class="linenos"> 203</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="Parser-204"><a href="#Parser-204"><span class="linenos"> 204</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> +</span><span id="Parser-205"><a href="#Parser-205"><span class="linenos"> 205</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">,</span> +</span><span id="Parser-206"><a href="#Parser-206"><span class="linenos"> 206</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> +</span><span id="Parser-207"><a href="#Parser-207"><span class="linenos"> 207</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> +</span><span id="Parser-208"><a href="#Parser-208"><span class="linenos"> 208</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> +</span><span id="Parser-209"><a href="#Parser-209"><span class="linenos"> 209</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> +</span><span id="Parser-210"><a href="#Parser-210"><span class="linenos"> 210</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="Parser-211"><a href="#Parser-211"><span class="linenos"> 211</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> +</span><span id="Parser-212"><a href="#Parser-212"><span class="linenos"> 212</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Parser-213"><a href="#Parser-213"><span class="linenos"> 213</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="Parser-214"><a href="#Parser-214"><span class="linenos"> 214</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> +</span><span id="Parser-215"><a href="#Parser-215"><span class="linenos"> 215</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="Parser-216"><a href="#Parser-216"><span class="linenos"> 216</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">,</span> +</span><span id="Parser-217"><a href="#Parser-217"><span class="linenos"> 217</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="Parser-218"><a href="#Parser-218"><span class="linenos"> 218</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="Parser-219"><a href="#Parser-219"><span class="linenos"> 219</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="Parser-220"><a href="#Parser-220"><span class="linenos"> 220</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">,</span> +</span><span id="Parser-221"><a href="#Parser-221"><span class="linenos"> 221</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Parser-222"><a href="#Parser-222"><span class="linenos"> 222</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="Parser-223"><a href="#Parser-223"><span class="linenos"> 223</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span><span class="p">,</span> +</span><span id="Parser-224"><a href="#Parser-224"><span class="linenos"> 224</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> +</span><span id="Parser-225"><a href="#Parser-225"><span class="linenos"> 225</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> +</span><span id="Parser-226"><a href="#Parser-226"><span class="linenos"> 226</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> +</span><span id="Parser-227"><a href="#Parser-227"><span class="linenos"> 227</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> +</span><span id="Parser-228"><a href="#Parser-228"><span class="linenos"> 228</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">,</span> +</span><span id="Parser-229"><a href="#Parser-229"><span class="linenos"> 229</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> +</span><span id="Parser-230"><a href="#Parser-230"><span class="linenos"> 230</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="Parser-231"><a href="#Parser-231"><span class="linenos"> 231</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="Parser-232"><a href="#Parser-232"><span class="linenos"> 232</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="Parser-233"><a href="#Parser-233"><span class="linenos"> 233</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="Parser-234"><a href="#Parser-234"><span class="linenos"> 234</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> +</span><span id="Parser-235"><a href="#Parser-235"><span class="linenos"> 235</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> +</span><span id="Parser-236"><a href="#Parser-236"><span class="linenos"> 236</span></a> <span class="o">*</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">,</span> +</span><span id="Parser-237"><a href="#Parser-237"><span class="linenos"> 237</span></a> <span class="p">}</span> +</span><span id="Parser-238"><a href="#Parser-238"><span class="linenos"> 238</span></a> +</span><span id="Parser-239"><a href="#Parser-239"><span class="linenos"> 239</span></a> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span> +</span><span id="Parser-240"><a href="#Parser-240"><span class="linenos"> 240</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="Parser-241"><a href="#Parser-241"><span class="linenos"> 241</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Parser-242"><a href="#Parser-242"><span class="linenos"> 242</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="Parser-243"><a href="#Parser-243"><span class="linenos"> 243</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="Parser-244"><a href="#Parser-244"><span class="linenos"> 244</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Parser-245"><a href="#Parser-245"><span class="linenos"> 245</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="Parser-246"><a href="#Parser-246"><span class="linenos"> 246</span></a> <span class="p">}</span> +</span><span id="Parser-247"><a href="#Parser-247"><span class="linenos"> 247</span></a> +</span><span id="Parser-248"><a href="#Parser-248"><span class="linenos"> 248</span></a> <span class="n">UPDATE_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">TABLE_ALIAS_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">}</span> +</span><span id="Parser-249"><a href="#Parser-249"><span class="linenos"> 249</span></a> +</span><span id="Parser-250"><a href="#Parser-250"><span class="linenos"> 250</span></a> <span class="n">TRIM_TYPES</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">}</span> +</span><span id="Parser-251"><a href="#Parser-251"><span class="linenos"> 251</span></a> +</span><span id="Parser-252"><a href="#Parser-252"><span class="linenos"> 252</span></a> <span class="n">FUNC_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-253"><a href="#Parser-253"><span class="linenos"> 253</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Parser-254"><a href="#Parser-254"><span class="linenos"> 254</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> +</span><span id="Parser-255"><a href="#Parser-255"><span class="linenos"> 255</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATETIME</span><span class="p">,</span> +</span><span id="Parser-256"><a href="#Parser-256"><span class="linenos"> 256</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> +</span><span id="Parser-257"><a href="#Parser-257"><span class="linenos"> 257</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIME</span><span class="p">,</span> +</span><span id="Parser-258"><a href="#Parser-258"><span class="linenos"> 258</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="Parser-259"><a href="#Parser-259"><span class="linenos"> 259</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="Parser-260"><a href="#Parser-260"><span class="linenos"> 260</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="Parser-261"><a href="#Parser-261"><span class="linenos"> 261</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="Parser-262"><a href="#Parser-262"><span class="linenos"> 262</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="Parser-263"><a href="#Parser-263"><span class="linenos"> 263</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="Parser-264"><a href="#Parser-264"><span class="linenos"> 264</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="Parser-265"><a href="#Parser-265"><span class="linenos"> 265</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="Parser-266"><a href="#Parser-266"><span class="linenos"> 266</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="Parser-267"><a href="#Parser-267"><span class="linenos"> 267</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="Parser-268"><a href="#Parser-268"><span class="linenos"> 268</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> +</span><span id="Parser-269"><a href="#Parser-269"><span class="linenos"> 269</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="Parser-270"><a href="#Parser-270"><span class="linenos"> 270</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="Parser-271"><a href="#Parser-271"><span class="linenos"> 271</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="Parser-272"><a href="#Parser-272"><span class="linenos"> 272</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> +</span><span id="Parser-273"><a href="#Parser-273"><span class="linenos"> 273</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Parser-274"><a href="#Parser-274"><span class="linenos"> 274</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Parser-275"><a href="#Parser-275"><span class="linenos"> 275</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="Parser-276"><a href="#Parser-276"><span class="linenos"> 276</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="Parser-277"><a href="#Parser-277"><span class="linenos"> 277</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Parser-278"><a href="#Parser-278"><span class="linenos"> 278</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Parser-279"><a href="#Parser-279"><span class="linenos"> 279</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="Parser-280"><a href="#Parser-280"><span class="linenos"> 280</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="Parser-281"><a href="#Parser-281"><span class="linenos"> 281</span></a> <span class="o">*</span><span class="n">TYPE_TOKENS</span><span class="p">,</span> +</span><span id="Parser-282"><a href="#Parser-282"><span class="linenos"> 282</span></a> <span class="o">*</span><span class="n">SUBQUERY_PREDICATES</span><span class="p">,</span> +</span><span id="Parser-283"><a href="#Parser-283"><span class="linenos"> 283</span></a> <span class="p">}</span> +</span><span id="Parser-284"><a href="#Parser-284"><span class="linenos"> 284</span></a> +</span><span id="Parser-285"><a href="#Parser-285"><span class="linenos"> 285</span></a> <span class="n">CONJUNCTION</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-286"><a href="#Parser-286"><span class="linenos"> 286</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">And</span><span class="p">,</span> +</span><span id="Parser-287"><a href="#Parser-287"><span class="linenos"> 287</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Or</span><span class="p">,</span> +</span><span id="Parser-288"><a href="#Parser-288"><span class="linenos"> 288</span></a> <span class="p">}</span> +</span><span id="Parser-289"><a href="#Parser-289"><span class="linenos"> 289</span></a> +</span><span id="Parser-290"><a href="#Parser-290"><span class="linenos"> 290</span></a> <span class="n">EQUALITY</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-291"><a href="#Parser-291"><span class="linenos"> 291</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="Parser-292"><a href="#Parser-292"><span class="linenos"> 292</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="Parser-293"><a href="#Parser-293"><span class="linenos"> 293</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span><span class="p">,</span> +</span><span id="Parser-294"><a href="#Parser-294"><span class="linenos"> 294</span></a> <span class="p">}</span> +</span><span id="Parser-295"><a href="#Parser-295"><span class="linenos"> 295</span></a> +</span><span id="Parser-296"><a href="#Parser-296"><span class="linenos"> 296</span></a> <span class="n">COMPARISON</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-297"><a href="#Parser-297"><span class="linenos"> 297</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> +</span><span id="Parser-298"><a href="#Parser-298"><span class="linenos"> 298</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> +</span><span id="Parser-299"><a href="#Parser-299"><span class="linenos"> 299</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> +</span><span id="Parser-300"><a href="#Parser-300"><span class="linenos"> 300</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> +</span><span id="Parser-301"><a href="#Parser-301"><span class="linenos"> 301</span></a> <span class="p">}</span> +</span><span id="Parser-302"><a href="#Parser-302"><span class="linenos"> 302</span></a> +</span><span id="Parser-303"><a href="#Parser-303"><span class="linenos"> 303</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-304"><a href="#Parser-304"><span class="linenos"> 304</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</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="Parser-305"><a href="#Parser-305"><span class="linenos"> 305</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</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="Parser-306"><a href="#Parser-306"><span class="linenos"> 306</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</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="Parser-307"><a href="#Parser-307"><span class="linenos"> 307</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">,</span> +</span><span id="Parser-308"><a href="#Parser-308"><span class="linenos"> 308</span></a> <span class="p">}</span> +</span><span id="Parser-309"><a href="#Parser-309"><span class="linenos"> 309</span></a> +</span><span id="Parser-310"><a href="#Parser-310"><span class="linenos"> 310</span></a> <span class="n">TERM</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-311"><a href="#Parser-311"><span class="linenos"> 311</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sub</span><span class="p">,</span> +</span><span id="Parser-312"><a href="#Parser-312"><span class="linenos"> 312</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Add</span><span class="p">,</span> +</span><span id="Parser-313"><a href="#Parser-313"><span class="linenos"> 313</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mod</span><span class="p">,</span> +</span><span id="Parser-314"><a href="#Parser-314"><span class="linenos"> 314</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Collate</span><span class="p">,</span> +</span><span id="Parser-315"><a href="#Parser-315"><span class="linenos"> 315</span></a> <span class="p">}</span> +</span><span id="Parser-316"><a href="#Parser-316"><span class="linenos"> 316</span></a> +</span><span id="Parser-317"><a href="#Parser-317"><span class="linenos"> 317</span></a> <span class="n">FACTOR</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-318"><a href="#Parser-318"><span class="linenos"> 318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">,</span> +</span><span id="Parser-319"><a href="#Parser-319"><span class="linenos"> 319</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distance</span><span class="p">,</span> +</span><span id="Parser-320"><a href="#Parser-320"><span class="linenos"> 320</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Div</span><span class="p">,</span> +</span><span id="Parser-321"><a href="#Parser-321"><span class="linenos"> 321</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Mul</span><span class="p">,</span> +</span><span id="Parser-322"><a href="#Parser-322"><span class="linenos"> 322</span></a> <span class="p">}</span> +</span><span id="Parser-323"><a href="#Parser-323"><span class="linenos"> 323</span></a> +</span><span id="Parser-324"><a href="#Parser-324"><span class="linenos"> 324</span></a> <span class="n">TIMESTAMPS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-325"><a href="#Parser-325"><span class="linenos"> 325</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="Parser-326"><a href="#Parser-326"><span class="linenos"> 326</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Parser-327"><a href="#Parser-327"><span class="linenos"> 327</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="Parser-328"><a href="#Parser-328"><span class="linenos"> 328</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="Parser-329"><a href="#Parser-329"><span class="linenos"> 329</span></a> <span class="p">}</span> +</span><span id="Parser-330"><a href="#Parser-330"><span class="linenos"> 330</span></a> +</span><span id="Parser-331"><a href="#Parser-331"><span class="linenos"> 331</span></a> <span class="n">SET_OPERATIONS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-332"><a href="#Parser-332"><span class="linenos"> 332</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> +</span><span id="Parser-333"><a href="#Parser-333"><span class="linenos"> 333</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> +</span><span id="Parser-334"><a href="#Parser-334"><span class="linenos"> 334</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="Parser-335"><a href="#Parser-335"><span class="linenos"> 335</span></a> <span class="p">}</span> +</span><span id="Parser-336"><a href="#Parser-336"><span class="linenos"> 336</span></a> +</span><span id="Parser-337"><a href="#Parser-337"><span class="linenos"> 337</span></a> <span class="n">JOIN_SIDES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-338"><a href="#Parser-338"><span class="linenos"> 338</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Parser-339"><a href="#Parser-339"><span class="linenos"> 339</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Parser-340"><a href="#Parser-340"><span class="linenos"> 340</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="Parser-341"><a href="#Parser-341"><span class="linenos"> 341</span></a> <span class="p">}</span> +</span><span id="Parser-342"><a href="#Parser-342"><span class="linenos"> 342</span></a> +</span><span id="Parser-343"><a href="#Parser-343"><span class="linenos"> 343</span></a> <span class="n">JOIN_KINDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-344"><a href="#Parser-344"><span class="linenos"> 344</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> +</span><span id="Parser-345"><a href="#Parser-345"><span class="linenos"> 345</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> +</span><span id="Parser-346"><a href="#Parser-346"><span class="linenos"> 346</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> +</span><span id="Parser-347"><a href="#Parser-347"><span class="linenos"> 347</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="Parser-348"><a href="#Parser-348"><span class="linenos"> 348</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="Parser-349"><a href="#Parser-349"><span class="linenos"> 349</span></a> <span class="p">}</span> +</span><span id="Parser-350"><a href="#Parser-350"><span class="linenos"> 350</span></a> +</span><span id="Parser-351"><a href="#Parser-351"><span class="linenos"> 351</span></a> <span class="n">LAMBDAS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-352"><a href="#Parser-352"><span class="linenos"> 352</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-353"><a href="#Parser-353"><span class="linenos"> 353</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">,</span> +</span><span id="Parser-354"><a href="#Parser-354"><span class="linenos"> 354</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span> +</span><span id="Parser-355"><a href="#Parser-355"><span class="linenos"> 355</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_lambda</span><span class="p">,</span> <span class="p">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">expressions</span><span class="p">}</span> +</span><span id="Parser-356"><a href="#Parser-356"><span class="linenos"> 356</span></a> <span class="p">),</span> +</span><span id="Parser-357"><a href="#Parser-357"><span class="linenos"> 357</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-358"><a href="#Parser-358"><span class="linenos"> 358</span></a> <span class="p">),</span> +</span><span id="Parser-359"><a href="#Parser-359"><span class="linenos"> 359</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-360"><a href="#Parser-360"><span class="linenos"> 360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Kwarg</span><span class="p">,</span> +</span><span id="Parser-361"><a href="#Parser-361"><span class="linenos"> 361</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">name</span><span class="p">),</span> +</span><span id="Parser-362"><a href="#Parser-362"><span class="linenos"> 362</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> +</span><span id="Parser-363"><a href="#Parser-363"><span class="linenos"> 363</span></a> <span class="p">),</span> +</span><span id="Parser-364"><a href="#Parser-364"><span class="linenos"> 364</span></a> <span class="p">}</span> +</span><span id="Parser-365"><a href="#Parser-365"><span class="linenos"> 365</span></a> +</span><span id="Parser-366"><a href="#Parser-366"><span class="linenos"> 366</span></a> <span class="n">COLUMN_OPERATORS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-367"><a href="#Parser-367"><span class="linenos"> 367</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-368"><a href="#Parser-368"><span class="linenos"> 368</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-369"><a href="#Parser-369"><span class="linenos"> 369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> +</span><span id="Parser-370"><a href="#Parser-370"><span class="linenos"> 370</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-371"><a href="#Parser-371"><span class="linenos"> 371</span></a> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">,</span> +</span><span id="Parser-372"><a href="#Parser-372"><span class="linenos"> 372</span></a> <span class="p">),</span> +</span><span id="Parser-373"><a href="#Parser-373"><span class="linenos"> 373</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-374"><a href="#Parser-374"><span class="linenos"> 374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">,</span> +</span><span id="Parser-375"><a href="#Parser-375"><span class="linenos"> 375</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-376"><a href="#Parser-376"><span class="linenos"> 376</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="Parser-377"><a href="#Parser-377"><span class="linenos"> 377</span></a> <span class="p">),</span> +</span><span id="Parser-378"><a href="#Parser-378"><span class="linenos"> 378</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-379"><a href="#Parser-379"><span class="linenos"> 379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">,</span> +</span><span id="Parser-380"><a href="#Parser-380"><span class="linenos"> 380</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-381"><a href="#Parser-381"><span class="linenos"> 381</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="Parser-382"><a href="#Parser-382"><span class="linenos"> 382</span></a> <span class="p">),</span> +</span><span id="Parser-383"><a href="#Parser-383"><span class="linenos"> 383</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-384"><a href="#Parser-384"><span class="linenos"> 384</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</span><span class="p">,</span> +</span><span id="Parser-385"><a href="#Parser-385"><span class="linenos"> 385</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-386"><a href="#Parser-386"><span class="linenos"> 386</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="Parser-387"><a href="#Parser-387"><span class="linenos"> 387</span></a> <span class="p">),</span> +</span><span id="Parser-388"><a href="#Parser-388"><span class="linenos"> 388</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-389"><a href="#Parser-389"><span class="linenos"> 389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</span><span class="p">,</span> +</span><span id="Parser-390"><a href="#Parser-390"><span class="linenos"> 390</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-391"><a href="#Parser-391"><span class="linenos"> 391</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> +</span><span id="Parser-392"><a href="#Parser-392"><span class="linenos"> 392</span></a> <span class="p">),</span> +</span><span id="Parser-393"><a href="#Parser-393"><span class="linenos"> 393</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">key</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-394"><a href="#Parser-394"><span class="linenos"> 394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</span><span class="p">,</span> +</span><span id="Parser-395"><a href="#Parser-395"><span class="linenos"> 395</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-396"><a href="#Parser-396"><span class="linenos"> 396</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> +</span><span id="Parser-397"><a href="#Parser-397"><span class="linenos"> 397</span></a> <span class="p">),</span> +</span><span id="Parser-398"><a href="#Parser-398"><span class="linenos"> 398</span></a> <span class="p">}</span> +</span><span id="Parser-399"><a href="#Parser-399"><span class="linenos"> 399</span></a> +</span><span id="Parser-400"><a href="#Parser-400"><span class="linenos"> 400</span></a> <span class="n">EXPRESSION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-401"><a href="#Parser-401"><span class="linenos"> 401</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">(),</span> +</span><span id="Parser-402"><a href="#Parser-402"><span class="linenos"> 402</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> +</span><span id="Parser-403"><a href="#Parser-403"><span class="linenos"> 403</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(),</span> +</span><span id="Parser-404"><a href="#Parser-404"><span class="linenos"> 404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> +</span><span id="Parser-405"><a href="#Parser-405"><span class="linenos"> 405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> +</span><span id="Parser-406"><a href="#Parser-406"><span class="linenos"> 406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">(),</span> +</span><span id="Parser-407"><a href="#Parser-407"><span class="linenos"> 407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">(),</span> +</span><span id="Parser-408"><a href="#Parser-408"><span class="linenos"> 408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> +</span><span id="Parser-409"><a href="#Parser-409"><span class="linenos"> 409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">),</span> +</span><span id="Parser-410"><a href="#Parser-410"><span class="linenos"> 410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">),</span> +</span><span id="Parser-411"><a href="#Parser-411"><span class="linenos"> 411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lambda</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">(),</span> +</span><span id="Parser-412"><a href="#Parser-412"><span class="linenos"> 412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> +</span><span id="Parser-413"><a href="#Parser-413"><span class="linenos"> 413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> +</span><span id="Parser-414"><a href="#Parser-414"><span class="linenos"> 414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> +</span><span id="Parser-415"><a href="#Parser-415"><span class="linenos"> 415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(),</span> +</span><span id="Parser-416"><a href="#Parser-416"><span class="linenos"> 416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Condition</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> +</span><span id="Parser-417"><a href="#Parser-417"><span class="linenos"> 417</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">(),</span> +</span><span id="Parser-418"><a href="#Parser-418"><span class="linenos"> 418</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(),</span> +</span><span id="Parser-419"><a href="#Parser-419"><span class="linenos"> 419</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="Parser-420"><a href="#Parser-420"><span class="linenos"> 420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Ordered</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">(),</span> +</span><span id="Parser-421"><a href="#Parser-421"><span class="linenos"> 421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> +</span><span id="Parser-422"><a href="#Parser-422"><span class="linenos"> 422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">(),</span> +</span><span id="Parser-423"><a href="#Parser-423"><span class="linenos"> 423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">(),</span> +</span><span id="Parser-424"><a href="#Parser-424"><span class="linenos"> 424</span></a> <span class="s2">"JOIN_TYPE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_side_and_kind</span><span class="p">(),</span> +</span><span id="Parser-425"><a href="#Parser-425"><span class="linenos"> 425</span></a> <span class="p">}</span> +</span><span id="Parser-426"><a href="#Parser-426"><span class="linenos"> 426</span></a> +</span><span id="Parser-427"><a href="#Parser-427"><span class="linenos"> 427</span></a> <span class="n">STATEMENT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-428"><a href="#Parser-428"><span class="linenos"> 428</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alter</span><span class="p">(),</span> +</span><span id="Parser-429"><a href="#Parser-429"><span class="linenos"> 429</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_transaction</span><span class="p">(),</span> +</span><span id="Parser-430"><a href="#Parser-430"><span class="linenos"> 430</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cache</span><span class="p">(),</span> +</span><span id="Parser-431"><a href="#Parser-431"><span class="linenos"> 431</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="Parser-432"><a href="#Parser-432"><span class="linenos"> 432</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create</span><span class="p">(),</span> +</span><span id="Parser-433"><a href="#Parser-433"><span class="linenos"> 433</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_delete</span><span class="p">(),</span> +</span><span id="Parser-434"><a href="#Parser-434"><span class="linenos"> 434</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> +</span><span id="Parser-435"><a href="#Parser-435"><span class="linenos"> 435</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_describe</span><span class="p">(),</span> +</span><span id="Parser-436"><a href="#Parser-436"><span class="linenos"> 436</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(),</span> +</span><span id="Parser-437"><a href="#Parser-437"><span class="linenos"> 437</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="Parser-438"><a href="#Parser-438"><span class="linenos"> 438</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_insert</span><span class="p">(),</span> +</span><span id="Parser-439"><a href="#Parser-439"><span class="linenos"> 439</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD_DATA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_load_data</span><span class="p">(),</span> +</span><span id="Parser-440"><a href="#Parser-440"><span class="linenos"> 440</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_merge</span><span class="p">(),</span> +</span><span id="Parser-441"><a href="#Parser-441"><span class="linenos"> 441</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_commit_or_rollback</span><span class="p">(),</span> +</span><span id="Parser-442"><a href="#Parser-442"><span class="linenos"> 442</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_uncache</span><span class="p">(),</span> +</span><span id="Parser-443"><a href="#Parser-443"><span class="linenos"> 443</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_update</span><span class="p">(),</span> +</span><span id="Parser-444"><a href="#Parser-444"><span class="linenos"> 444</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-445"><a href="#Parser-445"><span class="linenos"> 445</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Use</span><span class="p">,</span> +</span><span id="Parser-446"><a href="#Parser-446"><span class="linenos"> 446</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"ROLE"</span><span class="p">,</span> <span class="s2">"WAREHOUSE"</span><span class="p">,</span> <span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"SCHEMA"</span><span class="p">))</span> +</span><span id="Parser-447"><a href="#Parser-447"><span class="linenos"> 447</span></a> <span class="ow">and</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="Parser-448"><a href="#Parser-448"><span class="linenos"> 448</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-449"><a href="#Parser-449"><span class="linenos"> 449</span></a> <span class="p">),</span> +</span><span id="Parser-450"><a href="#Parser-450"><span class="linenos"> 450</span></a> <span class="p">}</span> +</span><span id="Parser-451"><a href="#Parser-451"><span class="linenos"> 451</span></a> +</span><span id="Parser-452"><a href="#Parser-452"><span class="linenos"> 452</span></a> <span class="n">UNARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-453"><a href="#Parser-453"><span class="linenos"> 453</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">(),</span> <span class="c1"># Unary + is handled as a no-op</span> +</span><span id="Parser-454"><a href="#Parser-454"><span class="linenos"> 454</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">()),</span> +</span><span id="Parser-455"><a href="#Parser-455"><span class="linenos"> 455</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitwiseNot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="Parser-456"><a href="#Parser-456"><span class="linenos"> 456</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Neg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">()),</span> +</span><span id="Parser-457"><a href="#Parser-457"><span class="linenos"> 457</span></a> <span class="p">}</span> +</span><span id="Parser-458"><a href="#Parser-458"><span class="linenos"> 458</span></a> +</span><span id="Parser-459"><a href="#Parser-459"><span class="linenos"> 459</span></a> <span class="n">PRIMARY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-460"><a href="#Parser-460"><span class="linenos"> 460</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-461"><a href="#Parser-461"><span class="linenos"> 461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">True</span> +</span><span id="Parser-462"><a href="#Parser-462"><span class="linenos"> 462</span></a> <span class="p">),</span> +</span><span id="Parser-463"><a href="#Parser-463"><span class="linenos"> 463</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-464"><a href="#Parser-464"><span class="linenos"> 464</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">is_string</span><span class="o">=</span><span class="kc">False</span> +</span><span id="Parser-465"><a href="#Parser-465"><span class="linenos"> 465</span></a> <span class="p">),</span> +</span><span id="Parser-466"><a href="#Parser-466"><span class="linenos"> 466</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-467"><a href="#Parser-467"><span class="linenos"> 467</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">,</span> +</span><span id="Parser-468"><a href="#Parser-468"><span class="linenos"> 468</span></a> <span class="o">**</span><span class="p">{</span><span class="s2">"except"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_except</span><span class="p">(),</span> <span class="s2">"replace"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_replace</span><span class="p">()},</span> +</span><span id="Parser-469"><a href="#Parser-469"><span class="linenos"> 469</span></a> <span class="p">),</span> +</span><span id="Parser-470"><a href="#Parser-470"><span class="linenos"> 470</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">),</span> +</span><span id="Parser-471"><a href="#Parser-471"><span class="linenos"> 471</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-472"><a href="#Parser-472"><span class="linenos"> 472</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Boolean</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-473"><a href="#Parser-473"><span class="linenos"> 473</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">BitString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="Parser-474"><a href="#Parser-474"><span class="linenos"> 474</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">HexString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="Parser-475"><a href="#Parser-475"><span class="linenos"> 475</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ByteString</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">),</span> +</span><span id="Parser-476"><a href="#Parser-476"><span class="linenos"> 476</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTRODUCER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_introducer</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> +</span><span id="Parser-477"><a href="#Parser-477"><span class="linenos"> 477</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_national</span><span class="p">(</span><span class="n">token</span><span class="p">),</span> +</span><span id="Parser-478"><a href="#Parser-478"><span class="linenos"> 478</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SESSION_PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">_</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_session_parameter</span><span class="p">(),</span> +</span><span id="Parser-479"><a href="#Parser-479"><span class="linenos"> 479</span></a> <span class="p">}</span> +</span><span id="Parser-480"><a href="#Parser-480"><span class="linenos"> 480</span></a> +</span><span id="Parser-481"><a href="#Parser-481"><span class="linenos"> 481</span></a> <span class="n">PLACEHOLDER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-482"><a href="#Parser-482"><span class="linenos"> 482</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">),</span> +</span><span id="Parser-483"><a href="#Parser-483"><span class="linenos"> 483</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_parameter</span><span class="p">(),</span> +</span><span id="Parser-484"><a href="#Parser-484"><span class="linenos"> 484</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-485"><a href="#Parser-485"><span class="linenos"> 485</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">))</span> +</span><span id="Parser-486"><a href="#Parser-486"><span class="linenos"> 486</span></a> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-487"><a href="#Parser-487"><span class="linenos"> 487</span></a> <span class="p">}</span> +</span><span id="Parser-488"><a href="#Parser-488"><span class="linenos"> 488</span></a> +</span><span id="Parser-489"><a href="#Parser-489"><span class="linenos"> 489</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-490"><a href="#Parser-490"><span class="linenos"> 490</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_between</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="Parser-491"><a href="#Parser-491"><span class="linenos"> 491</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="Parser-492"><a href="#Parser-492"><span class="linenos"> 492</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Glob</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-493"><a href="#Parser-493"><span class="linenos"> 493</span></a> <span class="p">),</span> +</span><span id="Parser-494"><a href="#Parser-494"><span class="linenos"> 494</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="Parser-495"><a href="#Parser-495"><span class="linenos"> 495</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">),</span> +</span><span id="Parser-496"><a href="#Parser-496"><span class="linenos"> 496</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="Parser-497"><a href="#Parser-497"><span class="linenos"> 497</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Like</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-498"><a href="#Parser-498"><span class="linenos"> 498</span></a> <span class="p">),</span> +</span><span id="Parser-499"><a href="#Parser-499"><span class="linenos"> 499</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_escape</span><span class="p">(</span> +</span><span id="Parser-500"><a href="#Parser-500"><span class="linenos"> 500</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ILike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-501"><a href="#Parser-501"><span class="linenos"> 501</span></a> <span class="p">),</span> +</span><span id="Parser-502"><a href="#Parser-502"><span class="linenos"> 502</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-503"><a href="#Parser-503"><span class="linenos"> 503</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-504"><a href="#Parser-504"><span class="linenos"> 504</span></a> <span class="p">),</span> +</span><span id="Parser-505"><a href="#Parser-505"><span class="linenos"> 505</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-506"><a href="#Parser-506"><span class="linenos"> 506</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-507"><a href="#Parser-507"><span class="linenos"> 507</span></a> <span class="p">),</span> +</span><span id="Parser-508"><a href="#Parser-508"><span class="linenos"> 508</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-509"><a href="#Parser-509"><span class="linenos"> 509</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SimilarTo</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-510"><a href="#Parser-510"><span class="linenos"> 510</span></a> <span class="p">),</span> +</span><span id="Parser-511"><a href="#Parser-511"><span class="linenos"> 511</span></a> <span class="p">}</span> +</span><span id="Parser-512"><a href="#Parser-512"><span class="linenos"> 512</span></a> +</span><span id="Parser-513"><a href="#Parser-513"><span class="linenos"> 513</span></a> <span class="n">PROPERTY_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-514"><a href="#Parser-514"><span class="linenos"> 514</span></a> <span class="s2">"AFTER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span> +</span><span id="Parser-515"><a href="#Parser-515"><span class="linenos"> 515</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> +</span><span id="Parser-516"><a href="#Parser-516"><span class="linenos"> 516</span></a> <span class="p">),</span> +</span><span id="Parser-517"><a href="#Parser-517"><span class="linenos"> 517</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">),</span> +</span><span id="Parser-518"><a href="#Parser-518"><span class="linenos"> 518</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementProperty</span><span class="p">),</span> +</span><span id="Parser-519"><a href="#Parser-519"><span class="linenos"> 519</span></a> <span class="s2">"BEFORE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span> +</span><span id="Parser-520"><a href="#Parser-520"><span class="linenos"> 520</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> +</span><span id="Parser-521"><a href="#Parser-521"><span class="linenos"> 521</span></a> <span class="p">),</span> +</span><span id="Parser-522"><a href="#Parser-522"><span class="linenos"> 522</span></a> <span class="s2">"BLOCKCOMPRESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_blockcompression</span><span class="p">(),</span> +</span><span id="Parser-523"><a href="#Parser-523"><span class="linenos"> 523</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(),</span> +</span><span id="Parser-524"><a href="#Parser-524"><span class="linenos"> 524</span></a> <span class="s2">"CHECKSUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_checksum</span><span class="p">(),</span> +</span><span id="Parser-525"><a href="#Parser-525"><span class="linenos"> 525</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-526"><a href="#Parser-526"><span class="linenos"> 526</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="Parser-527"><a href="#Parser-527"><span class="linenos"> 527</span></a> <span class="p">),</span> +</span><span id="Parser-528"><a href="#Parser-528"><span class="linenos"> 528</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CollateProperty</span><span class="p">),</span> +</span><span id="Parser-529"><a href="#Parser-529"><span class="linenos"> 529</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SchemaCommentProperty</span><span class="p">),</span> +</span><span id="Parser-530"><a href="#Parser-530"><span class="linenos"> 530</span></a> <span class="s2">"DATABLOCKSIZE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(</span> +</span><span id="Parser-531"><a href="#Parser-531"><span class="linenos"> 531</span></a> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DEFAULT"</span> +</span><span id="Parser-532"><a href="#Parser-532"><span class="linenos"> 532</span></a> <span class="p">),</span> +</span><span id="Parser-533"><a href="#Parser-533"><span class="linenos"> 533</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_definer</span><span class="p">(),</span> +</span><span id="Parser-534"><a href="#Parser-534"><span class="linenos"> 534</span></a> <span class="s2">"DETERMINISTIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-535"><a href="#Parser-535"><span class="linenos"> 535</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> +</span><span id="Parser-536"><a href="#Parser-536"><span class="linenos"> 536</span></a> <span class="p">),</span> +</span><span id="Parser-537"><a href="#Parser-537"><span class="linenos"> 537</span></a> <span class="s2">"DISTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_distkey</span><span class="p">(),</span> +</span><span id="Parser-538"><a href="#Parser-538"><span class="linenos"> 538</span></a> <span class="s2">"DISTSTYLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistStyleProperty</span><span class="p">),</span> +</span><span id="Parser-539"><a href="#Parser-539"><span class="linenos"> 539</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExecuteAsProperty</span><span class="p">),</span> +</span><span id="Parser-540"><a href="#Parser-540"><span class="linenos"> 540</span></a> <span class="s2">"EXTERNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ExternalProperty</span><span class="p">),</span> +</span><span id="Parser-541"><a href="#Parser-541"><span class="linenos"> 541</span></a> <span class="s2">"FALLBACK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_fallback</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">),</span> +</span><span id="Parser-542"><a href="#Parser-542"><span class="linenos"> 542</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> +</span><span id="Parser-543"><a href="#Parser-543"><span class="linenos"> 543</span></a> <span class="s2">"FREESPACE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_freespace</span><span class="p">(),</span> +</span><span id="Parser-544"><a href="#Parser-544"><span class="linenos"> 544</span></a> <span class="s2">"GLOBAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_temporary</span><span class="p">(</span><span class="n">global_</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-545"><a href="#Parser-545"><span class="linenos"> 545</span></a> <span class="s2">"IMMUTABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-546"><a href="#Parser-546"><span class="linenos"> 546</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"IMMUTABLE"</span><span class="p">)</span> </span><span id="Parser-547"><a href="#Parser-547"><span class="linenos"> 547</span></a> <span class="p">),</span> -</span><span id="Parser-548"><a href="#Parser-548"><span class="linenos"> 548</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_property</span><span class="p">(),</span> -</span><span id="Parser-549"><a href="#Parser-549"><span class="linenos"> 549</span></a> <span class="s2">"TBLPROPERTIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">),</span> -</span><span id="Parser-550"><a href="#Parser-550"><span class="linenos"> 550</span></a> <span class="s2">"FALLBACK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_fallback</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">),</span> -</span><span id="Parser-551"><a href="#Parser-551"><span class="linenos"> 551</span></a> <span class="s2">"LOG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_log</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">),</span> -</span><span id="Parser-552"><a href="#Parser-552"><span class="linenos"> 552</span></a> <span class="s2">"BEFORE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span> -</span><span id="Parser-553"><a href="#Parser-553"><span class="linenos"> 553</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> -</span><span id="Parser-554"><a href="#Parser-554"><span class="linenos"> 554</span></a> <span class="p">),</span> -</span><span id="Parser-555"><a href="#Parser-555"><span class="linenos"> 555</span></a> <span class="s2">"JOURNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span> -</span><span id="Parser-556"><a href="#Parser-556"><span class="linenos"> 556</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> -</span><span id="Parser-557"><a href="#Parser-557"><span class="linenos"> 557</span></a> <span class="p">),</span> -</span><span id="Parser-558"><a href="#Parser-558"><span class="linenos"> 558</span></a> <span class="s2">"AFTER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span> -</span><span id="Parser-559"><a href="#Parser-559"><span class="linenos"> 559</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> -</span><span id="Parser-560"><a href="#Parser-560"><span class="linenos"> 560</span></a> <span class="p">),</span> -</span><span id="Parser-561"><a href="#Parser-561"><span class="linenos"> 561</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-562"><a href="#Parser-562"><span class="linenos"> 562</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-563"><a href="#Parser-563"><span class="linenos"> 563</span></a> <span class="s2">"CHECKSUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_checksum</span><span class="p">(),</span> -</span><span id="Parser-564"><a href="#Parser-564"><span class="linenos"> 564</span></a> <span class="s2">"FREESPACE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_freespace</span><span class="p">(),</span> -</span><span id="Parser-565"><a href="#Parser-565"><span class="linenos"> 565</span></a> <span class="s2">"MERGEBLOCKRATIO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_mergeblockratio</span><span class="p">(</span> -</span><span id="Parser-566"><a href="#Parser-566"><span class="linenos"> 566</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DEFAULT"</span> -</span><span id="Parser-567"><a href="#Parser-567"><span class="linenos"> 567</span></a> <span class="p">),</span> -</span><span id="Parser-568"><a href="#Parser-568"><span class="linenos"> 568</span></a> <span class="s2">"MIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> -</span><span id="Parser-569"><a href="#Parser-569"><span class="linenos"> 569</span></a> <span class="s2">"MINIMUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> -</span><span id="Parser-570"><a href="#Parser-570"><span class="linenos"> 570</span></a> <span class="s2">"MAX"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> -</span><span id="Parser-571"><a href="#Parser-571"><span class="linenos"> 571</span></a> <span class="s2">"MAXIMUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> -</span><span id="Parser-572"><a href="#Parser-572"><span class="linenos"> 572</span></a> <span class="s2">"DATABLOCKSIZE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(</span> -</span><span id="Parser-573"><a href="#Parser-573"><span class="linenos"> 573</span></a> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DEFAULT"</span> -</span><span id="Parser-574"><a href="#Parser-574"><span class="linenos"> 574</span></a> <span class="p">),</span> -</span><span id="Parser-575"><a href="#Parser-575"><span class="linenos"> 575</span></a> <span class="s2">"BLOCKCOMPRESSION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_blockcompression</span><span class="p">(),</span> -</span><span id="Parser-576"><a href="#Parser-576"><span class="linenos"> 576</span></a> <span class="s2">"ALGORITHM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlgorithmProperty</span><span class="p">),</span> -</span><span id="Parser-577"><a href="#Parser-577"><span class="linenos"> 577</span></a> <span class="s2">"DEFINER"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_definer</span><span class="p">(),</span> -</span><span id="Parser-578"><a href="#Parser-578"><span class="linenos"> 578</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> -</span><span id="Parser-579"><a href="#Parser-579"><span class="linenos"> 579</span></a> <span class="s2">"LOCKING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> -</span><span id="Parser-580"><a href="#Parser-580"><span class="linenos"> 580</span></a> <span class="p">}</span> -</span><span id="Parser-581"><a href="#Parser-581"><span class="linenos"> 581</span></a> -</span><span id="Parser-582"><a href="#Parser-582"><span class="linenos"> 582</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-583"><a href="#Parser-583"><span class="linenos"> 583</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="Parser-584"><a href="#Parser-584"><span class="linenos"> 584</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="Parser-585"><a href="#Parser-585"><span class="linenos"> 585</span></a> <span class="s2">"CASESPECIFIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-586"><a href="#Parser-586"><span class="linenos"> 586</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-587"><a href="#Parser-587"><span class="linenos"> 587</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="Parser-548"><a href="#Parser-548"><span class="linenos"> 548</span></a> <span class="s2">"JOURNAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_journal</span><span class="p">(</span> +</span><span id="Parser-549"><a href="#Parser-549"><span class="linenos"> 549</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DUAL"</span> +</span><span id="Parser-550"><a href="#Parser-550"><span class="linenos"> 550</span></a> <span class="p">),</span> +</span><span id="Parser-551"><a href="#Parser-551"><span class="linenos"> 551</span></a> <span class="s2">"LANGUAGE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LanguageProperty</span><span class="p">),</span> +</span><span id="Parser-552"><a href="#Parser-552"><span class="linenos"> 552</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> +</span><span id="Parser-553"><a href="#Parser-553"><span class="linenos"> 553</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-554"><a href="#Parser-554"><span class="linenos"> 554</span></a> <span class="s2">"LOCATION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LocationProperty</span><span class="p">),</span> +</span><span id="Parser-555"><a href="#Parser-555"><span class="linenos"> 555</span></a> <span class="s2">"LOCK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> +</span><span id="Parser-556"><a href="#Parser-556"><span class="linenos"> 556</span></a> <span class="s2">"LOCKING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_locking</span><span class="p">(),</span> +</span><span id="Parser-557"><a href="#Parser-557"><span class="linenos"> 557</span></a> <span class="s2">"LOG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_log</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">),</span> +</span><span id="Parser-558"><a href="#Parser-558"><span class="linenos"> 558</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">MaterializedProperty</span><span class="p">),</span> +</span><span id="Parser-559"><a href="#Parser-559"><span class="linenos"> 559</span></a> <span class="s2">"MAX"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> +</span><span id="Parser-560"><a href="#Parser-560"><span class="linenos"> 560</span></a> <span class="s2">"MAXIMUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> +</span><span id="Parser-561"><a href="#Parser-561"><span class="linenos"> 561</span></a> <span class="s2">"MERGEBLOCKRATIO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_mergeblockratio</span><span class="p">(</span> +</span><span id="Parser-562"><a href="#Parser-562"><span class="linenos"> 562</span></a> <span class="n">no</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"DEFAULT"</span> +</span><span id="Parser-563"><a href="#Parser-563"><span class="linenos"> 563</span></a> <span class="p">),</span> +</span><span id="Parser-564"><a href="#Parser-564"><span class="linenos"> 564</span></a> <span class="s2">"MIN"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> +</span><span id="Parser-565"><a href="#Parser-565"><span class="linenos"> 565</span></a> <span class="s2">"MINIMUM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_datablocksize</span><span class="p">(),</span> +</span><span id="Parser-566"><a href="#Parser-566"><span class="linenos"> 566</span></a> <span class="s2">"MULTISET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-567"><a href="#Parser-567"><span class="linenos"> 567</span></a> <span class="s2">"NO"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_noprimaryindex</span><span class="p">(),</span> +</span><span id="Parser-568"><a href="#Parser-568"><span class="linenos"> 568</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_afterjournal</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-569"><a href="#Parser-569"><span class="linenos"> 569</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_oncommit</span><span class="p">(),</span> +</span><span id="Parser-570"><a href="#Parser-570"><span class="linenos"> 570</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="Parser-571"><a href="#Parser-571"><span class="linenos"> 571</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="Parser-572"><a href="#Parser-572"><span class="linenos"> 572</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partitioned_by</span><span class="p">(),</span> +</span><span id="Parser-573"><a href="#Parser-573"><span class="linenos"> 573</span></a> <span class="s2">"RETURNS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_returns</span><span class="p">(),</span> +</span><span id="Parser-574"><a href="#Parser-574"><span class="linenos"> 574</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row</span><span class="p">(),</span> +</span><span id="Parser-575"><a href="#Parser-575"><span class="linenos"> 575</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SetProperty</span><span class="p">,</span> <span class="n">multi</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-576"><a href="#Parser-576"><span class="linenos"> 576</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(),</span> +</span><span id="Parser-577"><a href="#Parser-577"><span class="linenos"> 577</span></a> <span class="s2">"STABLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-578"><a href="#Parser-578"><span class="linenos"> 578</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"STABLE"</span><span class="p">)</span> +</span><span id="Parser-579"><a href="#Parser-579"><span class="linenos"> 579</span></a> <span class="p">),</span> +</span><span id="Parser-580"><a href="#Parser-580"><span class="linenos"> 580</span></a> <span class="s2">"STORED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">FileFormatProperty</span><span class="p">),</span> +</span><span id="Parser-581"><a href="#Parser-581"><span class="linenos"> 581</span></a> <span class="s2">"TABLE_FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">),</span> +</span><span id="Parser-582"><a href="#Parser-582"><span class="linenos"> 582</span></a> <span class="s2">"TBLPROPERTIES"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">),</span> +</span><span id="Parser-583"><a href="#Parser-583"><span class="linenos"> 583</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_temporary</span><span class="p">(</span><span class="n">global_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-584"><a href="#Parser-584"><span class="linenos"> 584</span></a> <span class="s2">"TRANSIENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</span><span class="p">),</span> +</span><span id="Parser-585"><a href="#Parser-585"><span class="linenos"> 585</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_assignment</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableFormatProperty</span><span class="p">),</span> +</span><span id="Parser-586"><a href="#Parser-586"><span class="linenos"> 586</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-587"><a href="#Parser-587"><span class="linenos"> 587</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatilityProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">"VOLATILE"</span><span class="p">)</span> </span><span id="Parser-588"><a href="#Parser-588"><span class="linenos"> 588</span></a> <span class="p">),</span> -</span><span id="Parser-589"><a href="#Parser-589"><span class="linenos"> 589</span></a> <span class="s2">"CHECK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-590"><a href="#Parser-590"><span class="linenos"> 590</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-591"><a href="#Parser-591"><span class="linenos"> 591</span></a> <span class="p">),</span> -</span><span id="Parser-592"><a href="#Parser-592"><span class="linenos"> 592</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-593"><a href="#Parser-593"><span class="linenos"> 593</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> -</span><span id="Parser-594"><a href="#Parser-594"><span class="linenos"> 594</span></a> <span class="p">),</span> -</span><span id="Parser-595"><a href="#Parser-595"><span class="linenos"> 595</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-596"><a href="#Parser-596"><span class="linenos"> 596</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-597"><a href="#Parser-597"><span class="linenos"> 597</span></a> <span class="p">),</span> -</span><span id="Parser-598"><a href="#Parser-598"><span class="linenos"> 598</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-599"><a href="#Parser-599"><span class="linenos"> 599</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-600"><a href="#Parser-600"><span class="linenos"> 600</span></a> <span class="p">),</span> -</span><span id="Parser-601"><a href="#Parser-601"><span class="linenos"> 601</span></a> <span class="s2">"ENCODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()),</span> -</span><span id="Parser-602"><a href="#Parser-602"><span class="linenos"> 602</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">(),</span> -</span><span id="Parser-603"><a href="#Parser-603"><span class="linenos"> 603</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-604"><a href="#Parser-604"><span class="linenos"> 604</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="Parser-605"><a href="#Parser-605"><span class="linenos"> 605</span></a> <span class="p">),</span> -</span><span id="Parser-606"><a href="#Parser-606"><span class="linenos"> 606</span></a> <span class="s2">"GENERATED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_generated_as_identity</span><span class="p">(),</span> -</span><span id="Parser-607"><a href="#Parser-607"><span class="linenos"> 607</span></a> <span class="s2">"IDENTITY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> -</span><span id="Parser-608"><a href="#Parser-608"><span class="linenos"> 608</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> -</span><span id="Parser-609"><a href="#Parser-609"><span class="linenos"> 609</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_not_constraint</span><span class="p">(),</span> -</span><span id="Parser-610"><a href="#Parser-610"><span class="linenos"> 610</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">,</span> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-611"><a href="#Parser-611"><span class="linenos"> 611</span></a> <span class="s2">"PATH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()),</span> -</span><span id="Parser-612"><a href="#Parser-612"><span class="linenos"> 612</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(),</span> -</span><span id="Parser-613"><a href="#Parser-613"><span class="linenos"> 613</span></a> <span class="s2">"TITLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-614"><a href="#Parser-614"><span class="linenos"> 614</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="Parser-615"><a href="#Parser-615"><span class="linenos"> 615</span></a> <span class="p">),</span> -</span><span id="Parser-616"><a href="#Parser-616"><span class="linenos"> 616</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unique</span><span class="p">(),</span> -</span><span id="Parser-617"><a href="#Parser-617"><span class="linenos"> 617</span></a> <span class="s2">"UPPERCASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</span><span class="p">),</span> -</span><span id="Parser-618"><a href="#Parser-618"><span class="linenos"> 618</span></a> <span class="p">}</span> -</span><span id="Parser-619"><a href="#Parser-619"><span class="linenos"> 619</span></a> -</span><span id="Parser-620"><a href="#Parser-620"><span class="linenos"> 620</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"CHECK"</span><span class="p">,</span> <span class="s2">"FOREIGN KEY"</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">,</span> <span class="s2">"PRIMARY KEY"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">}</span> -</span><span id="Parser-621"><a href="#Parser-621"><span class="linenos"> 621</span></a> -</span><span id="Parser-622"><a href="#Parser-622"><span class="linenos"> 622</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-623"><a href="#Parser-623"><span class="linenos"> 623</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_case</span><span class="p">(),</span> -</span><span id="Parser-624"><a href="#Parser-624"><span class="linenos"> 624</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_if</span><span class="p">(),</span> -</span><span id="Parser-625"><a href="#Parser-625"><span class="linenos"> 625</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()),</span> -</span><span id="Parser-626"><a href="#Parser-626"><span class="linenos"> 626</span></a> <span class="p">}</span> -</span><span id="Parser-627"><a href="#Parser-627"><span class="linenos"> 627</span></a> -</span><span id="Parser-628"><a href="#Parser-628"><span class="linenos"> 628</span></a> <span class="n">FUNCTION_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-629"><a href="#Parser-629"><span class="linenos"> 629</span></a> <span class="s2">"CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> -</span><span id="Parser-630"><a href="#Parser-630"><span class="linenos"> 630</span></a> <span class="s2">"TRY_CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-631"><a href="#Parser-631"><span class="linenos"> 631</span></a> <span class="s2">"EXTRACT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">(),</span> -</span><span id="Parser-632"><a href="#Parser-632"><span class="linenos"> 632</span></a> <span class="s2">"POSITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(),</span> -</span><span id="Parser-633"><a href="#Parser-633"><span class="linenos"> 633</span></a> <span class="s2">"SUBSTRING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_substring</span><span class="p">(),</span> -</span><span id="Parser-634"><a href="#Parser-634"><span class="linenos"> 634</span></a> <span class="s2">"TRIM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_trim</span><span class="p">(),</span> -</span><span id="Parser-635"><a href="#Parser-635"><span class="linenos"> 635</span></a> <span class="s2">"CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> -</span><span id="Parser-636"><a href="#Parser-636"><span class="linenos"> 636</span></a> <span class="s2">"TRY_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-637"><a href="#Parser-637"><span class="linenos"> 637</span></a> <span class="s2">"STRING_AGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_agg</span><span class="p">(),</span> +</span><span id="Parser-589"><a href="#Parser-589"><span class="linenos"> 589</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with_property</span><span class="p">(),</span> +</span><span id="Parser-590"><a href="#Parser-590"><span class="linenos"> 590</span></a> <span class="p">}</span> +</span><span id="Parser-591"><a href="#Parser-591"><span class="linenos"> 591</span></a> +</span><span id="Parser-592"><a href="#Parser-592"><span class="linenos"> 592</span></a> <span class="n">CONSTRAINT_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-593"><a href="#Parser-593"><span class="linenos"> 593</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="Parser-594"><a href="#Parser-594"><span class="linenos"> 594</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="Parser-595"><a href="#Parser-595"><span class="linenos"> 595</span></a> <span class="s2">"CASESPECIFIC"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-596"><a href="#Parser-596"><span class="linenos"> 596</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-597"><a href="#Parser-597"><span class="linenos"> 597</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="Parser-598"><a href="#Parser-598"><span class="linenos"> 598</span></a> <span class="p">),</span> +</span><span id="Parser-599"><a href="#Parser-599"><span class="linenos"> 599</span></a> <span class="s2">"CHECK"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-600"><a href="#Parser-600"><span class="linenos"> 600</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CheckColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-601"><a href="#Parser-601"><span class="linenos"> 601</span></a> <span class="p">),</span> +</span><span id="Parser-602"><a href="#Parser-602"><span class="linenos"> 602</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-603"><a href="#Parser-603"><span class="linenos"> 603</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CollateColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> +</span><span id="Parser-604"><a href="#Parser-604"><span class="linenos"> 604</span></a> <span class="p">),</span> +</span><span id="Parser-605"><a href="#Parser-605"><span class="linenos"> 605</span></a> <span class="s2">"COMMENT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-606"><a href="#Parser-606"><span class="linenos"> 606</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-607"><a href="#Parser-607"><span class="linenos"> 607</span></a> <span class="p">),</span> +</span><span id="Parser-608"><a href="#Parser-608"><span class="linenos"> 608</span></a> <span class="s2">"COMPRESS"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_compress</span><span class="p">(),</span> +</span><span id="Parser-609"><a href="#Parser-609"><span class="linenos"> 609</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-610"><a href="#Parser-610"><span class="linenos"> 610</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DefaultColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-611"><a href="#Parser-611"><span class="linenos"> 611</span></a> <span class="p">),</span> +</span><span id="Parser-612"><a href="#Parser-612"><span class="linenos"> 612</span></a> <span class="s2">"ENCODE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">EncodeColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()),</span> +</span><span id="Parser-613"><a href="#Parser-613"><span class="linenos"> 613</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">(),</span> +</span><span id="Parser-614"><a href="#Parser-614"><span class="linenos"> 614</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-615"><a href="#Parser-615"><span class="linenos"> 615</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFormatColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="Parser-616"><a href="#Parser-616"><span class="linenos"> 616</span></a> <span class="p">),</span> +</span><span id="Parser-617"><a href="#Parser-617"><span class="linenos"> 617</span></a> <span class="s2">"GENERATED"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_generated_as_identity</span><span class="p">(),</span> +</span><span id="Parser-618"><a href="#Parser-618"><span class="linenos"> 618</span></a> <span class="s2">"IDENTITY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_auto_increment</span><span class="p">(),</span> +</span><span id="Parser-619"><a href="#Parser-619"><span class="linenos"> 619</span></a> <span class="s2">"INLINE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_inline</span><span class="p">(),</span> +</span><span id="Parser-620"><a href="#Parser-620"><span class="linenos"> 620</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_create_like</span><span class="p">(),</span> +</span><span id="Parser-621"><a href="#Parser-621"><span class="linenos"> 621</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_not_constraint</span><span class="p">(),</span> +</span><span id="Parser-622"><a href="#Parser-622"><span class="linenos"> 622</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">,</span> <span class="n">allow_null</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-623"><a href="#Parser-623"><span class="linenos"> 623</span></a> <span class="s2">"PATH"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PathColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()),</span> +</span><span id="Parser-624"><a href="#Parser-624"><span class="linenos"> 624</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">(),</span> +</span><span id="Parser-625"><a href="#Parser-625"><span class="linenos"> 625</span></a> <span class="s2">"TITLE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-626"><a href="#Parser-626"><span class="linenos"> 626</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TitleColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="Parser-627"><a href="#Parser-627"><span class="linenos"> 627</span></a> <span class="p">),</span> +</span><span id="Parser-628"><a href="#Parser-628"><span class="linenos"> 628</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unique</span><span class="p">(),</span> +</span><span id="Parser-629"><a href="#Parser-629"><span class="linenos"> 629</span></a> <span class="s2">"UPPERCASE"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UppercaseColumnConstraint</span><span class="p">),</span> +</span><span id="Parser-630"><a href="#Parser-630"><span class="linenos"> 630</span></a> <span class="p">}</span> +</span><span id="Parser-631"><a href="#Parser-631"><span class="linenos"> 631</span></a> +</span><span id="Parser-632"><a href="#Parser-632"><span class="linenos"> 632</span></a> <span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"CHECK"</span><span class="p">,</span> <span class="s2">"FOREIGN KEY"</span><span class="p">,</span> <span class="s2">"LIKE"</span><span class="p">,</span> <span class="s2">"PRIMARY KEY"</span><span class="p">,</span> <span class="s2">"UNIQUE"</span><span class="p">}</span> +</span><span id="Parser-633"><a href="#Parser-633"><span class="linenos"> 633</span></a> +</span><span id="Parser-634"><a href="#Parser-634"><span class="linenos"> 634</span></a> <span class="n">NO_PAREN_FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-635"><a href="#Parser-635"><span class="linenos"> 635</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_case</span><span class="p">(),</span> +</span><span id="Parser-636"><a href="#Parser-636"><span class="linenos"> 636</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_if</span><span class="p">(),</span> +</span><span id="Parser-637"><a href="#Parser-637"><span class="linenos"> 637</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()),</span> </span><span id="Parser-638"><a href="#Parser-638"><span class="linenos"> 638</span></a> <span class="p">}</span> </span><span id="Parser-639"><a href="#Parser-639"><span class="linenos"> 639</span></a> -</span><span id="Parser-640"><a href="#Parser-640"><span class="linenos"> 640</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-641"><a href="#Parser-641"><span class="linenos"> 641</span></a> <span class="s2">"match"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize</span><span class="p">(),</span> -</span><span id="Parser-642"><a href="#Parser-642"><span class="linenos"> 642</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="Parser-643"><a href="#Parser-643"><span class="linenos"> 643</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> -</span><span id="Parser-644"><a href="#Parser-644"><span class="linenos"> 644</span></a> <span class="s2">"having"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> -</span><span id="Parser-645"><a href="#Parser-645"><span class="linenos"> 645</span></a> <span class="s2">"qualify"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">(),</span> -</span><span id="Parser-646"><a href="#Parser-646"><span class="linenos"> 646</span></a> <span class="s2">"windows"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_clause</span><span class="p">(),</span> -</span><span id="Parser-647"><a href="#Parser-647"><span class="linenos"> 647</span></a> <span class="s2">"distribute"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distribute</span><span class="p">),</span> -</span><span id="Parser-648"><a href="#Parser-648"><span class="linenos"> 648</span></a> <span class="s2">"sort"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">),</span> -</span><span id="Parser-649"><a href="#Parser-649"><span class="linenos"> 649</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">),</span> -</span><span id="Parser-650"><a href="#Parser-650"><span class="linenos"> 650</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> -</span><span id="Parser-651"><a href="#Parser-651"><span class="linenos"> 651</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> -</span><span id="Parser-652"><a href="#Parser-652"><span class="linenos"> 652</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> -</span><span id="Parser-653"><a href="#Parser-653"><span class="linenos"> 653</span></a> <span class="s2">"lock"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lock</span><span class="p">(),</span> -</span><span id="Parser-654"><a href="#Parser-654"><span class="linenos"> 654</span></a> <span class="p">}</span> -</span><span id="Parser-655"><a href="#Parser-655"><span class="linenos"> 655</span></a> -</span><span id="Parser-656"><a href="#Parser-656"><span class="linenos"> 656</span></a> <span class="n">SHOW_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Parser-657"><a href="#Parser-657"><span class="linenos"> 657</span></a> <span class="n">SET_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Parser-658"><a href="#Parser-658"><span class="linenos"> 658</span></a> -</span><span id="Parser-659"><a href="#Parser-659"><span class="linenos"> 659</span></a> <span class="n">MODIFIABLES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</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="Parser-660"><a href="#Parser-660"><span class="linenos"> 660</span></a> -</span><span id="Parser-661"><a href="#Parser-661"><span class="linenos"> 661</span></a> <span class="n">CREATABLES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Parser-662"><a href="#Parser-662"><span class="linenos"> 662</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="Parser-663"><a href="#Parser-663"><span class="linenos"> 663</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="Parser-664"><a href="#Parser-664"><span class="linenos"> 664</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="Parser-665"><a href="#Parser-665"><span class="linenos"> 665</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="Parser-666"><a href="#Parser-666"><span class="linenos"> 666</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="Parser-667"><a href="#Parser-667"><span class="linenos"> 667</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Parser-668"><a href="#Parser-668"><span class="linenos"> 668</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="Parser-669"><a href="#Parser-669"><span class="linenos"> 669</span></a> <span class="p">}</span> +</span><span id="Parser-640"><a href="#Parser-640"><span class="linenos"> 640</span></a> <span class="n">FUNCTION_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-641"><a href="#Parser-641"><span class="linenos"> 641</span></a> <span class="s2">"CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> +</span><span id="Parser-642"><a href="#Parser-642"><span class="linenos"> 642</span></a> <span class="s2">"TRY_CONVERT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_convert</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-643"><a href="#Parser-643"><span class="linenos"> 643</span></a> <span class="s2">"EXTRACT"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_extract</span><span class="p">(),</span> +</span><span id="Parser-644"><a href="#Parser-644"><span class="linenos"> 644</span></a> <span class="s2">"POSITION"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_position</span><span class="p">(),</span> +</span><span id="Parser-645"><a href="#Parser-645"><span class="linenos"> 645</span></a> <span class="s2">"SUBSTRING"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_substring</span><span class="p">(),</span> +</span><span id="Parser-646"><a href="#Parser-646"><span class="linenos"> 646</span></a> <span class="s2">"TRIM"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_trim</span><span class="p">(),</span> +</span><span id="Parser-647"><a href="#Parser-647"><span class="linenos"> 647</span></a> <span class="s2">"CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STRICT_CAST</span><span class="p">),</span> +</span><span id="Parser-648"><a href="#Parser-648"><span class="linenos"> 648</span></a> <span class="s2">"TRY_CAST"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_cast</span><span class="p">(</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-649"><a href="#Parser-649"><span class="linenos"> 649</span></a> <span class="s2">"STRING_AGG"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string_agg</span><span class="p">(),</span> +</span><span id="Parser-650"><a href="#Parser-650"><span class="linenos"> 650</span></a> <span class="p">}</span> +</span><span id="Parser-651"><a href="#Parser-651"><span class="linenos"> 651</span></a> +</span><span id="Parser-652"><a href="#Parser-652"><span class="linenos"> 652</span></a> <span class="n">QUERY_MODIFIER_PARSERS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-653"><a href="#Parser-653"><span class="linenos"> 653</span></a> <span class="s2">"match"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_match_recognize</span><span class="p">(),</span> +</span><span id="Parser-654"><a href="#Parser-654"><span class="linenos"> 654</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="Parser-655"><a href="#Parser-655"><span class="linenos"> 655</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_group</span><span class="p">(),</span> +</span><span id="Parser-656"><a href="#Parser-656"><span class="linenos"> 656</span></a> <span class="s2">"having"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_having</span><span class="p">(),</span> +</span><span id="Parser-657"><a href="#Parser-657"><span class="linenos"> 657</span></a> <span class="s2">"qualify"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_qualify</span><span class="p">(),</span> +</span><span id="Parser-658"><a href="#Parser-658"><span class="linenos"> 658</span></a> <span class="s2">"windows"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_clause</span><span class="p">(),</span> +</span><span id="Parser-659"><a href="#Parser-659"><span class="linenos"> 659</span></a> <span class="s2">"distribute"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distribute</span><span class="p">),</span> +</span><span id="Parser-660"><a href="#Parser-660"><span class="linenos"> 660</span></a> <span class="s2">"sort"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Sort</span><span class="p">),</span> +</span><span id="Parser-661"><a href="#Parser-661"><span class="linenos"> 661</span></a> <span class="s2">"cluster"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sort</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Cluster</span><span class="p">),</span> +</span><span id="Parser-662"><a href="#Parser-662"><span class="linenos"> 662</span></a> <span class="s2">"order"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(),</span> +</span><span id="Parser-663"><a href="#Parser-663"><span class="linenos"> 663</span></a> <span class="s2">"limit"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(),</span> +</span><span id="Parser-664"><a href="#Parser-664"><span class="linenos"> 664</span></a> <span class="s2">"offset"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_offset</span><span class="p">(),</span> +</span><span id="Parser-665"><a href="#Parser-665"><span class="linenos"> 665</span></a> <span class="s2">"lock"</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lock</span><span class="p">(),</span> +</span><span id="Parser-666"><a href="#Parser-666"><span class="linenos"> 666</span></a> <span class="p">}</span> +</span><span id="Parser-667"><a href="#Parser-667"><span class="linenos"> 667</span></a> +</span><span id="Parser-668"><a href="#Parser-668"><span class="linenos"> 668</span></a> <span class="n">SHOW_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-669"><a href="#Parser-669"><span class="linenos"> 669</span></a> <span class="n">SET_PARSERS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> </span><span id="Parser-670"><a href="#Parser-670"><span class="linenos"> 670</span></a> -</span><span id="Parser-671"><a href="#Parser-671"><span class="linenos"> 671</span></a> <span class="n">TRANSACTION_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"DEFERRED"</span><span class="p">,</span> <span class="s2">"IMMEDIATE"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">}</span> +</span><span id="Parser-671"><a href="#Parser-671"><span class="linenos"> 671</span></a> <span class="n">MODIFIABLES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</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="Parser-672"><a href="#Parser-672"><span class="linenos"> 672</span></a> -</span><span id="Parser-673"><a href="#Parser-673"><span class="linenos"> 673</span></a> <span class="n">INSERT_ALTERNATIVES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">}</span> -</span><span id="Parser-674"><a href="#Parser-674"><span class="linenos"> 674</span></a> -</span><span id="Parser-675"><a href="#Parser-675"><span class="linenos"> 675</span></a> <span class="n">WINDOW_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">}</span> -</span><span id="Parser-676"><a href="#Parser-676"><span class="linenos"> 676</span></a> -</span><span id="Parser-677"><a href="#Parser-677"><span class="linenos"> 677</span></a> <span class="n">ADD_CONSTRAINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">}</span> -</span><span id="Parser-678"><a href="#Parser-678"><span class="linenos"> 678</span></a> -</span><span id="Parser-679"><a href="#Parser-679"><span class="linenos"> 679</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-680"><a href="#Parser-680"><span class="linenos"> 680</span></a> -</span><span id="Parser-681"><a href="#Parser-681"><span class="linenos"> 681</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-682"><a href="#Parser-682"><span class="linenos"> 682</span></a> <span class="s2">"error_level"</span><span class="p">,</span> -</span><span id="Parser-683"><a href="#Parser-683"><span class="linenos"> 683</span></a> <span class="s2">"error_message_context"</span><span class="p">,</span> -</span><span id="Parser-684"><a href="#Parser-684"><span class="linenos"> 684</span></a> <span class="s2">"sql"</span><span class="p">,</span> -</span><span id="Parser-685"><a href="#Parser-685"><span class="linenos"> 685</span></a> <span class="s2">"errors"</span><span class="p">,</span> -</span><span id="Parser-686"><a href="#Parser-686"><span class="linenos"> 686</span></a> <span class="s2">"index_offset"</span><span class="p">,</span> -</span><span id="Parser-687"><a href="#Parser-687"><span class="linenos"> 687</span></a> <span class="s2">"unnest_column_only"</span><span class="p">,</span> -</span><span id="Parser-688"><a href="#Parser-688"><span class="linenos"> 688</span></a> <span class="s2">"alias_post_tablesample"</span><span class="p">,</span> -</span><span id="Parser-689"><a href="#Parser-689"><span class="linenos"> 689</span></a> <span class="s2">"max_errors"</span><span class="p">,</span> -</span><span id="Parser-690"><a href="#Parser-690"><span class="linenos"> 690</span></a> <span class="s2">"null_ordering"</span><span class="p">,</span> -</span><span id="Parser-691"><a href="#Parser-691"><span class="linenos"> 691</span></a> <span class="s2">"_tokens"</span><span class="p">,</span> -</span><span id="Parser-692"><a href="#Parser-692"><span class="linenos"> 692</span></a> <span class="s2">"_index"</span><span class="p">,</span> -</span><span id="Parser-693"><a href="#Parser-693"><span class="linenos"> 693</span></a> <span class="s2">"_curr"</span><span class="p">,</span> -</span><span id="Parser-694"><a href="#Parser-694"><span class="linenos"> 694</span></a> <span class="s2">"_next"</span><span class="p">,</span> -</span><span id="Parser-695"><a href="#Parser-695"><span class="linenos"> 695</span></a> <span class="s2">"_prev"</span><span class="p">,</span> -</span><span id="Parser-696"><a href="#Parser-696"><span class="linenos"> 696</span></a> <span class="s2">"_prev_comments"</span><span class="p">,</span> -</span><span id="Parser-697"><a href="#Parser-697"><span class="linenos"> 697</span></a> <span class="s2">"_show_trie"</span><span class="p">,</span> -</span><span id="Parser-698"><a href="#Parser-698"><span class="linenos"> 698</span></a> <span class="s2">"_set_trie"</span><span class="p">,</span> -</span><span id="Parser-699"><a href="#Parser-699"><span class="linenos"> 699</span></a> <span class="p">)</span> -</span><span id="Parser-700"><a href="#Parser-700"><span class="linenos"> 700</span></a> -</span><span id="Parser-701"><a href="#Parser-701"><span class="linenos"> 701</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Parser-702"><a href="#Parser-702"><span class="linenos"> 702</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-703"><a href="#Parser-703"><span class="linenos"> 703</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-704"><a href="#Parser-704"><span class="linenos"> 704</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> -</span><span id="Parser-705"><a href="#Parser-705"><span class="linenos"> 705</span></a> <span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="Parser-706"><a href="#Parser-706"><span class="linenos"> 706</span></a> <span class="n">unnest_column_only</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Parser-707"><a href="#Parser-707"><span class="linenos"> 707</span></a> <span class="n">alias_post_tablesample</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Parser-708"><a href="#Parser-708"><span class="linenos"> 708</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> -</span><span id="Parser-709"><a href="#Parser-709"><span class="linenos"> 709</span></a> <span class="n">null_ordering</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-710"><a href="#Parser-710"><span class="linenos"> 710</span></a> <span class="p">):</span> -</span><span id="Parser-711"><a href="#Parser-711"><span class="linenos"> 711</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> -</span><span id="Parser-712"><a href="#Parser-712"><span class="linenos"> 712</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> -</span><span id="Parser-713"><a href="#Parser-713"><span class="linenos"> 713</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> -</span><span id="Parser-714"><a href="#Parser-714"><span class="linenos"> 714</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> -</span><span id="Parser-715"><a href="#Parser-715"><span class="linenos"> 715</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> -</span><span id="Parser-716"><a href="#Parser-716"><span class="linenos"> 716</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> -</span><span id="Parser-717"><a href="#Parser-717"><span class="linenos"> 717</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> -</span><span id="Parser-718"><a href="#Parser-718"><span class="linenos"> 718</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="Parser-719"><a href="#Parser-719"><span class="linenos"> 719</span></a> -</span><span id="Parser-720"><a href="#Parser-720"><span class="linenos"> 720</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Parser-721"><a href="#Parser-721"><span class="linenos"> 721</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Parser-722"><a href="#Parser-722"><span class="linenos"> 722</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-723"><a href="#Parser-723"><span class="linenos"> 723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-724"><a href="#Parser-724"><span class="linenos"> 724</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Parser-725"><a href="#Parser-725"><span class="linenos"> 725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-726"><a href="#Parser-726"><span class="linenos"> 726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-727"><a href="#Parser-727"><span class="linenos"> 727</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-728"><a href="#Parser-728"><span class="linenos"> 728</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-729"><a href="#Parser-729"><span class="linenos"> 729</span></a> -</span><span id="Parser-730"><a href="#Parser-730"><span class="linenos"> 730</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> -</span><span id="Parser-731"><a href="#Parser-731"><span class="linenos"> 731</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-732"><a href="#Parser-732"><span class="linenos"> 732</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-733"><a href="#Parser-733"><span class="linenos"> 733</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-734"><a href="#Parser-734"><span class="linenos"> 734</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> -</span><span id="Parser-735"><a href="#Parser-735"><span class="linenos"> 735</span></a><span class="sd"> per parsed SQL statement.</span> -</span><span id="Parser-736"><a href="#Parser-736"><span class="linenos"> 736</span></a> -</span><span id="Parser-737"><a href="#Parser-737"><span class="linenos"> 737</span></a><span class="sd"> Args:</span> -</span><span id="Parser-738"><a href="#Parser-738"><span class="linenos"> 738</span></a><span class="sd"> raw_tokens: the list of tokens.</span> -</span><span id="Parser-739"><a href="#Parser-739"><span class="linenos"> 739</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> -</span><span id="Parser-740"><a href="#Parser-740"><span class="linenos"> 740</span></a> -</span><span id="Parser-741"><a href="#Parser-741"><span class="linenos"> 741</span></a><span class="sd"> Returns:</span> -</span><span id="Parser-742"><a href="#Parser-742"><span class="linenos"> 742</span></a><span class="sd"> The list of syntax trees.</span> -</span><span id="Parser-743"><a href="#Parser-743"><span class="linenos"> 743</span></a><span class="sd"> """</span> -</span><span id="Parser-744"><a href="#Parser-744"><span class="linenos"> 744</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> -</span><span id="Parser-745"><a href="#Parser-745"><span class="linenos"> 745</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> -</span><span id="Parser-746"><a href="#Parser-746"><span class="linenos"> 746</span></a> <span class="p">)</span> -</span><span id="Parser-747"><a href="#Parser-747"><span class="linenos"> 747</span></a> -</span><span id="Parser-748"><a href="#Parser-748"><span class="linenos"> 748</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> -</span><span id="Parser-749"><a href="#Parser-749"><span class="linenos"> 749</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-750"><a href="#Parser-750"><span class="linenos"> 750</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> -</span><span id="Parser-751"><a href="#Parser-751"><span class="linenos"> 751</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="Parser-752"><a href="#Parser-752"><span class="linenos"> 752</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-753"><a href="#Parser-753"><span class="linenos"> 753</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-754"><a href="#Parser-754"><span class="linenos"> 754</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-755"><a href="#Parser-755"><span class="linenos"> 755</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> -</span><span id="Parser-756"><a href="#Parser-756"><span class="linenos"> 756</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> -</span><span id="Parser-757"><a href="#Parser-757"><span class="linenos"> 757</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> -</span><span id="Parser-758"><a href="#Parser-758"><span class="linenos"> 758</span></a> -</span><span id="Parser-759"><a href="#Parser-759"><span class="linenos"> 759</span></a><span class="sd"> Args:</span> -</span><span id="Parser-760"><a href="#Parser-760"><span class="linenos"> 760</span></a><span class="sd"> expression_types: the expression type(s) to try and parse the token list into.</span> -</span><span id="Parser-761"><a href="#Parser-761"><span class="linenos"> 761</span></a><span class="sd"> raw_tokens: the list of tokens.</span> -</span><span id="Parser-762"><a href="#Parser-762"><span class="linenos"> 762</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> -</span><span id="Parser-763"><a href="#Parser-763"><span class="linenos"> 763</span></a> -</span><span id="Parser-764"><a href="#Parser-764"><span class="linenos"> 764</span></a><span class="sd"> Returns:</span> -</span><span id="Parser-765"><a href="#Parser-765"><span class="linenos"> 765</span></a><span class="sd"> The target Expression.</span> -</span><span id="Parser-766"><a href="#Parser-766"><span class="linenos"> 766</span></a><span class="sd"> """</span> -</span><span id="Parser-767"><a href="#Parser-767"><span class="linenos"> 767</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-768"><a href="#Parser-768"><span class="linenos"> 768</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> -</span><span id="Parser-769"><a href="#Parser-769"><span class="linenos"> 769</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> -</span><span id="Parser-770"><a href="#Parser-770"><span class="linenos"> 770</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="Parser-771"><a href="#Parser-771"><span class="linenos"> 771</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-772"><a href="#Parser-772"><span class="linenos"> 772</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Parser-773"><a href="#Parser-773"><span class="linenos"> 773</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Parser-774"><a href="#Parser-774"><span class="linenos"> 774</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Parser-775"><a href="#Parser-775"><span class="linenos"> 775</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> -</span><span id="Parser-776"><a href="#Parser-776"><span class="linenos"> 776</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> -</span><span id="Parser-777"><a href="#Parser-777"><span class="linenos"> 777</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="Parser-778"><a href="#Parser-778"><span class="linenos"> 778</span></a> <span class="sa">f</span><span class="s2">"Failed to parse into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Parser-779"><a href="#Parser-779"><span class="linenos"> 779</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> -</span><span id="Parser-780"><a href="#Parser-780"><span class="linenos"> 780</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> -</span><span id="Parser-781"><a href="#Parser-781"><span class="linenos"> 781</span></a> -</span><span id="Parser-782"><a href="#Parser-782"><span class="linenos"> 782</span></a> <span class="k">def</span> <span class="nf">_parse</span><span class="p">(</span> -</span><span id="Parser-783"><a href="#Parser-783"><span class="linenos"> 783</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-784"><a href="#Parser-784"><span class="linenos"> 784</span></a> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Parser</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> -</span><span id="Parser-785"><a href="#Parser-785"><span class="linenos"> 785</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="Parser-786"><a href="#Parser-786"><span class="linenos"> 786</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-787"><a href="#Parser-787"><span class="linenos"> 787</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-788"><a href="#Parser-788"><span class="linenos"> 788</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="Parser-789"><a href="#Parser-789"><span class="linenos"> 789</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> <span class="ow">or</span> <span class="s2">""</span> -</span><span id="Parser-790"><a href="#Parser-790"><span class="linenos"> 790</span></a> <span class="n">total</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">)</span> -</span><span id="Parser-791"><a href="#Parser-791"><span class="linenos"> 791</span></a> <span class="n">chunks</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[[]]</span> -</span><span id="Parser-792"><a href="#Parser-792"><span class="linenos"> 792</span></a> -</span><span id="Parser-793"><a href="#Parser-793"><span class="linenos"> 793</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">):</span> -</span><span id="Parser-794"><a href="#Parser-794"><span class="linenos"> 794</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> -</span><span id="Parser-795"><a href="#Parser-795"><span class="linenos"> 795</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">total</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-796"><a href="#Parser-796"><span class="linenos"> 796</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span> -</span><span id="Parser-797"><a href="#Parser-797"><span class="linenos"> 797</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-798"><a href="#Parser-798"><span class="linenos"> 798</span></a> <span class="n">chunks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> -</span><span id="Parser-799"><a href="#Parser-799"><span class="linenos"> 799</span></a> -</span><span id="Parser-800"><a href="#Parser-800"><span class="linenos"> 800</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-801"><a href="#Parser-801"><span class="linenos"> 801</span></a> -</span><span id="Parser-802"><a href="#Parser-802"><span class="linenos"> 802</span></a> <span class="k">for</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">:</span> -</span><span id="Parser-803"><a href="#Parser-803"><span class="linenos"> 803</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> -</span><span id="Parser-804"><a href="#Parser-804"><span class="linenos"> 804</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="n">tokens</span> -</span><span id="Parser-805"><a href="#Parser-805"><span class="linenos"> 805</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-806"><a href="#Parser-806"><span class="linenos"> 806</span></a> -</span><span id="Parser-807"><a href="#Parser-807"><span class="linenos"> 807</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_method</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> -</span><span id="Parser-808"><a href="#Parser-808"><span class="linenos"> 808</span></a> -</span><span id="Parser-809"><a href="#Parser-809"><span class="linenos"> 809</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">):</span> -</span><span id="Parser-810"><a href="#Parser-810"><span class="linenos"> 810</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid expression / Unexpected token"</span><span class="p">)</span> +</span><span id="Parser-673"><a href="#Parser-673"><span class="linenos"> 673</span></a> <span class="n">CREATABLES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Parser-674"><a href="#Parser-674"><span class="linenos"> 674</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="Parser-675"><a href="#Parser-675"><span class="linenos"> 675</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="Parser-676"><a href="#Parser-676"><span class="linenos"> 676</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="Parser-677"><a href="#Parser-677"><span class="linenos"> 677</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="Parser-678"><a href="#Parser-678"><span class="linenos"> 678</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="Parser-679"><a href="#Parser-679"><span class="linenos"> 679</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Parser-680"><a href="#Parser-680"><span class="linenos"> 680</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="Parser-681"><a href="#Parser-681"><span class="linenos"> 681</span></a> <span class="p">}</span> +</span><span id="Parser-682"><a href="#Parser-682"><span class="linenos"> 682</span></a> +</span><span id="Parser-683"><a href="#Parser-683"><span class="linenos"> 683</span></a> <span class="n">TRANSACTION_KIND</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"DEFERRED"</span><span class="p">,</span> <span class="s2">"IMMEDIATE"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">}</span> +</span><span id="Parser-684"><a href="#Parser-684"><span class="linenos"> 684</span></a> +</span><span id="Parser-685"><a href="#Parser-685"><span class="linenos"> 685</span></a> <span class="n">INSERT_ALTERNATIVES</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"ABORT"</span><span class="p">,</span> <span class="s2">"FAIL"</span><span class="p">,</span> <span class="s2">"IGNORE"</span><span class="p">,</span> <span class="s2">"REPLACE"</span><span class="p">,</span> <span class="s2">"ROLLBACK"</span><span class="p">}</span> +</span><span id="Parser-686"><a href="#Parser-686"><span class="linenos"> 686</span></a> +</span><span id="Parser-687"><a href="#Parser-687"><span class="linenos"> 687</span></a> <span class="n">WINDOW_ALIAS_TOKENS</span> <span class="o">=</span> <span class="n">ID_VAR_TOKENS</span> <span class="o">-</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">}</span> +</span><span id="Parser-688"><a href="#Parser-688"><span class="linenos"> 688</span></a> +</span><span id="Parser-689"><a href="#Parser-689"><span class="linenos"> 689</span></a> <span class="n">ADD_CONSTRAINT_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">}</span> +</span><span id="Parser-690"><a href="#Parser-690"><span class="linenos"> 690</span></a> +</span><span id="Parser-691"><a href="#Parser-691"><span class="linenos"> 691</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-692"><a href="#Parser-692"><span class="linenos"> 692</span></a> +</span><span id="Parser-693"><a href="#Parser-693"><span class="linenos"> 693</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-694"><a href="#Parser-694"><span class="linenos"> 694</span></a> <span class="s2">"error_level"</span><span class="p">,</span> +</span><span id="Parser-695"><a href="#Parser-695"><span class="linenos"> 695</span></a> <span class="s2">"error_message_context"</span><span class="p">,</span> +</span><span id="Parser-696"><a href="#Parser-696"><span class="linenos"> 696</span></a> <span class="s2">"sql"</span><span class="p">,</span> +</span><span id="Parser-697"><a href="#Parser-697"><span class="linenos"> 697</span></a> <span class="s2">"errors"</span><span class="p">,</span> +</span><span id="Parser-698"><a href="#Parser-698"><span class="linenos"> 698</span></a> <span class="s2">"index_offset"</span><span class="p">,</span> +</span><span id="Parser-699"><a href="#Parser-699"><span class="linenos"> 699</span></a> <span class="s2">"unnest_column_only"</span><span class="p">,</span> +</span><span id="Parser-700"><a href="#Parser-700"><span class="linenos"> 700</span></a> <span class="s2">"alias_post_tablesample"</span><span class="p">,</span> +</span><span id="Parser-701"><a href="#Parser-701"><span class="linenos"> 701</span></a> <span class="s2">"max_errors"</span><span class="p">,</span> +</span><span id="Parser-702"><a href="#Parser-702"><span class="linenos"> 702</span></a> <span class="s2">"null_ordering"</span><span class="p">,</span> +</span><span id="Parser-703"><a href="#Parser-703"><span class="linenos"> 703</span></a> <span class="s2">"_tokens"</span><span class="p">,</span> +</span><span id="Parser-704"><a href="#Parser-704"><span class="linenos"> 704</span></a> <span class="s2">"_index"</span><span class="p">,</span> +</span><span id="Parser-705"><a href="#Parser-705"><span class="linenos"> 705</span></a> <span class="s2">"_curr"</span><span class="p">,</span> +</span><span id="Parser-706"><a href="#Parser-706"><span class="linenos"> 706</span></a> <span class="s2">"_next"</span><span class="p">,</span> +</span><span id="Parser-707"><a href="#Parser-707"><span class="linenos"> 707</span></a> <span class="s2">"_prev"</span><span class="p">,</span> +</span><span id="Parser-708"><a href="#Parser-708"><span class="linenos"> 708</span></a> <span class="s2">"_prev_comments"</span><span class="p">,</span> +</span><span id="Parser-709"><a href="#Parser-709"><span class="linenos"> 709</span></a> <span class="s2">"_show_trie"</span><span class="p">,</span> +</span><span id="Parser-710"><a href="#Parser-710"><span class="linenos"> 710</span></a> <span class="s2">"_set_trie"</span><span class="p">,</span> +</span><span id="Parser-711"><a href="#Parser-711"><span class="linenos"> 711</span></a> <span class="p">)</span> +</span><span id="Parser-712"><a href="#Parser-712"><span class="linenos"> 712</span></a> +</span><span id="Parser-713"><a href="#Parser-713"><span class="linenos"> 713</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Parser-714"><a href="#Parser-714"><span class="linenos"> 714</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-715"><a href="#Parser-715"><span class="linenos"> 715</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-716"><a href="#Parser-716"><span class="linenos"> 716</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> +</span><span id="Parser-717"><a href="#Parser-717"><span class="linenos"> 717</span></a> <span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="Parser-718"><a href="#Parser-718"><span class="linenos"> 718</span></a> <span class="n">unnest_column_only</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Parser-719"><a href="#Parser-719"><span class="linenos"> 719</span></a> <span class="n">alias_post_tablesample</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Parser-720"><a href="#Parser-720"><span class="linenos"> 720</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> +</span><span id="Parser-721"><a href="#Parser-721"><span class="linenos"> 721</span></a> <span class="n">null_ordering</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-722"><a href="#Parser-722"><span class="linenos"> 722</span></a> <span class="p">):</span> +</span><span id="Parser-723"><a href="#Parser-723"><span class="linenos"> 723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> +</span><span id="Parser-724"><a href="#Parser-724"><span class="linenos"> 724</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> +</span><span id="Parser-725"><a href="#Parser-725"><span class="linenos"> 725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> +</span><span id="Parser-726"><a href="#Parser-726"><span class="linenos"> 726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> +</span><span id="Parser-727"><a href="#Parser-727"><span class="linenos"> 727</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> +</span><span id="Parser-728"><a href="#Parser-728"><span class="linenos"> 728</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> +</span><span id="Parser-729"><a href="#Parser-729"><span class="linenos"> 729</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> +</span><span id="Parser-730"><a href="#Parser-730"><span class="linenos"> 730</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Parser-731"><a href="#Parser-731"><span class="linenos"> 731</span></a> +</span><span id="Parser-732"><a href="#Parser-732"><span class="linenos"> 732</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Parser-733"><a href="#Parser-733"><span class="linenos"> 733</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Parser-734"><a href="#Parser-734"><span class="linenos"> 734</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-735"><a href="#Parser-735"><span class="linenos"> 735</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-736"><a href="#Parser-736"><span class="linenos"> 736</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Parser-737"><a href="#Parser-737"><span class="linenos"> 737</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-738"><a href="#Parser-738"><span class="linenos"> 738</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-739"><a href="#Parser-739"><span class="linenos"> 739</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-740"><a href="#Parser-740"><span class="linenos"> 740</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-741"><a href="#Parser-741"><span class="linenos"> 741</span></a> +</span><span id="Parser-742"><a href="#Parser-742"><span class="linenos"> 742</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> +</span><span id="Parser-743"><a href="#Parser-743"><span class="linenos"> 743</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-744"><a href="#Parser-744"><span class="linenos"> 744</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-745"><a href="#Parser-745"><span class="linenos"> 745</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-746"><a href="#Parser-746"><span class="linenos"> 746</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> +</span><span id="Parser-747"><a href="#Parser-747"><span class="linenos"> 747</span></a><span class="sd"> per parsed SQL statement.</span> +</span><span id="Parser-748"><a href="#Parser-748"><span class="linenos"> 748</span></a> +</span><span id="Parser-749"><a href="#Parser-749"><span class="linenos"> 749</span></a><span class="sd"> Args:</span> +</span><span id="Parser-750"><a href="#Parser-750"><span class="linenos"> 750</span></a><span class="sd"> raw_tokens: the list of tokens.</span> +</span><span id="Parser-751"><a href="#Parser-751"><span class="linenos"> 751</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> +</span><span id="Parser-752"><a href="#Parser-752"><span class="linenos"> 752</span></a> +</span><span id="Parser-753"><a href="#Parser-753"><span class="linenos"> 753</span></a><span class="sd"> Returns:</span> +</span><span id="Parser-754"><a href="#Parser-754"><span class="linenos"> 754</span></a><span class="sd"> The list of syntax trees.</span> +</span><span id="Parser-755"><a href="#Parser-755"><span class="linenos"> 755</span></a><span class="sd"> """</span> +</span><span id="Parser-756"><a href="#Parser-756"><span class="linenos"> 756</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> +</span><span id="Parser-757"><a href="#Parser-757"><span class="linenos"> 757</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> +</span><span id="Parser-758"><a href="#Parser-758"><span class="linenos"> 758</span></a> <span class="p">)</span> +</span><span id="Parser-759"><a href="#Parser-759"><span class="linenos"> 759</span></a> +</span><span id="Parser-760"><a href="#Parser-760"><span class="linenos"> 760</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> +</span><span id="Parser-761"><a href="#Parser-761"><span class="linenos"> 761</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-762"><a href="#Parser-762"><span class="linenos"> 762</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> +</span><span id="Parser-763"><a href="#Parser-763"><span class="linenos"> 763</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="Parser-764"><a href="#Parser-764"><span class="linenos"> 764</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-765"><a href="#Parser-765"><span class="linenos"> 765</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-766"><a href="#Parser-766"><span class="linenos"> 766</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-767"><a href="#Parser-767"><span class="linenos"> 767</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> +</span><span id="Parser-768"><a href="#Parser-768"><span class="linenos"> 768</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> +</span><span id="Parser-769"><a href="#Parser-769"><span class="linenos"> 769</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> +</span><span id="Parser-770"><a href="#Parser-770"><span class="linenos"> 770</span></a> +</span><span id="Parser-771"><a href="#Parser-771"><span class="linenos"> 771</span></a><span class="sd"> Args:</span> +</span><span id="Parser-772"><a href="#Parser-772"><span class="linenos"> 772</span></a><span class="sd"> expression_types: the expression type(s) to try and parse the token list into.</span> +</span><span id="Parser-773"><a href="#Parser-773"><span class="linenos"> 773</span></a><span class="sd"> raw_tokens: the list of tokens.</span> +</span><span id="Parser-774"><a href="#Parser-774"><span class="linenos"> 774</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> +</span><span id="Parser-775"><a href="#Parser-775"><span class="linenos"> 775</span></a> +</span><span id="Parser-776"><a href="#Parser-776"><span class="linenos"> 776</span></a><span class="sd"> Returns:</span> +</span><span id="Parser-777"><a href="#Parser-777"><span class="linenos"> 777</span></a><span class="sd"> The target Expression.</span> +</span><span id="Parser-778"><a href="#Parser-778"><span class="linenos"> 778</span></a><span class="sd"> """</span> +</span><span id="Parser-779"><a href="#Parser-779"><span class="linenos"> 779</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-780"><a href="#Parser-780"><span class="linenos"> 780</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> +</span><span id="Parser-781"><a href="#Parser-781"><span class="linenos"> 781</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> +</span><span id="Parser-782"><a href="#Parser-782"><span class="linenos"> 782</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="Parser-783"><a href="#Parser-783"><span class="linenos"> 783</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-784"><a href="#Parser-784"><span class="linenos"> 784</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Parser-785"><a href="#Parser-785"><span class="linenos"> 785</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Parser-786"><a href="#Parser-786"><span class="linenos"> 786</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Parser-787"><a href="#Parser-787"><span class="linenos"> 787</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> +</span><span id="Parser-788"><a href="#Parser-788"><span class="linenos"> 788</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> +</span><span id="Parser-789"><a href="#Parser-789"><span class="linenos"> 789</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="Parser-790"><a href="#Parser-790"><span class="linenos"> 790</span></a> <span class="sa">f</span><span class="s2">"Failed to parse into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Parser-791"><a href="#Parser-791"><span class="linenos"> 791</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> +</span><span id="Parser-792"><a href="#Parser-792"><span class="linenos"> 792</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> +</span><span id="Parser-793"><a href="#Parser-793"><span class="linenos"> 793</span></a> +</span><span id="Parser-794"><a href="#Parser-794"><span class="linenos"> 794</span></a> <span class="k">def</span> <span class="nf">_parse</span><span class="p">(</span> +</span><span id="Parser-795"><a href="#Parser-795"><span class="linenos"> 795</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-796"><a href="#Parser-796"><span class="linenos"> 796</span></a> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Parser</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span> +</span><span id="Parser-797"><a href="#Parser-797"><span class="linenos"> 797</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="Parser-798"><a href="#Parser-798"><span class="linenos"> 798</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-799"><a href="#Parser-799"><span class="linenos"> 799</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-800"><a href="#Parser-800"><span class="linenos"> 800</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Parser-801"><a href="#Parser-801"><span class="linenos"> 801</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> <span class="ow">or</span> <span class="s2">""</span> +</span><span id="Parser-802"><a href="#Parser-802"><span class="linenos"> 802</span></a> <span class="n">total</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">)</span> +</span><span id="Parser-803"><a href="#Parser-803"><span class="linenos"> 803</span></a> <span class="n">chunks</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[[]]</span> +</span><span id="Parser-804"><a href="#Parser-804"><span class="linenos"> 804</span></a> +</span><span id="Parser-805"><a href="#Parser-805"><span class="linenos"> 805</span></a> <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">token</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">raw_tokens</span><span class="p">):</span> +</span><span id="Parser-806"><a href="#Parser-806"><span class="linenos"> 806</span></a> <span class="k">if</span> <span class="n">token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">:</span> +</span><span id="Parser-807"><a href="#Parser-807"><span class="linenos"> 807</span></a> <span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="n">total</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-808"><a href="#Parser-808"><span class="linenos"> 808</span></a> <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">([])</span> +</span><span id="Parser-809"><a href="#Parser-809"><span class="linenos"> 809</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-810"><a href="#Parser-810"><span class="linenos"> 810</span></a> <span class="n">chunks</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> </span><span id="Parser-811"><a href="#Parser-811"><span class="linenos"> 811</span></a> -</span><span id="Parser-812"><a href="#Parser-812"><span class="linenos"> 812</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">check_errors</span><span class="p">()</span> +</span><span id="Parser-812"><a href="#Parser-812"><span class="linenos"> 812</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="Parser-813"><a href="#Parser-813"><span class="linenos"> 813</span></a> -</span><span id="Parser-814"><a href="#Parser-814"><span class="linenos"> 814</span></a> <span class="k">return</span> <span class="n">expressions</span> -</span><span id="Parser-815"><a href="#Parser-815"><span class="linenos"> 815</span></a> -</span><span id="Parser-816"><a href="#Parser-816"><span class="linenos"> 816</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-817"><a href="#Parser-817"><span class="linenos"> 817</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-818"><a href="#Parser-818"><span class="linenos"> 818</span></a><span class="sd"> Logs or raises any found errors, depending on the chosen error level setting.</span> -</span><span id="Parser-819"><a href="#Parser-819"><span class="linenos"> 819</span></a><span class="sd"> """</span> -</span><span id="Parser-820"><a href="#Parser-820"><span class="linenos"> 820</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> -</span><span id="Parser-821"><a href="#Parser-821"><span class="linenos"> 821</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="Parser-822"><a href="#Parser-822"><span class="linenos"> 822</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> -</span><span id="Parser-823"><a href="#Parser-823"><span class="linenos"> 823</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="Parser-824"><a href="#Parser-824"><span class="linenos"> 824</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="Parser-825"><a href="#Parser-825"><span class="linenos"> 825</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> -</span><span id="Parser-826"><a href="#Parser-826"><span class="linenos"> 826</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> -</span><span id="Parser-827"><a href="#Parser-827"><span class="linenos"> 827</span></a> <span class="p">)</span> -</span><span id="Parser-828"><a href="#Parser-828"><span class="linenos"> 828</span></a> -</span><span id="Parser-829"><a href="#Parser-829"><span class="linenos"> 829</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-830"><a href="#Parser-830"><span class="linenos"> 830</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-831"><a href="#Parser-831"><span class="linenos"> 831</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> -</span><span id="Parser-832"><a href="#Parser-832"><span class="linenos"> 832</span></a><span class="sd"> error level setting.</span> -</span><span id="Parser-833"><a href="#Parser-833"><span class="linenos"> 833</span></a><span class="sd"> """</span> -</span><span id="Parser-834"><a href="#Parser-834"><span class="linenos"> 834</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Parser-835"><a href="#Parser-835"><span class="linenos"> 835</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> -</span><span id="Parser-836"><a href="#Parser-836"><span class="linenos"> 836</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-837"><a href="#Parser-837"><span class="linenos"> 837</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> -</span><span id="Parser-838"><a href="#Parser-838"><span class="linenos"> 838</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="Parser-839"><a href="#Parser-839"><span class="linenos"> 839</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="Parser-814"><a href="#Parser-814"><span class="linenos"> 814</span></a> <span class="k">for</span> <span class="n">tokens</span> <span class="ow">in</span> <span class="n">chunks</span><span class="p">:</span> +</span><span id="Parser-815"><a href="#Parser-815"><span class="linenos"> 815</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> +</span><span id="Parser-816"><a href="#Parser-816"><span class="linenos"> 816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="n">tokens</span> +</span><span id="Parser-817"><a href="#Parser-817"><span class="linenos"> 817</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-818"><a href="#Parser-818"><span class="linenos"> 818</span></a> +</span><span id="Parser-819"><a href="#Parser-819"><span class="linenos"> 819</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_method</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span> +</span><span id="Parser-820"><a href="#Parser-820"><span class="linenos"> 820</span></a> +</span><span id="Parser-821"><a href="#Parser-821"><span class="linenos"> 821</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o"><</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">):</span> +</span><span id="Parser-822"><a href="#Parser-822"><span class="linenos"> 822</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid expression / Unexpected token"</span><span class="p">)</span> +</span><span id="Parser-823"><a href="#Parser-823"><span class="linenos"> 823</span></a> +</span><span id="Parser-824"><a href="#Parser-824"><span class="linenos"> 824</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">check_errors</span><span class="p">()</span> +</span><span id="Parser-825"><a href="#Parser-825"><span class="linenos"> 825</span></a> +</span><span id="Parser-826"><a href="#Parser-826"><span class="linenos"> 826</span></a> <span class="k">return</span> <span class="n">expressions</span> +</span><span id="Parser-827"><a href="#Parser-827"><span class="linenos"> 827</span></a> +</span><span id="Parser-828"><a href="#Parser-828"><span class="linenos"> 828</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-829"><a href="#Parser-829"><span class="linenos"> 829</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-830"><a href="#Parser-830"><span class="linenos"> 830</span></a><span class="sd"> Logs or raises any found errors, depending on the chosen error level setting.</span> +</span><span id="Parser-831"><a href="#Parser-831"><span class="linenos"> 831</span></a><span class="sd"> """</span> +</span><span id="Parser-832"><a href="#Parser-832"><span class="linenos"> 832</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> +</span><span id="Parser-833"><a href="#Parser-833"><span class="linenos"> 833</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="Parser-834"><a href="#Parser-834"><span class="linenos"> 834</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> +</span><span id="Parser-835"><a href="#Parser-835"><span class="linenos"> 835</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="Parser-836"><a href="#Parser-836"><span class="linenos"> 836</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="Parser-837"><a href="#Parser-837"><span class="linenos"> 837</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> +</span><span id="Parser-838"><a href="#Parser-838"><span class="linenos"> 838</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> +</span><span id="Parser-839"><a href="#Parser-839"><span class="linenos"> 839</span></a> <span class="p">)</span> </span><span id="Parser-840"><a href="#Parser-840"><span class="linenos"> 840</span></a> -</span><span id="Parser-841"><a href="#Parser-841"><span class="linenos"> 841</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> -</span><span id="Parser-842"><a href="#Parser-842"><span class="linenos"> 842</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> -</span><span id="Parser-843"><a href="#Parser-843"><span class="linenos"> 843</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Parser-844"><a href="#Parser-844"><span class="linenos"> 844</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> -</span><span id="Parser-845"><a href="#Parser-845"><span class="linenos"> 845</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> -</span><span id="Parser-846"><a href="#Parser-846"><span class="linenos"> 846</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> -</span><span id="Parser-847"><a href="#Parser-847"><span class="linenos"> 847</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> -</span><span id="Parser-848"><a href="#Parser-848"><span class="linenos"> 848</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> -</span><span id="Parser-849"><a href="#Parser-849"><span class="linenos"> 849</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> -</span><span id="Parser-850"><a href="#Parser-850"><span class="linenos"> 850</span></a> <span class="p">)</span> -</span><span id="Parser-851"><a href="#Parser-851"><span class="linenos"> 851</span></a> -</span><span id="Parser-852"><a href="#Parser-852"><span class="linenos"> 852</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> -</span><span id="Parser-853"><a href="#Parser-853"><span class="linenos"> 853</span></a> <span class="k">raise</span> <span class="n">error</span> -</span><span id="Parser-854"><a href="#Parser-854"><span class="linenos"> 854</span></a> -</span><span id="Parser-855"><a href="#Parser-855"><span class="linenos"> 855</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> -</span><span id="Parser-856"><a href="#Parser-856"><span class="linenos"> 856</span></a> -</span><span id="Parser-857"><a href="#Parser-857"><span class="linenos"> 857</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> -</span><span id="Parser-858"><a href="#Parser-858"><span class="linenos"> 858</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">comments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="Parser-859"><a href="#Parser-859"><span class="linenos"> 859</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-860"><a href="#Parser-860"><span class="linenos"> 860</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-861"><a href="#Parser-861"><span class="linenos"> 861</span></a><span class="sd"> Creates a new, validated Expression.</span> -</span><span id="Parser-862"><a href="#Parser-862"><span class="linenos"> 862</span></a> -</span><span id="Parser-863"><a href="#Parser-863"><span class="linenos"> 863</span></a><span class="sd"> Args:</span> -</span><span id="Parser-864"><a href="#Parser-864"><span class="linenos"> 864</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> -</span><span id="Parser-865"><a href="#Parser-865"><span class="linenos"> 865</span></a><span class="sd"> comments: an optional list of comments to attach to the expression.</span> -</span><span id="Parser-866"><a href="#Parser-866"><span class="linenos"> 866</span></a><span class="sd"> kwargs: the arguments to set for the expression along with their respective values.</span> -</span><span id="Parser-867"><a href="#Parser-867"><span class="linenos"> 867</span></a> -</span><span id="Parser-868"><a href="#Parser-868"><span class="linenos"> 868</span></a><span class="sd"> Returns:</span> -</span><span id="Parser-869"><a href="#Parser-869"><span class="linenos"> 869</span></a><span class="sd"> The target expression.</span> -</span><span id="Parser-870"><a href="#Parser-870"><span class="linenos"> 870</span></a><span class="sd"> """</span> -</span><span id="Parser-871"><a href="#Parser-871"><span class="linenos"> 871</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="Parser-872"><a href="#Parser-872"><span class="linenos"> 872</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="Parser-873"><a href="#Parser-873"><span class="linenos"> 873</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-874"><a href="#Parser-874"><span class="linenos"> 874</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-875"><a href="#Parser-875"><span class="linenos"> 875</span></a> <span class="k">if</span> <span class="n">comments</span><span class="p">:</span> -</span><span id="Parser-876"><a href="#Parser-876"><span class="linenos"> 876</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="Parser-877"><a href="#Parser-877"><span class="linenos"> 877</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> -</span><span id="Parser-878"><a href="#Parser-878"><span class="linenos"> 878</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="Parser-841"><a href="#Parser-841"><span class="linenos"> 841</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-842"><a href="#Parser-842"><span class="linenos"> 842</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-843"><a href="#Parser-843"><span class="linenos"> 843</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> +</span><span id="Parser-844"><a href="#Parser-844"><span class="linenos"> 844</span></a><span class="sd"> error level setting.</span> +</span><span id="Parser-845"><a href="#Parser-845"><span class="linenos"> 845</span></a><span class="sd"> """</span> +</span><span id="Parser-846"><a href="#Parser-846"><span class="linenos"> 846</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Parser-847"><a href="#Parser-847"><span class="linenos"> 847</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> +</span><span id="Parser-848"><a href="#Parser-848"><span class="linenos"> 848</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-849"><a href="#Parser-849"><span class="linenos"> 849</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> +</span><span id="Parser-850"><a href="#Parser-850"><span class="linenos"> 850</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="Parser-851"><a href="#Parser-851"><span class="linenos"> 851</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="Parser-852"><a href="#Parser-852"><span class="linenos"> 852</span></a> +</span><span id="Parser-853"><a href="#Parser-853"><span class="linenos"> 853</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> +</span><span id="Parser-854"><a href="#Parser-854"><span class="linenos"> 854</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> +</span><span id="Parser-855"><a href="#Parser-855"><span class="linenos"> 855</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Parser-856"><a href="#Parser-856"><span class="linenos"> 856</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> +</span><span id="Parser-857"><a href="#Parser-857"><span class="linenos"> 857</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> +</span><span id="Parser-858"><a href="#Parser-858"><span class="linenos"> 858</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> +</span><span id="Parser-859"><a href="#Parser-859"><span class="linenos"> 859</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> +</span><span id="Parser-860"><a href="#Parser-860"><span class="linenos"> 860</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> +</span><span id="Parser-861"><a href="#Parser-861"><span class="linenos"> 861</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> +</span><span id="Parser-862"><a href="#Parser-862"><span class="linenos"> 862</span></a> <span class="p">)</span> +</span><span id="Parser-863"><a href="#Parser-863"><span class="linenos"> 863</span></a> +</span><span id="Parser-864"><a href="#Parser-864"><span class="linenos"> 864</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> +</span><span id="Parser-865"><a href="#Parser-865"><span class="linenos"> 865</span></a> <span class="k">raise</span> <span class="n">error</span> +</span><span id="Parser-866"><a href="#Parser-866"><span class="linenos"> 866</span></a> +</span><span id="Parser-867"><a href="#Parser-867"><span class="linenos"> 867</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> +</span><span id="Parser-868"><a href="#Parser-868"><span class="linenos"> 868</span></a> +</span><span id="Parser-869"><a href="#Parser-869"><span class="linenos"> 869</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> +</span><span id="Parser-870"><a href="#Parser-870"><span class="linenos"> 870</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">comments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="Parser-871"><a href="#Parser-871"><span class="linenos"> 871</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-872"><a href="#Parser-872"><span class="linenos"> 872</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-873"><a href="#Parser-873"><span class="linenos"> 873</span></a><span class="sd"> Creates a new, validated Expression.</span> +</span><span id="Parser-874"><a href="#Parser-874"><span class="linenos"> 874</span></a> +</span><span id="Parser-875"><a href="#Parser-875"><span class="linenos"> 875</span></a><span class="sd"> Args:</span> +</span><span id="Parser-876"><a href="#Parser-876"><span class="linenos"> 876</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> +</span><span id="Parser-877"><a href="#Parser-877"><span class="linenos"> 877</span></a><span class="sd"> comments: an optional list of comments to attach to the expression.</span> +</span><span id="Parser-878"><a href="#Parser-878"><span class="linenos"> 878</span></a><span class="sd"> kwargs: the arguments to set for the expression along with their respective values.</span> </span><span id="Parser-879"><a href="#Parser-879"><span class="linenos"> 879</span></a> -</span><span id="Parser-880"><a href="#Parser-880"><span class="linenos"> 880</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span> -</span><span id="Parser-881"><a href="#Parser-881"><span class="linenos"> 881</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">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-882"><a href="#Parser-882"><span class="linenos"> 882</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-883"><a href="#Parser-883"><span class="linenos"> 883</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser-884"><a href="#Parser-884"><span class="linenos"> 884</span></a><span class="sd"> Validates an already instantiated expression, making sure that all its mandatory arguments</span> -</span><span id="Parser-885"><a href="#Parser-885"><span class="linenos"> 885</span></a><span class="sd"> are set.</span> -</span><span id="Parser-886"><a href="#Parser-886"><span class="linenos"> 886</span></a> -</span><span id="Parser-887"><a href="#Parser-887"><span class="linenos"> 887</span></a><span class="sd"> Args:</span> -</span><span id="Parser-888"><a href="#Parser-888"><span class="linenos"> 888</span></a><span class="sd"> expression: the expression to validate.</span> -</span><span id="Parser-889"><a href="#Parser-889"><span class="linenos"> 889</span></a><span class="sd"> args: an optional list of items that was used to instantiate the expression, if it's a Func.</span> -</span><span id="Parser-890"><a href="#Parser-890"><span class="linenos"> 890</span></a><span class="sd"> """</span> -</span><span id="Parser-891"><a href="#Parser-891"><span class="linenos"> 891</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> -</span><span id="Parser-892"><a href="#Parser-892"><span class="linenos"> 892</span></a> <span class="k">return</span> -</span><span id="Parser-893"><a href="#Parser-893"><span class="linenos"> 893</span></a> -</span><span id="Parser-894"><a href="#Parser-894"><span class="linenos"> 894</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="Parser-895"><a href="#Parser-895"><span class="linenos"> 895</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> -</span><span id="Parser-896"><a href="#Parser-896"><span class="linenos"> 896</span></a> -</span><span id="Parser-897"><a href="#Parser-897"><span class="linenos"> 897</span></a> <span class="k">def</span> <span class="nf">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">,</span> <span class="n">end</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Parser-898"><a href="#Parser-898"><span class="linenos"> 898</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">end</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">end</span><span class="o">.</span><span class="n">text</span><span class="p">)]</span> -</span><span id="Parser-899"><a href="#Parser-899"><span class="linenos"> 899</span></a> -</span><span id="Parser-900"><a href="#Parser-900"><span class="linenos"> 900</span></a> <span class="k">def</span> <span class="nf">_find_token</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> -</span><span id="Parser-901"><a href="#Parser-901"><span class="linenos"> 901</span></a> <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Parser-902"><a href="#Parser-902"><span class="linenos"> 902</span></a> <span class="n">col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Parser-903"><a href="#Parser-903"><span class="linenos"> 903</span></a> <span class="n">index</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Parser-904"><a href="#Parser-904"><span class="linenos"> 904</span></a> -</span><span id="Parser-905"><a href="#Parser-905"><span class="linenos"> 905</span></a> <span class="k">while</span> <span class="n">line</span> <span class="o"><</span> <span class="n">token</span><span class="o">.</span><span class="n">line</span> <span class="ow">or</span> <span class="n">col</span> <span class="o"><</span> <span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">:</span> -</span><span id="Parser-906"><a href="#Parser-906"><span class="linenos"> 906</span></a> <span class="k">if</span> <span class="n">Tokenizer</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</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">index</span><span class="p">])</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> -</span><span id="Parser-907"><a href="#Parser-907"><span class="linenos"> 907</span></a> <span class="n">line</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Parser-908"><a href="#Parser-908"><span class="linenos"> 908</span></a> <span class="n">col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Parser-909"><a href="#Parser-909"><span class="linenos"> 909</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-910"><a href="#Parser-910"><span class="linenos"> 910</span></a> <span class="n">col</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Parser-911"><a href="#Parser-911"><span class="linenos"> 911</span></a> <span class="n">index</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Parser-912"><a href="#Parser-912"><span class="linenos"> 912</span></a> -</span><span id="Parser-913"><a href="#Parser-913"><span class="linenos"> 913</span></a> <span class="k">return</span> <span class="n">index</span> -</span><span id="Parser-914"><a href="#Parser-914"><span class="linenos"> 914</span></a> -</span><span id="Parser-915"><a href="#Parser-915"><span class="linenos"> 915</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">times</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-916"><a href="#Parser-916"><span class="linenos"> 916</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+=</span> <span class="n">times</span> -</span><span id="Parser-917"><a href="#Parser-917"><span class="linenos"> 917</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> -</span><span id="Parser-918"><a href="#Parser-918"><span class="linenos"> 918</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-919"><a href="#Parser-919"><span class="linenos"> 919</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="Parser-920"><a href="#Parser-920"><span class="linenos"> 920</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> -</span><span id="Parser-921"><a href="#Parser-921"><span class="linenos"> 921</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> -</span><span id="Parser-922"><a href="#Parser-922"><span class="linenos"> 922</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-923"><a href="#Parser-923"><span class="linenos"> 923</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-924"><a href="#Parser-924"><span class="linenos"> 924</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-925"><a href="#Parser-925"><span class="linenos"> 925</span></a> -</span><span id="Parser-926"><a href="#Parser-926"><span class="linenos"> 926</span></a> <span class="k">def</span> <span class="nf">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-927"><a href="#Parser-927"><span class="linenos"> 927</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> -</span><span id="Parser-928"><a href="#Parser-928"><span class="linenos"> 928</span></a> -</span><span id="Parser-929"><a href="#Parser-929"><span class="linenos"> 929</span></a> <span class="k">def</span> <span class="nf">_parse_command</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-930"><a href="#Parser-930"><span class="linenos"> 930</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="Parser-931"><a href="#Parser-931"><span class="linenos"> 931</span></a> -</span><span id="Parser-932"><a href="#Parser-932"><span class="linenos"> 932</span></a> <span class="k">def</span> <span class="nf">_parse_statement</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-933"><a href="#Parser-933"><span class="linenos"> 933</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-934"><a href="#Parser-934"><span class="linenos"> 934</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-935"><a href="#Parser-935"><span class="linenos"> 935</span></a> -</span><span id="Parser-936"><a href="#Parser-936"><span class="linenos"> 936</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">):</span> -</span><span id="Parser-937"><a href="#Parser-937"><span class="linenos"> 937</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-938"><a href="#Parser-938"><span class="linenos"> 938</span></a> -</span><span id="Parser-939"><a href="#Parser-939"><span class="linenos"> 939</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">):</span> -</span><span id="Parser-940"><a href="#Parser-940"><span class="linenos"> 940</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_command</span><span class="p">()</span> -</span><span id="Parser-941"><a href="#Parser-941"><span class="linenos"> 941</span></a> -</span><span id="Parser-942"><a href="#Parser-942"><span class="linenos"> 942</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="Parser-943"><a href="#Parser-943"><span class="linenos"> 943</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> -</span><span id="Parser-944"><a href="#Parser-944"><span class="linenos"> 944</span></a> -</span><span id="Parser-945"><a href="#Parser-945"><span class="linenos"> 945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-946"><a href="#Parser-946"><span class="linenos"> 946</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Parser-880"><a href="#Parser-880"><span class="linenos"> 880</span></a><span class="sd"> Returns:</span> +</span><span id="Parser-881"><a href="#Parser-881"><span class="linenos"> 881</span></a><span class="sd"> The target expression.</span> +</span><span id="Parser-882"><a href="#Parser-882"><span class="linenos"> 882</span></a><span class="sd"> """</span> +</span><span id="Parser-883"><a href="#Parser-883"><span class="linenos"> 883</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Parser-884"><a href="#Parser-884"><span class="linenos"> 884</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="Parser-885"><a href="#Parser-885"><span class="linenos"> 885</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-886"><a href="#Parser-886"><span class="linenos"> 886</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-887"><a href="#Parser-887"><span class="linenos"> 887</span></a> <span class="k">if</span> <span class="n">comments</span><span class="p">:</span> +</span><span id="Parser-888"><a href="#Parser-888"><span class="linenos"> 888</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="Parser-889"><a href="#Parser-889"><span class="linenos"> 889</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> +</span><span id="Parser-890"><a href="#Parser-890"><span class="linenos"> 890</span></a> <span class="k">return</span> <span class="n">instance</span> +</span><span id="Parser-891"><a href="#Parser-891"><span class="linenos"> 891</span></a> +</span><span id="Parser-892"><a href="#Parser-892"><span class="linenos"> 892</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span> +</span><span id="Parser-893"><a href="#Parser-893"><span class="linenos"> 893</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">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-894"><a href="#Parser-894"><span class="linenos"> 894</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-895"><a href="#Parser-895"><span class="linenos"> 895</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser-896"><a href="#Parser-896"><span class="linenos"> 896</span></a><span class="sd"> Validates an already instantiated expression, making sure that all its mandatory arguments</span> +</span><span id="Parser-897"><a href="#Parser-897"><span class="linenos"> 897</span></a><span class="sd"> are set.</span> +</span><span id="Parser-898"><a href="#Parser-898"><span class="linenos"> 898</span></a> +</span><span id="Parser-899"><a href="#Parser-899"><span class="linenos"> 899</span></a><span class="sd"> Args:</span> +</span><span id="Parser-900"><a href="#Parser-900"><span class="linenos"> 900</span></a><span class="sd"> expression: the expression to validate.</span> +</span><span id="Parser-901"><a href="#Parser-901"><span class="linenos"> 901</span></a><span class="sd"> args: an optional list of items that was used to instantiate the expression, if it's a Func.</span> +</span><span id="Parser-902"><a href="#Parser-902"><span class="linenos"> 902</span></a><span class="sd"> """</span> +</span><span id="Parser-903"><a href="#Parser-903"><span class="linenos"> 903</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> +</span><span id="Parser-904"><a href="#Parser-904"><span class="linenos"> 904</span></a> <span class="k">return</span> +</span><span id="Parser-905"><a href="#Parser-905"><span class="linenos"> 905</span></a> +</span><span id="Parser-906"><a href="#Parser-906"><span class="linenos"> 906</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="Parser-907"><a href="#Parser-907"><span class="linenos"> 907</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> +</span><span id="Parser-908"><a href="#Parser-908"><span class="linenos"> 908</span></a> +</span><span id="Parser-909"><a href="#Parser-909"><span class="linenos"> 909</span></a> <span class="k">def</span> <span class="nf">_find_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">,</span> <span class="n">end</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Parser-910"><a href="#Parser-910"><span class="linenos"> 910</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="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">end</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">end</span><span class="o">.</span><span class="n">text</span><span class="p">)]</span> +</span><span id="Parser-911"><a href="#Parser-911"><span class="linenos"> 911</span></a> +</span><span id="Parser-912"><a href="#Parser-912"><span class="linenos"> 912</span></a> <span class="k">def</span> <span class="nf">_find_token</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="nb">int</span><span class="p">:</span> +</span><span id="Parser-913"><a href="#Parser-913"><span class="linenos"> 913</span></a> <span class="n">line</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Parser-914"><a href="#Parser-914"><span class="linenos"> 914</span></a> <span class="n">col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Parser-915"><a href="#Parser-915"><span class="linenos"> 915</span></a> <span class="n">index</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Parser-916"><a href="#Parser-916"><span class="linenos"> 916</span></a> +</span><span id="Parser-917"><a href="#Parser-917"><span class="linenos"> 917</span></a> <span class="k">while</span> <span class="n">line</span> <span class="o"><</span> <span class="n">token</span><span class="o">.</span><span class="n">line</span> <span class="ow">or</span> <span class="n">col</span> <span class="o"><</span> <span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">:</span> +</span><span id="Parser-918"><a href="#Parser-918"><span class="linenos"> 918</span></a> <span class="k">if</span> <span class="n">Tokenizer</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</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">index</span><span class="p">])</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> +</span><span id="Parser-919"><a href="#Parser-919"><span class="linenos"> 919</span></a> <span class="n">line</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Parser-920"><a href="#Parser-920"><span class="linenos"> 920</span></a> <span class="n">col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Parser-921"><a href="#Parser-921"><span class="linenos"> 921</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-922"><a href="#Parser-922"><span class="linenos"> 922</span></a> <span class="n">col</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Parser-923"><a href="#Parser-923"><span class="linenos"> 923</span></a> <span class="n">index</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Parser-924"><a href="#Parser-924"><span class="linenos"> 924</span></a> +</span><span id="Parser-925"><a href="#Parser-925"><span class="linenos"> 925</span></a> <span class="k">return</span> <span class="n">index</span> +</span><span id="Parser-926"><a href="#Parser-926"><span class="linenos"> 926</span></a> +</span><span id="Parser-927"><a href="#Parser-927"><span class="linenos"> 927</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">times</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-928"><a href="#Parser-928"><span class="linenos"> 928</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+=</span> <span class="n">times</span> +</span><span id="Parser-929"><a href="#Parser-929"><span class="linenos"> 929</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> +</span><span id="Parser-930"><a href="#Parser-930"><span class="linenos"> 930</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-931"><a href="#Parser-931"><span class="linenos"> 931</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="Parser-932"><a href="#Parser-932"><span class="linenos"> 932</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> +</span><span id="Parser-933"><a href="#Parser-933"><span class="linenos"> 933</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">comments</span> +</span><span id="Parser-934"><a href="#Parser-934"><span class="linenos"> 934</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-935"><a href="#Parser-935"><span class="linenos"> 935</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-936"><a href="#Parser-936"><span class="linenos"> 936</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-937"><a href="#Parser-937"><span class="linenos"> 937</span></a> +</span><span id="Parser-938"><a href="#Parser-938"><span class="linenos"> 938</span></a> <span class="k">def</span> <span class="nf">_retreat</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-939"><a href="#Parser-939"><span class="linenos"> 939</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">index</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span><span class="p">)</span> +</span><span id="Parser-940"><a href="#Parser-940"><span class="linenos"> 940</span></a> +</span><span id="Parser-941"><a href="#Parser-941"><span class="linenos"> 941</span></a> <span class="k">def</span> <span class="nf">_parse_command</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-942"><a href="#Parser-942"><span class="linenos"> 942</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="Parser-943"><a href="#Parser-943"><span class="linenos"> 943</span></a> +</span><span id="Parser-944"><a href="#Parser-944"><span class="linenos"> 944</span></a> <span class="k">def</span> <span class="nf">_parse_statement</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-945"><a href="#Parser-945"><span class="linenos"> 945</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-946"><a href="#Parser-946"><span class="linenos"> 946</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-947"><a href="#Parser-947"><span class="linenos"> 947</span></a> -</span><span id="Parser-948"><a href="#Parser-948"><span class="linenos"> 948</span></a> <span class="k">def</span> <span class="nf">_parse_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default_kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-949"><a href="#Parser-949"><span class="linenos"> 949</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-950"><a href="#Parser-950"><span class="linenos"> 950</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="Parser-951"><a href="#Parser-951"><span class="linenos"> 951</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">)</span> -</span><span id="Parser-952"><a href="#Parser-952"><span class="linenos"> 952</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-953"><a href="#Parser-953"><span class="linenos"> 953</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Parser-954"><a href="#Parser-954"><span class="linenos"> 954</span></a> <span class="k">if</span> <span class="n">default_kind</span><span class="p">:</span> -</span><span id="Parser-955"><a href="#Parser-955"><span class="linenos"> 955</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">default_kind</span> -</span><span id="Parser-956"><a href="#Parser-956"><span class="linenos"> 956</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-957"><a href="#Parser-957"><span class="linenos"> 957</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-958"><a href="#Parser-958"><span class="linenos"> 958</span></a> -</span><span id="Parser-959"><a href="#Parser-959"><span class="linenos"> 959</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-960"><a href="#Parser-960"><span class="linenos"> 960</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> -</span><span id="Parser-961"><a href="#Parser-961"><span class="linenos"> 961</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> -</span><span id="Parser-962"><a href="#Parser-962"><span class="linenos"> 962</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-963"><a href="#Parser-963"><span class="linenos"> 963</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Parser-964"><a href="#Parser-964"><span class="linenos"> 964</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> -</span><span id="Parser-965"><a href="#Parser-965"><span class="linenos"> 965</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="Parser-966"><a href="#Parser-966"><span class="linenos"> 966</span></a> <span class="n">cascade</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">),</span> -</span><span id="Parser-967"><a href="#Parser-967"><span class="linenos"> 967</span></a> <span class="p">)</span> -</span><span id="Parser-968"><a href="#Parser-968"><span class="linenos"> 968</span></a> -</span><span id="Parser-969"><a href="#Parser-969"><span class="linenos"> 969</span></a> <span class="k">def</span> <span class="nf">_parse_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">not_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></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><span id="Parser-970"><a href="#Parser-970"><span class="linenos"> 970</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="Parser-971"><a href="#Parser-971"><span class="linenos"> 971</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">)</span> -</span><span id="Parser-972"><a href="#Parser-972"><span class="linenos"> 972</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">not_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">))</span> -</span><span id="Parser-973"><a href="#Parser-973"><span class="linenos"> 973</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">)</span> -</span><span id="Parser-974"><a href="#Parser-974"><span class="linenos"> 974</span></a> <span class="p">)</span> -</span><span id="Parser-975"><a href="#Parser-975"><span class="linenos"> 975</span></a> -</span><span id="Parser-976"><a href="#Parser-976"><span class="linenos"> 976</span></a> <span class="k">def</span> <span class="nf">_parse_create</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-977"><a href="#Parser-977"><span class="linenos"> 977</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-978"><a href="#Parser-978"><span class="linenos"> 978</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"REPLACE"</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span> -</span><span id="Parser-979"><a href="#Parser-979"><span class="linenos"> 979</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span> -</span><span id="Parser-980"><a href="#Parser-980"><span class="linenos"> 980</span></a> <span class="p">)</span> -</span><span id="Parser-981"><a href="#Parser-981"><span class="linenos"> 981</span></a> <span class="n">set_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="c1"># Teradata</span> -</span><span id="Parser-982"><a href="#Parser-982"><span class="linenos"> 982</span></a> <span class="n">multiset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MULTISET"</span><span class="p">)</span> <span class="c1"># Teradata</span> -</span><span id="Parser-983"><a href="#Parser-983"><span class="linenos"> 983</span></a> <span class="n">global_temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"GLOBAL"</span><span class="p">,</span> <span class="s2">"TEMPORARY"</span><span class="p">)</span> <span class="c1"># Teradata</span> -</span><span id="Parser-984"><a href="#Parser-984"><span class="linenos"> 984</span></a> <span class="n">volatile</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">)</span> <span class="c1"># Teradata</span> -</span><span id="Parser-985"><a href="#Parser-985"><span class="linenos"> 985</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="Parser-986"><a href="#Parser-986"><span class="linenos"> 986</span></a> <span class="n">transient</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TRANSIENT"</span><span class="p">)</span> -</span><span id="Parser-987"><a href="#Parser-987"><span class="linenos"> 987</span></a> <span class="n">external</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"EXTERNAL"</span><span class="p">)</span> -</span><span id="Parser-988"><a href="#Parser-988"><span class="linenos"> 988</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> -</span><span id="Parser-989"><a href="#Parser-989"><span class="linenos"> 989</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">)</span> -</span><span id="Parser-990"><a href="#Parser-990"><span class="linenos"> 990</span></a> -</span><span id="Parser-991"><a href="#Parser-991"><span class="linenos"> 991</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-992"><a href="#Parser-992"><span class="linenos"> 992</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-993"><a href="#Parser-993"><span class="linenos"> 993</span></a> -</span><span id="Parser-994"><a href="#Parser-994"><span class="linenos"> 994</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-995"><a href="#Parser-995"><span class="linenos"> 995</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-996"><a href="#Parser-996"><span class="linenos"> 996</span></a> -</span><span id="Parser-997"><a href="#Parser-997"><span class="linenos"> 997</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> -</span><span id="Parser-998"><a href="#Parser-998"><span class="linenos"> 998</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> <span class="c1"># exp.Properties.Location.POST_CREATE</span> -</span><span id="Parser-999"><a href="#Parser-999"><span class="linenos"> 999</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-948"><a href="#Parser-948"><span class="linenos"> 948</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">):</span> +</span><span id="Parser-949"><a href="#Parser-949"><span class="linenos"> 949</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">STATEMENT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-950"><a href="#Parser-950"><span class="linenos"> 950</span></a> +</span><span id="Parser-951"><a href="#Parser-951"><span class="linenos"> 951</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">COMMANDS</span><span class="p">):</span> +</span><span id="Parser-952"><a href="#Parser-952"><span class="linenos"> 952</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_command</span><span class="p">()</span> +</span><span id="Parser-953"><a href="#Parser-953"><span class="linenos"> 953</span></a> +</span><span id="Parser-954"><a href="#Parser-954"><span class="linenos"> 954</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> +</span><span id="Parser-955"><a href="#Parser-955"><span class="linenos"> 955</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> <span class="k">if</span> <span class="n">expression</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> +</span><span id="Parser-956"><a href="#Parser-956"><span class="linenos"> 956</span></a> +</span><span id="Parser-957"><a href="#Parser-957"><span class="linenos"> 957</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-958"><a href="#Parser-958"><span class="linenos"> 958</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Parser-959"><a href="#Parser-959"><span class="linenos"> 959</span></a> +</span><span id="Parser-960"><a href="#Parser-960"><span class="linenos"> 960</span></a> <span class="k">def</span> <span class="nf">_parse_drop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default_kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-961"><a href="#Parser-961"><span class="linenos"> 961</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-962"><a href="#Parser-962"><span class="linenos"> 962</span></a> <span class="n">temporary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> +</span><span id="Parser-963"><a href="#Parser-963"><span class="linenos"> 963</span></a> <span class="n">materialized</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">)</span> +</span><span id="Parser-964"><a href="#Parser-964"><span class="linenos"> 964</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-965"><a href="#Parser-965"><span class="linenos"> 965</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Parser-966"><a href="#Parser-966"><span class="linenos"> 966</span></a> <span class="k">if</span> <span class="n">default_kind</span><span class="p">:</span> +</span><span id="Parser-967"><a href="#Parser-967"><span class="linenos"> 967</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">default_kind</span> +</span><span id="Parser-968"><a href="#Parser-968"><span class="linenos"> 968</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-969"><a href="#Parser-969"><span class="linenos"> 969</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="Parser-970"><a href="#Parser-970"><span class="linenos"> 970</span></a> +</span><span id="Parser-971"><a href="#Parser-971"><span class="linenos"> 971</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-972"><a href="#Parser-972"><span class="linenos"> 972</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Drop</span><span class="p">,</span> +</span><span id="Parser-973"><a href="#Parser-973"><span class="linenos"> 973</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> +</span><span id="Parser-974"><a href="#Parser-974"><span class="linenos"> 974</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-975"><a href="#Parser-975"><span class="linenos"> 975</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Parser-976"><a href="#Parser-976"><span class="linenos"> 976</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> +</span><span id="Parser-977"><a href="#Parser-977"><span class="linenos"> 977</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> +</span><span id="Parser-978"><a href="#Parser-978"><span class="linenos"> 978</span></a> <span class="n">cascade</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">),</span> +</span><span id="Parser-979"><a href="#Parser-979"><span class="linenos"> 979</span></a> <span class="p">)</span> +</span><span id="Parser-980"><a href="#Parser-980"><span class="linenos"> 980</span></a> +</span><span id="Parser-981"><a href="#Parser-981"><span class="linenos"> 981</span></a> <span class="k">def</span> <span class="nf">_parse_exists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">not_</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></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><span id="Parser-982"><a href="#Parser-982"><span class="linenos"> 982</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="Parser-983"><a href="#Parser-983"><span class="linenos"> 983</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">)</span> +</span><span id="Parser-984"><a href="#Parser-984"><span class="linenos"> 984</span></a> <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">not_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">))</span> +</span><span id="Parser-985"><a href="#Parser-985"><span class="linenos"> 985</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">)</span> +</span><span id="Parser-986"><a href="#Parser-986"><span class="linenos"> 986</span></a> <span class="p">)</span> +</span><span id="Parser-987"><a href="#Parser-987"><span class="linenos"> 987</span></a> +</span><span id="Parser-988"><a href="#Parser-988"><span class="linenos"> 988</span></a> <span class="k">def</span> <span class="nf">_parse_create</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-989"><a href="#Parser-989"><span class="linenos"> 989</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-990"><a href="#Parser-990"><span class="linenos"> 990</span></a> <span class="n">replace</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"REPLACE"</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span> +</span><span id="Parser-991"><a href="#Parser-991"><span class="linenos"> 991</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span> +</span><span id="Parser-992"><a href="#Parser-992"><span class="linenos"> 992</span></a> <span class="p">)</span> +</span><span id="Parser-993"><a href="#Parser-993"><span class="linenos"> 993</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> +</span><span id="Parser-994"><a href="#Parser-994"><span class="linenos"> 994</span></a> +</span><span id="Parser-995"><a href="#Parser-995"><span class="linenos"> 995</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-996"><a href="#Parser-996"><span class="linenos"> 996</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-997"><a href="#Parser-997"><span class="linenos"> 997</span></a> +</span><span id="Parser-998"><a href="#Parser-998"><span class="linenos"> 998</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-999"><a href="#Parser-999"><span class="linenos"> 999</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> </span><span id="Parser-1000"><a href="#Parser-1000"><span class="linenos">1000</span></a> -</span><span id="Parser-1001"><a href="#Parser-1001"><span class="linenos">1001</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">properties</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> -</span><span id="Parser-1002"><a href="#Parser-1002"><span class="linenos">1002</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> -</span><span id="Parser-1003"><a href="#Parser-1003"><span class="linenos">1003</span></a> -</span><span id="Parser-1004"><a href="#Parser-1004"><span class="linenos">1004</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1005"><a href="#Parser-1005"><span class="linenos">1005</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1006"><a href="#Parser-1006"><span class="linenos">1006</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1007"><a href="#Parser-1007"><span class="linenos">1007</span></a> <span class="n">data</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1008"><a href="#Parser-1008"><span class="linenos">1008</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1009"><a href="#Parser-1009"><span class="linenos">1009</span></a> <span class="n">no_primary_index</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1010"><a href="#Parser-1010"><span class="linenos">1010</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1011"><a href="#Parser-1011"><span class="linenos">1011</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1012"><a href="#Parser-1012"><span class="linenos">1012</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1013"><a href="#Parser-1013"><span class="linenos">1013</span></a> -</span><span id="Parser-1014"><a href="#Parser-1014"><span class="linenos">1014</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> -</span><span id="Parser-1015"><a href="#Parser-1015"><span class="linenos">1015</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> -</span><span id="Parser-1016"><a href="#Parser-1016"><span class="linenos">1016</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="Parser-1017"><a href="#Parser-1017"><span class="linenos">1017</span></a> -</span><span id="Parser-1018"><a href="#Parser-1018"><span class="linenos">1018</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-1019"><a href="#Parser-1019"><span class="linenos">1019</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">)</span> -</span><span id="Parser-1020"><a href="#Parser-1020"><span class="linenos">1020</span></a> <span class="n">return_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURN"</span><span class="p">)</span> -</span><span id="Parser-1021"><a href="#Parser-1021"><span class="linenos">1021</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> +</span><span id="Parser-1001"><a href="#Parser-1001"><span class="linenos">1001</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> +</span><span id="Parser-1002"><a href="#Parser-1002"><span class="linenos">1002</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> <span class="c1"># exp.Properties.Location.POST_CREATE</span> +</span><span id="Parser-1003"><a href="#Parser-1003"><span class="linenos">1003</span></a> <span class="n">create_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-1004"><a href="#Parser-1004"><span class="linenos">1004</span></a> +</span><span id="Parser-1005"><a href="#Parser-1005"><span class="linenos">1005</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">properties</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">create_token</span><span class="p">:</span> +</span><span id="Parser-1006"><a href="#Parser-1006"><span class="linenos">1006</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="n">start</span><span class="p">)</span> +</span><span id="Parser-1007"><a href="#Parser-1007"><span class="linenos">1007</span></a> +</span><span id="Parser-1008"><a href="#Parser-1008"><span class="linenos">1008</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1009"><a href="#Parser-1009"><span class="linenos">1009</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1010"><a href="#Parser-1010"><span class="linenos">1010</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1011"><a href="#Parser-1011"><span class="linenos">1011</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1012"><a href="#Parser-1012"><span class="linenos">1012</span></a> <span class="n">no_schema_binding</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1013"><a href="#Parser-1013"><span class="linenos">1013</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1014"><a href="#Parser-1014"><span class="linenos">1014</span></a> +</span><span id="Parser-1015"><a href="#Parser-1015"><span class="linenos">1015</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">):</span> +</span><span id="Parser-1016"><a href="#Parser-1016"><span class="linenos">1016</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_user_defined_function</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="Parser-1017"><a href="#Parser-1017"><span class="linenos">1017</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="Parser-1018"><a href="#Parser-1018"><span class="linenos">1018</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1019"><a href="#Parser-1019"><span class="linenos">1019</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-1020"><a href="#Parser-1020"><span class="linenos">1020</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1021"><a href="#Parser-1021"><span class="linenos">1021</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> </span><span id="Parser-1022"><a href="#Parser-1022"><span class="linenos">1022</span></a> -</span><span id="Parser-1023"><a href="#Parser-1023"><span class="linenos">1023</span></a> <span class="k">if</span> <span class="n">return_</span><span class="p">:</span> -</span><span id="Parser-1024"><a href="#Parser-1024"><span class="linenos">1024</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-1025"><a href="#Parser-1025"><span class="linenos">1025</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">:</span> -</span><span id="Parser-1026"><a href="#Parser-1026"><span class="linenos">1026</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">()</span> -</span><span id="Parser-1027"><a href="#Parser-1027"><span class="linenos">1027</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span> -</span><span id="Parser-1028"><a href="#Parser-1028"><span class="linenos">1028</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Parser-1029"><a href="#Parser-1029"><span class="linenos">1029</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="Parser-1030"><a href="#Parser-1030"><span class="linenos">1030</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="Parser-1031"><a href="#Parser-1031"><span class="linenos">1031</span></a> <span class="p">):</span> -</span><span id="Parser-1032"><a href="#Parser-1032"><span class="linenos">1032</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1033"><a href="#Parser-1033"><span class="linenos">1033</span></a> -</span><span id="Parser-1034"><a href="#Parser-1034"><span class="linenos">1034</span></a> <span class="c1"># exp.Properties.Location.POST_NAME</span> -</span><span id="Parser-1035"><a href="#Parser-1035"><span class="linenos">1035</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-1036"><a href="#Parser-1036"><span class="linenos">1036</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(</span><span class="n">before</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1037"><a href="#Parser-1037"><span class="linenos">1037</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="Parser-1038"><a href="#Parser-1038"><span class="linenos">1038</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-1039"><a href="#Parser-1039"><span class="linenos">1039</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="Parser-1040"><a href="#Parser-1040"><span class="linenos">1040</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> -</span><span id="Parser-1041"><a href="#Parser-1041"><span class="linenos">1041</span></a> -</span><span id="Parser-1042"><a href="#Parser-1042"><span class="linenos">1042</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">)</span> -</span><span id="Parser-1043"><a href="#Parser-1043"><span class="linenos">1043</span></a> -</span><span id="Parser-1044"><a href="#Parser-1044"><span class="linenos">1044</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA and POST_WITH</span> -</span><span id="Parser-1045"><a href="#Parser-1045"><span class="linenos">1045</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="Parser-1046"><a href="#Parser-1046"><span class="linenos">1046</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="Parser-1047"><a href="#Parser-1047"><span class="linenos">1047</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-1048"><a href="#Parser-1048"><span class="linenos">1048</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="Parser-1049"><a href="#Parser-1049"><span class="linenos">1049</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> -</span><span id="Parser-1050"><a href="#Parser-1050"><span class="linenos">1050</span></a> -</span><span id="Parser-1051"><a href="#Parser-1051"><span class="linenos">1051</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-1052"><a href="#Parser-1052"><span class="linenos">1052</span></a> -</span><span id="Parser-1053"><a href="#Parser-1053"><span class="linenos">1053</span></a> <span class="c1"># exp.Properties.Location.POST_ALIAS</span> -</span><span id="Parser-1054"><a href="#Parser-1054"><span class="linenos">1054</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span> -</span><span id="Parser-1055"><a href="#Parser-1055"><span class="linenos">1055</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1056"><a href="#Parser-1056"><span class="linenos">1056</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1057"><a href="#Parser-1057"><span class="linenos">1057</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1058"><a href="#Parser-1058"><span class="linenos">1058</span></a> <span class="p">):</span> -</span><span id="Parser-1059"><a href="#Parser-1059"><span class="linenos">1059</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> -</span><span id="Parser-1060"><a href="#Parser-1060"><span class="linenos">1060</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="Parser-1061"><a href="#Parser-1061"><span class="linenos">1061</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-1062"><a href="#Parser-1062"><span class="linenos">1062</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="Parser-1063"><a href="#Parser-1063"><span class="linenos">1063</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> -</span><span id="Parser-1064"><a href="#Parser-1064"><span class="linenos">1064</span></a> -</span><span id="Parser-1065"><a href="#Parser-1065"><span class="linenos">1065</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">()</span> -</span><span id="Parser-1066"><a href="#Parser-1066"><span class="linenos">1066</span></a> -</span><span id="Parser-1067"><a href="#Parser-1067"><span class="linenos">1067</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> -</span><span id="Parser-1068"><a href="#Parser-1068"><span class="linenos">1068</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="Parser-1069"><a href="#Parser-1069"><span class="linenos">1069</span></a> <span class="n">data</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1070"><a href="#Parser-1070"><span class="linenos">1070</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> -</span><span id="Parser-1071"><a href="#Parser-1071"><span class="linenos">1071</span></a> <span class="n">data</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-1072"><a href="#Parser-1072"><span class="linenos">1072</span></a> -</span><span id="Parser-1073"><a href="#Parser-1073"><span class="linenos">1073</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> -</span><span id="Parser-1074"><a href="#Parser-1074"><span class="linenos">1074</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1075"><a href="#Parser-1075"><span class="linenos">1075</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> -</span><span id="Parser-1076"><a href="#Parser-1076"><span class="linenos">1076</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-1077"><a href="#Parser-1077"><span class="linenos">1077</span></a> -</span><span id="Parser-1078"><a href="#Parser-1078"><span class="linenos">1078</span></a> <span class="n">no_primary_index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"PRIMARY"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">)</span> +</span><span id="Parser-1023"><a href="#Parser-1023"><span class="linenos">1023</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1024"><a href="#Parser-1024"><span class="linenos">1024</span></a> <span class="n">begin</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">)</span> +</span><span id="Parser-1025"><a href="#Parser-1025"><span class="linenos">1025</span></a> <span class="n">return_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RETURN"</span><span class="p">)</span> +</span><span id="Parser-1026"><a href="#Parser-1026"><span class="linenos">1026</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> +</span><span id="Parser-1027"><a href="#Parser-1027"><span class="linenos">1027</span></a> +</span><span id="Parser-1028"><a href="#Parser-1028"><span class="linenos">1028</span></a> <span class="k">if</span> <span class="n">return_</span><span class="p">:</span> +</span><span id="Parser-1029"><a href="#Parser-1029"><span class="linenos">1029</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Return</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-1030"><a href="#Parser-1030"><span class="linenos">1030</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">:</span> +</span><span id="Parser-1031"><a href="#Parser-1031"><span class="linenos">1031</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_index</span><span class="p">()</span> +</span><span id="Parser-1032"><a href="#Parser-1032"><span class="linenos">1032</span></a> <span class="k">elif</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span> +</span><span id="Parser-1033"><a href="#Parser-1033"><span class="linenos">1033</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Parser-1034"><a href="#Parser-1034"><span class="linenos">1034</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="Parser-1035"><a href="#Parser-1035"><span class="linenos">1035</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="Parser-1036"><a href="#Parser-1036"><span class="linenos">1036</span></a> <span class="p">):</span> +</span><span id="Parser-1037"><a href="#Parser-1037"><span class="linenos">1037</span></a> <span class="n">table_parts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1038"><a href="#Parser-1038"><span class="linenos">1038</span></a> +</span><span id="Parser-1039"><a href="#Parser-1039"><span class="linenos">1039</span></a> <span class="c1"># exp.Properties.Location.POST_NAME</span> +</span><span id="Parser-1040"><a href="#Parser-1040"><span class="linenos">1040</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-1041"><a href="#Parser-1041"><span class="linenos">1041</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">(</span><span class="n">before</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1042"><a href="#Parser-1042"><span class="linenos">1042</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1043"><a href="#Parser-1043"><span class="linenos">1043</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-1044"><a href="#Parser-1044"><span class="linenos">1044</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1045"><a href="#Parser-1045"><span class="linenos">1045</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> +</span><span id="Parser-1046"><a href="#Parser-1046"><span class="linenos">1046</span></a> +</span><span id="Parser-1047"><a href="#Parser-1047"><span class="linenos">1047</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">table_parts</span><span class="p">)</span> +</span><span id="Parser-1048"><a href="#Parser-1048"><span class="linenos">1048</span></a> +</span><span id="Parser-1049"><a href="#Parser-1049"><span class="linenos">1049</span></a> <span class="c1"># exp.Properties.Location.POST_SCHEMA and POST_WITH</span> +</span><span id="Parser-1050"><a href="#Parser-1050"><span class="linenos">1050</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="Parser-1051"><a href="#Parser-1051"><span class="linenos">1051</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1052"><a href="#Parser-1052"><span class="linenos">1052</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-1053"><a href="#Parser-1053"><span class="linenos">1053</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1054"><a href="#Parser-1054"><span class="linenos">1054</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> +</span><span id="Parser-1055"><a href="#Parser-1055"><span class="linenos">1055</span></a> +</span><span id="Parser-1056"><a href="#Parser-1056"><span class="linenos">1056</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1057"><a href="#Parser-1057"><span class="linenos">1057</span></a> +</span><span id="Parser-1058"><a href="#Parser-1058"><span class="linenos">1058</span></a> <span class="c1"># exp.Properties.Location.POST_ALIAS</span> +</span><span id="Parser-1059"><a href="#Parser-1059"><span class="linenos">1059</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span> +</span><span id="Parser-1060"><a href="#Parser-1060"><span class="linenos">1060</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1061"><a href="#Parser-1061"><span class="linenos">1061</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1062"><a href="#Parser-1062"><span class="linenos">1062</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1063"><a href="#Parser-1063"><span class="linenos">1063</span></a> <span class="p">):</span> +</span><span id="Parser-1064"><a href="#Parser-1064"><span class="linenos">1064</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="Parser-1065"><a href="#Parser-1065"><span class="linenos">1065</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1066"><a href="#Parser-1066"><span class="linenos">1066</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-1067"><a href="#Parser-1067"><span class="linenos">1067</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1068"><a href="#Parser-1068"><span class="linenos">1068</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> +</span><span id="Parser-1069"><a href="#Parser-1069"><span class="linenos">1069</span></a> +</span><span id="Parser-1070"><a href="#Parser-1070"><span class="linenos">1070</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">()</span> +</span><span id="Parser-1071"><a href="#Parser-1071"><span class="linenos">1071</span></a> +</span><span id="Parser-1072"><a href="#Parser-1072"><span class="linenos">1072</span></a> <span class="k">if</span> <span class="n">create_token</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">:</span> +</span><span id="Parser-1073"><a href="#Parser-1073"><span class="linenos">1073</span></a> <span class="c1"># exp.Properties.Location.POST_EXPRESSION</span> +</span><span id="Parser-1074"><a href="#Parser-1074"><span class="linenos">1074</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> +</span><span id="Parser-1075"><a href="#Parser-1075"><span class="linenos">1075</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1076"><a href="#Parser-1076"><span class="linenos">1076</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-1077"><a href="#Parser-1077"><span class="linenos">1077</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> +</span><span id="Parser-1078"><a href="#Parser-1078"><span class="linenos">1078</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> </span><span id="Parser-1079"><a href="#Parser-1079"><span class="linenos">1079</span></a> </span><span id="Parser-1080"><a href="#Parser-1080"><span class="linenos">1080</span></a> <span class="n">indexes</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="Parser-1081"><a href="#Parser-1081"><span class="linenos">1081</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> @@ -5017,7 +5055,7 @@ </span><span id="Parser-1085"><a href="#Parser-1085"><span class="linenos">1085</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> </span><span id="Parser-1086"><a href="#Parser-1086"><span class="linenos">1086</span></a> <span class="n">temp_properties</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_properties</span><span class="p">()</span> </span><span id="Parser-1087"><a href="#Parser-1087"><span class="linenos">1087</span></a> <span class="k">if</span> <span class="n">properties</span> <span class="ow">and</span> <span class="n">temp_properties</span><span class="p">:</span> -</span><span id="Parser-1088"><a href="#Parser-1088"><span class="linenos">1088</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-1088"><a href="#Parser-1088"><span class="linenos">1088</span></a> <span class="n">properties</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">temp_properties</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span> </span><span id="Parser-1089"><a href="#Parser-1089"><span class="linenos">1089</span></a> <span class="k">elif</span> <span class="n">temp_properties</span><span class="p">:</span> </span><span id="Parser-1090"><a href="#Parser-1090"><span class="linenos">1090</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="n">temp_properties</span> </span><span id="Parser-1091"><a href="#Parser-1091"><span class="linenos">1091</span></a> @@ -5033,2748 +5071,2786 @@ </span><span id="Parser-1101"><a href="#Parser-1101"><span class="linenos">1101</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Create</span><span class="p">,</span> </span><span id="Parser-1102"><a href="#Parser-1102"><span class="linenos">1102</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> </span><span id="Parser-1103"><a href="#Parser-1103"><span class="linenos">1103</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">create_token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="Parser-1104"><a href="#Parser-1104"><span class="linenos">1104</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Parser-1105"><a href="#Parser-1105"><span class="linenos">1105</span></a> <span class="nb">set</span><span class="o">=</span><span class="n">set_</span><span class="p">,</span> -</span><span id="Parser-1106"><a href="#Parser-1106"><span class="linenos">1106</span></a> <span class="n">multiset</span><span class="o">=</span><span class="n">multiset</span><span class="p">,</span> -</span><span id="Parser-1107"><a href="#Parser-1107"><span class="linenos">1107</span></a> <span class="n">global_temporary</span><span class="o">=</span><span class="n">global_temporary</span><span class="p">,</span> -</span><span id="Parser-1108"><a href="#Parser-1108"><span class="linenos">1108</span></a> <span class="n">volatile</span><span class="o">=</span><span class="n">volatile</span><span class="p">,</span> -</span><span id="Parser-1109"><a href="#Parser-1109"><span class="linenos">1109</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> -</span><span id="Parser-1110"><a href="#Parser-1110"><span class="linenos">1110</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties</span><span class="p">,</span> -</span><span id="Parser-1111"><a href="#Parser-1111"><span class="linenos">1111</span></a> <span class="n">temporary</span><span class="o">=</span><span class="n">temporary</span><span class="p">,</span> -</span><span id="Parser-1112"><a href="#Parser-1112"><span class="linenos">1112</span></a> <span class="n">transient</span><span class="o">=</span><span class="n">transient</span><span class="p">,</span> -</span><span id="Parser-1113"><a href="#Parser-1113"><span class="linenos">1113</span></a> <span class="n">external</span><span class="o">=</span><span class="n">external</span><span class="p">,</span> -</span><span id="Parser-1114"><a href="#Parser-1114"><span class="linenos">1114</span></a> <span class="n">replace</span><span class="o">=</span><span class="n">replace</span><span class="p">,</span> -</span><span id="Parser-1115"><a href="#Parser-1115"><span class="linenos">1115</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> -</span><span id="Parser-1116"><a href="#Parser-1116"><span class="linenos">1116</span></a> <span class="n">materialized</span><span class="o">=</span><span class="n">materialized</span><span class="p">,</span> -</span><span id="Parser-1117"><a href="#Parser-1117"><span class="linenos">1117</span></a> <span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> -</span><span id="Parser-1118"><a href="#Parser-1118"><span class="linenos">1118</span></a> <span class="n">statistics</span><span class="o">=</span><span class="n">statistics</span><span class="p">,</span> -</span><span id="Parser-1119"><a href="#Parser-1119"><span class="linenos">1119</span></a> <span class="n">no_primary_index</span><span class="o">=</span><span class="n">no_primary_index</span><span class="p">,</span> -</span><span id="Parser-1120"><a href="#Parser-1120"><span class="linenos">1120</span></a> <span class="n">indexes</span><span class="o">=</span><span class="n">indexes</span><span class="p">,</span> -</span><span id="Parser-1121"><a href="#Parser-1121"><span class="linenos">1121</span></a> <span class="n">no_schema_binding</span><span class="o">=</span><span class="n">no_schema_binding</span><span class="p">,</span> -</span><span id="Parser-1122"><a href="#Parser-1122"><span class="linenos">1122</span></a> <span class="n">begin</span><span class="o">=</span><span class="n">begin</span><span class="p">,</span> -</span><span id="Parser-1123"><a href="#Parser-1123"><span class="linenos">1123</span></a> <span class="p">)</span> +</span><span id="Parser-1104"><a href="#Parser-1104"><span class="linenos">1104</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> +</span><span id="Parser-1105"><a href="#Parser-1105"><span class="linenos">1105</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Parser-1106"><a href="#Parser-1106"><span class="linenos">1106</span></a> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> +</span><span id="Parser-1107"><a href="#Parser-1107"><span class="linenos">1107</span></a> <span class="n">properties</span><span class="o">=</span><span class="n">properties</span><span class="p">,</span> +</span><span id="Parser-1108"><a href="#Parser-1108"><span class="linenos">1108</span></a> <span class="n">replace</span><span class="o">=</span><span class="n">replace</span><span class="p">,</span> +</span><span id="Parser-1109"><a href="#Parser-1109"><span class="linenos">1109</span></a> <span class="n">indexes</span><span class="o">=</span><span class="n">indexes</span><span class="p">,</span> +</span><span id="Parser-1110"><a href="#Parser-1110"><span class="linenos">1110</span></a> <span class="n">no_schema_binding</span><span class="o">=</span><span class="n">no_schema_binding</span><span class="p">,</span> +</span><span id="Parser-1111"><a href="#Parser-1111"><span class="linenos">1111</span></a> <span class="n">begin</span><span class="o">=</span><span class="n">begin</span><span class="p">,</span> +</span><span id="Parser-1112"><a href="#Parser-1112"><span class="linenos">1112</span></a> <span class="p">)</span> +</span><span id="Parser-1113"><a href="#Parser-1113"><span class="linenos">1113</span></a> +</span><span id="Parser-1114"><a href="#Parser-1114"><span class="linenos">1114</span></a> <span class="k">def</span> <span class="nf">_parse_property_before</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1115"><a href="#Parser-1115"><span class="linenos">1115</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-1116"><a href="#Parser-1116"><span class="linenos">1116</span></a> +</span><span id="Parser-1117"><a href="#Parser-1117"><span class="linenos">1117</span></a> <span class="c1"># parsers look to _prev for no/dual/default, so need to consume first</span> +</span><span id="Parser-1118"><a href="#Parser-1118"><span class="linenos">1118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="Parser-1119"><a href="#Parser-1119"><span class="linenos">1119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DUAL"</span><span class="p">)</span> +</span><span id="Parser-1120"><a href="#Parser-1120"><span class="linenos">1120</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> +</span><span id="Parser-1121"><a href="#Parser-1121"><span class="linenos">1121</span></a> +</span><span id="Parser-1122"><a href="#Parser-1122"><span class="linenos">1122</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()):</span> +</span><span id="Parser-1123"><a href="#Parser-1123"><span class="linenos">1123</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> </span><span id="Parser-1124"><a href="#Parser-1124"><span class="linenos">1124</span></a> -</span><span id="Parser-1125"><a href="#Parser-1125"><span class="linenos">1125</span></a> <span class="k">def</span> <span class="nf">_parse_property_before</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1126"><a href="#Parser-1126"><span class="linenos">1126</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-1127"><a href="#Parser-1127"><span class="linenos">1127</span></a> -</span><span id="Parser-1128"><a href="#Parser-1128"><span class="linenos">1128</span></a> <span class="c1"># parsers look to _prev for no/dual/default, so need to consume first</span> -</span><span id="Parser-1129"><a href="#Parser-1129"><span class="linenos">1129</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="Parser-1130"><a href="#Parser-1130"><span class="linenos">1130</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DUAL"</span><span class="p">)</span> -</span><span id="Parser-1131"><a href="#Parser-1131"><span class="linenos">1131</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> -</span><span id="Parser-1132"><a href="#Parser-1132"><span class="linenos">1132</span></a> -</span><span id="Parser-1133"><a href="#Parser-1133"><span class="linenos">1133</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()):</span> -</span><span id="Parser-1134"><a href="#Parser-1134"><span class="linenos">1134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-1135"><a href="#Parser-1135"><span class="linenos">1135</span></a> -</span><span id="Parser-1136"><a href="#Parser-1136"><span class="linenos">1136</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1137"><a href="#Parser-1137"><span class="linenos">1137</span></a> -</span><span id="Parser-1138"><a href="#Parser-1138"><span class="linenos">1138</span></a> <span class="k">def</span> <span class="nf">_parse_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1139"><a href="#Parser-1139"><span class="linenos">1139</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> -</span><span id="Parser-1140"><a href="#Parser-1140"><span class="linenos">1140</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-1141"><a href="#Parser-1141"><span class="linenos">1141</span></a> -</span><span id="Parser-1142"><a href="#Parser-1142"><span class="linenos">1142</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> -</span><span id="Parser-1143"><a href="#Parser-1143"><span class="linenos">1143</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1144"><a href="#Parser-1144"><span class="linenos">1144</span></a> -</span><span id="Parser-1145"><a href="#Parser-1145"><span class="linenos">1145</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">):</span> -</span><span id="Parser-1146"><a href="#Parser-1146"><span class="linenos">1146</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1147"><a href="#Parser-1147"><span class="linenos">1147</span></a> -</span><span id="Parser-1148"><a href="#Parser-1148"><span class="linenos">1148</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"SECURITY"</span><span class="p">):</span> -</span><span id="Parser-1149"><a href="#Parser-1149"><span class="linenos">1149</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">,</span> <span class="n">definer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINER"</span><span class="p">))</span> +</span><span id="Parser-1125"><a href="#Parser-1125"><span class="linenos">1125</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1126"><a href="#Parser-1126"><span class="linenos">1126</span></a> +</span><span id="Parser-1127"><a href="#Parser-1127"><span class="linenos">1127</span></a> <span class="k">def</span> <span class="nf">_parse_property</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1128"><a href="#Parser-1128"><span class="linenos">1128</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">):</span> +</span><span id="Parser-1129"><a href="#Parser-1129"><span class="linenos">1129</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PROPERTY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-1130"><a href="#Parser-1130"><span class="linenos">1130</span></a> +</span><span id="Parser-1131"><a href="#Parser-1131"><span class="linenos">1131</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> +</span><span id="Parser-1132"><a href="#Parser-1132"><span class="linenos">1132</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_character_set</span><span class="p">(</span><span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1133"><a href="#Parser-1133"><span class="linenos">1133</span></a> +</span><span id="Parser-1134"><a href="#Parser-1134"><span class="linenos">1134</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">):</span> +</span><span id="Parser-1135"><a href="#Parser-1135"><span class="linenos">1135</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_sortkey</span><span class="p">(</span><span class="n">compound</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1136"><a href="#Parser-1136"><span class="linenos">1136</span></a> +</span><span id="Parser-1137"><a href="#Parser-1137"><span class="linenos">1137</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SQL"</span><span class="p">,</span> <span class="s2">"SECURITY"</span><span class="p">):</span> +</span><span id="Parser-1138"><a href="#Parser-1138"><span class="linenos">1138</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SqlSecurityProperty</span><span class="p">,</span> <span class="n">definer</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINER"</span><span class="p">))</span> +</span><span id="Parser-1139"><a href="#Parser-1139"><span class="linenos">1139</span></a> +</span><span id="Parser-1140"><a href="#Parser-1140"><span class="linenos">1140</span></a> <span class="n">assignment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span> +</span><span id="Parser-1141"><a href="#Parser-1141"><span class="linenos">1141</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span> +</span><span id="Parser-1142"><a href="#Parser-1142"><span class="linenos">1142</span></a> <span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1143"><a href="#Parser-1143"><span class="linenos">1143</span></a> +</span><span id="Parser-1144"><a href="#Parser-1144"><span class="linenos">1144</span></a> <span class="k">if</span> <span class="n">assignment</span><span class="p">:</span> +</span><span id="Parser-1145"><a href="#Parser-1145"><span class="linenos">1145</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> +</span><span id="Parser-1146"><a href="#Parser-1146"><span class="linenos">1146</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1147"><a href="#Parser-1147"><span class="linenos">1147</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> +</span><span id="Parser-1148"><a href="#Parser-1148"><span class="linenos">1148</span></a> +</span><span id="Parser-1149"><a href="#Parser-1149"><span class="linenos">1149</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-1150"><a href="#Parser-1150"><span class="linenos">1150</span></a> -</span><span id="Parser-1151"><a href="#Parser-1151"><span class="linenos">1151</span></a> <span class="n">assignment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span> -</span><span id="Parser-1152"><a href="#Parser-1152"><span class="linenos">1152</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span> -</span><span id="Parser-1153"><a href="#Parser-1153"><span class="linenos">1153</span></a> <span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1154"><a href="#Parser-1154"><span class="linenos">1154</span></a> -</span><span id="Parser-1155"><a href="#Parser-1155"><span class="linenos">1155</span></a> <span class="k">if</span> <span class="n">assignment</span><span class="p">:</span> -</span><span id="Parser-1156"><a href="#Parser-1156"><span class="linenos">1156</span></a> <span class="n">key</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> -</span><span id="Parser-1157"><a href="#Parser-1157"><span class="linenos">1157</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1158"><a href="#Parser-1158"><span class="linenos">1158</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">())</span> -</span><span id="Parser-1159"><a href="#Parser-1159"><span class="linenos">1159</span></a> -</span><span id="Parser-1160"><a href="#Parser-1160"><span class="linenos">1160</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1151"><a href="#Parser-1151"><span class="linenos">1151</span></a> <span class="k">def</span> <span class="nf">_parse_property_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1152"><a href="#Parser-1152"><span class="linenos">1152</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1153"><a href="#Parser-1153"><span class="linenos">1153</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1154"><a href="#Parser-1154"><span class="linenos">1154</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1155"><a href="#Parser-1155"><span class="linenos">1155</span></a> <span class="n">exp_class</span><span class="p">,</span> +</span><span id="Parser-1156"><a href="#Parser-1156"><span class="linenos">1156</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> +</span><span id="Parser-1157"><a href="#Parser-1157"><span class="linenos">1157</span></a> <span class="p">)</span> +</span><span id="Parser-1158"><a href="#Parser-1158"><span class="linenos">1158</span></a> +</span><span id="Parser-1159"><a href="#Parser-1159"><span class="linenos">1159</span></a> <span class="k">def</span> <span class="nf">_parse_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">before</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1160"><a href="#Parser-1160"><span class="linenos">1160</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="Parser-1161"><a href="#Parser-1161"><span class="linenos">1161</span></a> -</span><span id="Parser-1162"><a href="#Parser-1162"><span class="linenos">1162</span></a> <span class="k">def</span> <span class="nf">_parse_property_assignment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1163"><a href="#Parser-1163"><span class="linenos">1163</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1164"><a href="#Parser-1164"><span class="linenos">1164</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-1165"><a href="#Parser-1165"><span class="linenos">1165</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1166"><a href="#Parser-1166"><span class="linenos">1166</span></a> <span class="n">exp_class</span><span class="p">,</span> -</span><span id="Parser-1167"><a href="#Parser-1167"><span class="linenos">1167</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> -</span><span id="Parser-1168"><a href="#Parser-1168"><span class="linenos">1168</span></a> <span class="p">)</span> -</span><span id="Parser-1169"><a href="#Parser-1169"><span class="linenos">1169</span></a> -</span><span id="Parser-1170"><a href="#Parser-1170"><span class="linenos">1170</span></a> <span class="k">def</span> <span class="nf">_parse_properties</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">before</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1171"><a href="#Parser-1171"><span class="linenos">1171</span></a> <span class="n">properties</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1162"><a href="#Parser-1162"><span class="linenos">1162</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-1163"><a href="#Parser-1163"><span class="linenos">1163</span></a> <span class="k">if</span> <span class="n">before</span><span class="p">:</span> +</span><span id="Parser-1164"><a href="#Parser-1164"><span class="linenos">1164</span></a> <span class="n">identified_property</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_before</span><span class="p">()</span> +</span><span id="Parser-1165"><a href="#Parser-1165"><span class="linenos">1165</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1166"><a href="#Parser-1166"><span class="linenos">1166</span></a> <span class="n">identified_property</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">()</span> +</span><span id="Parser-1167"><a href="#Parser-1167"><span class="linenos">1167</span></a> +</span><span id="Parser-1168"><a href="#Parser-1168"><span class="linenos">1168</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">identified_property</span><span class="p">:</span> +</span><span id="Parser-1169"><a href="#Parser-1169"><span class="linenos">1169</span></a> <span class="k">break</span> +</span><span id="Parser-1170"><a href="#Parser-1170"><span class="linenos">1170</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">identified_property</span><span class="p">):</span> +</span><span id="Parser-1171"><a href="#Parser-1171"><span class="linenos">1171</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> </span><span id="Parser-1172"><a href="#Parser-1172"><span class="linenos">1172</span></a> -</span><span id="Parser-1173"><a href="#Parser-1173"><span class="linenos">1173</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-1174"><a href="#Parser-1174"><span class="linenos">1174</span></a> <span class="k">if</span> <span class="n">before</span><span class="p">:</span> -</span><span id="Parser-1175"><a href="#Parser-1175"><span class="linenos">1175</span></a> <span class="n">identified_property</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property_before</span><span class="p">()</span> -</span><span id="Parser-1176"><a href="#Parser-1176"><span class="linenos">1176</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1177"><a href="#Parser-1177"><span class="linenos">1177</span></a> <span class="n">identified_property</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">()</span> -</span><span id="Parser-1178"><a href="#Parser-1178"><span class="linenos">1178</span></a> -</span><span id="Parser-1179"><a href="#Parser-1179"><span class="linenos">1179</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">identified_property</span><span class="p">:</span> -</span><span id="Parser-1180"><a href="#Parser-1180"><span class="linenos">1180</span></a> <span class="k">break</span> -</span><span id="Parser-1181"><a href="#Parser-1181"><span class="linenos">1181</span></a> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">identified_property</span><span class="p">):</span> -</span><span id="Parser-1182"><a href="#Parser-1182"><span class="linenos">1182</span></a> <span class="n">properties</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> +</span><span id="Parser-1173"><a href="#Parser-1173"><span class="linenos">1173</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> +</span><span id="Parser-1174"><a href="#Parser-1174"><span class="linenos">1174</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">properties</span><span class="p">)</span> +</span><span id="Parser-1175"><a href="#Parser-1175"><span class="linenos">1175</span></a> +</span><span id="Parser-1176"><a href="#Parser-1176"><span class="linenos">1176</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1177"><a href="#Parser-1177"><span class="linenos">1177</span></a> +</span><span id="Parser-1178"><a href="#Parser-1178"><span class="linenos">1178</span></a> <span class="k">def</span> <span class="nf">_parse_fallback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1179"><a href="#Parser-1179"><span class="linenos">1179</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FALLBACK"</span><span class="p">)</span> +</span><span id="Parser-1180"><a href="#Parser-1180"><span class="linenos">1180</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1181"><a href="#Parser-1181"><span class="linenos">1181</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">protection</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PROTECTION"</span><span class="p">)</span> +</span><span id="Parser-1182"><a href="#Parser-1182"><span class="linenos">1182</span></a> <span class="p">)</span> </span><span id="Parser-1183"><a href="#Parser-1183"><span class="linenos">1183</span></a> -</span><span id="Parser-1184"><a href="#Parser-1184"><span class="linenos">1184</span></a> <span class="k">if</span> <span class="n">properties</span><span class="p">:</span> -</span><span id="Parser-1185"><a href="#Parser-1185"><span class="linenos">1185</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">properties</span><span class="p">)</span> -</span><span id="Parser-1186"><a href="#Parser-1186"><span class="linenos">1186</span></a> -</span><span id="Parser-1187"><a href="#Parser-1187"><span class="linenos">1187</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1188"><a href="#Parser-1188"><span class="linenos">1188</span></a> -</span><span id="Parser-1189"><a href="#Parser-1189"><span class="linenos">1189</span></a> <span class="k">def</span> <span class="nf">_parse_fallback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1190"><a href="#Parser-1190"><span class="linenos">1190</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FALLBACK"</span><span class="p">)</span> -</span><span id="Parser-1191"><a href="#Parser-1191"><span class="linenos">1191</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1192"><a href="#Parser-1192"><span class="linenos">1192</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FallbackProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">protection</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PROTECTION"</span><span class="p">)</span> -</span><span id="Parser-1193"><a href="#Parser-1193"><span class="linenos">1193</span></a> <span class="p">)</span> -</span><span id="Parser-1194"><a href="#Parser-1194"><span class="linenos">1194</span></a> -</span><span id="Parser-1195"><a href="#Parser-1195"><span class="linenos">1195</span></a> <span class="k">def</span> <span class="nf">_parse_with_property</span><span class="p">(</span> -</span><span id="Parser-1196"><a href="#Parser-1196"><span class="linenos">1196</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-1197"><a href="#Parser-1197"><span class="linenos">1197</span></a> <span class="p">)</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="Parser-1198"><a href="#Parser-1198"><span class="linenos">1198</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-1199"><a href="#Parser-1199"><span class="linenos">1199</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> -</span><span id="Parser-1200"><a href="#Parser-1200"><span class="linenos">1200</span></a> -</span><span id="Parser-1201"><a href="#Parser-1201"><span class="linenos">1201</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="Parser-1202"><a href="#Parser-1202"><span class="linenos">1202</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1184"><a href="#Parser-1184"><span class="linenos">1184</span></a> <span class="k">def</span> <span class="nf">_parse_with_property</span><span class="p">(</span> +</span><span id="Parser-1185"><a href="#Parser-1185"><span class="linenos">1185</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-1186"><a href="#Parser-1186"><span class="linenos">1186</span></a> <span class="p">)</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">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="Parser-1187"><a href="#Parser-1187"><span class="linenos">1187</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="Parser-1188"><a href="#Parser-1188"><span class="linenos">1188</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-1189"><a href="#Parser-1189"><span class="linenos">1189</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_property</span><span class="p">)</span> +</span><span id="Parser-1190"><a href="#Parser-1190"><span class="linenos">1190</span></a> +</span><span id="Parser-1191"><a href="#Parser-1191"><span class="linenos">1191</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">):</span> +</span><span id="Parser-1192"><a href="#Parser-1192"><span class="linenos">1192</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withjournaltable</span><span class="p">()</span> +</span><span id="Parser-1193"><a href="#Parser-1193"><span class="linenos">1193</span></a> +</span><span id="Parser-1194"><a href="#Parser-1194"><span class="linenos">1194</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="Parser-1195"><a href="#Parser-1195"><span class="linenos">1195</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1196"><a href="#Parser-1196"><span class="linenos">1196</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">):</span> +</span><span id="Parser-1197"><a href="#Parser-1197"><span class="linenos">1197</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withdata</span><span class="p">(</span><span class="n">no</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1198"><a href="#Parser-1198"><span class="linenos">1198</span></a> +</span><span id="Parser-1199"><a href="#Parser-1199"><span class="linenos">1199</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="Parser-1200"><a href="#Parser-1200"><span class="linenos">1200</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1201"><a href="#Parser-1201"><span class="linenos">1201</span></a> +</span><span id="Parser-1202"><a href="#Parser-1202"><span class="linenos">1202</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withisolatedloading</span><span class="p">()</span> </span><span id="Parser-1203"><a href="#Parser-1203"><span class="linenos">1203</span></a> -</span><span id="Parser-1204"><a href="#Parser-1204"><span class="linenos">1204</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"JOURNAL"</span><span class="p">:</span> -</span><span id="Parser-1205"><a href="#Parser-1205"><span class="linenos">1205</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withjournaltable</span><span class="p">()</span> -</span><span id="Parser-1206"><a href="#Parser-1206"><span class="linenos">1206</span></a> -</span><span id="Parser-1207"><a href="#Parser-1207"><span class="linenos">1207</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_withisolatedloading</span><span class="p">()</span> -</span><span id="Parser-1208"><a href="#Parser-1208"><span class="linenos">1208</span></a> -</span><span id="Parser-1209"><a href="#Parser-1209"><span class="linenos">1209</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/create-view.html</span> -</span><span id="Parser-1210"><a href="#Parser-1210"><span class="linenos">1210</span></a> <span class="k">def</span> <span class="nf">_parse_definer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1211"><a href="#Parser-1211"><span class="linenos">1211</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1212"><a href="#Parser-1212"><span class="linenos">1212</span></a> -</span><span id="Parser-1213"><a href="#Parser-1213"><span class="linenos">1213</span></a> <span class="n">user</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-1214"><a href="#Parser-1214"><span class="linenos">1214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">)</span> -</span><span id="Parser-1215"><a href="#Parser-1215"><span class="linenos">1215</span></a> <span class="n">host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-1204"><a href="#Parser-1204"><span class="linenos">1204</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/create-view.html</span> +</span><span id="Parser-1205"><a href="#Parser-1205"><span class="linenos">1205</span></a> <span class="k">def</span> <span class="nf">_parse_definer</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1206"><a href="#Parser-1206"><span class="linenos">1206</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1207"><a href="#Parser-1207"><span class="linenos">1207</span></a> +</span><span id="Parser-1208"><a href="#Parser-1208"><span class="linenos">1208</span></a> <span class="n">user</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-1209"><a href="#Parser-1209"><span class="linenos">1209</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">)</span> +</span><span id="Parser-1210"><a href="#Parser-1210"><span class="linenos">1210</span></a> <span class="n">host</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-1211"><a href="#Parser-1211"><span class="linenos">1211</span></a> +</span><span id="Parser-1212"><a href="#Parser-1212"><span class="linenos">1212</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">user</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span> +</span><span id="Parser-1213"><a href="#Parser-1213"><span class="linenos">1213</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1214"><a href="#Parser-1214"><span class="linenos">1214</span></a> +</span><span id="Parser-1215"><a href="#Parser-1215"><span class="linenos">1215</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">user</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">host</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="Parser-1216"><a href="#Parser-1216"><span class="linenos">1216</span></a> -</span><span id="Parser-1217"><a href="#Parser-1217"><span class="linenos">1217</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">user</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">host</span><span class="p">:</span> -</span><span id="Parser-1218"><a href="#Parser-1218"><span class="linenos">1218</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1219"><a href="#Parser-1219"><span class="linenos">1219</span></a> -</span><span id="Parser-1220"><a href="#Parser-1220"><span class="linenos">1220</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DefinerProperty</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">user</span><span class="si">}</span><span class="s2">@</span><span class="si">{</span><span class="n">host</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-1217"><a href="#Parser-1217"><span class="linenos">1217</span></a> <span class="k">def</span> <span class="nf">_parse_withjournaltable</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1218"><a href="#Parser-1218"><span class="linenos">1218</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-1219"><a href="#Parser-1219"><span class="linenos">1219</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1220"><a href="#Parser-1220"><span class="linenos">1220</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> </span><span id="Parser-1221"><a href="#Parser-1221"><span class="linenos">1221</span></a> -</span><span id="Parser-1222"><a href="#Parser-1222"><span class="linenos">1222</span></a> <span class="k">def</span> <span class="nf">_parse_withjournaltable</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1223"><a href="#Parser-1223"><span class="linenos">1223</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"JOURNAL"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">)</span> -</span><span id="Parser-1224"><a href="#Parser-1224"><span class="linenos">1224</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1225"><a href="#Parser-1225"><span class="linenos">1225</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithJournalTableProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">())</span> -</span><span id="Parser-1226"><a href="#Parser-1226"><span class="linenos">1226</span></a> -</span><span id="Parser-1227"><a href="#Parser-1227"><span class="linenos">1227</span></a> <span class="k">def</span> <span class="nf">_parse_log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1228"><a href="#Parser-1228"><span class="linenos">1228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOG"</span><span class="p">)</span> -</span><span id="Parser-1229"><a href="#Parser-1229"><span class="linenos">1229</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">)</span> +</span><span id="Parser-1222"><a href="#Parser-1222"><span class="linenos">1222</span></a> <span class="k">def</span> <span class="nf">_parse_log</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1223"><a href="#Parser-1223"><span class="linenos">1223</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOG"</span><span class="p">)</span> +</span><span id="Parser-1224"><a href="#Parser-1224"><span class="linenos">1224</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LogProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">)</span> +</span><span id="Parser-1225"><a href="#Parser-1225"><span class="linenos">1225</span></a> +</span><span id="Parser-1226"><a href="#Parser-1226"><span class="linenos">1226</span></a> <span class="k">def</span> <span class="nf">_parse_journal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1227"><a href="#Parser-1227"><span class="linenos">1227</span></a> <span class="n">before</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BEFORE"</span><span class="p">)</span> +</span><span id="Parser-1228"><a href="#Parser-1228"><span class="linenos">1228</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">)</span> +</span><span id="Parser-1229"><a href="#Parser-1229"><span class="linenos">1229</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="n">dual</span><span class="p">,</span> <span class="n">before</span><span class="o">=</span><span class="n">before</span><span class="p">)</span> </span><span id="Parser-1230"><a href="#Parser-1230"><span class="linenos">1230</span></a> -</span><span id="Parser-1231"><a href="#Parser-1231"><span class="linenos">1231</span></a> <span class="k">def</span> <span class="nf">_parse_journal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1232"><a href="#Parser-1232"><span class="linenos">1232</span></a> <span class="n">before</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BEFORE"</span><span class="p">)</span> -</span><span id="Parser-1233"><a href="#Parser-1233"><span class="linenos">1233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"JOURNAL"</span><span class="p">)</span> -</span><span id="Parser-1234"><a href="#Parser-1234"><span class="linenos">1234</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">JournalProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="n">dual</span><span class="p">,</span> <span class="n">before</span><span class="o">=</span><span class="n">before</span><span class="p">)</span> -</span><span id="Parser-1235"><a href="#Parser-1235"><span class="linenos">1235</span></a> -</span><span id="Parser-1236"><a href="#Parser-1236"><span class="linenos">1236</span></a> <span class="k">def</span> <span class="nf">_parse_afterjournal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1237"><a href="#Parser-1237"><span class="linenos">1237</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">)</span> -</span><span id="Parser-1238"><a href="#Parser-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> -</span><span id="Parser-1239"><a href="#Parser-1239"><span class="linenos">1239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"JOURNAL"</span><span class="p">)</span> -</span><span id="Parser-1240"><a href="#Parser-1240"><span class="linenos">1240</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AfterJournalProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="n">dual</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">)</span> -</span><span id="Parser-1241"><a href="#Parser-1241"><span class="linenos">1241</span></a> -</span><span id="Parser-1242"><a href="#Parser-1242"><span class="linenos">1242</span></a> <span class="k">def</span> <span class="nf">_parse_checksum</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1243"><a href="#Parser-1243"><span class="linenos">1243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">)</span> -</span><span id="Parser-1244"><a href="#Parser-1244"><span class="linenos">1244</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1245"><a href="#Parser-1245"><span class="linenos">1245</span></a> -</span><span id="Parser-1246"><a href="#Parser-1246"><span class="linenos">1246</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1247"><a href="#Parser-1247"><span class="linenos">1247</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-1248"><a href="#Parser-1248"><span class="linenos">1248</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1249"><a href="#Parser-1249"><span class="linenos">1249</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> -</span><span id="Parser-1250"><a href="#Parser-1250"><span class="linenos">1250</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-1251"><a href="#Parser-1251"><span class="linenos">1251</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">)</span> -</span><span id="Parser-1252"><a href="#Parser-1252"><span class="linenos">1252</span></a> -</span><span id="Parser-1253"><a href="#Parser-1253"><span class="linenos">1253</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1254"><a href="#Parser-1254"><span class="linenos">1254</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">,</span> -</span><span id="Parser-1255"><a href="#Parser-1255"><span class="linenos">1255</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> -</span><span id="Parser-1256"><a href="#Parser-1256"><span class="linenos">1256</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="Parser-1257"><a href="#Parser-1257"><span class="linenos">1257</span></a> <span class="p">)</span> -</span><span id="Parser-1258"><a href="#Parser-1258"><span class="linenos">1258</span></a> -</span><span id="Parser-1259"><a href="#Parser-1259"><span class="linenos">1259</span></a> <span class="k">def</span> <span class="nf">_parse_freespace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1260"><a href="#Parser-1260"><span class="linenos">1260</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FREESPACE"</span><span class="p">)</span> -</span><span id="Parser-1261"><a href="#Parser-1261"><span class="linenos">1261</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1262"><a href="#Parser-1262"><span class="linenos">1262</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1263"><a href="#Parser-1263"><span class="linenos">1263</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> -</span><span id="Parser-1264"><a href="#Parser-1264"><span class="linenos">1264</span></a> <span class="p">)</span> -</span><span id="Parser-1265"><a href="#Parser-1265"><span class="linenos">1265</span></a> -</span><span id="Parser-1266"><a href="#Parser-1266"><span class="linenos">1266</span></a> <span class="k">def</span> <span class="nf">_parse_mergeblockratio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1267"><a href="#Parser-1267"><span class="linenos">1267</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MERGEBLOCKRATIO"</span><span class="p">)</span> -</span><span id="Parser-1268"><a href="#Parser-1268"><span class="linenos">1268</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> -</span><span id="Parser-1269"><a href="#Parser-1269"><span class="linenos">1269</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1270"><a href="#Parser-1270"><span class="linenos">1270</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> -</span><span id="Parser-1271"><a href="#Parser-1271"><span class="linenos">1271</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> -</span><span id="Parser-1272"><a href="#Parser-1272"><span class="linenos">1272</span></a> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">),</span> -</span><span id="Parser-1273"><a href="#Parser-1273"><span class="linenos">1273</span></a> <span class="p">)</span> -</span><span id="Parser-1274"><a href="#Parser-1274"><span class="linenos">1274</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1275"><a href="#Parser-1275"><span class="linenos">1275</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1276"><a href="#Parser-1276"><span class="linenos">1276</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> -</span><span id="Parser-1277"><a href="#Parser-1277"><span class="linenos">1277</span></a> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> -</span><span id="Parser-1278"><a href="#Parser-1278"><span class="linenos">1278</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="Parser-1279"><a href="#Parser-1279"><span class="linenos">1279</span></a> <span class="p">)</span> -</span><span id="Parser-1280"><a href="#Parser-1280"><span class="linenos">1280</span></a> -</span><span id="Parser-1281"><a href="#Parser-1281"><span class="linenos">1281</span></a> <span class="k">def</span> <span class="nf">_parse_datablocksize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1282"><a href="#Parser-1282"><span class="linenos">1282</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> -</span><span id="Parser-1283"><a href="#Parser-1283"><span class="linenos">1283</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> -</span><span id="Parser-1284"><a href="#Parser-1284"><span class="linenos">1284</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1285"><a href="#Parser-1285"><span class="linenos">1285</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MIN"</span><span class="p">,</span> <span class="s2">"MINIMUM"</span><span class="p">)):</span> -</span><span id="Parser-1286"><a href="#Parser-1286"><span class="linenos">1286</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> -</span><span id="Parser-1287"><a href="#Parser-1287"><span class="linenos">1287</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1288"><a href="#Parser-1288"><span class="linenos">1288</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MAXIMUM"</span><span class="p">)):</span> -</span><span id="Parser-1289"><a href="#Parser-1289"><span class="linenos">1289</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> -</span><span id="Parser-1290"><a href="#Parser-1290"><span class="linenos">1290</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1291"><a href="#Parser-1291"><span class="linenos">1291</span></a> -</span><span id="Parser-1292"><a href="#Parser-1292"><span class="linenos">1292</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> -</span><span id="Parser-1293"><a href="#Parser-1293"><span class="linenos">1293</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1294"><a href="#Parser-1294"><span class="linenos">1294</span></a> <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-1295"><a href="#Parser-1295"><span class="linenos">1295</span></a> <span class="n">units</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1296"><a href="#Parser-1296"><span class="linenos">1296</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"BYTES"</span><span class="p">,</span> <span class="s2">"KBYTES"</span><span class="p">,</span> <span class="s2">"KILOBYTES"</span><span class="p">)):</span> -</span><span id="Parser-1297"><a href="#Parser-1297"><span class="linenos">1297</span></a> <span class="n">units</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-1298"><a href="#Parser-1298"><span class="linenos">1298</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="n">units</span><span class="p">)</span> -</span><span id="Parser-1299"><a href="#Parser-1299"><span class="linenos">1299</span></a> -</span><span id="Parser-1300"><a href="#Parser-1300"><span class="linenos">1300</span></a> <span class="k">def</span> <span class="nf">_parse_blockcompression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1301"><a href="#Parser-1301"><span class="linenos">1301</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BLOCKCOMPRESSION"</span><span class="p">)</span> -</span><span id="Parser-1302"><a href="#Parser-1302"><span class="linenos">1302</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1303"><a href="#Parser-1303"><span class="linenos">1303</span></a> <span class="n">always</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> -</span><span id="Parser-1304"><a href="#Parser-1304"><span class="linenos">1304</span></a> <span class="n">manual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MANUAL"</span><span class="p">)</span> -</span><span id="Parser-1305"><a href="#Parser-1305"><span class="linenos">1305</span></a> <span class="n">never</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NEVER"</span><span class="p">)</span> -</span><span id="Parser-1306"><a href="#Parser-1306"><span class="linenos">1306</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> -</span><span id="Parser-1307"><a href="#Parser-1307"><span class="linenos">1307</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1308"><a href="#Parser-1308"><span class="linenos">1308</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AUTOTEMP"</span><span class="p">):</span> -</span><span id="Parser-1309"><a href="#Parser-1309"><span class="linenos">1309</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> -</span><span id="Parser-1310"><a href="#Parser-1310"><span class="linenos">1310</span></a> -</span><span id="Parser-1311"><a href="#Parser-1311"><span class="linenos">1311</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1312"><a href="#Parser-1312"><span class="linenos">1312</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">,</span> -</span><span id="Parser-1313"><a href="#Parser-1313"><span class="linenos">1313</span></a> <span class="n">always</span><span class="o">=</span><span class="n">always</span><span class="p">,</span> -</span><span id="Parser-1314"><a href="#Parser-1314"><span class="linenos">1314</span></a> <span class="n">manual</span><span class="o">=</span><span class="n">manual</span><span class="p">,</span> -</span><span id="Parser-1315"><a href="#Parser-1315"><span class="linenos">1315</span></a> <span class="n">never</span><span class="o">=</span><span class="n">never</span><span class="p">,</span> -</span><span id="Parser-1316"><a href="#Parser-1316"><span class="linenos">1316</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> -</span><span id="Parser-1317"><a href="#Parser-1317"><span class="linenos">1317</span></a> <span class="n">autotemp</span><span class="o">=</span><span class="n">autotemp</span><span class="p">,</span> -</span><span id="Parser-1318"><a href="#Parser-1318"><span class="linenos">1318</span></a> <span class="p">)</span> -</span><span id="Parser-1319"><a href="#Parser-1319"><span class="linenos">1319</span></a> -</span><span id="Parser-1320"><a href="#Parser-1320"><span class="linenos">1320</span></a> <span class="k">def</span> <span class="nf">_parse_withisolatedloading</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1321"><a href="#Parser-1321"><span class="linenos">1321</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="Parser-1322"><a href="#Parser-1322"><span class="linenos">1322</span></a> <span class="n">no</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="Parser-1323"><a href="#Parser-1323"><span class="linenos">1323</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONCURRENT"</span><span class="p">)</span> -</span><span id="Parser-1324"><a href="#Parser-1324"><span class="linenos">1324</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ISOLATED"</span><span class="p">,</span> <span class="s2">"LOADING"</span><span class="p">)</span> -</span><span id="Parser-1325"><a href="#Parser-1325"><span class="linenos">1325</span></a> <span class="n">for_all</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ALL"</span><span class="p">)</span> -</span><span id="Parser-1326"><a href="#Parser-1326"><span class="linenos">1326</span></a> <span class="n">for_insert</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">)</span> -</span><span id="Parser-1327"><a href="#Parser-1327"><span class="linenos">1327</span></a> <span class="n">for_none</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">)</span> -</span><span id="Parser-1328"><a href="#Parser-1328"><span class="linenos">1328</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1329"><a href="#Parser-1329"><span class="linenos">1329</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">,</span> -</span><span id="Parser-1330"><a href="#Parser-1330"><span class="linenos">1330</span></a> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> -</span><span id="Parser-1331"><a href="#Parser-1331"><span class="linenos">1331</span></a> <span class="n">concurrent</span><span class="o">=</span><span class="n">concurrent</span><span class="p">,</span> -</span><span id="Parser-1332"><a href="#Parser-1332"><span class="linenos">1332</span></a> <span class="n">for_all</span><span class="o">=</span><span class="n">for_all</span><span class="p">,</span> -</span><span id="Parser-1333"><a href="#Parser-1333"><span class="linenos">1333</span></a> <span class="n">for_insert</span><span class="o">=</span><span class="n">for_insert</span><span class="p">,</span> -</span><span id="Parser-1334"><a href="#Parser-1334"><span class="linenos">1334</span></a> <span class="n">for_none</span><span class="o">=</span><span class="n">for_none</span><span class="p">,</span> -</span><span id="Parser-1335"><a href="#Parser-1335"><span class="linenos">1335</span></a> <span class="p">)</span> -</span><span id="Parser-1336"><a href="#Parser-1336"><span class="linenos">1336</span></a> -</span><span id="Parser-1337"><a href="#Parser-1337"><span class="linenos">1337</span></a> <span class="k">def</span> <span class="nf">_parse_locking</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1338"><a href="#Parser-1338"><span class="linenos">1338</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="Parser-1339"><a href="#Parser-1339"><span class="linenos">1339</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"TABLE"</span> -</span><span id="Parser-1340"><a href="#Parser-1340"><span class="linenos">1340</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">):</span> -</span><span id="Parser-1341"><a href="#Parser-1341"><span class="linenos">1341</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"VIEW"</span> -</span><span id="Parser-1342"><a href="#Parser-1342"><span class="linenos">1342</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">):</span> -</span><span id="Parser-1343"><a href="#Parser-1343"><span class="linenos">1343</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ROW"</span> -</span><span id="Parser-1344"><a href="#Parser-1344"><span class="linenos">1344</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">):</span> -</span><span id="Parser-1345"><a href="#Parser-1345"><span class="linenos">1345</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"DATABASE"</span> -</span><span id="Parser-1346"><a href="#Parser-1346"><span class="linenos">1346</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1347"><a href="#Parser-1347"><span class="linenos">1347</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1348"><a href="#Parser-1348"><span class="linenos">1348</span></a> -</span><span id="Parser-1349"><a href="#Parser-1349"><span class="linenos">1349</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"VIEW"</span><span class="p">):</span> -</span><span id="Parser-1350"><a href="#Parser-1350"><span class="linenos">1350</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> -</span><span id="Parser-1351"><a href="#Parser-1351"><span class="linenos">1351</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1352"><a href="#Parser-1352"><span class="linenos">1352</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1353"><a href="#Parser-1353"><span class="linenos">1353</span></a> -</span><span id="Parser-1354"><a href="#Parser-1354"><span class="linenos">1354</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="Parser-1355"><a href="#Parser-1355"><span class="linenos">1355</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"FOR"</span> -</span><span id="Parser-1356"><a href="#Parser-1356"><span class="linenos">1356</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="Parser-1357"><a href="#Parser-1357"><span class="linenos">1357</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"IN"</span> -</span><span id="Parser-1358"><a href="#Parser-1358"><span class="linenos">1358</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1359"><a href="#Parser-1359"><span class="linenos">1359</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1360"><a href="#Parser-1360"><span class="linenos">1360</span></a> -</span><span id="Parser-1361"><a href="#Parser-1361"><span class="linenos">1361</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">):</span> -</span><span id="Parser-1362"><a href="#Parser-1362"><span class="linenos">1362</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"ACCESS"</span> -</span><span id="Parser-1363"><a href="#Parser-1363"><span class="linenos">1363</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXCL"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">)):</span> -</span><span id="Parser-1364"><a href="#Parser-1364"><span class="linenos">1364</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"EXCLUSIVE"</span> -</span><span id="Parser-1365"><a href="#Parser-1365"><span class="linenos">1365</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHARE"</span><span class="p">):</span> -</span><span id="Parser-1366"><a href="#Parser-1366"><span class="linenos">1366</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"SHARE"</span> -</span><span id="Parser-1367"><a href="#Parser-1367"><span class="linenos">1367</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"READ"</span><span class="p">):</span> -</span><span id="Parser-1368"><a href="#Parser-1368"><span class="linenos">1368</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"READ"</span> -</span><span id="Parser-1369"><a href="#Parser-1369"><span class="linenos">1369</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WRITE"</span><span class="p">):</span> -</span><span id="Parser-1370"><a href="#Parser-1370"><span class="linenos">1370</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"WRITE"</span> -</span><span id="Parser-1371"><a href="#Parser-1371"><span class="linenos">1371</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">):</span> -</span><span id="Parser-1372"><a href="#Parser-1372"><span class="linenos">1372</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"CHECKSUM"</span> -</span><span id="Parser-1373"><a href="#Parser-1373"><span class="linenos">1373</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1374"><a href="#Parser-1374"><span class="linenos">1374</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1375"><a href="#Parser-1375"><span class="linenos">1375</span></a> -</span><span id="Parser-1376"><a href="#Parser-1376"><span class="linenos">1376</span></a> <span class="n">override</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OVERRIDE"</span><span class="p">)</span> -</span><span id="Parser-1377"><a href="#Parser-1377"><span class="linenos">1377</span></a> -</span><span id="Parser-1378"><a href="#Parser-1378"><span class="linenos">1378</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1379"><a href="#Parser-1379"><span class="linenos">1379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">,</span> -</span><span id="Parser-1380"><a href="#Parser-1380"><span class="linenos">1380</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-1381"><a href="#Parser-1381"><span class="linenos">1381</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Parser-1382"><a href="#Parser-1382"><span class="linenos">1382</span></a> <span class="n">for_or_in</span><span class="o">=</span><span class="n">for_or_in</span><span class="p">,</span> -</span><span id="Parser-1383"><a href="#Parser-1383"><span class="linenos">1383</span></a> <span class="n">lock_type</span><span class="o">=</span><span class="n">lock_type</span><span class="p">,</span> -</span><span id="Parser-1384"><a href="#Parser-1384"><span class="linenos">1384</span></a> <span class="n">override</span><span class="o">=</span><span class="n">override</span><span class="p">,</span> -</span><span id="Parser-1385"><a href="#Parser-1385"><span class="linenos">1385</span></a> <span class="p">)</span> -</span><span id="Parser-1386"><a href="#Parser-1386"><span class="linenos">1386</span></a> -</span><span id="Parser-1387"><a href="#Parser-1387"><span class="linenos">1387</span></a> <span class="k">def</span> <span class="nf">_parse_partition_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-1388"><a href="#Parser-1388"><span class="linenos">1388</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">):</span> -</span><span id="Parser-1389"><a href="#Parser-1389"><span class="linenos">1389</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-1390"><a href="#Parser-1390"><span class="linenos">1390</span></a> <span class="k">return</span> <span class="p">[]</span> -</span><span id="Parser-1391"><a href="#Parser-1391"><span class="linenos">1391</span></a> -</span><span id="Parser-1392"><a href="#Parser-1392"><span class="linenos">1392</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1393"><a href="#Parser-1393"><span class="linenos">1393</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1394"><a href="#Parser-1394"><span class="linenos">1394</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1395"><a href="#Parser-1395"><span class="linenos">1395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">,</span> -</span><span id="Parser-1396"><a href="#Parser-1396"><span class="linenos">1396</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()),</span> -</span><span id="Parser-1397"><a href="#Parser-1397"><span class="linenos">1397</span></a> <span class="p">)</span> -</span><span id="Parser-1398"><a href="#Parser-1398"><span class="linenos">1398</span></a> -</span><span id="Parser-1399"><a href="#Parser-1399"><span class="linenos">1399</span></a> <span class="k">def</span> <span class="nf">_parse_distkey</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1400"><a href="#Parser-1400"><span class="linenos">1400</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">))</span> -</span><span id="Parser-1401"><a href="#Parser-1401"><span class="linenos">1401</span></a> -</span><span id="Parser-1402"><a href="#Parser-1402"><span class="linenos">1402</span></a> <span class="k">def</span> <span class="nf">_parse_create_like</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1403"><a href="#Parser-1403"><span class="linenos">1403</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1404"><a href="#Parser-1404"><span class="linenos">1404</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-1405"><a href="#Parser-1405"><span class="linenos">1405</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INCLUDING"</span><span class="p">,</span> <span class="s2">"EXCLUDING"</span><span class="p">)):</span> -</span><span id="Parser-1406"><a href="#Parser-1406"><span class="linenos">1406</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-1407"><a href="#Parser-1407"><span class="linenos">1407</span></a> <span class="n">id_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-1408"><a href="#Parser-1408"><span class="linenos">1408</span></a> -</span><span id="Parser-1409"><a href="#Parser-1409"><span class="linenos">1409</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">id_var</span><span class="p">:</span> -</span><span id="Parser-1410"><a href="#Parser-1410"><span class="linenos">1410</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1411"><a href="#Parser-1411"><span class="linenos">1411</span></a> -</span><span id="Parser-1412"><a href="#Parser-1412"><span class="linenos">1412</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Parser-1413"><a href="#Parser-1413"><span class="linenos">1413</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1414"><a href="#Parser-1414"><span class="linenos">1414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> -</span><span id="Parser-1415"><a href="#Parser-1415"><span class="linenos">1415</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-1416"><a href="#Parser-1416"><span class="linenos">1416</span></a> <span class="n">value</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">id_var</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="Parser-1417"><a href="#Parser-1417"><span class="linenos">1417</span></a> <span class="p">)</span> -</span><span id="Parser-1418"><a href="#Parser-1418"><span class="linenos">1418</span></a> <span class="p">)</span> -</span><span id="Parser-1419"><a href="#Parser-1419"><span class="linenos">1419</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="Parser-1231"><a href="#Parser-1231"><span class="linenos">1231</span></a> <span class="k">def</span> <span class="nf">_parse_afterjournal</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1232"><a href="#Parser-1232"><span class="linenos">1232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">)</span> +</span><span id="Parser-1233"><a href="#Parser-1233"><span class="linenos">1233</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LOCAL"</span><span class="p">)</span> +</span><span id="Parser-1234"><a href="#Parser-1234"><span class="linenos">1234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"JOURNAL"</span><span class="p">)</span> +</span><span id="Parser-1235"><a href="#Parser-1235"><span class="linenos">1235</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AfterJournalProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">dual</span><span class="o">=</span><span class="n">dual</span><span class="p">,</span> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">)</span> +</span><span id="Parser-1236"><a href="#Parser-1236"><span class="linenos">1236</span></a> +</span><span id="Parser-1237"><a href="#Parser-1237"><span class="linenos">1237</span></a> <span class="k">def</span> <span class="nf">_parse_checksum</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1238"><a href="#Parser-1238"><span class="linenos">1238</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">)</span> +</span><span id="Parser-1239"><a href="#Parser-1239"><span class="linenos">1239</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1240"><a href="#Parser-1240"><span class="linenos">1240</span></a> +</span><span id="Parser-1241"><a href="#Parser-1241"><span class="linenos">1241</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1242"><a href="#Parser-1242"><span class="linenos">1242</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-1243"><a href="#Parser-1243"><span class="linenos">1243</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1244"><a href="#Parser-1244"><span class="linenos">1244</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OFF"</span><span class="p">):</span> +</span><span id="Parser-1245"><a href="#Parser-1245"><span class="linenos">1245</span></a> <span class="n">on</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1246"><a href="#Parser-1246"><span class="linenos">1246</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">)</span> +</span><span id="Parser-1247"><a href="#Parser-1247"><span class="linenos">1247</span></a> +</span><span id="Parser-1248"><a href="#Parser-1248"><span class="linenos">1248</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1249"><a href="#Parser-1249"><span class="linenos">1249</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ChecksumProperty</span><span class="p">,</span> +</span><span id="Parser-1250"><a href="#Parser-1250"><span class="linenos">1250</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> +</span><span id="Parser-1251"><a href="#Parser-1251"><span class="linenos">1251</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="Parser-1252"><a href="#Parser-1252"><span class="linenos">1252</span></a> <span class="p">)</span> +</span><span id="Parser-1253"><a href="#Parser-1253"><span class="linenos">1253</span></a> +</span><span id="Parser-1254"><a href="#Parser-1254"><span class="linenos">1254</span></a> <span class="k">def</span> <span class="nf">_parse_freespace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1255"><a href="#Parser-1255"><span class="linenos">1255</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FREESPACE"</span><span class="p">)</span> +</span><span id="Parser-1256"><a href="#Parser-1256"><span class="linenos">1256</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1257"><a href="#Parser-1257"><span class="linenos">1257</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1258"><a href="#Parser-1258"><span class="linenos">1258</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">FreespaceProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">)</span> +</span><span id="Parser-1259"><a href="#Parser-1259"><span class="linenos">1259</span></a> <span class="p">)</span> +</span><span id="Parser-1260"><a href="#Parser-1260"><span class="linenos">1260</span></a> +</span><span id="Parser-1261"><a href="#Parser-1261"><span class="linenos">1261</span></a> <span class="k">def</span> <span class="nf">_parse_mergeblockratio</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1262"><a href="#Parser-1262"><span class="linenos">1262</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MERGEBLOCKRATIO"</span><span class="p">)</span> +</span><span id="Parser-1263"><a href="#Parser-1263"><span class="linenos">1263</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">):</span> +</span><span id="Parser-1264"><a href="#Parser-1264"><span class="linenos">1264</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1265"><a href="#Parser-1265"><span class="linenos">1265</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> +</span><span id="Parser-1266"><a href="#Parser-1266"><span class="linenos">1266</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">(),</span> +</span><span id="Parser-1267"><a href="#Parser-1267"><span class="linenos">1267</span></a> <span class="n">percent</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">),</span> +</span><span id="Parser-1268"><a href="#Parser-1268"><span class="linenos">1268</span></a> <span class="p">)</span> +</span><span id="Parser-1269"><a href="#Parser-1269"><span class="linenos">1269</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1270"><a href="#Parser-1270"><span class="linenos">1270</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1271"><a href="#Parser-1271"><span class="linenos">1271</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MergeBlockRatioProperty</span><span class="p">,</span> +</span><span id="Parser-1272"><a href="#Parser-1272"><span class="linenos">1272</span></a> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> +</span><span id="Parser-1273"><a href="#Parser-1273"><span class="linenos">1273</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="Parser-1274"><a href="#Parser-1274"><span class="linenos">1274</span></a> <span class="p">)</span> +</span><span id="Parser-1275"><a href="#Parser-1275"><span class="linenos">1275</span></a> +</span><span id="Parser-1276"><a href="#Parser-1276"><span class="linenos">1276</span></a> <span class="k">def</span> <span class="nf">_parse_datablocksize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1277"><a href="#Parser-1277"><span class="linenos">1277</span></a> <span class="k">if</span> <span class="n">default</span><span class="p">:</span> +</span><span id="Parser-1278"><a href="#Parser-1278"><span class="linenos">1278</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> +</span><span id="Parser-1279"><a href="#Parser-1279"><span class="linenos">1279</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1280"><a href="#Parser-1280"><span class="linenos">1280</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MIN"</span><span class="p">,</span> <span class="s2">"MINIMUM"</span><span class="p">)):</span> +</span><span id="Parser-1281"><a href="#Parser-1281"><span class="linenos">1281</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> +</span><span id="Parser-1282"><a href="#Parser-1282"><span class="linenos">1282</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1283"><a href="#Parser-1283"><span class="linenos">1283</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="s2">"MAXIMUM"</span><span class="p">)):</span> +</span><span id="Parser-1284"><a href="#Parser-1284"><span class="linenos">1284</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> +</span><span id="Parser-1285"><a href="#Parser-1285"><span class="linenos">1285</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="nb">min</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1286"><a href="#Parser-1286"><span class="linenos">1286</span></a> +</span><span id="Parser-1287"><a href="#Parser-1287"><span class="linenos">1287</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABLOCKSIZE"</span><span class="p">)</span> +</span><span id="Parser-1288"><a href="#Parser-1288"><span class="linenos">1288</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1289"><a href="#Parser-1289"><span class="linenos">1289</span></a> <span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-1290"><a href="#Parser-1290"><span class="linenos">1290</span></a> <span class="n">units</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1291"><a href="#Parser-1291"><span class="linenos">1291</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"BYTES"</span><span class="p">,</span> <span class="s2">"KBYTES"</span><span class="p">,</span> <span class="s2">"KILOBYTES"</span><span class="p">)):</span> +</span><span id="Parser-1292"><a href="#Parser-1292"><span class="linenos">1292</span></a> <span class="n">units</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-1293"><a href="#Parser-1293"><span class="linenos">1293</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataBlocksizeProperty</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">units</span><span class="o">=</span><span class="n">units</span><span class="p">)</span> +</span><span id="Parser-1294"><a href="#Parser-1294"><span class="linenos">1294</span></a> +</span><span id="Parser-1295"><a href="#Parser-1295"><span class="linenos">1295</span></a> <span class="k">def</span> <span class="nf">_parse_blockcompression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1296"><a href="#Parser-1296"><span class="linenos">1296</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"BLOCKCOMPRESSION"</span><span class="p">)</span> +</span><span id="Parser-1297"><a href="#Parser-1297"><span class="linenos">1297</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1298"><a href="#Parser-1298"><span class="linenos">1298</span></a> <span class="n">always</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> +</span><span id="Parser-1299"><a href="#Parser-1299"><span class="linenos">1299</span></a> <span class="n">manual</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MANUAL"</span><span class="p">)</span> +</span><span id="Parser-1300"><a href="#Parser-1300"><span class="linenos">1300</span></a> <span class="n">never</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NEVER"</span><span class="p">)</span> +</span><span id="Parser-1301"><a href="#Parser-1301"><span class="linenos">1301</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFAULT"</span><span class="p">)</span> +</span><span id="Parser-1302"><a href="#Parser-1302"><span class="linenos">1302</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1303"><a href="#Parser-1303"><span class="linenos">1303</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AUTOTEMP"</span><span class="p">):</span> +</span><span id="Parser-1304"><a href="#Parser-1304"><span class="linenos">1304</span></a> <span class="n">autotemp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> +</span><span id="Parser-1305"><a href="#Parser-1305"><span class="linenos">1305</span></a> +</span><span id="Parser-1306"><a href="#Parser-1306"><span class="linenos">1306</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1307"><a href="#Parser-1307"><span class="linenos">1307</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BlockCompressionProperty</span><span class="p">,</span> +</span><span id="Parser-1308"><a href="#Parser-1308"><span class="linenos">1308</span></a> <span class="n">always</span><span class="o">=</span><span class="n">always</span><span class="p">,</span> +</span><span id="Parser-1309"><a href="#Parser-1309"><span class="linenos">1309</span></a> <span class="n">manual</span><span class="o">=</span><span class="n">manual</span><span class="p">,</span> +</span><span id="Parser-1310"><a href="#Parser-1310"><span class="linenos">1310</span></a> <span class="n">never</span><span class="o">=</span><span class="n">never</span><span class="p">,</span> +</span><span id="Parser-1311"><a href="#Parser-1311"><span class="linenos">1311</span></a> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">,</span> +</span><span id="Parser-1312"><a href="#Parser-1312"><span class="linenos">1312</span></a> <span class="n">autotemp</span><span class="o">=</span><span class="n">autotemp</span><span class="p">,</span> +</span><span id="Parser-1313"><a href="#Parser-1313"><span class="linenos">1313</span></a> <span class="p">)</span> +</span><span id="Parser-1314"><a href="#Parser-1314"><span class="linenos">1314</span></a> +</span><span id="Parser-1315"><a href="#Parser-1315"><span class="linenos">1315</span></a> <span class="k">def</span> <span class="nf">_parse_withisolatedloading</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1316"><a href="#Parser-1316"><span class="linenos">1316</span></a> <span class="n">no</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="Parser-1317"><a href="#Parser-1317"><span class="linenos">1317</span></a> <span class="n">concurrent</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CONCURRENT"</span><span class="p">)</span> +</span><span id="Parser-1318"><a href="#Parser-1318"><span class="linenos">1318</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ISOLATED"</span><span class="p">,</span> <span class="s2">"LOADING"</span><span class="p">)</span> +</span><span id="Parser-1319"><a href="#Parser-1319"><span class="linenos">1319</span></a> <span class="n">for_all</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ALL"</span><span class="p">)</span> +</span><span id="Parser-1320"><a href="#Parser-1320"><span class="linenos">1320</span></a> <span class="n">for_insert</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"INSERT"</span><span class="p">)</span> +</span><span id="Parser-1321"><a href="#Parser-1321"><span class="linenos">1321</span></a> <span class="n">for_none</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"NONE"</span><span class="p">)</span> +</span><span id="Parser-1322"><a href="#Parser-1322"><span class="linenos">1322</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1323"><a href="#Parser-1323"><span class="linenos">1323</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsolatedLoadingProperty</span><span class="p">,</span> +</span><span id="Parser-1324"><a href="#Parser-1324"><span class="linenos">1324</span></a> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> +</span><span id="Parser-1325"><a href="#Parser-1325"><span class="linenos">1325</span></a> <span class="n">concurrent</span><span class="o">=</span><span class="n">concurrent</span><span class="p">,</span> +</span><span id="Parser-1326"><a href="#Parser-1326"><span class="linenos">1326</span></a> <span class="n">for_all</span><span class="o">=</span><span class="n">for_all</span><span class="p">,</span> +</span><span id="Parser-1327"><a href="#Parser-1327"><span class="linenos">1327</span></a> <span class="n">for_insert</span><span class="o">=</span><span class="n">for_insert</span><span class="p">,</span> +</span><span id="Parser-1328"><a href="#Parser-1328"><span class="linenos">1328</span></a> <span class="n">for_none</span><span class="o">=</span><span class="n">for_none</span><span class="p">,</span> +</span><span id="Parser-1329"><a href="#Parser-1329"><span class="linenos">1329</span></a> <span class="p">)</span> +</span><span id="Parser-1330"><a href="#Parser-1330"><span class="linenos">1330</span></a> +</span><span id="Parser-1331"><a href="#Parser-1331"><span class="linenos">1331</span></a> <span class="k">def</span> <span class="nf">_parse_locking</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1332"><a href="#Parser-1332"><span class="linenos">1332</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="Parser-1333"><a href="#Parser-1333"><span class="linenos">1333</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"TABLE"</span> +</span><span id="Parser-1334"><a href="#Parser-1334"><span class="linenos">1334</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">):</span> +</span><span id="Parser-1335"><a href="#Parser-1335"><span class="linenos">1335</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"VIEW"</span> +</span><span id="Parser-1336"><a href="#Parser-1336"><span class="linenos">1336</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">):</span> +</span><span id="Parser-1337"><a href="#Parser-1337"><span class="linenos">1337</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"ROW"</span> +</span><span id="Parser-1338"><a href="#Parser-1338"><span class="linenos">1338</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">):</span> +</span><span id="Parser-1339"><a href="#Parser-1339"><span class="linenos">1339</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="s2">"DATABASE"</span> +</span><span id="Parser-1340"><a href="#Parser-1340"><span class="linenos">1340</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1341"><a href="#Parser-1341"><span class="linenos">1341</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1342"><a href="#Parser-1342"><span class="linenos">1342</span></a> +</span><span id="Parser-1343"><a href="#Parser-1343"><span class="linenos">1343</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"DATABASE"</span><span class="p">,</span> <span class="s2">"TABLE"</span><span class="p">,</span> <span class="s2">"VIEW"</span><span class="p">):</span> +</span><span id="Parser-1344"><a href="#Parser-1344"><span class="linenos">1344</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">()</span> +</span><span id="Parser-1345"><a href="#Parser-1345"><span class="linenos">1345</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1346"><a href="#Parser-1346"><span class="linenos">1346</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1347"><a href="#Parser-1347"><span class="linenos">1347</span></a> +</span><span id="Parser-1348"><a href="#Parser-1348"><span class="linenos">1348</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="Parser-1349"><a href="#Parser-1349"><span class="linenos">1349</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"FOR"</span> +</span><span id="Parser-1350"><a href="#Parser-1350"><span class="linenos">1350</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="Parser-1351"><a href="#Parser-1351"><span class="linenos">1351</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="s2">"IN"</span> +</span><span id="Parser-1352"><a href="#Parser-1352"><span class="linenos">1352</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1353"><a href="#Parser-1353"><span class="linenos">1353</span></a> <span class="n">for_or_in</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1354"><a href="#Parser-1354"><span class="linenos">1354</span></a> +</span><span id="Parser-1355"><a href="#Parser-1355"><span class="linenos">1355</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ACCESS"</span><span class="p">):</span> +</span><span id="Parser-1356"><a href="#Parser-1356"><span class="linenos">1356</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"ACCESS"</span> +</span><span id="Parser-1357"><a href="#Parser-1357"><span class="linenos">1357</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"EXCL"</span><span class="p">,</span> <span class="s2">"EXCLUSIVE"</span><span class="p">)):</span> +</span><span id="Parser-1358"><a href="#Parser-1358"><span class="linenos">1358</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"EXCLUSIVE"</span> +</span><span id="Parser-1359"><a href="#Parser-1359"><span class="linenos">1359</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHARE"</span><span class="p">):</span> +</span><span id="Parser-1360"><a href="#Parser-1360"><span class="linenos">1360</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"SHARE"</span> +</span><span id="Parser-1361"><a href="#Parser-1361"><span class="linenos">1361</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"READ"</span><span class="p">):</span> +</span><span id="Parser-1362"><a href="#Parser-1362"><span class="linenos">1362</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"READ"</span> +</span><span id="Parser-1363"><a href="#Parser-1363"><span class="linenos">1363</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WRITE"</span><span class="p">):</span> +</span><span id="Parser-1364"><a href="#Parser-1364"><span class="linenos">1364</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"WRITE"</span> +</span><span id="Parser-1365"><a href="#Parser-1365"><span class="linenos">1365</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECKSUM"</span><span class="p">):</span> +</span><span id="Parser-1366"><a href="#Parser-1366"><span class="linenos">1366</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="s2">"CHECKSUM"</span> +</span><span id="Parser-1367"><a href="#Parser-1367"><span class="linenos">1367</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1368"><a href="#Parser-1368"><span class="linenos">1368</span></a> <span class="n">lock_type</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1369"><a href="#Parser-1369"><span class="linenos">1369</span></a> +</span><span id="Parser-1370"><a href="#Parser-1370"><span class="linenos">1370</span></a> <span class="n">override</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OVERRIDE"</span><span class="p">)</span> +</span><span id="Parser-1371"><a href="#Parser-1371"><span class="linenos">1371</span></a> +</span><span id="Parser-1372"><a href="#Parser-1372"><span class="linenos">1372</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1373"><a href="#Parser-1373"><span class="linenos">1373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LockingProperty</span><span class="p">,</span> +</span><span id="Parser-1374"><a href="#Parser-1374"><span class="linenos">1374</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-1375"><a href="#Parser-1375"><span class="linenos">1375</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Parser-1376"><a href="#Parser-1376"><span class="linenos">1376</span></a> <span class="n">for_or_in</span><span class="o">=</span><span class="n">for_or_in</span><span class="p">,</span> +</span><span id="Parser-1377"><a href="#Parser-1377"><span class="linenos">1377</span></a> <span class="n">lock_type</span><span class="o">=</span><span class="n">lock_type</span><span class="p">,</span> +</span><span id="Parser-1378"><a href="#Parser-1378"><span class="linenos">1378</span></a> <span class="n">override</span><span class="o">=</span><span class="n">override</span><span class="p">,</span> +</span><span id="Parser-1379"><a href="#Parser-1379"><span class="linenos">1379</span></a> <span class="p">)</span> +</span><span id="Parser-1380"><a href="#Parser-1380"><span class="linenos">1380</span></a> +</span><span id="Parser-1381"><a href="#Parser-1381"><span class="linenos">1381</span></a> <span class="k">def</span> <span class="nf">_parse_partition_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-1382"><a href="#Parser-1382"><span class="linenos">1382</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">):</span> +</span><span id="Parser-1383"><a href="#Parser-1383"><span class="linenos">1383</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-1384"><a href="#Parser-1384"><span class="linenos">1384</span></a> <span class="k">return</span> <span class="p">[]</span> +</span><span id="Parser-1385"><a href="#Parser-1385"><span class="linenos">1385</span></a> +</span><span id="Parser-1386"><a href="#Parser-1386"><span class="linenos">1386</span></a> <span class="k">def</span> <span class="nf">_parse_partitioned_by</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1387"><a href="#Parser-1387"><span class="linenos">1387</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1388"><a href="#Parser-1388"><span class="linenos">1388</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1389"><a href="#Parser-1389"><span class="linenos">1389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PartitionedByProperty</span><span class="p">,</span> +</span><span id="Parser-1390"><a href="#Parser-1390"><span class="linenos">1390</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()),</span> +</span><span id="Parser-1391"><a href="#Parser-1391"><span class="linenos">1391</span></a> <span class="p">)</span> +</span><span id="Parser-1392"><a href="#Parser-1392"><span class="linenos">1392</span></a> +</span><span id="Parser-1393"><a href="#Parser-1393"><span class="linenos">1393</span></a> <span class="k">def</span> <span class="nf">_parse_withdata</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1394"><a href="#Parser-1394"><span class="linenos">1394</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> +</span><span id="Parser-1395"><a href="#Parser-1395"><span class="linenos">1395</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1396"><a href="#Parser-1396"><span class="linenos">1396</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AND"</span><span class="p">,</span> <span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"STATISTICS"</span><span class="p">):</span> +</span><span id="Parser-1397"><a href="#Parser-1397"><span class="linenos">1397</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-1398"><a href="#Parser-1398"><span class="linenos">1398</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1399"><a href="#Parser-1399"><span class="linenos">1399</span></a> <span class="n">statistics</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1400"><a href="#Parser-1400"><span class="linenos">1400</span></a> +</span><span id="Parser-1401"><a href="#Parser-1401"><span class="linenos">1401</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithDataProperty</span><span class="p">,</span> <span class="n">no</span><span class="o">=</span><span class="n">no</span><span class="p">,</span> <span class="n">statistics</span><span class="o">=</span><span class="n">statistics</span><span class="p">)</span> +</span><span id="Parser-1402"><a href="#Parser-1402"><span class="linenos">1402</span></a> +</span><span id="Parser-1403"><a href="#Parser-1403"><span class="linenos">1403</span></a> <span class="k">def</span> <span class="nf">_parse_noprimaryindex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1404"><a href="#Parser-1404"><span class="linenos">1404</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">,</span> <span class="s2">"INDEX"</span><span class="p">)</span> +</span><span id="Parser-1405"><a href="#Parser-1405"><span class="linenos">1405</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">NoPrimaryIndexProperty</span><span class="p">()</span> +</span><span id="Parser-1406"><a href="#Parser-1406"><span class="linenos">1406</span></a> +</span><span id="Parser-1407"><a href="#Parser-1407"><span class="linenos">1407</span></a> <span class="k">def</span> <span class="nf">_parse_oncommit</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1408"><a href="#Parser-1408"><span class="linenos">1408</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COMMIT"</span><span class="p">,</span> <span class="s2">"PRESERVE"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">)</span> +</span><span id="Parser-1409"><a href="#Parser-1409"><span class="linenos">1409</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">OnCommitProperty</span><span class="p">()</span> +</span><span id="Parser-1410"><a href="#Parser-1410"><span class="linenos">1410</span></a> +</span><span id="Parser-1411"><a href="#Parser-1411"><span class="linenos">1411</span></a> <span class="k">def</span> <span class="nf">_parse_distkey</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1412"><a href="#Parser-1412"><span class="linenos">1412</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DistKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">))</span> +</span><span id="Parser-1413"><a href="#Parser-1413"><span class="linenos">1413</span></a> +</span><span id="Parser-1414"><a href="#Parser-1414"><span class="linenos">1414</span></a> <span class="k">def</span> <span class="nf">_parse_create_like</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1415"><a href="#Parser-1415"><span class="linenos">1415</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1416"><a href="#Parser-1416"><span class="linenos">1416</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1417"><a href="#Parser-1417"><span class="linenos">1417</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">((</span><span class="s2">"INCLUDING"</span><span class="p">,</span> <span class="s2">"EXCLUDING"</span><span class="p">)):</span> +</span><span id="Parser-1418"><a href="#Parser-1418"><span class="linenos">1418</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-1419"><a href="#Parser-1419"><span class="linenos">1419</span></a> <span class="n">id_var</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> </span><span id="Parser-1420"><a href="#Parser-1420"><span class="linenos">1420</span></a> -</span><span id="Parser-1421"><a href="#Parser-1421"><span class="linenos">1421</span></a> <span class="k">def</span> <span class="nf">_parse_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1422"><a href="#Parser-1422"><span class="linenos">1422</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1423"><a href="#Parser-1423"><span class="linenos">1423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> -</span><span id="Parser-1424"><a href="#Parser-1424"><span class="linenos">1424</span></a> <span class="p">)</span> -</span><span id="Parser-1425"><a href="#Parser-1425"><span class="linenos">1425</span></a> -</span><span id="Parser-1426"><a href="#Parser-1426"><span class="linenos">1426</span></a> <span class="k">def</span> <span class="nf">_parse_character_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1427"><a href="#Parser-1427"><span class="linenos">1427</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1428"><a href="#Parser-1428"><span class="linenos">1428</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1429"><a href="#Parser-1429"><span class="linenos">1429</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> -</span><span id="Parser-1430"><a href="#Parser-1430"><span class="linenos">1430</span></a> <span class="p">)</span> -</span><span id="Parser-1431"><a href="#Parser-1431"><span class="linenos">1431</span></a> -</span><span id="Parser-1432"><a href="#Parser-1432"><span class="linenos">1432</span></a> <span class="k">def</span> <span class="nf">_parse_returns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1433"><a href="#Parser-1433"><span class="linenos">1433</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-1434"><a href="#Parser-1434"><span class="linenos">1434</span></a> <span class="n">is_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-1435"><a href="#Parser-1435"><span class="linenos">1435</span></a> -</span><span id="Parser-1436"><a href="#Parser-1436"><span class="linenos">1436</span></a> <span class="k">if</span> <span class="n">is_table</span><span class="p">:</span> -</span><span id="Parser-1437"><a href="#Parser-1437"><span class="linenos">1437</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="Parser-1438"><a href="#Parser-1438"><span class="linenos">1438</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1439"><a href="#Parser-1439"><span class="linenos">1439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> -</span><span id="Parser-1440"><a href="#Parser-1440"><span class="linenos">1440</span></a> <span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">,</span> -</span><span id="Parser-1441"><a href="#Parser-1441"><span class="linenos">1441</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">),</span> -</span><span id="Parser-1442"><a href="#Parser-1442"><span class="linenos">1442</span></a> <span class="p">)</span> -</span><span id="Parser-1443"><a href="#Parser-1443"><span class="linenos">1443</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="Parser-1444"><a href="#Parser-1444"><span class="linenos">1444</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> -</span><span id="Parser-1445"><a href="#Parser-1445"><span class="linenos">1445</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1446"><a href="#Parser-1446"><span class="linenos">1446</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">))</span> -</span><span id="Parser-1447"><a href="#Parser-1447"><span class="linenos">1447</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1448"><a href="#Parser-1448"><span class="linenos">1448</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-1449"><a href="#Parser-1449"><span class="linenos">1449</span></a> -</span><span id="Parser-1450"><a href="#Parser-1450"><span class="linenos">1450</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">)</span> -</span><span id="Parser-1451"><a href="#Parser-1451"><span class="linenos">1451</span></a> -</span><span id="Parser-1452"><a href="#Parser-1452"><span class="linenos">1452</span></a> <span class="k">def</span> <span class="nf">_parse_describe</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1453"><a href="#Parser-1453"><span class="linenos">1453</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-1454"><a href="#Parser-1454"><span class="linenos">1454</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="Parser-1455"><a href="#Parser-1455"><span class="linenos">1455</span></a> -</span><span id="Parser-1456"><a href="#Parser-1456"><span class="linenos">1456</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="Parser-1457"><a href="#Parser-1457"><span class="linenos">1457</span></a> -</span><span id="Parser-1458"><a href="#Parser-1458"><span class="linenos">1458</span></a> <span class="k">def</span> <span class="nf">_parse_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1459"><a href="#Parser-1459"><span class="linenos">1459</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> -</span><span id="Parser-1460"><a href="#Parser-1460"><span class="linenos">1460</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">)</span> +</span><span id="Parser-1421"><a href="#Parser-1421"><span class="linenos">1421</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">id_var</span><span class="p">:</span> +</span><span id="Parser-1422"><a href="#Parser-1422"><span class="linenos">1422</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1423"><a href="#Parser-1423"><span class="linenos">1423</span></a> +</span><span id="Parser-1424"><a href="#Parser-1424"><span class="linenos">1424</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Parser-1425"><a href="#Parser-1425"><span class="linenos">1425</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1426"><a href="#Parser-1426"><span class="linenos">1426</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Property</span><span class="p">,</span> +</span><span id="Parser-1427"><a href="#Parser-1427"><span class="linenos">1427</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-1428"><a href="#Parser-1428"><span class="linenos">1428</span></a> <span class="n">value</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">id_var</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="Parser-1429"><a href="#Parser-1429"><span class="linenos">1429</span></a> <span class="p">)</span> +</span><span id="Parser-1430"><a href="#Parser-1430"><span class="linenos">1430</span></a> <span class="p">)</span> +</span><span id="Parser-1431"><a href="#Parser-1431"><span class="linenos">1431</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="Parser-1432"><a href="#Parser-1432"><span class="linenos">1432</span></a> +</span><span id="Parser-1433"><a href="#Parser-1433"><span class="linenos">1433</span></a> <span class="k">def</span> <span class="nf">_parse_sortkey</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">compound</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1434"><a href="#Parser-1434"><span class="linenos">1434</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1435"><a href="#Parser-1435"><span class="linenos">1435</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortKeyProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">),</span> <span class="n">compound</span><span class="o">=</span><span class="n">compound</span> +</span><span id="Parser-1436"><a href="#Parser-1436"><span class="linenos">1436</span></a> <span class="p">)</span> +</span><span id="Parser-1437"><a href="#Parser-1437"><span class="linenos">1437</span></a> +</span><span id="Parser-1438"><a href="#Parser-1438"><span class="linenos">1438</span></a> <span class="k">def</span> <span class="nf">_parse_character_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">default</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1439"><a href="#Parser-1439"><span class="linenos">1439</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1440"><a href="#Parser-1440"><span class="linenos">1440</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1441"><a href="#Parser-1441"><span class="linenos">1441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CharacterSetProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span> +</span><span id="Parser-1442"><a href="#Parser-1442"><span class="linenos">1442</span></a> <span class="p">)</span> +</span><span id="Parser-1443"><a href="#Parser-1443"><span class="linenos">1443</span></a> +</span><span id="Parser-1444"><a href="#Parser-1444"><span class="linenos">1444</span></a> <span class="k">def</span> <span class="nf">_parse_returns</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1445"><a href="#Parser-1445"><span class="linenos">1445</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-1446"><a href="#Parser-1446"><span class="linenos">1446</span></a> <span class="n">is_table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-1447"><a href="#Parser-1447"><span class="linenos">1447</span></a> +</span><span id="Parser-1448"><a href="#Parser-1448"><span class="linenos">1448</span></a> <span class="k">if</span> <span class="n">is_table</span><span class="p">:</span> +</span><span id="Parser-1449"><a href="#Parser-1449"><span class="linenos">1449</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="Parser-1450"><a href="#Parser-1450"><span class="linenos">1450</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1451"><a href="#Parser-1451"><span class="linenos">1451</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Schema</span><span class="p">,</span> +</span><span id="Parser-1452"><a href="#Parser-1452"><span class="linenos">1452</span></a> <span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">,</span> +</span><span id="Parser-1453"><a href="#Parser-1453"><span class="linenos">1453</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">),</span> +</span><span id="Parser-1454"><a href="#Parser-1454"><span class="linenos">1454</span></a> <span class="p">)</span> +</span><span id="Parser-1455"><a href="#Parser-1455"><span class="linenos">1455</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="Parser-1456"><a href="#Parser-1456"><span class="linenos">1456</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> +</span><span id="Parser-1457"><a href="#Parser-1457"><span class="linenos">1457</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1458"><a href="#Parser-1458"><span class="linenos">1458</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"TABLE"</span><span class="p">))</span> +</span><span id="Parser-1459"><a href="#Parser-1459"><span class="linenos">1459</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1460"><a href="#Parser-1460"><span class="linenos">1460</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> </span><span id="Parser-1461"><a href="#Parser-1461"><span class="linenos">1461</span></a> -</span><span id="Parser-1462"><a href="#Parser-1462"><span class="linenos">1462</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-1462"><a href="#Parser-1462"><span class="linenos">1462</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ReturnsProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">value</span><span class="p">,</span> <span class="n">is_table</span><span class="o">=</span><span class="n">is_table</span><span class="p">)</span> </span><span id="Parser-1463"><a href="#Parser-1463"><span class="linenos">1463</span></a> -</span><span id="Parser-1464"><a href="#Parser-1464"><span class="linenos">1464</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1465"><a href="#Parser-1465"><span class="linenos">1465</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DIRECTORY"</span><span class="p">):</span> -</span><span id="Parser-1466"><a href="#Parser-1466"><span class="linenos">1466</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1467"><a href="#Parser-1467"><span class="linenos">1467</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Directory</span><span class="p">,</span> -</span><span id="Parser-1468"><a href="#Parser-1468"><span class="linenos">1468</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> -</span><span id="Parser-1469"><a href="#Parser-1469"><span class="linenos">1469</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> -</span><span id="Parser-1470"><a href="#Parser-1470"><span class="linenos">1470</span></a> <span class="n">row_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">(</span><span class="n">match_row</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-1471"><a href="#Parser-1471"><span class="linenos">1471</span></a> <span class="p">)</span> -</span><span id="Parser-1472"><a href="#Parser-1472"><span class="linenos">1472</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1473"><a href="#Parser-1473"><span class="linenos">1473</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">):</span> -</span><span id="Parser-1474"><a href="#Parser-1474"><span class="linenos">1474</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">INSERT_ALTERNATIVES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-1475"><a href="#Parser-1475"><span class="linenos">1475</span></a> -</span><span id="Parser-1476"><a href="#Parser-1476"><span class="linenos">1476</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="Parser-1477"><a href="#Parser-1477"><span class="linenos">1477</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-1478"><a href="#Parser-1478"><span class="linenos">1478</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1464"><a href="#Parser-1464"><span class="linenos">1464</span></a> <span class="k">def</span> <span class="nf">_parse_temporary</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">global_</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1465"><a href="#Parser-1465"><span class="linenos">1465</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> <span class="c1"># in case calling from "GLOBAL"</span> +</span><span id="Parser-1466"><a href="#Parser-1466"><span class="linenos">1466</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">,</span> <span class="n">global_</span><span class="o">=</span><span class="n">global_</span><span class="p">)</span> +</span><span id="Parser-1467"><a href="#Parser-1467"><span class="linenos">1467</span></a> +</span><span id="Parser-1468"><a href="#Parser-1468"><span class="linenos">1468</span></a> <span class="k">def</span> <span class="nf">_parse_describe</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1469"><a href="#Parser-1469"><span class="linenos">1469</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CREATABLES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-1470"><a href="#Parser-1470"><span class="linenos">1470</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="Parser-1471"><a href="#Parser-1471"><span class="linenos">1471</span></a> +</span><span id="Parser-1472"><a href="#Parser-1472"><span class="linenos">1472</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Describe</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="Parser-1473"><a href="#Parser-1473"><span class="linenos">1473</span></a> +</span><span id="Parser-1474"><a href="#Parser-1474"><span class="linenos">1474</span></a> <span class="k">def</span> <span class="nf">_parse_insert</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1475"><a href="#Parser-1475"><span class="linenos">1475</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> +</span><span id="Parser-1476"><a href="#Parser-1476"><span class="linenos">1476</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">)</span> +</span><span id="Parser-1477"><a href="#Parser-1477"><span class="linenos">1477</span></a> +</span><span id="Parser-1478"><a href="#Parser-1478"><span class="linenos">1478</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> </span><span id="Parser-1479"><a href="#Parser-1479"><span class="linenos">1479</span></a> -</span><span id="Parser-1480"><a href="#Parser-1480"><span class="linenos">1480</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1481"><a href="#Parser-1481"><span class="linenos">1481</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> -</span><span id="Parser-1482"><a href="#Parser-1482"><span class="linenos">1482</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-1483"><a href="#Parser-1483"><span class="linenos">1483</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> -</span><span id="Parser-1484"><a href="#Parser-1484"><span class="linenos">1484</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> -</span><span id="Parser-1485"><a href="#Parser-1485"><span class="linenos">1485</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">(),</span> -</span><span id="Parser-1486"><a href="#Parser-1486"><span class="linenos">1486</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> -</span><span id="Parser-1487"><a href="#Parser-1487"><span class="linenos">1487</span></a> <span class="n">alternative</span><span class="o">=</span><span class="n">alternative</span><span class="p">,</span> -</span><span id="Parser-1488"><a href="#Parser-1488"><span class="linenos">1488</span></a> <span class="p">)</span> -</span><span id="Parser-1489"><a href="#Parser-1489"><span class="linenos">1489</span></a> -</span><span id="Parser-1490"><a href="#Parser-1490"><span class="linenos">1490</span></a> <span class="k">def</span> <span class="nf">_parse_row</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1491"><a href="#Parser-1491"><span class="linenos">1491</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="Parser-1492"><a href="#Parser-1492"><span class="linenos">1492</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1493"><a href="#Parser-1493"><span class="linenos">1493</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">()</span> -</span><span id="Parser-1494"><a href="#Parser-1494"><span class="linenos">1494</span></a> -</span><span id="Parser-1495"><a href="#Parser-1495"><span class="linenos">1495</span></a> <span class="k">def</span> <span class="nf">_parse_row_format</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match_row</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1496"><a href="#Parser-1496"><span class="linenos">1496</span></a> <span class="k">if</span> <span class="n">match_row</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> -</span><span id="Parser-1497"><a href="#Parser-1497"><span class="linenos">1497</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1498"><a href="#Parser-1498"><span class="linenos">1498</span></a> -</span><span id="Parser-1499"><a href="#Parser-1499"><span class="linenos">1499</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> -</span><span id="Parser-1500"><a href="#Parser-1500"><span class="linenos">1500</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="Parser-1501"><a href="#Parser-1501"><span class="linenos">1501</span></a> -</span><span id="Parser-1502"><a href="#Parser-1502"><span class="linenos">1502</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELIMITED"</span><span class="p">)</span> -</span><span id="Parser-1503"><a href="#Parser-1503"><span class="linenos">1503</span></a> -</span><span id="Parser-1504"><a href="#Parser-1504"><span class="linenos">1504</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-1480"><a href="#Parser-1480"><span class="linenos">1480</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1481"><a href="#Parser-1481"><span class="linenos">1481</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DIRECTORY"</span><span class="p">):</span> +</span><span id="Parser-1482"><a href="#Parser-1482"><span class="linenos">1482</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1483"><a href="#Parser-1483"><span class="linenos">1483</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Directory</span><span class="p">,</span> +</span><span id="Parser-1484"><a href="#Parser-1484"><span class="linenos">1484</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">(),</span> +</span><span id="Parser-1485"><a href="#Parser-1485"><span class="linenos">1485</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> +</span><span id="Parser-1486"><a href="#Parser-1486"><span class="linenos">1486</span></a> <span class="n">row_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">(</span><span class="n">match_row</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-1487"><a href="#Parser-1487"><span class="linenos">1487</span></a> <span class="p">)</span> +</span><span id="Parser-1488"><a href="#Parser-1488"><span class="linenos">1488</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1489"><a href="#Parser-1489"><span class="linenos">1489</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">):</span> +</span><span id="Parser-1490"><a href="#Parser-1490"><span class="linenos">1490</span></a> <span class="n">alternative</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">INSERT_ALTERNATIVES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-1491"><a href="#Parser-1491"><span class="linenos">1491</span></a> +</span><span id="Parser-1492"><a href="#Parser-1492"><span class="linenos">1492</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="Parser-1493"><a href="#Parser-1493"><span class="linenos">1493</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-1494"><a href="#Parser-1494"><span class="linenos">1494</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1495"><a href="#Parser-1495"><span class="linenos">1495</span></a> +</span><span id="Parser-1496"><a href="#Parser-1496"><span class="linenos">1496</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1497"><a href="#Parser-1497"><span class="linenos">1497</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> +</span><span id="Parser-1498"><a href="#Parser-1498"><span class="linenos">1498</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-1499"><a href="#Parser-1499"><span class="linenos">1499</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> +</span><span id="Parser-1500"><a href="#Parser-1500"><span class="linenos">1500</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> +</span><span id="Parser-1501"><a href="#Parser-1501"><span class="linenos">1501</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ddl_select</span><span class="p">(),</span> +</span><span id="Parser-1502"><a href="#Parser-1502"><span class="linenos">1502</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> +</span><span id="Parser-1503"><a href="#Parser-1503"><span class="linenos">1503</span></a> <span class="n">alternative</span><span class="o">=</span><span class="n">alternative</span><span class="p">,</span> +</span><span id="Parser-1504"><a href="#Parser-1504"><span class="linenos">1504</span></a> <span class="p">)</span> </span><span id="Parser-1505"><a href="#Parser-1505"><span class="linenos">1505</span></a> -</span><span id="Parser-1506"><a href="#Parser-1506"><span class="linenos">1506</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-1507"><a href="#Parser-1507"><span class="linenos">1507</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fields"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1508"><a href="#Parser-1508"><span class="linenos">1508</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ESCAPED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-1509"><a href="#Parser-1509"><span class="linenos">1509</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"escaped"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1510"><a href="#Parser-1510"><span class="linenos">1510</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLLECTION"</span><span class="p">,</span> <span class="s2">"ITEMS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-1511"><a href="#Parser-1511"><span class="linenos">1511</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"collection_items"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1512"><a href="#Parser-1512"><span class="linenos">1512</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="s2">"KEYS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-1513"><a href="#Parser-1513"><span class="linenos">1513</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"map_keys"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1514"><a href="#Parser-1514"><span class="linenos">1514</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LINES"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-1515"><a href="#Parser-1515"><span class="linenos">1515</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"lines"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1516"><a href="#Parser-1516"><span class="linenos">1516</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"DEFINED"</span><span class="p">,</span> <span class="s2">"AS"</span><span class="p">):</span> -</span><span id="Parser-1517"><a href="#Parser-1517"><span class="linenos">1517</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"null"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1518"><a href="#Parser-1518"><span class="linenos">1518</span></a> -</span><span id="Parser-1519"><a href="#Parser-1519"><span class="linenos">1519</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-1520"><a href="#Parser-1520"><span class="linenos">1520</span></a> -</span><span id="Parser-1521"><a href="#Parser-1521"><span class="linenos">1521</span></a> <span class="k">def</span> <span class="nf">_parse_load_data</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1522"><a href="#Parser-1522"><span class="linenos">1522</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">)</span> -</span><span id="Parser-1523"><a href="#Parser-1523"><span class="linenos">1523</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPATH"</span><span class="p">)</span> -</span><span id="Parser-1524"><a href="#Parser-1524"><span class="linenos">1524</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1525"><a href="#Parser-1525"><span class="linenos">1525</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> -</span><span id="Parser-1526"><a href="#Parser-1526"><span class="linenos">1526</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-1527"><a href="#Parser-1527"><span class="linenos">1527</span></a> -</span><span id="Parser-1528"><a href="#Parser-1528"><span class="linenos">1528</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1529"><a href="#Parser-1529"><span class="linenos">1529</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span><span class="p">,</span> -</span><span id="Parser-1530"><a href="#Parser-1530"><span class="linenos">1530</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-1531"><a href="#Parser-1531"><span class="linenos">1531</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> -</span><span id="Parser-1532"><a href="#Parser-1532"><span class="linenos">1532</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> -</span><span id="Parser-1533"><a href="#Parser-1533"><span class="linenos">1533</span></a> <span class="n">inpath</span><span class="o">=</span><span class="n">inpath</span><span class="p">,</span> -</span><span id="Parser-1534"><a href="#Parser-1534"><span class="linenos">1534</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> -</span><span id="Parser-1535"><a href="#Parser-1535"><span class="linenos">1535</span></a> <span class="n">input_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="Parser-1536"><a href="#Parser-1536"><span class="linenos">1536</span></a> <span class="n">serde</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> -</span><span id="Parser-1537"><a href="#Parser-1537"><span class="linenos">1537</span></a> <span class="p">)</span> -</span><span id="Parser-1538"><a href="#Parser-1538"><span class="linenos">1538</span></a> -</span><span id="Parser-1539"><a href="#Parser-1539"><span class="linenos">1539</span></a> <span class="k">def</span> <span class="nf">_parse_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1540"><a href="#Parser-1540"><span class="linenos">1540</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> -</span><span id="Parser-1541"><a href="#Parser-1541"><span class="linenos">1541</span></a> -</span><span id="Parser-1542"><a href="#Parser-1542"><span class="linenos">1542</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1543"><a href="#Parser-1543"><span class="linenos">1543</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> -</span><span id="Parser-1544"><a href="#Parser-1544"><span class="linenos">1544</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-1545"><a href="#Parser-1545"><span class="linenos">1545</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()),</span> -</span><span id="Parser-1546"><a href="#Parser-1546"><span class="linenos">1546</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="Parser-1547"><a href="#Parser-1547"><span class="linenos">1547</span></a> <span class="p">)</span> -</span><span id="Parser-1548"><a href="#Parser-1548"><span class="linenos">1548</span></a> -</span><span id="Parser-1549"><a href="#Parser-1549"><span class="linenos">1549</span></a> <span class="k">def</span> <span class="nf">_parse_update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1550"><a href="#Parser-1550"><span class="linenos">1550</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1551"><a href="#Parser-1551"><span class="linenos">1551</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> -</span><span id="Parser-1552"><a href="#Parser-1552"><span class="linenos">1552</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-1553"><a href="#Parser-1553"><span class="linenos">1553</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UPDATE_ALIAS_TOKENS</span><span class="p">),</span> -</span><span id="Parser-1554"><a href="#Parser-1554"><span class="linenos">1554</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> -</span><span id="Parser-1555"><a href="#Parser-1555"><span class="linenos">1555</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(),</span> -</span><span id="Parser-1556"><a href="#Parser-1556"><span class="linenos">1556</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> -</span><span id="Parser-1557"><a href="#Parser-1557"><span class="linenos">1557</span></a> <span class="p">},</span> -</span><span id="Parser-1558"><a href="#Parser-1558"><span class="linenos">1558</span></a> <span class="p">)</span> -</span><span id="Parser-1559"><a href="#Parser-1559"><span class="linenos">1559</span></a> -</span><span id="Parser-1560"><a href="#Parser-1560"><span class="linenos">1560</span></a> <span class="k">def</span> <span class="nf">_parse_uncache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1561"><a href="#Parser-1561"><span class="linenos">1561</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="Parser-1562"><a href="#Parser-1562"><span class="linenos">1562</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting TABLE after UNCACHE"</span><span class="p">)</span> -</span><span id="Parser-1563"><a href="#Parser-1563"><span class="linenos">1563</span></a> -</span><span id="Parser-1564"><a href="#Parser-1564"><span class="linenos">1564</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1565"><a href="#Parser-1565"><span class="linenos">1565</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">,</span> -</span><span id="Parser-1566"><a href="#Parser-1566"><span class="linenos">1566</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> -</span><span id="Parser-1567"><a href="#Parser-1567"><span class="linenos">1567</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-1568"><a href="#Parser-1568"><span class="linenos">1568</span></a> <span class="p">)</span> -</span><span id="Parser-1569"><a href="#Parser-1569"><span class="linenos">1569</span></a> -</span><span id="Parser-1570"><a href="#Parser-1570"><span class="linenos">1570</span></a> <span class="k">def</span> <span class="nf">_parse_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1571"><a href="#Parser-1571"><span class="linenos">1571</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">)</span> -</span><span id="Parser-1572"><a href="#Parser-1572"><span class="linenos">1572</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-1573"><a href="#Parser-1573"><span class="linenos">1573</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1574"><a href="#Parser-1574"><span class="linenos">1574</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1506"><a href="#Parser-1506"><span class="linenos">1506</span></a> <span class="k">def</span> <span class="nf">_parse_row</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1507"><a href="#Parser-1507"><span class="linenos">1507</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="Parser-1508"><a href="#Parser-1508"><span class="linenos">1508</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1509"><a href="#Parser-1509"><span class="linenos">1509</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_row_format</span><span class="p">()</span> +</span><span id="Parser-1510"><a href="#Parser-1510"><span class="linenos">1510</span></a> +</span><span id="Parser-1511"><a href="#Parser-1511"><span class="linenos">1511</span></a> <span class="k">def</span> <span class="nf">_parse_row_format</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">match_row</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1512"><a href="#Parser-1512"><span class="linenos">1512</span></a> <span class="k">if</span> <span class="n">match_row</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">):</span> +</span><span id="Parser-1513"><a href="#Parser-1513"><span class="linenos">1513</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1514"><a href="#Parser-1514"><span class="linenos">1514</span></a> +</span><span id="Parser-1515"><a href="#Parser-1515"><span class="linenos">1515</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">):</span> +</span><span id="Parser-1516"><a href="#Parser-1516"><span class="linenos">1516</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatSerdeProperty</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="Parser-1517"><a href="#Parser-1517"><span class="linenos">1517</span></a> +</span><span id="Parser-1518"><a href="#Parser-1518"><span class="linenos">1518</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DELIMITED"</span><span class="p">)</span> +</span><span id="Parser-1519"><a href="#Parser-1519"><span class="linenos">1519</span></a> +</span><span id="Parser-1520"><a href="#Parser-1520"><span class="linenos">1520</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-1521"><a href="#Parser-1521"><span class="linenos">1521</span></a> +</span><span id="Parser-1522"><a href="#Parser-1522"><span class="linenos">1522</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FIELDS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-1523"><a href="#Parser-1523"><span class="linenos">1523</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"fields"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1524"><a href="#Parser-1524"><span class="linenos">1524</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ESCAPED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-1525"><a href="#Parser-1525"><span class="linenos">1525</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"escaped"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1526"><a href="#Parser-1526"><span class="linenos">1526</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"COLLECTION"</span><span class="p">,</span> <span class="s2">"ITEMS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-1527"><a href="#Parser-1527"><span class="linenos">1527</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"collection_items"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1528"><a href="#Parser-1528"><span class="linenos">1528</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAP"</span><span class="p">,</span> <span class="s2">"KEYS"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-1529"><a href="#Parser-1529"><span class="linenos">1529</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"map_keys"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1530"><a href="#Parser-1530"><span class="linenos">1530</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LINES"</span><span class="p">,</span> <span class="s2">"TERMINATED"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-1531"><a href="#Parser-1531"><span class="linenos">1531</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"lines"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1532"><a href="#Parser-1532"><span class="linenos">1532</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">,</span> <span class="s2">"DEFINED"</span><span class="p">,</span> <span class="s2">"AS"</span><span class="p">):</span> +</span><span id="Parser-1533"><a href="#Parser-1533"><span class="linenos">1533</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"null"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1534"><a href="#Parser-1534"><span class="linenos">1534</span></a> +</span><span id="Parser-1535"><a href="#Parser-1535"><span class="linenos">1535</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RowFormatDelimitedProperty</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-1536"><a href="#Parser-1536"><span class="linenos">1536</span></a> +</span><span id="Parser-1537"><a href="#Parser-1537"><span class="linenos">1537</span></a> <span class="k">def</span> <span class="nf">_parse_load_data</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1538"><a href="#Parser-1538"><span class="linenos">1538</span></a> <span class="n">local</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">)</span> +</span><span id="Parser-1539"><a href="#Parser-1539"><span class="linenos">1539</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPATH"</span><span class="p">)</span> +</span><span id="Parser-1540"><a href="#Parser-1540"><span class="linenos">1540</span></a> <span class="n">inpath</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1541"><a href="#Parser-1541"><span class="linenos">1541</span></a> <span class="n">overwrite</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">)</span> +</span><span id="Parser-1542"><a href="#Parser-1542"><span class="linenos">1542</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-1543"><a href="#Parser-1543"><span class="linenos">1543</span></a> +</span><span id="Parser-1544"><a href="#Parser-1544"><span class="linenos">1544</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1545"><a href="#Parser-1545"><span class="linenos">1545</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LoadData</span><span class="p">,</span> +</span><span id="Parser-1546"><a href="#Parser-1546"><span class="linenos">1546</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-1547"><a href="#Parser-1547"><span class="linenos">1547</span></a> <span class="n">local</span><span class="o">=</span><span class="n">local</span><span class="p">,</span> +</span><span id="Parser-1548"><a href="#Parser-1548"><span class="linenos">1548</span></a> <span class="n">overwrite</span><span class="o">=</span><span class="n">overwrite</span><span class="p">,</span> +</span><span id="Parser-1549"><a href="#Parser-1549"><span class="linenos">1549</span></a> <span class="n">inpath</span><span class="o">=</span><span class="n">inpath</span><span class="p">,</span> +</span><span id="Parser-1550"><a href="#Parser-1550"><span class="linenos">1550</span></a> <span class="n">partition</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">(),</span> +</span><span id="Parser-1551"><a href="#Parser-1551"><span class="linenos">1551</span></a> <span class="n">input_format</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INPUTFORMAT"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="Parser-1552"><a href="#Parser-1552"><span class="linenos">1552</span></a> <span class="n">serde</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SERDE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">(),</span> +</span><span id="Parser-1553"><a href="#Parser-1553"><span class="linenos">1553</span></a> <span class="p">)</span> +</span><span id="Parser-1554"><a href="#Parser-1554"><span class="linenos">1554</span></a> +</span><span id="Parser-1555"><a href="#Parser-1555"><span class="linenos">1555</span></a> <span class="k">def</span> <span class="nf">_parse_delete</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1556"><a href="#Parser-1556"><span class="linenos">1556</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">)</span> +</span><span id="Parser-1557"><a href="#Parser-1557"><span class="linenos">1557</span></a> +</span><span id="Parser-1558"><a href="#Parser-1558"><span class="linenos">1558</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1559"><a href="#Parser-1559"><span class="linenos">1559</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> +</span><span id="Parser-1560"><a href="#Parser-1560"><span class="linenos">1560</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-1561"><a href="#Parser-1561"><span class="linenos">1561</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()),</span> +</span><span id="Parser-1562"><a href="#Parser-1562"><span class="linenos">1562</span></a> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="Parser-1563"><a href="#Parser-1563"><span class="linenos">1563</span></a> <span class="p">)</span> +</span><span id="Parser-1564"><a href="#Parser-1564"><span class="linenos">1564</span></a> +</span><span id="Parser-1565"><a href="#Parser-1565"><span class="linenos">1565</span></a> <span class="k">def</span> <span class="nf">_parse_update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1566"><a href="#Parser-1566"><span class="linenos">1566</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1567"><a href="#Parser-1567"><span class="linenos">1567</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> +</span><span id="Parser-1568"><a href="#Parser-1568"><span class="linenos">1568</span></a> <span class="o">**</span><span class="p">{</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-1569"><a href="#Parser-1569"><span class="linenos">1569</span></a> <span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">UPDATE_ALIAS_TOKENS</span><span class="p">),</span> +</span><span id="Parser-1570"><a href="#Parser-1570"><span class="linenos">1570</span></a> <span class="s2">"expressions"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> +</span><span id="Parser-1571"><a href="#Parser-1571"><span class="linenos">1571</span></a> <span class="s2">"from"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">(),</span> +</span><span id="Parser-1572"><a href="#Parser-1572"><span class="linenos">1572</span></a> <span class="s2">"where"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">(),</span> +</span><span id="Parser-1573"><a href="#Parser-1573"><span class="linenos">1573</span></a> <span class="p">},</span> +</span><span id="Parser-1574"><a href="#Parser-1574"><span class="linenos">1574</span></a> <span class="p">)</span> </span><span id="Parser-1575"><a href="#Parser-1575"><span class="linenos">1575</span></a> -</span><span id="Parser-1576"><a href="#Parser-1576"><span class="linenos">1576</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">):</span> -</span><span id="Parser-1577"><a href="#Parser-1577"><span class="linenos">1577</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-1578"><a href="#Parser-1578"><span class="linenos">1578</span></a> <span class="n">k</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1579"><a href="#Parser-1579"><span class="linenos">1579</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> -</span><span id="Parser-1580"><a href="#Parser-1580"><span class="linenos">1580</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-1581"><a href="#Parser-1581"><span class="linenos">1581</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">]</span> -</span><span id="Parser-1582"><a href="#Parser-1582"><span class="linenos">1582</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-1583"><a href="#Parser-1583"><span class="linenos">1583</span></a> -</span><span id="Parser-1584"><a href="#Parser-1584"><span class="linenos">1584</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-1585"><a href="#Parser-1585"><span class="linenos">1585</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1586"><a href="#Parser-1586"><span class="linenos">1586</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> -</span><span id="Parser-1587"><a href="#Parser-1587"><span class="linenos">1587</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> -</span><span id="Parser-1588"><a href="#Parser-1588"><span class="linenos">1588</span></a> <span class="n">lazy</span><span class="o">=</span><span class="n">lazy</span><span class="p">,</span> -</span><span id="Parser-1589"><a href="#Parser-1589"><span class="linenos">1589</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> -</span><span id="Parser-1590"><a href="#Parser-1590"><span class="linenos">1590</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> -</span><span id="Parser-1591"><a href="#Parser-1591"><span class="linenos">1591</span></a> <span class="p">)</span> -</span><span id="Parser-1592"><a href="#Parser-1592"><span class="linenos">1592</span></a> -</span><span id="Parser-1593"><a href="#Parser-1593"><span class="linenos">1593</span></a> <span class="k">def</span> <span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1594"><a href="#Parser-1594"><span class="linenos">1594</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span> -</span><span id="Parser-1595"><a href="#Parser-1595"><span class="linenos">1595</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1596"><a href="#Parser-1596"><span class="linenos">1596</span></a> -</span><span id="Parser-1597"><a href="#Parser-1597"><span class="linenos">1597</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1598"><a href="#Parser-1598"><span class="linenos">1598</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-1599"><a href="#Parser-1599"><span class="linenos">1599</span></a> <span class="p">)</span> -</span><span id="Parser-1600"><a href="#Parser-1600"><span class="linenos">1600</span></a> -</span><span id="Parser-1601"><a href="#Parser-1601"><span class="linenos">1601</span></a> <span class="k">def</span> <span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1602"><a href="#Parser-1602"><span class="linenos">1602</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-1603"><a href="#Parser-1603"><span class="linenos">1603</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-1604"><a href="#Parser-1604"><span class="linenos">1604</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-1605"><a href="#Parser-1605"><span class="linenos">1605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-1606"><a href="#Parser-1606"><span class="linenos">1606</span></a> -</span><span id="Parser-1607"><a href="#Parser-1607"><span class="linenos">1607</span></a> <span class="c1"># In presto we can have VALUES 1, 2 which results in 1 column & 2 rows.</span> -</span><span id="Parser-1608"><a href="#Parser-1608"><span class="linenos">1608</span></a> <span class="c1"># Source: https://prestodb.io/docs/current/sql/values.html</span> -</span><span id="Parser-1609"><a href="#Parser-1609"><span class="linenos">1609</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()])</span> -</span><span id="Parser-1610"><a href="#Parser-1610"><span class="linenos">1610</span></a> -</span><span id="Parser-1611"><a href="#Parser-1611"><span class="linenos">1611</span></a> <span class="k">def</span> <span class="nf">_parse_select</span><span class="p">(</span> -</span><span id="Parser-1612"><a href="#Parser-1612"><span class="linenos">1612</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nested</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1613"><a href="#Parser-1613"><span class="linenos">1613</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1614"><a href="#Parser-1614"><span class="linenos">1614</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">()</span> -</span><span id="Parser-1615"><a href="#Parser-1615"><span class="linenos">1615</span></a> <span class="k">if</span> <span class="n">cte</span><span class="p">:</span> -</span><span id="Parser-1616"><a href="#Parser-1616"><span class="linenos">1616</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> -</span><span id="Parser-1617"><a href="#Parser-1617"><span class="linenos">1617</span></a> -</span><span id="Parser-1618"><a href="#Parser-1618"><span class="linenos">1618</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-1619"><a href="#Parser-1619"><span class="linenos">1619</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse any statement following CTE"</span><span class="p">)</span> -</span><span id="Parser-1620"><a href="#Parser-1620"><span class="linenos">1620</span></a> <span class="k">return</span> <span class="n">cte</span> -</span><span id="Parser-1621"><a href="#Parser-1621"><span class="linenos">1621</span></a> -</span><span id="Parser-1622"><a href="#Parser-1622"><span class="linenos">1622</span></a> <span class="k">if</span> <span class="s2">"with"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> -</span><span id="Parser-1623"><a href="#Parser-1623"><span class="linenos">1623</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">cte</span><span class="p">)</span> -</span><span id="Parser-1624"><a href="#Parser-1624"><span class="linenos">1624</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1625"><a href="#Parser-1625"><span class="linenos">1625</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> does not support CTE"</span><span class="p">)</span> -</span><span id="Parser-1626"><a href="#Parser-1626"><span class="linenos">1626</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">cte</span> -</span><span id="Parser-1627"><a href="#Parser-1627"><span class="linenos">1627</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> -</span><span id="Parser-1628"><a href="#Parser-1628"><span class="linenos">1628</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-1629"><a href="#Parser-1629"><span class="linenos">1629</span></a> -</span><span id="Parser-1630"><a href="#Parser-1630"><span class="linenos">1630</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> -</span><span id="Parser-1631"><a href="#Parser-1631"><span class="linenos">1631</span></a> <span class="n">all_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> -</span><span id="Parser-1632"><a href="#Parser-1632"><span class="linenos">1632</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> +</span><span id="Parser-1576"><a href="#Parser-1576"><span class="linenos">1576</span></a> <span class="k">def</span> <span class="nf">_parse_uncache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1577"><a href="#Parser-1577"><span class="linenos">1577</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="Parser-1578"><a href="#Parser-1578"><span class="linenos">1578</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting TABLE after UNCACHE"</span><span class="p">)</span> +</span><span id="Parser-1579"><a href="#Parser-1579"><span class="linenos">1579</span></a> +</span><span id="Parser-1580"><a href="#Parser-1580"><span class="linenos">1580</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1581"><a href="#Parser-1581"><span class="linenos">1581</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Uncache</span><span class="p">,</span> +</span><span id="Parser-1582"><a href="#Parser-1582"><span class="linenos">1582</span></a> <span class="n">exists</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(),</span> +</span><span id="Parser-1583"><a href="#Parser-1583"><span class="linenos">1583</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-1584"><a href="#Parser-1584"><span class="linenos">1584</span></a> <span class="p">)</span> +</span><span id="Parser-1585"><a href="#Parser-1585"><span class="linenos">1585</span></a> +</span><span id="Parser-1586"><a href="#Parser-1586"><span class="linenos">1586</span></a> <span class="k">def</span> <span class="nf">_parse_cache</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1587"><a href="#Parser-1587"><span class="linenos">1587</span></a> <span class="n">lazy</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">)</span> +</span><span id="Parser-1588"><a href="#Parser-1588"><span class="linenos">1588</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-1589"><a href="#Parser-1589"><span class="linenos">1589</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1590"><a href="#Parser-1590"><span class="linenos">1590</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1591"><a href="#Parser-1591"><span class="linenos">1591</span></a> +</span><span id="Parser-1592"><a href="#Parser-1592"><span class="linenos">1592</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">):</span> +</span><span id="Parser-1593"><a href="#Parser-1593"><span class="linenos">1593</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-1594"><a href="#Parser-1594"><span class="linenos">1594</span></a> <span class="n">k</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1595"><a href="#Parser-1595"><span class="linenos">1595</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">)</span> +</span><span id="Parser-1596"><a href="#Parser-1596"><span class="linenos">1596</span></a> <span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-1597"><a href="#Parser-1597"><span class="linenos">1597</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">]</span> +</span><span id="Parser-1598"><a href="#Parser-1598"><span class="linenos">1598</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-1599"><a href="#Parser-1599"><span class="linenos">1599</span></a> +</span><span id="Parser-1600"><a href="#Parser-1600"><span class="linenos">1600</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1601"><a href="#Parser-1601"><span class="linenos">1601</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1602"><a href="#Parser-1602"><span class="linenos">1602</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Cache</span><span class="p">,</span> +</span><span id="Parser-1603"><a href="#Parser-1603"><span class="linenos">1603</span></a> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> +</span><span id="Parser-1604"><a href="#Parser-1604"><span class="linenos">1604</span></a> <span class="n">lazy</span><span class="o">=</span><span class="n">lazy</span><span class="p">,</span> +</span><span id="Parser-1605"><a href="#Parser-1605"><span class="linenos">1605</span></a> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">,</span> +</span><span id="Parser-1606"><a href="#Parser-1606"><span class="linenos">1606</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> +</span><span id="Parser-1607"><a href="#Parser-1607"><span class="linenos">1607</span></a> <span class="p">)</span> +</span><span id="Parser-1608"><a href="#Parser-1608"><span class="linenos">1608</span></a> +</span><span id="Parser-1609"><a href="#Parser-1609"><span class="linenos">1609</span></a> <span class="k">def</span> <span class="nf">_parse_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1610"><a href="#Parser-1610"><span class="linenos">1610</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">):</span> +</span><span id="Parser-1611"><a href="#Parser-1611"><span class="linenos">1611</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1612"><a href="#Parser-1612"><span class="linenos">1612</span></a> +</span><span id="Parser-1613"><a href="#Parser-1613"><span class="linenos">1613</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1614"><a href="#Parser-1614"><span class="linenos">1614</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Partition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-1615"><a href="#Parser-1615"><span class="linenos">1615</span></a> <span class="p">)</span> +</span><span id="Parser-1616"><a href="#Parser-1616"><span class="linenos">1616</span></a> +</span><span id="Parser-1617"><a href="#Parser-1617"><span class="linenos">1617</span></a> <span class="k">def</span> <span class="nf">_parse_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1618"><a href="#Parser-1618"><span class="linenos">1618</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-1619"><a href="#Parser-1619"><span class="linenos">1619</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-1620"><a href="#Parser-1620"><span class="linenos">1620</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-1621"><a href="#Parser-1621"><span class="linenos">1621</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-1622"><a href="#Parser-1622"><span class="linenos">1622</span></a> +</span><span id="Parser-1623"><a href="#Parser-1623"><span class="linenos">1623</span></a> <span class="c1"># In presto we can have VALUES 1, 2 which results in 1 column & 2 rows.</span> +</span><span id="Parser-1624"><a href="#Parser-1624"><span class="linenos">1624</span></a> <span class="c1"># Source: https://prestodb.io/docs/current/sql/values.html</span> +</span><span id="Parser-1625"><a href="#Parser-1625"><span class="linenos">1625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()])</span> +</span><span id="Parser-1626"><a href="#Parser-1626"><span class="linenos">1626</span></a> +</span><span id="Parser-1627"><a href="#Parser-1627"><span class="linenos">1627</span></a> <span class="k">def</span> <span class="nf">_parse_select</span><span class="p">(</span> +</span><span id="Parser-1628"><a href="#Parser-1628"><span class="linenos">1628</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">nested</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1629"><a href="#Parser-1629"><span class="linenos">1629</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1630"><a href="#Parser-1630"><span class="linenos">1630</span></a> <span class="n">cte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_with</span><span class="p">()</span> +</span><span id="Parser-1631"><a href="#Parser-1631"><span class="linenos">1631</span></a> <span class="k">if</span> <span class="n">cte</span><span class="p">:</span> +</span><span id="Parser-1632"><a href="#Parser-1632"><span class="linenos">1632</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">()</span> </span><span id="Parser-1633"><a href="#Parser-1633"><span class="linenos">1633</span></a> -</span><span id="Parser-1634"><a href="#Parser-1634"><span class="linenos">1634</span></a> <span class="k">if</span> <span class="n">distinct</span><span class="p">:</span> -</span><span id="Parser-1635"><a href="#Parser-1635"><span class="linenos">1635</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1636"><a href="#Parser-1636"><span class="linenos">1636</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> -</span><span id="Parser-1637"><a href="#Parser-1637"><span class="linenos">1637</span></a> <span class="n">on</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-1638"><a href="#Parser-1638"><span class="linenos">1638</span></a> <span class="p">)</span> -</span><span id="Parser-1639"><a href="#Parser-1639"><span class="linenos">1639</span></a> -</span><span id="Parser-1640"><a href="#Parser-1640"><span class="linenos">1640</span></a> <span class="k">if</span> <span class="n">all_</span> <span class="ow">and</span> <span class="n">distinct</span><span class="p">:</span> -</span><span id="Parser-1641"><a href="#Parser-1641"><span class="linenos">1641</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ALL and DISTINCT after SELECT"</span><span class="p">)</span> -</span><span id="Parser-1642"><a href="#Parser-1642"><span class="linenos">1642</span></a> -</span><span id="Parser-1643"><a href="#Parser-1643"><span class="linenos">1643</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1644"><a href="#Parser-1644"><span class="linenos">1644</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="Parser-1634"><a href="#Parser-1634"><span class="linenos">1634</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-1635"><a href="#Parser-1635"><span class="linenos">1635</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Failed to parse any statement following CTE"</span><span class="p">)</span> +</span><span id="Parser-1636"><a href="#Parser-1636"><span class="linenos">1636</span></a> <span class="k">return</span> <span class="n">cte</span> +</span><span id="Parser-1637"><a href="#Parser-1637"><span class="linenos">1637</span></a> +</span><span id="Parser-1638"><a href="#Parser-1638"><span class="linenos">1638</span></a> <span class="k">if</span> <span class="s2">"with"</span> <span class="ow">in</span> <span class="n">this</span><span class="o">.</span><span class="n">arg_types</span><span class="p">:</span> +</span><span id="Parser-1639"><a href="#Parser-1639"><span class="linenos">1639</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">cte</span><span class="p">)</span> +</span><span id="Parser-1640"><a href="#Parser-1640"><span class="linenos">1640</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1641"><a href="#Parser-1641"><span class="linenos">1641</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">this</span><span class="o">.</span><span class="n">key</span><span class="si">}</span><span class="s2"> does not support CTE"</span><span class="p">)</span> +</span><span id="Parser-1642"><a href="#Parser-1642"><span class="linenos">1642</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">cte</span> +</span><span id="Parser-1643"><a href="#Parser-1643"><span class="linenos">1643</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> +</span><span id="Parser-1644"><a href="#Parser-1644"><span class="linenos">1644</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> </span><span id="Parser-1645"><a href="#Parser-1645"><span class="linenos">1645</span></a> -</span><span id="Parser-1646"><a href="#Parser-1646"><span class="linenos">1646</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1647"><a href="#Parser-1647"><span class="linenos">1647</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> -</span><span id="Parser-1648"><a href="#Parser-1648"><span class="linenos">1648</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> -</span><span id="Parser-1649"><a href="#Parser-1649"><span class="linenos">1649</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> -</span><span id="Parser-1650"><a href="#Parser-1650"><span class="linenos">1650</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-1651"><a href="#Parser-1651"><span class="linenos">1651</span></a> <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> -</span><span id="Parser-1652"><a href="#Parser-1652"><span class="linenos">1652</span></a> <span class="p">)</span> -</span><span id="Parser-1653"><a href="#Parser-1653"><span class="linenos">1653</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="Parser-1654"><a href="#Parser-1654"><span class="linenos">1654</span></a> -</span><span id="Parser-1655"><a href="#Parser-1655"><span class="linenos">1655</span></a> <span class="n">into</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_into</span><span class="p">()</span> -</span><span id="Parser-1656"><a href="#Parser-1656"><span class="linenos">1656</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> -</span><span id="Parser-1657"><a href="#Parser-1657"><span class="linenos">1657</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"into"</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> +</span><span id="Parser-1646"><a href="#Parser-1646"><span class="linenos">1646</span></a> <span class="n">hint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_hint</span><span class="p">()</span> +</span><span id="Parser-1647"><a href="#Parser-1647"><span class="linenos">1647</span></a> <span class="n">all_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">)</span> +</span><span id="Parser-1648"><a href="#Parser-1648"><span class="linenos">1648</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> +</span><span id="Parser-1649"><a href="#Parser-1649"><span class="linenos">1649</span></a> +</span><span id="Parser-1650"><a href="#Parser-1650"><span class="linenos">1650</span></a> <span class="k">if</span> <span class="n">distinct</span><span class="p">:</span> +</span><span id="Parser-1651"><a href="#Parser-1651"><span class="linenos">1651</span></a> <span class="n">distinct</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1652"><a href="#Parser-1652"><span class="linenos">1652</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> +</span><span id="Parser-1653"><a href="#Parser-1653"><span class="linenos">1653</span></a> <span class="n">on</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-1654"><a href="#Parser-1654"><span class="linenos">1654</span></a> <span class="p">)</span> +</span><span id="Parser-1655"><a href="#Parser-1655"><span class="linenos">1655</span></a> +</span><span id="Parser-1656"><a href="#Parser-1656"><span class="linenos">1656</span></a> <span class="k">if</span> <span class="n">all_</span> <span class="ow">and</span> <span class="n">distinct</span><span class="p">:</span> +</span><span id="Parser-1657"><a href="#Parser-1657"><span class="linenos">1657</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Cannot specify both ALL and DISTINCT after SELECT"</span><span class="p">)</span> </span><span id="Parser-1658"><a href="#Parser-1658"><span class="linenos">1658</span></a> -</span><span id="Parser-1659"><a href="#Parser-1659"><span class="linenos">1659</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> -</span><span id="Parser-1660"><a href="#Parser-1660"><span class="linenos">1660</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> -</span><span id="Parser-1661"><a href="#Parser-1661"><span class="linenos">1661</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"from"</span><span class="p">,</span> <span class="n">from_</span><span class="p">)</span> -</span><span id="Parser-1662"><a href="#Parser-1662"><span class="linenos">1662</span></a> -</span><span id="Parser-1663"><a href="#Parser-1663"><span class="linenos">1663</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-1664"><a href="#Parser-1664"><span class="linenos">1664</span></a> <span class="k">elif</span> <span class="p">(</span><span class="n">table</span> <span class="ow">or</span> <span class="n">nested</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-1665"><a href="#Parser-1665"><span class="linenos">1665</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1666"><a href="#Parser-1666"><span class="linenos">1666</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-1667"><a href="#Parser-1667"><span class="linenos">1667</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-1668"><a href="#Parser-1668"><span class="linenos">1668</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-1669"><a href="#Parser-1669"><span class="linenos">1669</span></a> -</span><span id="Parser-1670"><a href="#Parser-1670"><span class="linenos">1670</span></a> <span class="c1"># early return so that subquery unions aren't parsed again</span> -</span><span id="Parser-1671"><a href="#Parser-1671"><span class="linenos">1671</span></a> <span class="c1"># SELECT * FROM (SELECT 1) UNION ALL SELECT 1</span> -</span><span id="Parser-1672"><a href="#Parser-1672"><span class="linenos">1672</span></a> <span class="c1"># Union ALL should be a property of the top select node, not the subquery</span> -</span><span id="Parser-1673"><a href="#Parser-1673"><span class="linenos">1673</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="n">parse_subquery_alias</span><span class="p">)</span> -</span><span id="Parser-1674"><a href="#Parser-1674"><span class="linenos">1674</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">):</span> -</span><span id="Parser-1675"><a href="#Parser-1675"><span class="linenos">1675</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1676"><a href="#Parser-1676"><span class="linenos">1676</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> -</span><span id="Parser-1677"><a href="#Parser-1677"><span class="linenos">1677</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">),</span> -</span><span id="Parser-1678"><a href="#Parser-1678"><span class="linenos">1678</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> -</span><span id="Parser-1679"><a href="#Parser-1679"><span class="linenos">1679</span></a> <span class="p">)</span> -</span><span id="Parser-1680"><a href="#Parser-1680"><span class="linenos">1680</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1681"><a href="#Parser-1681"><span class="linenos">1681</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1682"><a href="#Parser-1682"><span class="linenos">1682</span></a> -</span><span id="Parser-1683"><a href="#Parser-1683"><span class="linenos">1683</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-1684"><a href="#Parser-1684"><span class="linenos">1684</span></a> -</span><span id="Parser-1685"><a href="#Parser-1685"><span class="linenos">1685</span></a> <span class="k">def</span> <span class="nf">_parse_with</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_with_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1686"><a href="#Parser-1686"><span class="linenos">1686</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_with_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="Parser-1687"><a href="#Parser-1687"><span class="linenos">1687</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1688"><a href="#Parser-1688"><span class="linenos">1688</span></a> -</span><span id="Parser-1689"><a href="#Parser-1689"><span class="linenos">1689</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">)</span> -</span><span id="Parser-1690"><a href="#Parser-1690"><span class="linenos">1690</span></a> -</span><span id="Parser-1691"><a href="#Parser-1691"><span class="linenos">1691</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-1692"><a href="#Parser-1692"><span class="linenos">1692</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-1693"><a href="#Parser-1693"><span class="linenos">1693</span></a> <span class="n">expressions</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">_parse_cte</span><span class="p">())</span> -</span><span id="Parser-1694"><a href="#Parser-1694"><span class="linenos">1694</span></a> -</span><span id="Parser-1695"><a href="#Parser-1695"><span class="linenos">1695</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="Parser-1696"><a href="#Parser-1696"><span class="linenos">1696</span></a> <span class="k">break</span> -</span><span id="Parser-1697"><a href="#Parser-1697"><span class="linenos">1697</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1698"><a href="#Parser-1698"><span class="linenos">1698</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="Parser-1699"><a href="#Parser-1699"><span class="linenos">1699</span></a> -</span><span id="Parser-1700"><a href="#Parser-1700"><span class="linenos">1700</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="n">recursive</span><span class="p">)</span> -</span><span id="Parser-1701"><a href="#Parser-1701"><span class="linenos">1701</span></a> -</span><span id="Parser-1702"><a href="#Parser-1702"><span class="linenos">1702</span></a> <span class="k">def</span> <span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1703"><a href="#Parser-1703"><span class="linenos">1703</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="Parser-1704"><a href="#Parser-1704"><span class="linenos">1704</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> -</span><span id="Parser-1705"><a href="#Parser-1705"><span class="linenos">1705</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected CTE to have alias"</span><span class="p">)</span> +</span><span id="Parser-1659"><a href="#Parser-1659"><span class="linenos">1659</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="n">top</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1660"><a href="#Parser-1660"><span class="linenos">1660</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="Parser-1661"><a href="#Parser-1661"><span class="linenos">1661</span></a> +</span><span id="Parser-1662"><a href="#Parser-1662"><span class="linenos">1662</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1663"><a href="#Parser-1663"><span class="linenos">1663</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">,</span> +</span><span id="Parser-1664"><a href="#Parser-1664"><span class="linenos">1664</span></a> <span class="n">hint</span><span class="o">=</span><span class="n">hint</span><span class="p">,</span> +</span><span id="Parser-1665"><a href="#Parser-1665"><span class="linenos">1665</span></a> <span class="n">distinct</span><span class="o">=</span><span class="n">distinct</span><span class="p">,</span> +</span><span id="Parser-1666"><a href="#Parser-1666"><span class="linenos">1666</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-1667"><a href="#Parser-1667"><span class="linenos">1667</span></a> <span class="n">limit</span><span class="o">=</span><span class="n">limit</span><span class="p">,</span> +</span><span id="Parser-1668"><a href="#Parser-1668"><span class="linenos">1668</span></a> <span class="p">)</span> +</span><span id="Parser-1669"><a href="#Parser-1669"><span class="linenos">1669</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="Parser-1670"><a href="#Parser-1670"><span class="linenos">1670</span></a> +</span><span id="Parser-1671"><a href="#Parser-1671"><span class="linenos">1671</span></a> <span class="n">into</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_into</span><span class="p">()</span> +</span><span id="Parser-1672"><a href="#Parser-1672"><span class="linenos">1672</span></a> <span class="k">if</span> <span class="n">into</span><span class="p">:</span> +</span><span id="Parser-1673"><a href="#Parser-1673"><span class="linenos">1673</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"into"</span><span class="p">,</span> <span class="n">into</span><span class="p">)</span> +</span><span id="Parser-1674"><a href="#Parser-1674"><span class="linenos">1674</span></a> +</span><span id="Parser-1675"><a href="#Parser-1675"><span class="linenos">1675</span></a> <span class="n">from_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_from</span><span class="p">()</span> +</span><span id="Parser-1676"><a href="#Parser-1676"><span class="linenos">1676</span></a> <span class="k">if</span> <span class="n">from_</span><span class="p">:</span> +</span><span id="Parser-1677"><a href="#Parser-1677"><span class="linenos">1677</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"from"</span><span class="p">,</span> <span class="n">from_</span><span class="p">)</span> +</span><span id="Parser-1678"><a href="#Parser-1678"><span class="linenos">1678</span></a> +</span><span id="Parser-1679"><a href="#Parser-1679"><span class="linenos">1679</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-1680"><a href="#Parser-1680"><span class="linenos">1680</span></a> <span class="k">elif</span> <span class="p">(</span><span class="n">table</span> <span class="ow">or</span> <span class="n">nested</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-1681"><a href="#Parser-1681"><span class="linenos">1681</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1682"><a href="#Parser-1682"><span class="linenos">1682</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-1683"><a href="#Parser-1683"><span class="linenos">1683</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-1684"><a href="#Parser-1684"><span class="linenos">1684</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-1685"><a href="#Parser-1685"><span class="linenos">1685</span></a> +</span><span id="Parser-1686"><a href="#Parser-1686"><span class="linenos">1686</span></a> <span class="c1"># early return so that subquery unions aren't parsed again</span> +</span><span id="Parser-1687"><a href="#Parser-1687"><span class="linenos">1687</span></a> <span class="c1"># SELECT * FROM (SELECT 1) UNION ALL SELECT 1</span> +</span><span id="Parser-1688"><a href="#Parser-1688"><span class="linenos">1688</span></a> <span class="c1"># Union ALL should be a property of the top select node, not the subquery</span> +</span><span id="Parser-1689"><a href="#Parser-1689"><span class="linenos">1689</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">parse_alias</span><span class="o">=</span><span class="n">parse_subquery_alias</span><span class="p">)</span> +</span><span id="Parser-1690"><a href="#Parser-1690"><span class="linenos">1690</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">):</span> +</span><span id="Parser-1691"><a href="#Parser-1691"><span class="linenos">1691</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1692"><a href="#Parser-1692"><span class="linenos">1692</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> +</span><span id="Parser-1693"><a href="#Parser-1693"><span class="linenos">1693</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">),</span> +</span><span id="Parser-1694"><a href="#Parser-1694"><span class="linenos">1694</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(),</span> +</span><span id="Parser-1695"><a href="#Parser-1695"><span class="linenos">1695</span></a> <span class="p">)</span> +</span><span id="Parser-1696"><a href="#Parser-1696"><span class="linenos">1696</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1697"><a href="#Parser-1697"><span class="linenos">1697</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1698"><a href="#Parser-1698"><span class="linenos">1698</span></a> +</span><span id="Parser-1699"><a href="#Parser-1699"><span class="linenos">1699</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-1700"><a href="#Parser-1700"><span class="linenos">1700</span></a> +</span><span id="Parser-1701"><a href="#Parser-1701"><span class="linenos">1701</span></a> <span class="k">def</span> <span class="nf">_parse_with</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_with_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1702"><a href="#Parser-1702"><span class="linenos">1702</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_with_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="Parser-1703"><a href="#Parser-1703"><span class="linenos">1703</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1704"><a href="#Parser-1704"><span class="linenos">1704</span></a> +</span><span id="Parser-1705"><a href="#Parser-1705"><span class="linenos">1705</span></a> <span class="n">recursive</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">)</span> </span><span id="Parser-1706"><a href="#Parser-1706"><span class="linenos">1706</span></a> -</span><span id="Parser-1707"><a href="#Parser-1707"><span class="linenos">1707</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-1708"><a href="#Parser-1708"><span class="linenos">1708</span></a> -</span><span id="Parser-1709"><a href="#Parser-1709"><span class="linenos">1709</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1710"><a href="#Parser-1710"><span class="linenos">1710</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> -</span><span id="Parser-1711"><a href="#Parser-1711"><span class="linenos">1711</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span> -</span><span id="Parser-1712"><a href="#Parser-1712"><span class="linenos">1712</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> -</span><span id="Parser-1713"><a href="#Parser-1713"><span class="linenos">1713</span></a> <span class="p">)</span> -</span><span id="Parser-1714"><a href="#Parser-1714"><span class="linenos">1714</span></a> -</span><span id="Parser-1715"><a href="#Parser-1715"><span class="linenos">1715</span></a> <span class="k">def</span> <span class="nf">_parse_table_alias</span><span class="p">(</span> -</span><span id="Parser-1716"><a href="#Parser-1716"><span class="linenos">1716</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1717"><a href="#Parser-1717"><span class="linenos">1717</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1718"><a href="#Parser-1718"><span class="linenos">1718</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-1719"><a href="#Parser-1719"><span class="linenos">1719</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> -</span><span id="Parser-1720"><a href="#Parser-1720"><span class="linenos">1720</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> -</span><span id="Parser-1721"><a href="#Parser-1721"><span class="linenos">1721</span></a> <span class="p">)</span> -</span><span id="Parser-1722"><a href="#Parser-1722"><span class="linenos">1722</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-1723"><a href="#Parser-1723"><span class="linenos">1723</span></a> -</span><span id="Parser-1724"><a href="#Parser-1724"><span class="linenos">1724</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-1725"><a href="#Parser-1725"><span class="linenos">1725</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> -</span><span id="Parser-1726"><a href="#Parser-1726"><span class="linenos">1726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-1727"><a href="#Parser-1727"><span class="linenos">1727</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1728"><a href="#Parser-1728"><span class="linenos">1728</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1729"><a href="#Parser-1729"><span class="linenos">1729</span></a> -</span><span id="Parser-1730"><a href="#Parser-1730"><span class="linenos">1730</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> -</span><span id="Parser-1731"><a href="#Parser-1731"><span class="linenos">1731</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1732"><a href="#Parser-1732"><span class="linenos">1732</span></a> -</span><span id="Parser-1733"><a href="#Parser-1733"><span class="linenos">1733</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> -</span><span id="Parser-1734"><a href="#Parser-1734"><span class="linenos">1734</span></a> -</span><span id="Parser-1735"><a href="#Parser-1735"><span class="linenos">1735</span></a> <span class="k">def</span> <span class="nf">_parse_subquery</span><span class="p">(</span> -</span><span id="Parser-1736"><a href="#Parser-1736"><span class="linenos">1736</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">parse_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1737"><a href="#Parser-1737"><span class="linenos">1737</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1738"><a href="#Parser-1738"><span class="linenos">1738</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1739"><a href="#Parser-1739"><span class="linenos">1739</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> -</span><span id="Parser-1740"><a href="#Parser-1740"><span class="linenos">1740</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-1741"><a href="#Parser-1741"><span class="linenos">1741</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> -</span><span id="Parser-1742"><a href="#Parser-1742"><span class="linenos">1742</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-1743"><a href="#Parser-1743"><span class="linenos">1743</span></a> <span class="p">)</span> -</span><span id="Parser-1744"><a href="#Parser-1744"><span class="linenos">1744</span></a> -</span><span id="Parser-1745"><a href="#Parser-1745"><span class="linenos">1745</span></a> <span class="k">def</span> <span class="nf">_parse_query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-1746"><a href="#Parser-1746"><span class="linenos">1746</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">MODIFIABLES</span><span class="p">):</span> -</span><span id="Parser-1747"><a href="#Parser-1747"><span class="linenos">1747</span></a> <span class="k">return</span> +</span><span id="Parser-1707"><a href="#Parser-1707"><span class="linenos">1707</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-1708"><a href="#Parser-1708"><span class="linenos">1708</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-1709"><a href="#Parser-1709"><span class="linenos">1709</span></a> <span class="n">expressions</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">_parse_cte</span><span class="p">())</span> +</span><span id="Parser-1710"><a href="#Parser-1710"><span class="linenos">1710</span></a> +</span><span id="Parser-1711"><a href="#Parser-1711"><span class="linenos">1711</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="Parser-1712"><a href="#Parser-1712"><span class="linenos">1712</span></a> <span class="k">break</span> +</span><span id="Parser-1713"><a href="#Parser-1713"><span class="linenos">1713</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1714"><a href="#Parser-1714"><span class="linenos">1714</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="Parser-1715"><a href="#Parser-1715"><span class="linenos">1715</span></a> +</span><span id="Parser-1716"><a href="#Parser-1716"><span class="linenos">1716</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">With</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="n">recursive</span><span class="p">)</span> +</span><span id="Parser-1717"><a href="#Parser-1717"><span class="linenos">1717</span></a> +</span><span id="Parser-1718"><a href="#Parser-1718"><span class="linenos">1718</span></a> <span class="k">def</span> <span class="nf">_parse_cte</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1719"><a href="#Parser-1719"><span class="linenos">1719</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="Parser-1720"><a href="#Parser-1720"><span class="linenos">1720</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">:</span> +</span><span id="Parser-1721"><a href="#Parser-1721"><span class="linenos">1721</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected CTE to have alias"</span><span class="p">)</span> +</span><span id="Parser-1722"><a href="#Parser-1722"><span class="linenos">1722</span></a> +</span><span id="Parser-1723"><a href="#Parser-1723"><span class="linenos">1723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1724"><a href="#Parser-1724"><span class="linenos">1724</span></a> +</span><span id="Parser-1725"><a href="#Parser-1725"><span class="linenos">1725</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1726"><a href="#Parser-1726"><span class="linenos">1726</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CTE</span><span class="p">,</span> +</span><span id="Parser-1727"><a href="#Parser-1727"><span class="linenos">1727</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">),</span> +</span><span id="Parser-1728"><a href="#Parser-1728"><span class="linenos">1728</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> +</span><span id="Parser-1729"><a href="#Parser-1729"><span class="linenos">1729</span></a> <span class="p">)</span> +</span><span id="Parser-1730"><a href="#Parser-1730"><span class="linenos">1730</span></a> +</span><span id="Parser-1731"><a href="#Parser-1731"><span class="linenos">1731</span></a> <span class="k">def</span> <span class="nf">_parse_table_alias</span><span class="p">(</span> +</span><span id="Parser-1732"><a href="#Parser-1732"><span class="linenos">1732</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1733"><a href="#Parser-1733"><span class="linenos">1733</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1734"><a href="#Parser-1734"><span class="linenos">1734</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-1735"><a href="#Parser-1735"><span class="linenos">1735</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span> +</span><span id="Parser-1736"><a href="#Parser-1736"><span class="linenos">1736</span></a> <span class="n">any_token</span><span class="o">=</span><span class="n">any_token</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span> +</span><span id="Parser-1737"><a href="#Parser-1737"><span class="linenos">1737</span></a> <span class="p">)</span> +</span><span id="Parser-1738"><a href="#Parser-1738"><span class="linenos">1738</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-1739"><a href="#Parser-1739"><span class="linenos">1739</span></a> +</span><span id="Parser-1740"><a href="#Parser-1740"><span class="linenos">1740</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-1741"><a href="#Parser-1741"><span class="linenos">1741</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> +</span><span id="Parser-1742"><a href="#Parser-1742"><span class="linenos">1742</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> <span class="k">if</span> <span class="n">columns</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-1743"><a href="#Parser-1743"><span class="linenos">1743</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1744"><a href="#Parser-1744"><span class="linenos">1744</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1745"><a href="#Parser-1745"><span class="linenos">1745</span></a> +</span><span id="Parser-1746"><a href="#Parser-1746"><span class="linenos">1746</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">alias</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">columns</span><span class="p">:</span> +</span><span id="Parser-1747"><a href="#Parser-1747"><span class="linenos">1747</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-1748"><a href="#Parser-1748"><span class="linenos">1748</span></a> -</span><span id="Parser-1749"><a href="#Parser-1749"><span class="linenos">1749</span></a> <span class="n">table</span> <span class="o">=</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> +</span><span id="Parser-1749"><a href="#Parser-1749"><span class="linenos">1749</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> </span><span id="Parser-1750"><a href="#Parser-1750"><span class="linenos">1750</span></a> -</span><span id="Parser-1751"><a href="#Parser-1751"><span class="linenos">1751</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-1752"><a href="#Parser-1752"><span class="linenos">1752</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> -</span><span id="Parser-1753"><a href="#Parser-1753"><span class="linenos">1753</span></a> <span class="n">join</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">()</span> -</span><span id="Parser-1754"><a href="#Parser-1754"><span class="linenos">1754</span></a> <span class="n">comma</span> <span class="o">=</span> <span class="kc">None</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> -</span><span id="Parser-1755"><a href="#Parser-1755"><span class="linenos">1755</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> -</span><span id="Parser-1756"><a href="#Parser-1756"><span class="linenos">1756</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">lateral</span><span class="p">)</span> -</span><span id="Parser-1757"><a href="#Parser-1757"><span class="linenos">1757</span></a> <span class="k">if</span> <span class="n">join</span><span class="p">:</span> -</span><span id="Parser-1758"><a href="#Parser-1758"><span class="linenos">1758</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> -</span><span id="Parser-1759"><a href="#Parser-1759"><span class="linenos">1759</span></a> <span class="k">if</span> <span class="n">comma</span><span class="p">:</span> -</span><span id="Parser-1760"><a href="#Parser-1760"><span class="linenos">1760</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> -</span><span id="Parser-1761"><a href="#Parser-1761"><span class="linenos">1761</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">lateral</span> <span class="ow">or</span> <span class="n">join</span> <span class="ow">or</span> <span class="n">comma</span><span class="p">):</span> -</span><span id="Parser-1762"><a href="#Parser-1762"><span class="linenos">1762</span></a> <span class="k">break</span> -</span><span id="Parser-1763"><a href="#Parser-1763"><span class="linenos">1763</span></a> -</span><span id="Parser-1764"><a href="#Parser-1764"><span class="linenos">1764</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">parser</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> -</span><span id="Parser-1765"><a href="#Parser-1765"><span class="linenos">1765</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-1751"><a href="#Parser-1751"><span class="linenos">1751</span></a> <span class="k">def</span> <span class="nf">_parse_subquery</span><span class="p">(</span> +</span><span id="Parser-1752"><a href="#Parser-1752"><span class="linenos">1752</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">parse_alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1753"><a href="#Parser-1753"><span class="linenos">1753</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1754"><a href="#Parser-1754"><span class="linenos">1754</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1755"><a href="#Parser-1755"><span class="linenos">1755</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> +</span><span id="Parser-1756"><a href="#Parser-1756"><span class="linenos">1756</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-1757"><a href="#Parser-1757"><span class="linenos">1757</span></a> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">(),</span> +</span><span id="Parser-1758"><a href="#Parser-1758"><span class="linenos">1758</span></a> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> <span class="k">if</span> <span class="n">parse_alias</span> <span class="k">else</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-1759"><a href="#Parser-1759"><span class="linenos">1759</span></a> <span class="p">)</span> +</span><span id="Parser-1760"><a href="#Parser-1760"><span class="linenos">1760</span></a> +</span><span id="Parser-1761"><a href="#Parser-1761"><span class="linenos">1761</span></a> <span class="k">def</span> <span class="nf">_parse_query_modifiers</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-1762"><a href="#Parser-1762"><span class="linenos">1762</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">MODIFIABLES</span><span class="p">):</span> +</span><span id="Parser-1763"><a href="#Parser-1763"><span class="linenos">1763</span></a> <span class="k">return</span> +</span><span id="Parser-1764"><a href="#Parser-1764"><span class="linenos">1764</span></a> +</span><span id="Parser-1765"><a href="#Parser-1765"><span class="linenos">1765</span></a> <span class="n">table</span> <span class="o">=</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">)</span> </span><span id="Parser-1766"><a href="#Parser-1766"><span class="linenos">1766</span></a> -</span><span id="Parser-1767"><a href="#Parser-1767"><span class="linenos">1767</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-1768"><a href="#Parser-1768"><span class="linenos">1768</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-1769"><a href="#Parser-1769"><span class="linenos">1769</span></a> -</span><span id="Parser-1770"><a href="#Parser-1770"><span class="linenos">1770</span></a> <span class="k">def</span> <span class="nf">_parse_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1771"><a href="#Parser-1771"><span class="linenos">1771</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">):</span> -</span><span id="Parser-1772"><a href="#Parser-1772"><span class="linenos">1772</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">)</span> -</span><span id="Parser-1773"><a href="#Parser-1773"><span class="linenos">1773</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">):</span> -</span><span id="Parser-1774"><a href="#Parser-1774"><span class="linenos">1774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected */ after HINT"</span><span class="p">)</span> -</span><span id="Parser-1775"><a href="#Parser-1775"><span class="linenos">1775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">hints</span><span class="p">)</span> -</span><span id="Parser-1776"><a href="#Parser-1776"><span class="linenos">1776</span></a> -</span><span id="Parser-1777"><a href="#Parser-1777"><span class="linenos">1777</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1778"><a href="#Parser-1778"><span class="linenos">1778</span></a> -</span><span id="Parser-1779"><a href="#Parser-1779"><span class="linenos">1779</span></a> <span class="k">def</span> <span class="nf">_parse_into</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1780"><a href="#Parser-1780"><span class="linenos">1780</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">):</span> -</span><span id="Parser-1781"><a href="#Parser-1781"><span class="linenos">1781</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1767"><a href="#Parser-1767"><span class="linenos">1767</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-1768"><a href="#Parser-1768"><span class="linenos">1768</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> +</span><span id="Parser-1769"><a href="#Parser-1769"><span class="linenos">1769</span></a> <span class="n">join</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join</span><span class="p">()</span> +</span><span id="Parser-1770"><a href="#Parser-1770"><span class="linenos">1770</span></a> <span class="n">comma</span> <span class="o">=</span> <span class="kc">None</span> <span class="k">if</span> <span class="n">table</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span> +</span><span id="Parser-1771"><a href="#Parser-1771"><span class="linenos">1771</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> +</span><span id="Parser-1772"><a href="#Parser-1772"><span class="linenos">1772</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"laterals"</span><span class="p">,</span> <span class="n">lateral</span><span class="p">)</span> +</span><span id="Parser-1773"><a href="#Parser-1773"><span class="linenos">1773</span></a> <span class="k">if</span> <span class="n">join</span><span class="p">:</span> +</span><span id="Parser-1774"><a href="#Parser-1774"><span class="linenos">1774</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="n">join</span><span class="p">)</span> +</span><span id="Parser-1775"><a href="#Parser-1775"><span class="linenos">1775</span></a> <span class="k">if</span> <span class="n">comma</span><span class="p">:</span> +</span><span id="Parser-1776"><a href="#Parser-1776"><span class="linenos">1776</span></a> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"from"</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"expressions"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">())</span> +</span><span id="Parser-1777"><a href="#Parser-1777"><span class="linenos">1777</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">lateral</span> <span class="ow">or</span> <span class="n">join</span> <span class="ow">or</span> <span class="n">comma</span><span class="p">):</span> +</span><span id="Parser-1778"><a href="#Parser-1778"><span class="linenos">1778</span></a> <span class="k">break</span> +</span><span id="Parser-1779"><a href="#Parser-1779"><span class="linenos">1779</span></a> +</span><span id="Parser-1780"><a href="#Parser-1780"><span class="linenos">1780</span></a> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">parser</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">QUERY_MODIFIER_PARSERS</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> +</span><span id="Parser-1781"><a href="#Parser-1781"><span class="linenos">1781</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> </span><span id="Parser-1782"><a href="#Parser-1782"><span class="linenos">1782</span></a> -</span><span id="Parser-1783"><a href="#Parser-1783"><span class="linenos">1783</span></a> <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> -</span><span id="Parser-1784"><a href="#Parser-1784"><span class="linenos">1784</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">)</span> -</span><span id="Parser-1785"><a href="#Parser-1785"><span class="linenos">1785</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> -</span><span id="Parser-1786"><a href="#Parser-1786"><span class="linenos">1786</span></a> -</span><span id="Parser-1787"><a href="#Parser-1787"><span class="linenos">1787</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1788"><a href="#Parser-1788"><span class="linenos">1788</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">temporary</span><span class="o">=</span><span class="n">temp</span><span class="p">,</span> <span class="n">unlogged</span><span class="o">=</span><span class="n">unlogged</span> -</span><span id="Parser-1789"><a href="#Parser-1789"><span class="linenos">1789</span></a> <span class="p">)</span> -</span><span id="Parser-1790"><a href="#Parser-1790"><span class="linenos">1790</span></a> -</span><span id="Parser-1791"><a href="#Parser-1791"><span class="linenos">1791</span></a> <span class="k">def</span> <span class="nf">_parse_from</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1792"><a href="#Parser-1792"><span class="linenos">1792</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="Parser-1793"><a href="#Parser-1793"><span class="linenos">1793</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1783"><a href="#Parser-1783"><span class="linenos">1783</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Parser-1784"><a href="#Parser-1784"><span class="linenos">1784</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-1785"><a href="#Parser-1785"><span class="linenos">1785</span></a> +</span><span id="Parser-1786"><a href="#Parser-1786"><span class="linenos">1786</span></a> <span class="k">def</span> <span class="nf">_parse_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1787"><a href="#Parser-1787"><span class="linenos">1787</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">):</span> +</span><span id="Parser-1788"><a href="#Parser-1788"><span class="linenos">1788</span></a> <span class="n">hints</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">)</span> +</span><span id="Parser-1789"><a href="#Parser-1789"><span class="linenos">1789</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">):</span> +</span><span id="Parser-1790"><a href="#Parser-1790"><span class="linenos">1790</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected */ after HINT"</span><span class="p">)</span> +</span><span id="Parser-1791"><a href="#Parser-1791"><span class="linenos">1791</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Hint</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">hints</span><span class="p">)</span> +</span><span id="Parser-1792"><a href="#Parser-1792"><span class="linenos">1792</span></a> +</span><span id="Parser-1793"><a href="#Parser-1793"><span class="linenos">1793</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-1794"><a href="#Parser-1794"><span class="linenos">1794</span></a> -</span><span id="Parser-1795"><a href="#Parser-1795"><span class="linenos">1795</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1796"><a href="#Parser-1796"><span class="linenos">1796</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> -</span><span id="Parser-1797"><a href="#Parser-1797"><span class="linenos">1797</span></a> <span class="p">)</span> +</span><span id="Parser-1795"><a href="#Parser-1795"><span class="linenos">1795</span></a> <span class="k">def</span> <span class="nf">_parse_into</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1796"><a href="#Parser-1796"><span class="linenos">1796</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">):</span> +</span><span id="Parser-1797"><a href="#Parser-1797"><span class="linenos">1797</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-1798"><a href="#Parser-1798"><span class="linenos">1798</span></a> -</span><span id="Parser-1799"><a href="#Parser-1799"><span class="linenos">1799</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1800"><a href="#Parser-1800"><span class="linenos">1800</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">):</span> -</span><span id="Parser-1801"><a href="#Parser-1801"><span class="linenos">1801</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1802"><a href="#Parser-1802"><span class="linenos">1802</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-1803"><a href="#Parser-1803"><span class="linenos">1803</span></a> -</span><span id="Parser-1804"><a href="#Parser-1804"><span class="linenos">1804</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> -</span><span id="Parser-1805"><a href="#Parser-1805"><span class="linenos">1805</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> -</span><span id="Parser-1806"><a href="#Parser-1806"><span class="linenos">1806</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-1807"><a href="#Parser-1807"><span class="linenos">1807</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> -</span><span id="Parser-1808"><a href="#Parser-1808"><span class="linenos">1808</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MEASURES"</span><span class="p">)</span> -</span><span id="Parser-1809"><a href="#Parser-1809"><span class="linenos">1809</span></a> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-1810"><a href="#Parser-1810"><span class="linenos">1810</span></a> <span class="p">)</span> -</span><span id="Parser-1811"><a href="#Parser-1811"><span class="linenos">1811</span></a> -</span><span id="Parser-1812"><a href="#Parser-1812"><span class="linenos">1812</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONE"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> -</span><span id="Parser-1813"><a href="#Parser-1813"><span class="linenos">1813</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"ONE ROW PER MATCH"</span><span class="p">)</span> -</span><span id="Parser-1814"><a href="#Parser-1814"><span class="linenos">1814</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> -</span><span id="Parser-1815"><a href="#Parser-1815"><span class="linenos">1815</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"ALL ROWS PER MATCH"</span> -</span><span id="Parser-1816"><a href="#Parser-1816"><span class="linenos">1816</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHOW"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> -</span><span id="Parser-1817"><a href="#Parser-1817"><span class="linenos">1817</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" SHOW EMPTY MATCHES"</span> -</span><span id="Parser-1818"><a href="#Parser-1818"><span class="linenos">1818</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OMIT"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> -</span><span id="Parser-1819"><a href="#Parser-1819"><span class="linenos">1819</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" OMIT EMPTY MATCHES"</span> -</span><span id="Parser-1820"><a href="#Parser-1820"><span class="linenos">1820</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNMATCHED"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> -</span><span id="Parser-1821"><a href="#Parser-1821"><span class="linenos">1821</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" WITH UNMATCHED ROWS"</span> -</span><span id="Parser-1822"><a href="#Parser-1822"><span class="linenos">1822</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-1823"><a href="#Parser-1823"><span class="linenos">1823</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1824"><a href="#Parser-1824"><span class="linenos">1824</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1825"><a href="#Parser-1825"><span class="linenos">1825</span></a> -</span><span id="Parser-1826"><a href="#Parser-1826"><span class="linenos">1826</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"SKIP"</span><span class="p">):</span> -</span><span id="Parser-1827"><a href="#Parser-1827"><span class="linenos">1827</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"AFTER MATCH SKIP"</span> -</span><span id="Parser-1828"><a href="#Parser-1828"><span class="linenos">1828</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PAST"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="Parser-1829"><a href="#Parser-1829"><span class="linenos">1829</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" PAST LAST ROW"</span> -</span><span id="Parser-1830"><a href="#Parser-1830"><span class="linenos">1830</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"NEXT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> -</span><span id="Parser-1831"><a href="#Parser-1831"><span class="linenos">1831</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO NEXT ROW"</span> -</span><span id="Parser-1832"><a href="#Parser-1832"><span class="linenos">1832</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">):</span> -</span><span id="Parser-1833"><a href="#Parser-1833"><span class="linenos">1833</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO FIRST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-1834"><a href="#Parser-1834"><span class="linenos">1834</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">):</span> -</span><span id="Parser-1835"><a href="#Parser-1835"><span class="linenos">1835</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO LAST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-1836"><a href="#Parser-1836"><span class="linenos">1836</span></a> <span class="n">after</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-1837"><a href="#Parser-1837"><span class="linenos">1837</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1838"><a href="#Parser-1838"><span class="linenos">1838</span></a> <span class="n">after</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1839"><a href="#Parser-1839"><span class="linenos">1839</span></a> -</span><span id="Parser-1840"><a href="#Parser-1840"><span class="linenos">1840</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATTERN"</span><span class="p">):</span> -</span><span id="Parser-1841"><a href="#Parser-1841"><span class="linenos">1841</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-1842"><a href="#Parser-1842"><span class="linenos">1842</span></a> -</span><span id="Parser-1843"><a href="#Parser-1843"><span class="linenos">1843</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-1844"><a href="#Parser-1844"><span class="linenos">1844</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> -</span><span id="Parser-1845"><a href="#Parser-1845"><span class="linenos">1845</span></a> -</span><span id="Parser-1846"><a href="#Parser-1846"><span class="linenos">1846</span></a> <span class="n">paren</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Parser-1847"><a href="#Parser-1847"><span class="linenos">1847</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> -</span><span id="Parser-1848"><a href="#Parser-1848"><span class="linenos">1848</span></a> -</span><span id="Parser-1849"><a href="#Parser-1849"><span class="linenos">1849</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="Parser-1850"><a href="#Parser-1850"><span class="linenos">1850</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> -</span><span id="Parser-1851"><a href="#Parser-1851"><span class="linenos">1851</span></a> <span class="n">paren</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Parser-1852"><a href="#Parser-1852"><span class="linenos">1852</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">:</span> -</span><span id="Parser-1853"><a href="#Parser-1853"><span class="linenos">1853</span></a> <span class="n">paren</span> <span class="o">-=</span> <span class="mi">1</span> -</span><span id="Parser-1854"><a href="#Parser-1854"><span class="linenos">1854</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-1855"><a href="#Parser-1855"><span class="linenos">1855</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-1856"><a href="#Parser-1856"><span class="linenos">1856</span></a> <span class="k">if</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> -</span><span id="Parser-1857"><a href="#Parser-1857"><span class="linenos">1857</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> -</span><span id="Parser-1858"><a href="#Parser-1858"><span class="linenos">1858</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span> -</span><span id="Parser-1859"><a href="#Parser-1859"><span class="linenos">1859</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1860"><a href="#Parser-1860"><span class="linenos">1860</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1799"><a href="#Parser-1799"><span class="linenos">1799</span></a> <span class="n">temp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">)</span> +</span><span id="Parser-1800"><a href="#Parser-1800"><span class="linenos">1800</span></a> <span class="n">unlogged</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">)</span> +</span><span id="Parser-1801"><a href="#Parser-1801"><span class="linenos">1801</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> +</span><span id="Parser-1802"><a href="#Parser-1802"><span class="linenos">1802</span></a> +</span><span id="Parser-1803"><a href="#Parser-1803"><span class="linenos">1803</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1804"><a href="#Parser-1804"><span class="linenos">1804</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Into</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span> <span class="n">temporary</span><span class="o">=</span><span class="n">temp</span><span class="p">,</span> <span class="n">unlogged</span><span class="o">=</span><span class="n">unlogged</span> +</span><span id="Parser-1805"><a href="#Parser-1805"><span class="linenos">1805</span></a> <span class="p">)</span> +</span><span id="Parser-1806"><a href="#Parser-1806"><span class="linenos">1806</span></a> +</span><span id="Parser-1807"><a href="#Parser-1807"><span class="linenos">1807</span></a> <span class="k">def</span> <span class="nf">_parse_from</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1808"><a href="#Parser-1808"><span class="linenos">1808</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="Parser-1809"><a href="#Parser-1809"><span class="linenos">1809</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1810"><a href="#Parser-1810"><span class="linenos">1810</span></a> +</span><span id="Parser-1811"><a href="#Parser-1811"><span class="linenos">1811</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1812"><a href="#Parser-1812"><span class="linenos">1812</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> +</span><span id="Parser-1813"><a href="#Parser-1813"><span class="linenos">1813</span></a> <span class="p">)</span> +</span><span id="Parser-1814"><a href="#Parser-1814"><span class="linenos">1814</span></a> +</span><span id="Parser-1815"><a href="#Parser-1815"><span class="linenos">1815</span></a> <span class="k">def</span> <span class="nf">_parse_match_recognize</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1816"><a href="#Parser-1816"><span class="linenos">1816</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">MATCH_RECOGNIZE</span><span class="p">):</span> +</span><span id="Parser-1817"><a href="#Parser-1817"><span class="linenos">1817</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1818"><a href="#Parser-1818"><span class="linenos">1818</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-1819"><a href="#Parser-1819"><span class="linenos">1819</span></a> +</span><span id="Parser-1820"><a href="#Parser-1820"><span class="linenos">1820</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> +</span><span id="Parser-1821"><a href="#Parser-1821"><span class="linenos">1821</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> +</span><span id="Parser-1822"><a href="#Parser-1822"><span class="linenos">1822</span></a> <span class="n">measures</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-1823"><a href="#Parser-1823"><span class="linenos">1823</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="Parser-1824"><a href="#Parser-1824"><span class="linenos">1824</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MEASURES"</span><span class="p">)</span> +</span><span id="Parser-1825"><a href="#Parser-1825"><span class="linenos">1825</span></a> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-1826"><a href="#Parser-1826"><span class="linenos">1826</span></a> <span class="p">)</span> +</span><span id="Parser-1827"><a href="#Parser-1827"><span class="linenos">1827</span></a> +</span><span id="Parser-1828"><a href="#Parser-1828"><span class="linenos">1828</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ONE"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> +</span><span id="Parser-1829"><a href="#Parser-1829"><span class="linenos">1829</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="s2">"ONE ROW PER MATCH"</span><span class="p">)</span> +</span><span id="Parser-1830"><a href="#Parser-1830"><span class="linenos">1830</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALL"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">,</span> <span class="s2">"PER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">):</span> +</span><span id="Parser-1831"><a href="#Parser-1831"><span class="linenos">1831</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"ALL ROWS PER MATCH"</span> +</span><span id="Parser-1832"><a href="#Parser-1832"><span class="linenos">1832</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SHOW"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> +</span><span id="Parser-1833"><a href="#Parser-1833"><span class="linenos">1833</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" SHOW EMPTY MATCHES"</span> +</span><span id="Parser-1834"><a href="#Parser-1834"><span class="linenos">1834</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"OMIT"</span><span class="p">,</span> <span class="s2">"EMPTY"</span><span class="p">,</span> <span class="s2">"MATCHES"</span><span class="p">):</span> +</span><span id="Parser-1835"><a href="#Parser-1835"><span class="linenos">1835</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" OMIT EMPTY MATCHES"</span> +</span><span id="Parser-1836"><a href="#Parser-1836"><span class="linenos">1836</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"WITH"</span><span class="p">,</span> <span class="s2">"UNMATCHED"</span><span class="p">,</span> <span class="s2">"ROWS"</span><span class="p">):</span> +</span><span id="Parser-1837"><a href="#Parser-1837"><span class="linenos">1837</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" WITH UNMATCHED ROWS"</span> +</span><span id="Parser-1838"><a href="#Parser-1838"><span class="linenos">1838</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-1839"><a href="#Parser-1839"><span class="linenos">1839</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1840"><a href="#Parser-1840"><span class="linenos">1840</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1841"><a href="#Parser-1841"><span class="linenos">1841</span></a> +</span><span id="Parser-1842"><a href="#Parser-1842"><span class="linenos">1842</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AFTER"</span><span class="p">,</span> <span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"SKIP"</span><span class="p">):</span> +</span><span id="Parser-1843"><a href="#Parser-1843"><span class="linenos">1843</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">"AFTER MATCH SKIP"</span> +</span><span id="Parser-1844"><a href="#Parser-1844"><span class="linenos">1844</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PAST"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="Parser-1845"><a href="#Parser-1845"><span class="linenos">1845</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" PAST LAST ROW"</span> +</span><span id="Parser-1846"><a href="#Parser-1846"><span class="linenos">1846</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"NEXT"</span><span class="p">,</span> <span class="s2">"ROW"</span><span class="p">):</span> +</span><span id="Parser-1847"><a href="#Parser-1847"><span class="linenos">1847</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO NEXT ROW"</span> +</span><span id="Parser-1848"><a href="#Parser-1848"><span class="linenos">1848</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"FIRST"</span><span class="p">):</span> +</span><span id="Parser-1849"><a href="#Parser-1849"><span class="linenos">1849</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO FIRST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-1850"><a href="#Parser-1850"><span class="linenos">1850</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">,</span> <span class="s2">"LAST"</span><span class="p">):</span> +</span><span id="Parser-1851"><a href="#Parser-1851"><span class="linenos">1851</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="sa">f</span><span class="s2">" TO LAST </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-1852"><a href="#Parser-1852"><span class="linenos">1852</span></a> <span class="n">after</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-1853"><a href="#Parser-1853"><span class="linenos">1853</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1854"><a href="#Parser-1854"><span class="linenos">1854</span></a> <span class="n">after</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1855"><a href="#Parser-1855"><span class="linenos">1855</span></a> +</span><span id="Parser-1856"><a href="#Parser-1856"><span class="linenos">1856</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PATTERN"</span><span class="p">):</span> +</span><span id="Parser-1857"><a href="#Parser-1857"><span class="linenos">1857</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-1858"><a href="#Parser-1858"><span class="linenos">1858</span></a> +</span><span id="Parser-1859"><a href="#Parser-1859"><span class="linenos">1859</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-1860"><a href="#Parser-1860"><span class="linenos">1860</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> </span><span id="Parser-1861"><a href="#Parser-1861"><span class="linenos">1861</span></a> -</span><span id="Parser-1862"><a href="#Parser-1862"><span class="linenos">1862</span></a> <span class="n">define</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-1863"><a href="#Parser-1863"><span class="linenos">1863</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINE"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-1864"><a href="#Parser-1864"><span class="linenos">1864</span></a> <span class="p">)</span> -</span><span id="Parser-1865"><a href="#Parser-1865"><span class="linenos">1865</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-1866"><a href="#Parser-1866"><span class="linenos">1866</span></a> -</span><span id="Parser-1867"><a href="#Parser-1867"><span class="linenos">1867</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1868"><a href="#Parser-1868"><span class="linenos">1868</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">,</span> -</span><span id="Parser-1869"><a href="#Parser-1869"><span class="linenos">1869</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="Parser-1870"><a href="#Parser-1870"><span class="linenos">1870</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> -</span><span id="Parser-1871"><a href="#Parser-1871"><span class="linenos">1871</span></a> <span class="n">measures</span><span class="o">=</span><span class="n">measures</span><span class="p">,</span> -</span><span id="Parser-1872"><a href="#Parser-1872"><span class="linenos">1872</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> -</span><span id="Parser-1873"><a href="#Parser-1873"><span class="linenos">1873</span></a> <span class="n">after</span><span class="o">=</span><span class="n">after</span><span class="p">,</span> -</span><span id="Parser-1874"><a href="#Parser-1874"><span class="linenos">1874</span></a> <span class="n">pattern</span><span class="o">=</span><span class="n">pattern</span><span class="p">,</span> -</span><span id="Parser-1875"><a href="#Parser-1875"><span class="linenos">1875</span></a> <span class="n">define</span><span class="o">=</span><span class="n">define</span><span class="p">,</span> -</span><span id="Parser-1876"><a href="#Parser-1876"><span class="linenos">1876</span></a> <span class="p">)</span> +</span><span id="Parser-1862"><a href="#Parser-1862"><span class="linenos">1862</span></a> <span class="n">paren</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Parser-1863"><a href="#Parser-1863"><span class="linenos">1863</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> +</span><span id="Parser-1864"><a href="#Parser-1864"><span class="linenos">1864</span></a> +</span><span id="Parser-1865"><a href="#Parser-1865"><span class="linenos">1865</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="Parser-1866"><a href="#Parser-1866"><span class="linenos">1866</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> +</span><span id="Parser-1867"><a href="#Parser-1867"><span class="linenos">1867</span></a> <span class="n">paren</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Parser-1868"><a href="#Parser-1868"><span class="linenos">1868</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">:</span> +</span><span id="Parser-1869"><a href="#Parser-1869"><span class="linenos">1869</span></a> <span class="n">paren</span> <span class="o">-=</span> <span class="mi">1</span> +</span><span id="Parser-1870"><a href="#Parser-1870"><span class="linenos">1870</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-1871"><a href="#Parser-1871"><span class="linenos">1871</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-1872"><a href="#Parser-1872"><span class="linenos">1872</span></a> <span class="k">if</span> <span class="n">paren</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span> +</span><span id="Parser-1873"><a href="#Parser-1873"><span class="linenos">1873</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">)</span> +</span><span id="Parser-1874"><a href="#Parser-1874"><span class="linenos">1874</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span> +</span><span id="Parser-1875"><a href="#Parser-1875"><span class="linenos">1875</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1876"><a href="#Parser-1876"><span class="linenos">1876</span></a> <span class="n">pattern</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Parser-1877"><a href="#Parser-1877"><span class="linenos">1877</span></a> -</span><span id="Parser-1878"><a href="#Parser-1878"><span class="linenos">1878</span></a> <span class="k">def</span> <span class="nf">_parse_lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1879"><a href="#Parser-1879"><span class="linenos">1879</span></a> <span class="n">outer_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> -</span><span id="Parser-1880"><a href="#Parser-1880"><span class="linenos">1880</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> -</span><span id="Parser-1881"><a href="#Parser-1881"><span class="linenos">1881</span></a> -</span><span id="Parser-1882"><a href="#Parser-1882"><span class="linenos">1882</span></a> <span class="k">if</span> <span class="n">outer_apply</span> <span class="ow">or</span> <span class="n">cross_apply</span><span class="p">:</span> -</span><span id="Parser-1883"><a href="#Parser-1883"><span class="linenos">1883</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1884"><a href="#Parser-1884"><span class="linenos">1884</span></a> <span class="n">view</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1885"><a href="#Parser-1885"><span class="linenos">1885</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">cross_apply</span> -</span><span id="Parser-1886"><a href="#Parser-1886"><span class="linenos">1886</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">):</span> -</span><span id="Parser-1887"><a href="#Parser-1887"><span class="linenos">1887</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-1888"><a href="#Parser-1888"><span class="linenos">1888</span></a> <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">)</span> -</span><span id="Parser-1889"><a href="#Parser-1889"><span class="linenos">1889</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">)</span> -</span><span id="Parser-1890"><a href="#Parser-1890"><span class="linenos">1890</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1891"><a href="#Parser-1891"><span class="linenos">1891</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1892"><a href="#Parser-1892"><span class="linenos">1892</span></a> -</span><span id="Parser-1893"><a href="#Parser-1893"><span class="linenos">1893</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-1894"><a href="#Parser-1894"><span class="linenos">1894</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1895"><a href="#Parser-1895"><span class="linenos">1895</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-1896"><a href="#Parser-1896"><span class="linenos">1896</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span> -</span><span id="Parser-1897"><a href="#Parser-1897"><span class="linenos">1897</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-1898"><a href="#Parser-1898"><span class="linenos">1898</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> -</span><span id="Parser-1899"><a href="#Parser-1899"><span class="linenos">1899</span></a> <span class="p">)</span> -</span><span id="Parser-1900"><a href="#Parser-1900"><span class="linenos">1900</span></a> -</span><span id="Parser-1901"><a href="#Parser-1901"><span class="linenos">1901</span></a> <span class="n">table_alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-1902"><a href="#Parser-1902"><span class="linenos">1902</span></a> -</span><span id="Parser-1903"><a href="#Parser-1903"><span class="linenos">1903</span></a> <span class="k">if</span> <span class="n">view</span><span class="p">:</span> -</span><span id="Parser-1904"><a href="#Parser-1904"><span class="linenos">1904</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1905"><a href="#Parser-1905"><span class="linenos">1905</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="Parser-1906"><a href="#Parser-1906"><span class="linenos">1906</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> -</span><span id="Parser-1907"><a href="#Parser-1907"><span class="linenos">1907</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1908"><a href="#Parser-1908"><span class="linenos">1908</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="Parser-1909"><a href="#Parser-1909"><span class="linenos">1909</span></a> -</span><span id="Parser-1910"><a href="#Parser-1910"><span class="linenos">1910</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1911"><a href="#Parser-1911"><span class="linenos">1911</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">,</span> -</span><span id="Parser-1912"><a href="#Parser-1912"><span class="linenos">1912</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-1913"><a href="#Parser-1913"><span class="linenos">1913</span></a> <span class="n">view</span><span class="o">=</span><span class="n">view</span><span class="p">,</span> -</span><span id="Parser-1914"><a href="#Parser-1914"><span class="linenos">1914</span></a> <span class="n">outer</span><span class="o">=</span><span class="n">outer</span><span class="p">,</span> -</span><span id="Parser-1915"><a href="#Parser-1915"><span class="linenos">1915</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> -</span><span id="Parser-1916"><a href="#Parser-1916"><span class="linenos">1916</span></a> <span class="p">)</span> -</span><span id="Parser-1917"><a href="#Parser-1917"><span class="linenos">1917</span></a> -</span><span id="Parser-1918"><a href="#Parser-1918"><span class="linenos">1918</span></a> <span class="k">if</span> <span class="n">outer_apply</span> <span class="ow">or</span> <span class="n">cross_apply</span><span class="p">:</span> -</span><span id="Parser-1919"><a href="#Parser-1919"><span class="linenos">1919</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="kc">None</span> <span class="k">if</span> <span class="n">cross_apply</span> <span class="k">else</span> <span class="s2">"LEFT"</span><span class="p">)</span> -</span><span id="Parser-1920"><a href="#Parser-1920"><span class="linenos">1920</span></a> -</span><span id="Parser-1921"><a href="#Parser-1921"><span class="linenos">1921</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Parser-1922"><a href="#Parser-1922"><span class="linenos">1922</span></a> -</span><span id="Parser-1923"><a href="#Parser-1923"><span class="linenos">1923</span></a> <span class="k">def</span> <span class="nf">_parse_join_side_and_kind</span><span class="p">(</span> -</span><span id="Parser-1924"><a href="#Parser-1924"><span class="linenos">1924</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-1925"><a href="#Parser-1925"><span class="linenos">1925</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]]:</span> -</span><span id="Parser-1926"><a href="#Parser-1926"><span class="linenos">1926</span></a> <span class="k">return</span> <span class="p">(</span> -</span><span id="Parser-1927"><a href="#Parser-1927"><span class="linenos">1927</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="Parser-1928"><a href="#Parser-1928"><span class="linenos">1928</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="Parser-1929"><a href="#Parser-1929"><span class="linenos">1929</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> -</span><span id="Parser-1930"><a href="#Parser-1930"><span class="linenos">1930</span></a> <span class="p">)</span> -</span><span id="Parser-1931"><a href="#Parser-1931"><span class="linenos">1931</span></a> -</span><span id="Parser-1932"><a href="#Parser-1932"><span class="linenos">1932</span></a> <span class="k">def</span> <span class="nf">_parse_join</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1933"><a href="#Parser-1933"><span class="linenos">1933</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_side_and_kind</span><span class="p">()</span> -</span><span id="Parser-1934"><a href="#Parser-1934"><span class="linenos">1934</span></a> -</span><span id="Parser-1935"><a href="#Parser-1935"><span class="linenos">1935</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">):</span> -</span><span id="Parser-1936"><a href="#Parser-1936"><span class="linenos">1936</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1937"><a href="#Parser-1937"><span class="linenos">1937</span></a> -</span><span id="Parser-1938"><a href="#Parser-1938"><span class="linenos">1938</span></a> <span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span> -</span><span id="Parser-1939"><a href="#Parser-1939"><span class="linenos">1939</span></a> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">|</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> -</span><span id="Parser-1940"><a href="#Parser-1940"><span class="linenos">1940</span></a> <span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()}</span> -</span><span id="Parser-1941"><a href="#Parser-1941"><span class="linenos">1941</span></a> -</span><span id="Parser-1942"><a href="#Parser-1942"><span class="linenos">1942</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> -</span><span id="Parser-1943"><a href="#Parser-1943"><span class="linenos">1943</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"natural"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-1944"><a href="#Parser-1944"><span class="linenos">1944</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> -</span><span id="Parser-1945"><a href="#Parser-1945"><span class="linenos">1945</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"side"</span><span class="p">]</span> <span class="o">=</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-1946"><a href="#Parser-1946"><span class="linenos">1946</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Parser-1947"><a href="#Parser-1947"><span class="linenos">1947</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-1948"><a href="#Parser-1948"><span class="linenos">1948</span></a> -</span><span id="Parser-1949"><a href="#Parser-1949"><span class="linenos">1949</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-1950"><a href="#Parser-1950"><span class="linenos">1950</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-1951"><a href="#Parser-1951"><span class="linenos">1951</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="Parser-1952"><a href="#Parser-1952"><span class="linenos">1952</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="Parser-1878"><a href="#Parser-1878"><span class="linenos">1878</span></a> <span class="n">define</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-1879"><a href="#Parser-1879"><span class="linenos">1879</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFINE"</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-1880"><a href="#Parser-1880"><span class="linenos">1880</span></a> <span class="p">)</span> +</span><span id="Parser-1881"><a href="#Parser-1881"><span class="linenos">1881</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-1882"><a href="#Parser-1882"><span class="linenos">1882</span></a> +</span><span id="Parser-1883"><a href="#Parser-1883"><span class="linenos">1883</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1884"><a href="#Parser-1884"><span class="linenos">1884</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MatchRecognize</span><span class="p">,</span> +</span><span id="Parser-1885"><a href="#Parser-1885"><span class="linenos">1885</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="Parser-1886"><a href="#Parser-1886"><span class="linenos">1886</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> +</span><span id="Parser-1887"><a href="#Parser-1887"><span class="linenos">1887</span></a> <span class="n">measures</span><span class="o">=</span><span class="n">measures</span><span class="p">,</span> +</span><span id="Parser-1888"><a href="#Parser-1888"><span class="linenos">1888</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> +</span><span id="Parser-1889"><a href="#Parser-1889"><span class="linenos">1889</span></a> <span class="n">after</span><span class="o">=</span><span class="n">after</span><span class="p">,</span> +</span><span id="Parser-1890"><a href="#Parser-1890"><span class="linenos">1890</span></a> <span class="n">pattern</span><span class="o">=</span><span class="n">pattern</span><span class="p">,</span> +</span><span id="Parser-1891"><a href="#Parser-1891"><span class="linenos">1891</span></a> <span class="n">define</span><span class="o">=</span><span class="n">define</span><span class="p">,</span> +</span><span id="Parser-1892"><a href="#Parser-1892"><span class="linenos">1892</span></a> <span class="p">)</span> +</span><span id="Parser-1893"><a href="#Parser-1893"><span class="linenos">1893</span></a> +</span><span id="Parser-1894"><a href="#Parser-1894"><span class="linenos">1894</span></a> <span class="k">def</span> <span class="nf">_parse_lateral</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1895"><a href="#Parser-1895"><span class="linenos">1895</span></a> <span class="n">outer_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> +</span><span id="Parser-1896"><a href="#Parser-1896"><span class="linenos">1896</span></a> <span class="n">cross_apply</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">)</span> +</span><span id="Parser-1897"><a href="#Parser-1897"><span class="linenos">1897</span></a> +</span><span id="Parser-1898"><a href="#Parser-1898"><span class="linenos">1898</span></a> <span class="k">if</span> <span class="n">outer_apply</span> <span class="ow">or</span> <span class="n">cross_apply</span><span class="p">:</span> +</span><span id="Parser-1899"><a href="#Parser-1899"><span class="linenos">1899</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1900"><a href="#Parser-1900"><span class="linenos">1900</span></a> <span class="n">view</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1901"><a href="#Parser-1901"><span class="linenos">1901</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">cross_apply</span> +</span><span id="Parser-1902"><a href="#Parser-1902"><span class="linenos">1902</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">):</span> +</span><span id="Parser-1903"><a href="#Parser-1903"><span class="linenos">1903</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-1904"><a href="#Parser-1904"><span class="linenos">1904</span></a> <span class="n">view</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">)</span> +</span><span id="Parser-1905"><a href="#Parser-1905"><span class="linenos">1905</span></a> <span class="n">outer</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">)</span> +</span><span id="Parser-1906"><a href="#Parser-1906"><span class="linenos">1906</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1907"><a href="#Parser-1907"><span class="linenos">1907</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1908"><a href="#Parser-1908"><span class="linenos">1908</span></a> +</span><span id="Parser-1909"><a href="#Parser-1909"><span class="linenos">1909</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-1910"><a href="#Parser-1910"><span class="linenos">1910</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1911"><a href="#Parser-1911"><span class="linenos">1911</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-1912"><a href="#Parser-1912"><span class="linenos">1912</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">(</span> +</span><span id="Parser-1913"><a href="#Parser-1913"><span class="linenos">1913</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-1914"><a href="#Parser-1914"><span class="linenos">1914</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span> +</span><span id="Parser-1915"><a href="#Parser-1915"><span class="linenos">1915</span></a> <span class="p">)</span> +</span><span id="Parser-1916"><a href="#Parser-1916"><span class="linenos">1916</span></a> +</span><span id="Parser-1917"><a href="#Parser-1917"><span class="linenos">1917</span></a> <span class="n">table_alias</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-1918"><a href="#Parser-1918"><span class="linenos">1918</span></a> +</span><span id="Parser-1919"><a href="#Parser-1919"><span class="linenos">1919</span></a> <span class="k">if</span> <span class="n">view</span><span class="p">:</span> +</span><span id="Parser-1920"><a href="#Parser-1920"><span class="linenos">1920</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-1921"><a href="#Parser-1921"><span class="linenos">1921</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="Parser-1922"><a href="#Parser-1922"><span class="linenos">1922</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TableAlias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">)</span> +</span><span id="Parser-1923"><a href="#Parser-1923"><span class="linenos">1923</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-1924"><a href="#Parser-1924"><span class="linenos">1924</span></a> <span class="n">table_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> +</span><span id="Parser-1925"><a href="#Parser-1925"><span class="linenos">1925</span></a> +</span><span id="Parser-1926"><a href="#Parser-1926"><span class="linenos">1926</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1927"><a href="#Parser-1927"><span class="linenos">1927</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Lateral</span><span class="p">,</span> +</span><span id="Parser-1928"><a href="#Parser-1928"><span class="linenos">1928</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-1929"><a href="#Parser-1929"><span class="linenos">1929</span></a> <span class="n">view</span><span class="o">=</span><span class="n">view</span><span class="p">,</span> +</span><span id="Parser-1930"><a href="#Parser-1930"><span class="linenos">1930</span></a> <span class="n">outer</span><span class="o">=</span><span class="n">outer</span><span class="p">,</span> +</span><span id="Parser-1931"><a href="#Parser-1931"><span class="linenos">1931</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">table_alias</span><span class="p">,</span> +</span><span id="Parser-1932"><a href="#Parser-1932"><span class="linenos">1932</span></a> <span class="p">)</span> +</span><span id="Parser-1933"><a href="#Parser-1933"><span class="linenos">1933</span></a> +</span><span id="Parser-1934"><a href="#Parser-1934"><span class="linenos">1934</span></a> <span class="k">if</span> <span class="n">outer_apply</span> <span class="ow">or</span> <span class="n">cross_apply</span><span class="p">:</span> +</span><span id="Parser-1935"><a href="#Parser-1935"><span class="linenos">1935</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">side</span><span class="o">=</span><span class="kc">None</span> <span class="k">if</span> <span class="n">cross_apply</span> <span class="k">else</span> <span class="s2">"LEFT"</span><span class="p">)</span> +</span><span id="Parser-1936"><a href="#Parser-1936"><span class="linenos">1936</span></a> +</span><span id="Parser-1937"><a href="#Parser-1937"><span class="linenos">1937</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Parser-1938"><a href="#Parser-1938"><span class="linenos">1938</span></a> +</span><span id="Parser-1939"><a href="#Parser-1939"><span class="linenos">1939</span></a> <span class="k">def</span> <span class="nf">_parse_join_side_and_kind</span><span class="p">(</span> +</span><span id="Parser-1940"><a href="#Parser-1940"><span class="linenos">1940</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-1941"><a href="#Parser-1941"><span class="linenos">1941</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]]:</span> +</span><span id="Parser-1942"><a href="#Parser-1942"><span class="linenos">1942</span></a> <span class="k">return</span> <span class="p">(</span> +</span><span id="Parser-1943"><a href="#Parser-1943"><span class="linenos">1943</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="Parser-1944"><a href="#Parser-1944"><span class="linenos">1944</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_SIDES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="Parser-1945"><a href="#Parser-1945"><span class="linenos">1945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">JOIN_KINDS</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">,</span> +</span><span id="Parser-1946"><a href="#Parser-1946"><span class="linenos">1946</span></a> <span class="p">)</span> +</span><span id="Parser-1947"><a href="#Parser-1947"><span class="linenos">1947</span></a> +</span><span id="Parser-1948"><a href="#Parser-1948"><span class="linenos">1948</span></a> <span class="k">def</span> <span class="nf">_parse_join</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_join_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1949"><a href="#Parser-1949"><span class="linenos">1949</span></a> <span class="n">natural</span><span class="p">,</span> <span class="n">side</span><span class="p">,</span> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_join_side_and_kind</span><span class="p">()</span> +</span><span id="Parser-1950"><a href="#Parser-1950"><span class="linenos">1950</span></a> +</span><span id="Parser-1951"><a href="#Parser-1951"><span class="linenos">1951</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_join_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">):</span> +</span><span id="Parser-1952"><a href="#Parser-1952"><span class="linenos">1952</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-1953"><a href="#Parser-1953"><span class="linenos">1953</span></a> -</span><span id="Parser-1954"><a href="#Parser-1954"><span class="linenos">1954</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-1955"><a href="#Parser-1955"><span class="linenos">1955</span></a> -</span><span id="Parser-1956"><a href="#Parser-1956"><span class="linenos">1956</span></a> <span class="k">def</span> <span class="nf">_parse_index</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1957"><a href="#Parser-1957"><span class="linenos">1957</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-1958"><a href="#Parser-1958"><span class="linenos">1958</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="Parser-1959"><a href="#Parser-1959"><span class="linenos">1959</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> <span class="c1"># hive</span> -</span><span id="Parser-1960"><a href="#Parser-1960"><span class="linenos">1960</span></a> -</span><span id="Parser-1961"><a href="#Parser-1961"><span class="linenos">1961</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1962"><a href="#Parser-1962"><span class="linenos">1962</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> -</span><span id="Parser-1963"><a href="#Parser-1963"><span class="linenos">1963</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> -</span><span id="Parser-1964"><a href="#Parser-1964"><span class="linenos">1964</span></a> <span class="n">table</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span> -</span><span id="Parser-1965"><a href="#Parser-1965"><span class="linenos">1965</span></a> <span class="n">columns</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> -</span><span id="Parser-1966"><a href="#Parser-1966"><span class="linenos">1966</span></a> <span class="p">)</span> -</span><span id="Parser-1967"><a href="#Parser-1967"><span class="linenos">1967</span></a> -</span><span id="Parser-1968"><a href="#Parser-1968"><span class="linenos">1968</span></a> <span class="k">def</span> <span class="nf">_parse_create_table_index</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-1969"><a href="#Parser-1969"><span class="linenos">1969</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> -</span><span id="Parser-1970"><a href="#Parser-1970"><span class="linenos">1970</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">)</span> -</span><span id="Parser-1971"><a href="#Parser-1971"><span class="linenos">1971</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AMP"</span><span class="p">)</span> -</span><span id="Parser-1972"><a href="#Parser-1972"><span class="linenos">1972</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">):</span> -</span><span id="Parser-1973"><a href="#Parser-1973"><span class="linenos">1973</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-1974"><a href="#Parser-1974"><span class="linenos">1974</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-1975"><a href="#Parser-1975"><span class="linenos">1975</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1976"><a href="#Parser-1976"><span class="linenos">1976</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-1977"><a href="#Parser-1977"><span class="linenos">1977</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-1978"><a href="#Parser-1978"><span class="linenos">1978</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-1979"><a href="#Parser-1979"><span class="linenos">1979</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> -</span><span id="Parser-1980"><a href="#Parser-1980"><span class="linenos">1980</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> -</span><span id="Parser-1981"><a href="#Parser-1981"><span class="linenos">1981</span></a> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> -</span><span id="Parser-1982"><a href="#Parser-1982"><span class="linenos">1982</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> -</span><span id="Parser-1983"><a href="#Parser-1983"><span class="linenos">1983</span></a> <span class="n">primary</span><span class="o">=</span><span class="n">primary</span><span class="p">,</span> -</span><span id="Parser-1984"><a href="#Parser-1984"><span class="linenos">1984</span></a> <span class="n">amp</span><span class="o">=</span><span class="n">amp</span><span class="p">,</span> -</span><span id="Parser-1985"><a href="#Parser-1985"><span class="linenos">1985</span></a> <span class="p">)</span> -</span><span id="Parser-1986"><a href="#Parser-1986"><span class="linenos">1986</span></a> -</span><span id="Parser-1987"><a href="#Parser-1987"><span class="linenos">1987</span></a> <span class="k">def</span> <span class="nf">_parse_table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-1988"><a href="#Parser-1988"><span class="linenos">1988</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1989"><a href="#Parser-1989"><span class="linenos">1989</span></a> <span class="n">db</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-1990"><a href="#Parser-1990"><span class="linenos">1990</span></a> <span class="n">table</span> <span class="o">=</span> <span class="p">(</span><span class="ow">not</span> <span class="n">schema</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-1991"><a href="#Parser-1991"><span class="linenos">1991</span></a> -</span><span id="Parser-1992"><a href="#Parser-1992"><span class="linenos">1992</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-1993"><a href="#Parser-1993"><span class="linenos">1993</span></a> <span class="k">if</span> <span class="n">catalog</span><span class="p">:</span> -</span><span id="Parser-1994"><a href="#Parser-1994"><span class="linenos">1994</span></a> <span class="c1"># This allows nesting the table in arbitrarily many dot expressions if needed</span> -</span><span id="Parser-1995"><a href="#Parser-1995"><span class="linenos">1995</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="Parser-1996"><a href="#Parser-1996"><span class="linenos">1996</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-1997"><a href="#Parser-1997"><span class="linenos">1997</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> -</span><span id="Parser-1998"><a href="#Parser-1998"><span class="linenos">1998</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> -</span><span id="Parser-1999"><a href="#Parser-1999"><span class="linenos">1999</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-2000"><a href="#Parser-2000"><span class="linenos">2000</span></a> -</span><span id="Parser-2001"><a href="#Parser-2001"><span class="linenos">2001</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> -</span><span id="Parser-2002"><a href="#Parser-2002"><span class="linenos">2002</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected table name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-2003"><a href="#Parser-2003"><span class="linenos">2003</span></a> -</span><span id="Parser-2004"><a href="#Parser-2004"><span class="linenos">2004</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2005"><a href="#Parser-2005"><span class="linenos">2005</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">()</span> -</span><span id="Parser-2006"><a href="#Parser-2006"><span class="linenos">2006</span></a> <span class="p">)</span> +</span><span id="Parser-1954"><a href="#Parser-1954"><span class="linenos">1954</span></a> <span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span> +</span><span id="Parser-1955"><a href="#Parser-1955"><span class="linenos">1955</span></a> <span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">|</span> <span class="nb">bool</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> +</span><span id="Parser-1956"><a href="#Parser-1956"><span class="linenos">1956</span></a> <span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="s2">"this"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()}</span> +</span><span id="Parser-1957"><a href="#Parser-1957"><span class="linenos">1957</span></a> +</span><span id="Parser-1958"><a href="#Parser-1958"><span class="linenos">1958</span></a> <span class="k">if</span> <span class="n">natural</span><span class="p">:</span> +</span><span id="Parser-1959"><a href="#Parser-1959"><span class="linenos">1959</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"natural"</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-1960"><a href="#Parser-1960"><span class="linenos">1960</span></a> <span class="k">if</span> <span class="n">side</span><span class="p">:</span> +</span><span id="Parser-1961"><a href="#Parser-1961"><span class="linenos">1961</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"side"</span><span class="p">]</span> <span class="o">=</span> <span class="n">side</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-1962"><a href="#Parser-1962"><span class="linenos">1962</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Parser-1963"><a href="#Parser-1963"><span class="linenos">1963</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">=</span> <span class="n">kind</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-1964"><a href="#Parser-1964"><span class="linenos">1964</span></a> +</span><span id="Parser-1965"><a href="#Parser-1965"><span class="linenos">1965</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-1966"><a href="#Parser-1966"><span class="linenos">1966</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"on"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-1967"><a href="#Parser-1967"><span class="linenos">1967</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="Parser-1968"><a href="#Parser-1968"><span class="linenos">1968</span></a> <span class="n">kwargs</span><span class="p">[</span><span class="s2">"using"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="Parser-1969"><a href="#Parser-1969"><span class="linenos">1969</span></a> +</span><span id="Parser-1970"><a href="#Parser-1970"><span class="linenos">1970</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-1971"><a href="#Parser-1971"><span class="linenos">1971</span></a> +</span><span id="Parser-1972"><a href="#Parser-1972"><span class="linenos">1972</span></a> <span class="k">def</span> <span class="nf">_parse_index</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-1973"><a href="#Parser-1973"><span class="linenos">1973</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-1974"><a href="#Parser-1974"><span class="linenos">1974</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="Parser-1975"><a href="#Parser-1975"><span class="linenos">1975</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">)</span> <span class="c1"># hive</span> +</span><span id="Parser-1976"><a href="#Parser-1976"><span class="linenos">1976</span></a> +</span><span id="Parser-1977"><a href="#Parser-1977"><span class="linenos">1977</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1978"><a href="#Parser-1978"><span class="linenos">1978</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> +</span><span id="Parser-1979"><a href="#Parser-1979"><span class="linenos">1979</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> +</span><span id="Parser-1980"><a href="#Parser-1980"><span class="linenos">1980</span></a> <span class="n">table</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()),</span> +</span><span id="Parser-1981"><a href="#Parser-1981"><span class="linenos">1981</span></a> <span class="n">columns</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">(),</span> +</span><span id="Parser-1982"><a href="#Parser-1982"><span class="linenos">1982</span></a> <span class="p">)</span> +</span><span id="Parser-1983"><a href="#Parser-1983"><span class="linenos">1983</span></a> +</span><span id="Parser-1984"><a href="#Parser-1984"><span class="linenos">1984</span></a> <span class="k">def</span> <span class="nf">_parse_create_table_index</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-1985"><a href="#Parser-1985"><span class="linenos">1985</span></a> <span class="n">unique</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">)</span> +</span><span id="Parser-1986"><a href="#Parser-1986"><span class="linenos">1986</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"PRIMARY"</span><span class="p">)</span> +</span><span id="Parser-1987"><a href="#Parser-1987"><span class="linenos">1987</span></a> <span class="n">amp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AMP"</span><span class="p">)</span> +</span><span id="Parser-1988"><a href="#Parser-1988"><span class="linenos">1988</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">):</span> +</span><span id="Parser-1989"><a href="#Parser-1989"><span class="linenos">1989</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-1990"><a href="#Parser-1990"><span class="linenos">1990</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-1991"><a href="#Parser-1991"><span class="linenos">1991</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-1992"><a href="#Parser-1992"><span class="linenos">1992</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-1993"><a href="#Parser-1993"><span class="linenos">1993</span></a> <span class="n">columns</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-1994"><a href="#Parser-1994"><span class="linenos">1994</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-1995"><a href="#Parser-1995"><span class="linenos">1995</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> +</span><span id="Parser-1996"><a href="#Parser-1996"><span class="linenos">1996</span></a> <span class="n">this</span><span class="o">=</span><span class="n">index</span><span class="p">,</span> +</span><span id="Parser-1997"><a href="#Parser-1997"><span class="linenos">1997</span></a> <span class="n">columns</span><span class="o">=</span><span class="n">columns</span><span class="p">,</span> +</span><span id="Parser-1998"><a href="#Parser-1998"><span class="linenos">1998</span></a> <span class="n">unique</span><span class="o">=</span><span class="n">unique</span><span class="p">,</span> +</span><span id="Parser-1999"><a href="#Parser-1999"><span class="linenos">1999</span></a> <span class="n">primary</span><span class="o">=</span><span class="n">primary</span><span class="p">,</span> +</span><span id="Parser-2000"><a href="#Parser-2000"><span class="linenos">2000</span></a> <span class="n">amp</span><span class="o">=</span><span class="n">amp</span><span class="p">,</span> +</span><span id="Parser-2001"><a href="#Parser-2001"><span class="linenos">2001</span></a> <span class="p">)</span> +</span><span id="Parser-2002"><a href="#Parser-2002"><span class="linenos">2002</span></a> +</span><span id="Parser-2003"><a href="#Parser-2003"><span class="linenos">2003</span></a> <span class="k">def</span> <span class="nf">_parse_table_parts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2004"><a href="#Parser-2004"><span class="linenos">2004</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2005"><a href="#Parser-2005"><span class="linenos">2005</span></a> <span class="n">db</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2006"><a href="#Parser-2006"><span class="linenos">2006</span></a> <span class="n">table</span> <span class="o">=</span> <span class="p">(</span><span class="ow">not</span> <span class="n">schema</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> </span><span id="Parser-2007"><a href="#Parser-2007"><span class="linenos">2007</span></a> -</span><span id="Parser-2008"><a href="#Parser-2008"><span class="linenos">2008</span></a> <span class="k">def</span> <span class="nf">_parse_table</span><span class="p">(</span> -</span><span id="Parser-2009"><a href="#Parser-2009"><span class="linenos">2009</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2010"><a href="#Parser-2010"><span class="linenos">2010</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2011"><a href="#Parser-2011"><span class="linenos">2011</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> -</span><span id="Parser-2012"><a href="#Parser-2012"><span class="linenos">2012</span></a> -</span><span id="Parser-2013"><a href="#Parser-2013"><span class="linenos">2013</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> -</span><span id="Parser-2014"><a href="#Parser-2014"><span class="linenos">2014</span></a> <span class="k">return</span> <span class="n">lateral</span> -</span><span id="Parser-2015"><a href="#Parser-2015"><span class="linenos">2015</span></a> -</span><span id="Parser-2016"><a href="#Parser-2016"><span class="linenos">2016</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> -</span><span id="Parser-2017"><a href="#Parser-2017"><span class="linenos">2017</span></a> -</span><span id="Parser-2018"><a href="#Parser-2018"><span class="linenos">2018</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="Parser-2019"><a href="#Parser-2019"><span class="linenos">2019</span></a> <span class="k">return</span> <span class="n">unnest</span> -</span><span id="Parser-2020"><a href="#Parser-2020"><span class="linenos">2020</span></a> -</span><span id="Parser-2021"><a href="#Parser-2021"><span class="linenos">2021</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> -</span><span id="Parser-2022"><a href="#Parser-2022"><span class="linenos">2022</span></a> -</span><span id="Parser-2023"><a href="#Parser-2023"><span class="linenos">2023</span></a> <span class="k">if</span> <span class="n">values</span><span class="p">:</span> -</span><span id="Parser-2024"><a href="#Parser-2024"><span class="linenos">2024</span></a> <span class="k">return</span> <span class="n">values</span> -</span><span id="Parser-2025"><a href="#Parser-2025"><span class="linenos">2025</span></a> -</span><span id="Parser-2026"><a href="#Parser-2026"><span class="linenos">2026</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2027"><a href="#Parser-2027"><span class="linenos">2027</span></a> -</span><span id="Parser-2028"><a href="#Parser-2028"><span class="linenos">2028</span></a> <span class="k">if</span> <span class="n">subquery</span><span class="p">:</span> -</span><span id="Parser-2029"><a href="#Parser-2029"><span class="linenos">2029</span></a> <span class="k">return</span> <span class="n">subquery</span> -</span><span id="Parser-2030"><a href="#Parser-2030"><span class="linenos">2030</span></a> -</span><span id="Parser-2031"><a href="#Parser-2031"><span class="linenos">2031</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> -</span><span id="Parser-2032"><a href="#Parser-2032"><span class="linenos">2032</span></a> -</span><span id="Parser-2033"><a href="#Parser-2033"><span class="linenos">2033</span></a> <span class="k">if</span> <span class="n">schema</span><span class="p">:</span> -</span><span id="Parser-2034"><a href="#Parser-2034"><span class="linenos">2034</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2035"><a href="#Parser-2035"><span class="linenos">2035</span></a> -</span><span id="Parser-2036"><a href="#Parser-2036"><span class="linenos">2036</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span><span class="p">:</span> -</span><span id="Parser-2037"><a href="#Parser-2037"><span class="linenos">2037</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="Parser-2008"><a href="#Parser-2008"><span class="linenos">2008</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-2009"><a href="#Parser-2009"><span class="linenos">2009</span></a> <span class="k">if</span> <span class="n">catalog</span><span class="p">:</span> +</span><span id="Parser-2010"><a href="#Parser-2010"><span class="linenos">2010</span></a> <span class="c1"># This allows nesting the table in arbitrarily many dot expressions if needed</span> +</span><span id="Parser-2011"><a href="#Parser-2011"><span class="linenos">2011</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> +</span><span id="Parser-2012"><a href="#Parser-2012"><span class="linenos">2012</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2013"><a href="#Parser-2013"><span class="linenos">2013</span></a> <span class="n">catalog</span> <span class="o">=</span> <span class="n">db</span> +</span><span id="Parser-2014"><a href="#Parser-2014"><span class="linenos">2014</span></a> <span class="n">db</span> <span class="o">=</span> <span class="n">table</span> +</span><span id="Parser-2015"><a href="#Parser-2015"><span class="linenos">2015</span></a> <span class="n">table</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-2016"><a href="#Parser-2016"><span class="linenos">2016</span></a> +</span><span id="Parser-2017"><a href="#Parser-2017"><span class="linenos">2017</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">table</span><span class="p">:</span> +</span><span id="Parser-2018"><a href="#Parser-2018"><span class="linenos">2018</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected table name but got </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-2019"><a href="#Parser-2019"><span class="linenos">2019</span></a> +</span><span id="Parser-2020"><a href="#Parser-2020"><span class="linenos">2020</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2021"><a href="#Parser-2021"><span class="linenos">2021</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Table</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">db</span><span class="o">=</span><span class="n">db</span><span class="p">,</span> <span class="n">catalog</span><span class="o">=</span><span class="n">catalog</span><span class="p">,</span> <span class="n">pivots</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">()</span> +</span><span id="Parser-2022"><a href="#Parser-2022"><span class="linenos">2022</span></a> <span class="p">)</span> +</span><span id="Parser-2023"><a href="#Parser-2023"><span class="linenos">2023</span></a> +</span><span id="Parser-2024"><a href="#Parser-2024"><span class="linenos">2024</span></a> <span class="k">def</span> <span class="nf">_parse_table</span><span class="p">(</span> +</span><span id="Parser-2025"><a href="#Parser-2025"><span class="linenos">2025</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">schema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="n">alias_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2026"><a href="#Parser-2026"><span class="linenos">2026</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2027"><a href="#Parser-2027"><span class="linenos">2027</span></a> <span class="n">lateral</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_lateral</span><span class="p">()</span> +</span><span id="Parser-2028"><a href="#Parser-2028"><span class="linenos">2028</span></a> +</span><span id="Parser-2029"><a href="#Parser-2029"><span class="linenos">2029</span></a> <span class="k">if</span> <span class="n">lateral</span><span class="p">:</span> +</span><span id="Parser-2030"><a href="#Parser-2030"><span class="linenos">2030</span></a> <span class="k">return</span> <span class="n">lateral</span> +</span><span id="Parser-2031"><a href="#Parser-2031"><span class="linenos">2031</span></a> +</span><span id="Parser-2032"><a href="#Parser-2032"><span class="linenos">2032</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> +</span><span id="Parser-2033"><a href="#Parser-2033"><span class="linenos">2033</span></a> +</span><span id="Parser-2034"><a href="#Parser-2034"><span class="linenos">2034</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="Parser-2035"><a href="#Parser-2035"><span class="linenos">2035</span></a> <span class="k">return</span> <span class="n">unnest</span> +</span><span id="Parser-2036"><a href="#Parser-2036"><span class="linenos">2036</span></a> +</span><span id="Parser-2037"><a href="#Parser-2037"><span class="linenos">2037</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_derived_table_values</span><span class="p">()</span> </span><span id="Parser-2038"><a href="#Parser-2038"><span class="linenos">2038</span></a> -</span><span id="Parser-2039"><a href="#Parser-2039"><span class="linenos">2039</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="Parser-2040"><a href="#Parser-2040"><span class="linenos">2040</span></a> -</span><span id="Parser-2041"><a href="#Parser-2041"><span class="linenos">2041</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-2042"><a href="#Parser-2042"><span class="linenos">2042</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> +</span><span id="Parser-2039"><a href="#Parser-2039"><span class="linenos">2039</span></a> <span class="k">if</span> <span class="n">values</span><span class="p">:</span> +</span><span id="Parser-2040"><a href="#Parser-2040"><span class="linenos">2040</span></a> <span class="k">return</span> <span class="n">values</span> +</span><span id="Parser-2041"><a href="#Parser-2041"><span class="linenos">2041</span></a> +</span><span id="Parser-2042"><a href="#Parser-2042"><span class="linenos">2042</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">table</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="Parser-2043"><a href="#Parser-2043"><span class="linenos">2043</span></a> -</span><span id="Parser-2044"><a href="#Parser-2044"><span class="linenos">2044</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2045"><a href="#Parser-2045"><span class="linenos">2045</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> -</span><span id="Parser-2046"><a href="#Parser-2046"><span class="linenos">2046</span></a> <span class="s2">"hints"</span><span class="p">,</span> -</span><span id="Parser-2047"><a href="#Parser-2047"><span class="linenos">2047</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="Parser-2048"><a href="#Parser-2048"><span class="linenos">2048</span></a> <span class="p">)</span> -</span><span id="Parser-2049"><a href="#Parser-2049"><span class="linenos">2049</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2050"><a href="#Parser-2050"><span class="linenos">2050</span></a> -</span><span id="Parser-2051"><a href="#Parser-2051"><span class="linenos">2051</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span><span class="p">:</span> -</span><span id="Parser-2052"><a href="#Parser-2052"><span class="linenos">2052</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> -</span><span id="Parser-2053"><a href="#Parser-2053"><span class="linenos">2053</span></a> -</span><span id="Parser-2054"><a href="#Parser-2054"><span class="linenos">2054</span></a> <span class="k">if</span> <span class="n">table_sample</span><span class="p">:</span> -</span><span id="Parser-2055"><a href="#Parser-2055"><span class="linenos">2055</span></a> <span class="n">table_sample</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2056"><a href="#Parser-2056"><span class="linenos">2056</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">table_sample</span> -</span><span id="Parser-2057"><a href="#Parser-2057"><span class="linenos">2057</span></a> -</span><span id="Parser-2058"><a href="#Parser-2058"><span class="linenos">2058</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2044"><a href="#Parser-2044"><span class="linenos">2044</span></a> <span class="k">if</span> <span class="n">subquery</span><span class="p">:</span> +</span><span id="Parser-2045"><a href="#Parser-2045"><span class="linenos">2045</span></a> <span class="k">return</span> <span class="n">subquery</span> +</span><span id="Parser-2046"><a href="#Parser-2046"><span class="linenos">2046</span></a> +</span><span id="Parser-2047"><a href="#Parser-2047"><span class="linenos">2047</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_parts</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="n">schema</span><span class="p">)</span> +</span><span id="Parser-2048"><a href="#Parser-2048"><span class="linenos">2048</span></a> +</span><span id="Parser-2049"><a href="#Parser-2049"><span class="linenos">2049</span></a> <span class="k">if</span> <span class="n">schema</span><span class="p">:</span> +</span><span id="Parser-2050"><a href="#Parser-2050"><span class="linenos">2050</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_schema</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2051"><a href="#Parser-2051"><span class="linenos">2051</span></a> +</span><span id="Parser-2052"><a href="#Parser-2052"><span class="linenos">2052</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span><span class="p">:</span> +</span><span id="Parser-2053"><a href="#Parser-2053"><span class="linenos">2053</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="Parser-2054"><a href="#Parser-2054"><span class="linenos">2054</span></a> +</span><span id="Parser-2055"><a href="#Parser-2055"><span class="linenos">2055</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">(</span><span class="n">alias_tokens</span><span class="o">=</span><span class="n">alias_tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">TABLE_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="Parser-2056"><a href="#Parser-2056"><span class="linenos">2056</span></a> +</span><span id="Parser-2057"><a href="#Parser-2057"><span class="linenos">2057</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-2058"><a href="#Parser-2058"><span class="linenos">2058</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="n">alias</span><span class="p">)</span> </span><span id="Parser-2059"><a href="#Parser-2059"><span class="linenos">2059</span></a> -</span><span id="Parser-2060"><a href="#Parser-2060"><span class="linenos">2060</span></a> <span class="k">def</span> <span class="nf">_parse_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2061"><a href="#Parser-2061"><span class="linenos">2061</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">):</span> -</span><span id="Parser-2062"><a href="#Parser-2062"><span class="linenos">2062</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2063"><a href="#Parser-2063"><span class="linenos">2063</span></a> -</span><span id="Parser-2064"><a href="#Parser-2064"><span class="linenos">2064</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-2065"><a href="#Parser-2065"><span class="linenos">2065</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">))</span> -</span><span id="Parser-2066"><a href="#Parser-2066"><span class="linenos">2066</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> -</span><span id="Parser-2067"><a href="#Parser-2067"><span class="linenos">2067</span></a> -</span><span id="Parser-2068"><a href="#Parser-2068"><span class="linenos">2068</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> -</span><span id="Parser-2069"><a href="#Parser-2069"><span class="linenos">2069</span></a> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> -</span><span id="Parser-2070"><a href="#Parser-2070"><span class="linenos">2070</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected extra column alias in unnest."</span><span class="p">)</span> -</span><span id="Parser-2071"><a href="#Parser-2071"><span class="linenos">2071</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="p">[</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> -</span><span id="Parser-2072"><a href="#Parser-2072"><span class="linenos">2072</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> -</span><span id="Parser-2073"><a href="#Parser-2073"><span class="linenos">2073</span></a> -</span><span id="Parser-2074"><a href="#Parser-2074"><span class="linenos">2074</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2075"><a href="#Parser-2075"><span class="linenos">2075</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> -</span><span id="Parser-2076"><a href="#Parser-2076"><span class="linenos">2076</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-2077"><a href="#Parser-2077"><span class="linenos">2077</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-2060"><a href="#Parser-2060"><span class="linenos">2060</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">):</span> +</span><span id="Parser-2061"><a href="#Parser-2061"><span class="linenos">2061</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"pivots"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivots</span><span class="p">())</span> +</span><span id="Parser-2062"><a href="#Parser-2062"><span class="linenos">2062</span></a> +</span><span id="Parser-2063"><a href="#Parser-2063"><span class="linenos">2063</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2064"><a href="#Parser-2064"><span class="linenos">2064</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span> +</span><span id="Parser-2065"><a href="#Parser-2065"><span class="linenos">2065</span></a> <span class="s2">"hints"</span><span class="p">,</span> +</span><span id="Parser-2066"><a href="#Parser-2066"><span class="linenos">2066</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="Parser-2067"><a href="#Parser-2067"><span class="linenos">2067</span></a> <span class="p">)</span> +</span><span id="Parser-2068"><a href="#Parser-2068"><span class="linenos">2068</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2069"><a href="#Parser-2069"><span class="linenos">2069</span></a> +</span><span id="Parser-2070"><a href="#Parser-2070"><span class="linenos">2070</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span><span class="p">:</span> +</span><span id="Parser-2071"><a href="#Parser-2071"><span class="linenos">2071</span></a> <span class="n">table_sample</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_sample</span><span class="p">()</span> +</span><span id="Parser-2072"><a href="#Parser-2072"><span class="linenos">2072</span></a> +</span><span id="Parser-2073"><a href="#Parser-2073"><span class="linenos">2073</span></a> <span class="k">if</span> <span class="n">table_sample</span><span class="p">:</span> +</span><span id="Parser-2074"><a href="#Parser-2074"><span class="linenos">2074</span></a> <span class="n">table_sample</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2075"><a href="#Parser-2075"><span class="linenos">2075</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">table_sample</span> +</span><span id="Parser-2076"><a href="#Parser-2076"><span class="linenos">2076</span></a> +</span><span id="Parser-2077"><a href="#Parser-2077"><span class="linenos">2077</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-2078"><a href="#Parser-2078"><span class="linenos">2078</span></a> -</span><span id="Parser-2079"><a href="#Parser-2079"><span class="linenos">2079</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2080"><a href="#Parser-2080"><span class="linenos">2080</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> -</span><span id="Parser-2081"><a href="#Parser-2081"><span class="linenos">2081</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-2082"><a href="#Parser-2082"><span class="linenos">2082</span></a> <span class="n">ordinality</span><span class="o">=</span><span class="n">ordinality</span><span class="p">,</span> -</span><span id="Parser-2083"><a href="#Parser-2083"><span class="linenos">2083</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> -</span><span id="Parser-2084"><a href="#Parser-2084"><span class="linenos">2084</span></a> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">,</span> -</span><span id="Parser-2085"><a href="#Parser-2085"><span class="linenos">2085</span></a> <span class="p">)</span> +</span><span id="Parser-2079"><a href="#Parser-2079"><span class="linenos">2079</span></a> <span class="k">def</span> <span class="nf">_parse_unnest</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2080"><a href="#Parser-2080"><span class="linenos">2080</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">):</span> +</span><span id="Parser-2081"><a href="#Parser-2081"><span class="linenos">2081</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2082"><a href="#Parser-2082"><span class="linenos">2082</span></a> +</span><span id="Parser-2083"><a href="#Parser-2083"><span class="linenos">2083</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-2084"><a href="#Parser-2084"><span class="linenos">2084</span></a> <span class="n">ordinality</span> <span class="o">=</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">))</span> +</span><span id="Parser-2085"><a href="#Parser-2085"><span class="linenos">2085</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">()</span> </span><span id="Parser-2086"><a href="#Parser-2086"><span class="linenos">2086</span></a> -</span><span id="Parser-2087"><a href="#Parser-2087"><span class="linenos">2087</span></a> <span class="k">def</span> <span class="nf">_parse_derived_table_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2088"><a href="#Parser-2088"><span class="linenos">2088</span></a> <span class="n">is_derived</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> -</span><span id="Parser-2089"><a href="#Parser-2089"><span class="linenos">2089</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_derived</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">):</span> -</span><span id="Parser-2090"><a href="#Parser-2090"><span class="linenos">2090</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2091"><a href="#Parser-2091"><span class="linenos">2091</span></a> -</span><span id="Parser-2092"><a href="#Parser-2092"><span class="linenos">2092</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">)</span> -</span><span id="Parser-2093"><a href="#Parser-2093"><span class="linenos">2093</span></a> -</span><span id="Parser-2094"><a href="#Parser-2094"><span class="linenos">2094</span></a> <span class="k">if</span> <span class="n">is_derived</span><span class="p">:</span> -</span><span id="Parser-2095"><a href="#Parser-2095"><span class="linenos">2095</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2096"><a href="#Parser-2096"><span class="linenos">2096</span></a> -</span><span id="Parser-2097"><a href="#Parser-2097"><span class="linenos">2097</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> -</span><span id="Parser-2098"><a href="#Parser-2098"><span class="linenos">2098</span></a> -</span><span id="Parser-2099"><a href="#Parser-2099"><span class="linenos">2099</span></a> <span class="k">def</span> <span class="nf">_parse_table_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2100"><a href="#Parser-2100"><span class="linenos">2100</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">):</span> -</span><span id="Parser-2101"><a href="#Parser-2101"><span class="linenos">2101</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2102"><a href="#Parser-2102"><span class="linenos">2102</span></a> -</span><span id="Parser-2103"><a href="#Parser-2103"><span class="linenos">2103</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> -</span><span id="Parser-2104"><a href="#Parser-2104"><span class="linenos">2104</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2105"><a href="#Parser-2105"><span class="linenos">2105</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2106"><a href="#Parser-2106"><span class="linenos">2106</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2107"><a href="#Parser-2107"><span class="linenos">2107</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2108"><a href="#Parser-2108"><span class="linenos">2108</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2109"><a href="#Parser-2109"><span class="linenos">2109</span></a> <span class="n">size</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2110"><a href="#Parser-2110"><span class="linenos">2110</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2111"><a href="#Parser-2111"><span class="linenos">2111</span></a> -</span><span id="Parser-2112"><a href="#Parser-2112"><span class="linenos">2112</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-2113"><a href="#Parser-2113"><span class="linenos">2113</span></a> -</span><span id="Parser-2114"><a href="#Parser-2114"><span class="linenos">2114</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">):</span> -</span><span id="Parser-2115"><a href="#Parser-2115"><span class="linenos">2115</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-2116"><a href="#Parser-2116"><span class="linenos">2116</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUT_OF</span><span class="p">)</span> -</span><span id="Parser-2117"><a href="#Parser-2117"><span class="linenos">2117</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-2118"><a href="#Parser-2118"><span class="linenos">2118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="Parser-2119"><a href="#Parser-2119"><span class="linenos">2119</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-2120"><a href="#Parser-2120"><span class="linenos">2120</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2121"><a href="#Parser-2121"><span class="linenos">2121</span></a> <span class="n">num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-2122"><a href="#Parser-2122"><span class="linenos">2122</span></a> -</span><span id="Parser-2123"><a href="#Parser-2123"><span class="linenos">2123</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">):</span> -</span><span id="Parser-2124"><a href="#Parser-2124"><span class="linenos">2124</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="Parser-2125"><a href="#Parser-2125"><span class="linenos">2125</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">):</span> -</span><span id="Parser-2126"><a href="#Parser-2126"><span class="linenos">2126</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="Parser-2127"><a href="#Parser-2127"><span class="linenos">2127</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2128"><a href="#Parser-2128"><span class="linenos">2128</span></a> <span class="n">size</span> <span class="o">=</span> <span class="n">num</span> -</span><span id="Parser-2129"><a href="#Parser-2129"><span class="linenos">2129</span></a> -</span><span id="Parser-2130"><a href="#Parser-2130"><span class="linenos">2130</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2131"><a href="#Parser-2131"><span class="linenos">2131</span></a> -</span><span id="Parser-2132"><a href="#Parser-2132"><span class="linenos">2132</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">):</span> -</span><span id="Parser-2133"><a href="#Parser-2133"><span class="linenos">2133</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">)</span> -</span><span id="Parser-2134"><a href="#Parser-2134"><span class="linenos">2134</span></a> -</span><span id="Parser-2135"><a href="#Parser-2135"><span class="linenos">2135</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2136"><a href="#Parser-2136"><span class="linenos">2136</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span> -</span><span id="Parser-2137"><a href="#Parser-2137"><span class="linenos">2137</span></a> <span class="n">method</span><span class="o">=</span><span class="n">method</span><span class="p">,</span> -</span><span id="Parser-2138"><a href="#Parser-2138"><span class="linenos">2138</span></a> <span class="n">bucket_numerator</span><span class="o">=</span><span class="n">bucket_numerator</span><span class="p">,</span> -</span><span id="Parser-2139"><a href="#Parser-2139"><span class="linenos">2139</span></a> <span class="n">bucket_denominator</span><span class="o">=</span><span class="n">bucket_denominator</span><span class="p">,</span> -</span><span id="Parser-2140"><a href="#Parser-2140"><span class="linenos">2140</span></a> <span class="n">bucket_field</span><span class="o">=</span><span class="n">bucket_field</span><span class="p">,</span> -</span><span id="Parser-2141"><a href="#Parser-2141"><span class="linenos">2141</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> -</span><span id="Parser-2142"><a href="#Parser-2142"><span class="linenos">2142</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> -</span><span id="Parser-2143"><a href="#Parser-2143"><span class="linenos">2143</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> -</span><span id="Parser-2144"><a href="#Parser-2144"><span class="linenos">2144</span></a> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> -</span><span id="Parser-2145"><a href="#Parser-2145"><span class="linenos">2145</span></a> <span class="p">)</span> -</span><span id="Parser-2146"><a href="#Parser-2146"><span class="linenos">2146</span></a> -</span><span id="Parser-2147"><a href="#Parser-2147"><span class="linenos">2147</span></a> <span class="k">def</span> <span class="nf">_parse_pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-2148"><a href="#Parser-2148"><span class="linenos">2148</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span> -</span><span id="Parser-2149"><a href="#Parser-2149"><span class="linenos">2149</span></a> -</span><span id="Parser-2150"><a href="#Parser-2150"><span class="linenos">2150</span></a> <span class="k">def</span> <span class="nf">_parse_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2151"><a href="#Parser-2151"><span class="linenos">2151</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-2152"><a href="#Parser-2152"><span class="linenos">2152</span></a> -</span><span id="Parser-2153"><a href="#Parser-2153"><span class="linenos">2153</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> -</span><span id="Parser-2154"><a href="#Parser-2154"><span class="linenos">2154</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-2155"><a href="#Parser-2155"><span class="linenos">2155</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">):</span> -</span><span id="Parser-2156"><a href="#Parser-2156"><span class="linenos">2156</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-2157"><a href="#Parser-2157"><span class="linenos">2157</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2158"><a href="#Parser-2158"><span class="linenos">2158</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2159"><a href="#Parser-2159"><span class="linenos">2159</span></a> -</span><span id="Parser-2160"><a href="#Parser-2160"><span class="linenos">2160</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-2161"><a href="#Parser-2161"><span class="linenos">2161</span></a> <span class="n">field</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2162"><a href="#Parser-2162"><span class="linenos">2162</span></a> -</span><span id="Parser-2163"><a href="#Parser-2163"><span class="linenos">2163</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2164"><a href="#Parser-2164"><span class="linenos">2164</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2165"><a href="#Parser-2165"><span class="linenos">2165</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2166"><a href="#Parser-2166"><span class="linenos">2166</span></a> -</span><span id="Parser-2167"><a href="#Parser-2167"><span class="linenos">2167</span></a> <span class="k">if</span> <span class="n">unpivot</span><span class="p">:</span> -</span><span id="Parser-2168"><a href="#Parser-2168"><span class="linenos">2168</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-2169"><a href="#Parser-2169"><span class="linenos">2169</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2170"><a href="#Parser-2170"><span class="linenos">2170</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()))</span> +</span><span id="Parser-2087"><a href="#Parser-2087"><span class="linenos">2087</span></a> <span class="k">if</span> <span class="n">alias</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span><span class="p">:</span> +</span><span id="Parser-2088"><a href="#Parser-2088"><span class="linenos">2088</span></a> <span class="k">if</span> <span class="n">alias</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">):</span> +</span><span id="Parser-2089"><a href="#Parser-2089"><span class="linenos">2089</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Unexpected extra column alias in unnest."</span><span class="p">)</span> +</span><span id="Parser-2090"><a href="#Parser-2090"><span class="linenos">2090</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"columns"</span><span class="p">,</span> <span class="p">[</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">])</span> +</span><span id="Parser-2091"><a href="#Parser-2091"><span class="linenos">2091</span></a> <span class="n">alias</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"this"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> +</span><span id="Parser-2092"><a href="#Parser-2092"><span class="linenos">2092</span></a> +</span><span id="Parser-2093"><a href="#Parser-2093"><span class="linenos">2093</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2094"><a href="#Parser-2094"><span class="linenos">2094</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">):</span> +</span><span id="Parser-2095"><a href="#Parser-2095"><span class="linenos">2095</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-2096"><a href="#Parser-2096"><span class="linenos">2096</span></a> <span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-2097"><a href="#Parser-2097"><span class="linenos">2097</span></a> +</span><span id="Parser-2098"><a href="#Parser-2098"><span class="linenos">2098</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2099"><a href="#Parser-2099"><span class="linenos">2099</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> +</span><span id="Parser-2100"><a href="#Parser-2100"><span class="linenos">2100</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-2101"><a href="#Parser-2101"><span class="linenos">2101</span></a> <span class="n">ordinality</span><span class="o">=</span><span class="n">ordinality</span><span class="p">,</span> +</span><span id="Parser-2102"><a href="#Parser-2102"><span class="linenos">2102</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">,</span> +</span><span id="Parser-2103"><a href="#Parser-2103"><span class="linenos">2103</span></a> <span class="n">offset</span><span class="o">=</span><span class="n">offset</span><span class="p">,</span> +</span><span id="Parser-2104"><a href="#Parser-2104"><span class="linenos">2104</span></a> <span class="p">)</span> +</span><span id="Parser-2105"><a href="#Parser-2105"><span class="linenos">2105</span></a> +</span><span id="Parser-2106"><a href="#Parser-2106"><span class="linenos">2106</span></a> <span class="k">def</span> <span class="nf">_parse_derived_table_values</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2107"><a href="#Parser-2107"><span class="linenos">2107</span></a> <span class="n">is_derived</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> +</span><span id="Parser-2108"><a href="#Parser-2108"><span class="linenos">2108</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_derived</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">):</span> +</span><span id="Parser-2109"><a href="#Parser-2109"><span class="linenos">2109</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2110"><a href="#Parser-2110"><span class="linenos">2110</span></a> +</span><span id="Parser-2111"><a href="#Parser-2111"><span class="linenos">2111</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">)</span> +</span><span id="Parser-2112"><a href="#Parser-2112"><span class="linenos">2112</span></a> +</span><span id="Parser-2113"><a href="#Parser-2113"><span class="linenos">2113</span></a> <span class="k">if</span> <span class="n">is_derived</span><span class="p">:</span> +</span><span id="Parser-2114"><a href="#Parser-2114"><span class="linenos">2114</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2115"><a href="#Parser-2115"><span class="linenos">2115</span></a> +</span><span id="Parser-2116"><a href="#Parser-2116"><span class="linenos">2116</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="Parser-2117"><a href="#Parser-2117"><span class="linenos">2117</span></a> +</span><span id="Parser-2118"><a href="#Parser-2118"><span class="linenos">2118</span></a> <span class="k">def</span> <span class="nf">_parse_table_sample</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2119"><a href="#Parser-2119"><span class="linenos">2119</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">):</span> +</span><span id="Parser-2120"><a href="#Parser-2120"><span class="linenos">2120</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2121"><a href="#Parser-2121"><span class="linenos">2121</span></a> +</span><span id="Parser-2122"><a href="#Parser-2122"><span class="linenos">2122</span></a> <span class="n">method</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> +</span><span id="Parser-2123"><a href="#Parser-2123"><span class="linenos">2123</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2124"><a href="#Parser-2124"><span class="linenos">2124</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2125"><a href="#Parser-2125"><span class="linenos">2125</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2126"><a href="#Parser-2126"><span class="linenos">2126</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2127"><a href="#Parser-2127"><span class="linenos">2127</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2128"><a href="#Parser-2128"><span class="linenos">2128</span></a> <span class="n">size</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2129"><a href="#Parser-2129"><span class="linenos">2129</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2130"><a href="#Parser-2130"><span class="linenos">2130</span></a> +</span><span id="Parser-2131"><a href="#Parser-2131"><span class="linenos">2131</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-2132"><a href="#Parser-2132"><span class="linenos">2132</span></a> +</span><span id="Parser-2133"><a href="#Parser-2133"><span class="linenos">2133</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">):</span> +</span><span id="Parser-2134"><a href="#Parser-2134"><span class="linenos">2134</span></a> <span class="n">bucket_numerator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-2135"><a href="#Parser-2135"><span class="linenos">2135</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OUT_OF</span><span class="p">)</span> +</span><span id="Parser-2136"><a href="#Parser-2136"><span class="linenos">2136</span></a> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="n">bucket_denominator</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-2137"><a href="#Parser-2137"><span class="linenos">2137</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="Parser-2138"><a href="#Parser-2138"><span class="linenos">2138</span></a> <span class="n">bucket_field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-2139"><a href="#Parser-2139"><span class="linenos">2139</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2140"><a href="#Parser-2140"><span class="linenos">2140</span></a> <span class="n">num</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-2141"><a href="#Parser-2141"><span class="linenos">2141</span></a> +</span><span id="Parser-2142"><a href="#Parser-2142"><span class="linenos">2142</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">):</span> +</span><span id="Parser-2143"><a href="#Parser-2143"><span class="linenos">2143</span></a> <span class="n">percent</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="Parser-2144"><a href="#Parser-2144"><span class="linenos">2144</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">):</span> +</span><span id="Parser-2145"><a href="#Parser-2145"><span class="linenos">2145</span></a> <span class="n">rows</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="Parser-2146"><a href="#Parser-2146"><span class="linenos">2146</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2147"><a href="#Parser-2147"><span class="linenos">2147</span></a> <span class="n">size</span> <span class="o">=</span> <span class="n">num</span> +</span><span id="Parser-2148"><a href="#Parser-2148"><span class="linenos">2148</span></a> +</span><span id="Parser-2149"><a href="#Parser-2149"><span class="linenos">2149</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2150"><a href="#Parser-2150"><span class="linenos">2150</span></a> +</span><span id="Parser-2151"><a href="#Parser-2151"><span class="linenos">2151</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">):</span> +</span><span id="Parser-2152"><a href="#Parser-2152"><span class="linenos">2152</span></a> <span class="n">seed</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">)</span> +</span><span id="Parser-2153"><a href="#Parser-2153"><span class="linenos">2153</span></a> +</span><span id="Parser-2154"><a href="#Parser-2154"><span class="linenos">2154</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2155"><a href="#Parser-2155"><span class="linenos">2155</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span> +</span><span id="Parser-2156"><a href="#Parser-2156"><span class="linenos">2156</span></a> <span class="n">method</span><span class="o">=</span><span class="n">method</span><span class="p">,</span> +</span><span id="Parser-2157"><a href="#Parser-2157"><span class="linenos">2157</span></a> <span class="n">bucket_numerator</span><span class="o">=</span><span class="n">bucket_numerator</span><span class="p">,</span> +</span><span id="Parser-2158"><a href="#Parser-2158"><span class="linenos">2158</span></a> <span class="n">bucket_denominator</span><span class="o">=</span><span class="n">bucket_denominator</span><span class="p">,</span> +</span><span id="Parser-2159"><a href="#Parser-2159"><span class="linenos">2159</span></a> <span class="n">bucket_field</span><span class="o">=</span><span class="n">bucket_field</span><span class="p">,</span> +</span><span id="Parser-2160"><a href="#Parser-2160"><span class="linenos">2160</span></a> <span class="n">percent</span><span class="o">=</span><span class="n">percent</span><span class="p">,</span> +</span><span id="Parser-2161"><a href="#Parser-2161"><span class="linenos">2161</span></a> <span class="n">rows</span><span class="o">=</span><span class="n">rows</span><span class="p">,</span> +</span><span id="Parser-2162"><a href="#Parser-2162"><span class="linenos">2162</span></a> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> +</span><span id="Parser-2163"><a href="#Parser-2163"><span class="linenos">2163</span></a> <span class="n">seed</span><span class="o">=</span><span class="n">seed</span><span class="p">,</span> +</span><span id="Parser-2164"><a href="#Parser-2164"><span class="linenos">2164</span></a> <span class="p">)</span> +</span><span id="Parser-2165"><a href="#Parser-2165"><span class="linenos">2165</span></a> +</span><span id="Parser-2166"><a href="#Parser-2166"><span class="linenos">2166</span></a> <span class="k">def</span> <span class="nf">_parse_pivots</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-2167"><a href="#Parser-2167"><span class="linenos">2167</span></a> <span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="nb">iter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_pivot</span><span class="p">,</span> <span class="kc">None</span><span class="p">))</span> +</span><span id="Parser-2168"><a href="#Parser-2168"><span class="linenos">2168</span></a> +</span><span id="Parser-2169"><a href="#Parser-2169"><span class="linenos">2169</span></a> <span class="k">def</span> <span class="nf">_parse_pivot</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2170"><a href="#Parser-2170"><span class="linenos">2170</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> </span><span id="Parser-2171"><a href="#Parser-2171"><span class="linenos">2171</span></a> -</span><span id="Parser-2172"><a href="#Parser-2172"><span class="linenos">2172</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="Parser-2173"><a href="#Parser-2173"><span class="linenos">2173</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting FOR"</span><span class="p">)</span> -</span><span id="Parser-2174"><a href="#Parser-2174"><span class="linenos">2174</span></a> -</span><span id="Parser-2175"><a href="#Parser-2175"><span class="linenos">2175</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-2176"><a href="#Parser-2176"><span class="linenos">2176</span></a> -</span><span id="Parser-2177"><a href="#Parser-2177"><span class="linenos">2177</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="Parser-2178"><a href="#Parser-2178"><span class="linenos">2178</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting IN"</span><span class="p">)</span> -</span><span id="Parser-2179"><a href="#Parser-2179"><span class="linenos">2179</span></a> -</span><span id="Parser-2180"><a href="#Parser-2180"><span class="linenos">2180</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="Parser-2172"><a href="#Parser-2172"><span class="linenos">2172</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">):</span> +</span><span id="Parser-2173"><a href="#Parser-2173"><span class="linenos">2173</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2174"><a href="#Parser-2174"><span class="linenos">2174</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">):</span> +</span><span id="Parser-2175"><a href="#Parser-2175"><span class="linenos">2175</span></a> <span class="n">unpivot</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-2176"><a href="#Parser-2176"><span class="linenos">2176</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2177"><a href="#Parser-2177"><span class="linenos">2177</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2178"><a href="#Parser-2178"><span class="linenos">2178</span></a> +</span><span id="Parser-2179"><a href="#Parser-2179"><span class="linenos">2179</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-2180"><a href="#Parser-2180"><span class="linenos">2180</span></a> <span class="n">field</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Parser-2181"><a href="#Parser-2181"><span class="linenos">2181</span></a> -</span><span id="Parser-2182"><a href="#Parser-2182"><span class="linenos">2182</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2183"><a href="#Parser-2183"><span class="linenos">2183</span></a> -</span><span id="Parser-2184"><a href="#Parser-2184"><span class="linenos">2184</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> <span class="n">unpivot</span><span class="o">=</span><span class="n">unpivot</span><span class="p">)</span> +</span><span id="Parser-2182"><a href="#Parser-2182"><span class="linenos">2182</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2183"><a href="#Parser-2183"><span class="linenos">2183</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2184"><a href="#Parser-2184"><span class="linenos">2184</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-2185"><a href="#Parser-2185"><span class="linenos">2185</span></a> -</span><span id="Parser-2186"><a href="#Parser-2186"><span class="linenos">2186</span></a> <span class="k">def</span> <span class="nf">_parse_where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2187"><a href="#Parser-2187"><span class="linenos">2187</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">):</span> -</span><span id="Parser-2188"><a href="#Parser-2188"><span class="linenos">2188</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2189"><a href="#Parser-2189"><span class="linenos">2189</span></a> -</span><span id="Parser-2190"><a href="#Parser-2190"><span class="linenos">2190</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2191"><a href="#Parser-2191"><span class="linenos">2191</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-2192"><a href="#Parser-2192"><span class="linenos">2192</span></a> <span class="p">)</span> +</span><span id="Parser-2186"><a href="#Parser-2186"><span class="linenos">2186</span></a> <span class="k">if</span> <span class="n">unpivot</span><span class="p">:</span> +</span><span id="Parser-2187"><a href="#Parser-2187"><span class="linenos">2187</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-2188"><a href="#Parser-2188"><span class="linenos">2188</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2189"><a href="#Parser-2189"><span class="linenos">2189</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()))</span> +</span><span id="Parser-2190"><a href="#Parser-2190"><span class="linenos">2190</span></a> +</span><span id="Parser-2191"><a href="#Parser-2191"><span class="linenos">2191</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="Parser-2192"><a href="#Parser-2192"><span class="linenos">2192</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting FOR"</span><span class="p">)</span> </span><span id="Parser-2193"><a href="#Parser-2193"><span class="linenos">2193</span></a> -</span><span id="Parser-2194"><a href="#Parser-2194"><span class="linenos">2194</span></a> <span class="k">def</span> <span class="nf">_parse_group</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_group_by_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2195"><a href="#Parser-2195"><span class="linenos">2195</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_group_by_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">):</span> -</span><span id="Parser-2196"><a href="#Parser-2196"><span class="linenos">2196</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2197"><a href="#Parser-2197"><span class="linenos">2197</span></a> -</span><span id="Parser-2198"><a href="#Parser-2198"><span class="linenos">2198</span></a> <span class="n">elements</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span> -</span><span id="Parser-2199"><a href="#Parser-2199"><span class="linenos">2199</span></a> -</span><span id="Parser-2200"><a href="#Parser-2200"><span class="linenos">2200</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-2201"><a href="#Parser-2201"><span class="linenos">2201</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-2202"><a href="#Parser-2202"><span class="linenos">2202</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Parser-2203"><a href="#Parser-2203"><span class="linenos">2203</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2194"><a href="#Parser-2194"><span class="linenos">2194</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-2195"><a href="#Parser-2195"><span class="linenos">2195</span></a> +</span><span id="Parser-2196"><a href="#Parser-2196"><span class="linenos">2196</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="Parser-2197"><a href="#Parser-2197"><span class="linenos">2197</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting IN"</span><span class="p">)</span> +</span><span id="Parser-2198"><a href="#Parser-2198"><span class="linenos">2198</span></a> +</span><span id="Parser-2199"><a href="#Parser-2199"><span class="linenos">2199</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_in</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="Parser-2200"><a href="#Parser-2200"><span class="linenos">2200</span></a> +</span><span id="Parser-2201"><a href="#Parser-2201"><span class="linenos">2201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2202"><a href="#Parser-2202"><span class="linenos">2202</span></a> +</span><span id="Parser-2203"><a href="#Parser-2203"><span class="linenos">2203</span></a> <span class="n">pivot</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">field</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> <span class="n">unpivot</span><span class="o">=</span><span class="n">unpivot</span><span class="p">)</span> </span><span id="Parser-2204"><a href="#Parser-2204"><span class="linenos">2204</span></a> -</span><span id="Parser-2205"><a href="#Parser-2205"><span class="linenos">2205</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_sets</span><span class="p">()</span> -</span><span id="Parser-2206"><a href="#Parser-2206"><span class="linenos">2206</span></a> <span class="k">if</span> <span class="n">grouping_sets</span><span class="p">:</span> -</span><span id="Parser-2207"><a href="#Parser-2207"><span class="linenos">2207</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"grouping_sets"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span> -</span><span id="Parser-2208"><a href="#Parser-2208"><span class="linenos">2208</span></a> -</span><span id="Parser-2209"><a href="#Parser-2209"><span class="linenos">2209</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2210"><a href="#Parser-2210"><span class="linenos">2210</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2211"><a href="#Parser-2211"><span class="linenos">2211</span></a> -</span><span id="Parser-2212"><a href="#Parser-2212"><span class="linenos">2212</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> -</span><span id="Parser-2213"><a href="#Parser-2213"><span class="linenos">2213</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">):</span> -</span><span id="Parser-2214"><a href="#Parser-2214"><span class="linenos">2214</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-2215"><a href="#Parser-2215"><span class="linenos">2215</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"rollup"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">rollup</span><span class="p">))</span> -</span><span id="Parser-2216"><a href="#Parser-2216"><span class="linenos">2216</span></a> -</span><span id="Parser-2217"><a href="#Parser-2217"><span class="linenos">2217</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">):</span> -</span><span id="Parser-2218"><a href="#Parser-2218"><span class="linenos">2218</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-2219"><a href="#Parser-2219"><span class="linenos">2219</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"cube"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cube</span><span class="p">))</span> -</span><span id="Parser-2220"><a href="#Parser-2220"><span class="linenos">2220</span></a> -</span><span id="Parser-2221"><a href="#Parser-2221"><span class="linenos">2221</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">expressions</span> <span class="ow">or</span> <span class="n">grouping_sets</span> <span class="ow">or</span> <span class="n">rollup</span> <span class="ow">or</span> <span class="n">cube</span><span class="p">):</span> -</span><span id="Parser-2222"><a href="#Parser-2222"><span class="linenos">2222</span></a> <span class="k">break</span> +</span><span id="Parser-2205"><a href="#Parser-2205"><span class="linenos">2205</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">),</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-2206"><a href="#Parser-2206"><span class="linenos">2206</span></a> <span class="n">pivot</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"alias"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table_alias</span><span class="p">())</span> +</span><span id="Parser-2207"><a href="#Parser-2207"><span class="linenos">2207</span></a> +</span><span id="Parser-2208"><a href="#Parser-2208"><span class="linenos">2208</span></a> <span class="k">return</span> <span class="n">pivot</span> +</span><span id="Parser-2209"><a href="#Parser-2209"><span class="linenos">2209</span></a> +</span><span id="Parser-2210"><a href="#Parser-2210"><span class="linenos">2210</span></a> <span class="k">def</span> <span class="nf">_parse_where</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_where_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2211"><a href="#Parser-2211"><span class="linenos">2211</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_where_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">):</span> +</span><span id="Parser-2212"><a href="#Parser-2212"><span class="linenos">2212</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2213"><a href="#Parser-2213"><span class="linenos">2213</span></a> +</span><span id="Parser-2214"><a href="#Parser-2214"><span class="linenos">2214</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2215"><a href="#Parser-2215"><span class="linenos">2215</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Where</span><span class="p">,</span> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-2216"><a href="#Parser-2216"><span class="linenos">2216</span></a> <span class="p">)</span> +</span><span id="Parser-2217"><a href="#Parser-2217"><span class="linenos">2217</span></a> +</span><span id="Parser-2218"><a href="#Parser-2218"><span class="linenos">2218</span></a> <span class="k">def</span> <span class="nf">_parse_group</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_group_by_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2219"><a href="#Parser-2219"><span class="linenos">2219</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_group_by_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">):</span> +</span><span id="Parser-2220"><a href="#Parser-2220"><span class="linenos">2220</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2221"><a href="#Parser-2221"><span class="linenos">2221</span></a> +</span><span id="Parser-2222"><a href="#Parser-2222"><span class="linenos">2222</span></a> <span class="n">elements</span> <span class="o">=</span> <span class="n">defaultdict</span><span class="p">(</span><span class="nb">list</span><span class="p">)</span> </span><span id="Parser-2223"><a href="#Parser-2223"><span class="linenos">2223</span></a> -</span><span id="Parser-2224"><a href="#Parser-2224"><span class="linenos">2224</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">,</span> <span class="o">**</span><span class="n">elements</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-2225"><a href="#Parser-2225"><span class="linenos">2225</span></a> -</span><span id="Parser-2226"><a href="#Parser-2226"><span class="linenos">2226</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_sets</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="Parser-2227"><a href="#Parser-2227"><span class="linenos">2227</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">):</span> -</span><span id="Parser-2228"><a href="#Parser-2228"><span class="linenos">2228</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2229"><a href="#Parser-2229"><span class="linenos">2229</span></a> -</span><span id="Parser-2230"><a href="#Parser-2230"><span class="linenos">2230</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_set</span><span class="p">)</span> -</span><span id="Parser-2231"><a href="#Parser-2231"><span class="linenos">2231</span></a> -</span><span id="Parser-2232"><a href="#Parser-2232"><span class="linenos">2232</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2233"><a href="#Parser-2233"><span class="linenos">2233</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2234"><a href="#Parser-2234"><span class="linenos">2234</span></a> <span class="n">grouping_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-2235"><a href="#Parser-2235"><span class="linenos">2235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2236"><a href="#Parser-2236"><span class="linenos">2236</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">grouping_set</span><span class="p">)</span> -</span><span id="Parser-2237"><a href="#Parser-2237"><span class="linenos">2237</span></a> -</span><span id="Parser-2238"><a href="#Parser-2238"><span class="linenos">2238</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-2239"><a href="#Parser-2239"><span class="linenos">2239</span></a> -</span><span id="Parser-2240"><a href="#Parser-2240"><span class="linenos">2240</span></a> <span class="k">def</span> <span class="nf">_parse_having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_having_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2241"><a href="#Parser-2241"><span class="linenos">2241</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_having_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> -</span><span id="Parser-2242"><a href="#Parser-2242"><span class="linenos">2242</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2243"><a href="#Parser-2243"><span class="linenos">2243</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="Parser-2224"><a href="#Parser-2224"><span class="linenos">2224</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-2225"><a href="#Parser-2225"><span class="linenos">2225</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-2226"><a href="#Parser-2226"><span class="linenos">2226</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Parser-2227"><a href="#Parser-2227"><span class="linenos">2227</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"expressions"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2228"><a href="#Parser-2228"><span class="linenos">2228</span></a> +</span><span id="Parser-2229"><a href="#Parser-2229"><span class="linenos">2229</span></a> <span class="n">grouping_sets</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_sets</span><span class="p">()</span> +</span><span id="Parser-2230"><a href="#Parser-2230"><span class="linenos">2230</span></a> <span class="k">if</span> <span class="n">grouping_sets</span><span class="p">:</span> +</span><span id="Parser-2231"><a href="#Parser-2231"><span class="linenos">2231</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"grouping_sets"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">grouping_sets</span><span class="p">)</span> +</span><span id="Parser-2232"><a href="#Parser-2232"><span class="linenos">2232</span></a> +</span><span id="Parser-2233"><a href="#Parser-2233"><span class="linenos">2233</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2234"><a href="#Parser-2234"><span class="linenos">2234</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2235"><a href="#Parser-2235"><span class="linenos">2235</span></a> +</span><span id="Parser-2236"><a href="#Parser-2236"><span class="linenos">2236</span></a> <span class="n">with_</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">)</span> +</span><span id="Parser-2237"><a href="#Parser-2237"><span class="linenos">2237</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">):</span> +</span><span id="Parser-2238"><a href="#Parser-2238"><span class="linenos">2238</span></a> <span class="n">rollup</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-2239"><a href="#Parser-2239"><span class="linenos">2239</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"rollup"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">rollup</span><span class="p">))</span> +</span><span id="Parser-2240"><a href="#Parser-2240"><span class="linenos">2240</span></a> +</span><span id="Parser-2241"><a href="#Parser-2241"><span class="linenos">2241</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">):</span> +</span><span id="Parser-2242"><a href="#Parser-2242"><span class="linenos">2242</span></a> <span class="n">cube</span> <span class="o">=</span> <span class="n">with_</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-2243"><a href="#Parser-2243"><span class="linenos">2243</span></a> <span class="n">elements</span><span class="p">[</span><span class="s2">"cube"</span><span class="p">]</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">ensure_list</span><span class="p">(</span><span class="n">cube</span><span class="p">))</span> </span><span id="Parser-2244"><a href="#Parser-2244"><span class="linenos">2244</span></a> -</span><span id="Parser-2245"><a href="#Parser-2245"><span class="linenos">2245</span></a> <span class="k">def</span> <span class="nf">_parse_qualify</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2246"><a href="#Parser-2246"><span class="linenos">2246</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">):</span> -</span><span id="Parser-2247"><a href="#Parser-2247"><span class="linenos">2247</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2248"><a href="#Parser-2248"><span class="linenos">2248</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="Parser-2245"><a href="#Parser-2245"><span class="linenos">2245</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">expressions</span> <span class="ow">or</span> <span class="n">grouping_sets</span> <span class="ow">or</span> <span class="n">rollup</span> <span class="ow">or</span> <span class="n">cube</span><span class="p">):</span> +</span><span id="Parser-2246"><a href="#Parser-2246"><span class="linenos">2246</span></a> <span class="k">break</span> +</span><span id="Parser-2247"><a href="#Parser-2247"><span class="linenos">2247</span></a> +</span><span id="Parser-2248"><a href="#Parser-2248"><span class="linenos">2248</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Group</span><span class="p">,</span> <span class="o">**</span><span class="n">elements</span><span class="p">)</span> <span class="c1"># type: ignore</span> </span><span id="Parser-2249"><a href="#Parser-2249"><span class="linenos">2249</span></a> -</span><span id="Parser-2250"><a href="#Parser-2250"><span class="linenos">2250</span></a> <span class="k">def</span> <span class="nf">_parse_order</span><span class="p">(</span> -</span><span id="Parser-2251"><a href="#Parser-2251"><span class="linenos">2251</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">skip_order_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-2252"><a href="#Parser-2252"><span class="linenos">2252</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2253"><a href="#Parser-2253"><span class="linenos">2253</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_order_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">):</span> -</span><span id="Parser-2254"><a href="#Parser-2254"><span class="linenos">2254</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2250"><a href="#Parser-2250"><span class="linenos">2250</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_sets</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="Parser-2251"><a href="#Parser-2251"><span class="linenos">2251</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">):</span> +</span><span id="Parser-2252"><a href="#Parser-2252"><span class="linenos">2252</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2253"><a href="#Parser-2253"><span class="linenos">2253</span></a> +</span><span id="Parser-2254"><a href="#Parser-2254"><span class="linenos">2254</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_grouping_set</span><span class="p">)</span> </span><span id="Parser-2255"><a href="#Parser-2255"><span class="linenos">2255</span></a> -</span><span id="Parser-2256"><a href="#Parser-2256"><span class="linenos">2256</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2257"><a href="#Parser-2257"><span class="linenos">2257</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</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">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> -</span><span id="Parser-2258"><a href="#Parser-2258"><span class="linenos">2258</span></a> <span class="p">)</span> -</span><span id="Parser-2259"><a href="#Parser-2259"><span class="linenos">2259</span></a> -</span><span id="Parser-2260"><a href="#Parser-2260"><span class="linenos">2260</span></a> <span class="k">def</span> <span class="nf">_parse_sort</span><span class="p">(</span> -</span><span id="Parser-2261"><a href="#Parser-2261"><span class="linenos">2261</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-2262"><a href="#Parser-2262"><span class="linenos">2262</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2263"><a href="#Parser-2263"><span class="linenos">2263</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">):</span> -</span><span id="Parser-2264"><a href="#Parser-2264"><span class="linenos">2264</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2265"><a href="#Parser-2265"><span class="linenos">2265</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">))</span> -</span><span id="Parser-2266"><a href="#Parser-2266"><span class="linenos">2266</span></a> -</span><span id="Parser-2267"><a href="#Parser-2267"><span class="linenos">2267</span></a> <span class="k">def</span> <span class="nf">_parse_ordered</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-2268"><a href="#Parser-2268"><span class="linenos">2268</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-2269"><a href="#Parser-2269"><span class="linenos">2269</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">)</span> -</span><span id="Parser-2270"><a href="#Parser-2270"><span class="linenos">2270</span></a> <span class="n">is_desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">)</span> -</span><span id="Parser-2271"><a href="#Parser-2271"><span class="linenos">2271</span></a> <span class="n">is_nulls_first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_FIRST</span><span class="p">)</span> -</span><span id="Parser-2272"><a href="#Parser-2272"><span class="linenos">2272</span></a> <span class="n">is_nulls_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_LAST</span><span class="p">)</span> -</span><span id="Parser-2273"><a href="#Parser-2273"><span class="linenos">2273</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="n">is_desc</span> <span class="ow">or</span> <span class="kc">False</span> -</span><span id="Parser-2274"><a href="#Parser-2274"><span class="linenos">2274</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> -</span><span id="Parser-2275"><a href="#Parser-2275"><span class="linenos">2275</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="kc">False</span> -</span><span id="Parser-2276"><a href="#Parser-2276"><span class="linenos">2276</span></a> <span class="n">explicitly_null_ordered</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="n">is_nulls_last</span> -</span><span id="Parser-2277"><a href="#Parser-2277"><span class="linenos">2277</span></a> <span class="k">if</span> <span class="p">(</span> -</span><span id="Parser-2278"><a href="#Parser-2278"><span class="linenos">2278</span></a> <span class="ow">not</span> <span class="n">explicitly_null_ordered</span> -</span><span id="Parser-2279"><a href="#Parser-2279"><span class="linenos">2279</span></a> <span class="ow">and</span> <span class="p">(</span> -</span><span id="Parser-2280"><a href="#Parser-2280"><span class="linenos">2280</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> -</span><span id="Parser-2281"><a href="#Parser-2281"><span class="linenos">2281</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">!=</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> -</span><span id="Parser-2282"><a href="#Parser-2282"><span class="linenos">2282</span></a> <span class="p">)</span> -</span><span id="Parser-2283"><a href="#Parser-2283"><span class="linenos">2283</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">!=</span> <span class="s2">"nulls_are_last"</span> -</span><span id="Parser-2284"><a href="#Parser-2284"><span class="linenos">2284</span></a> <span class="p">):</span> -</span><span id="Parser-2285"><a href="#Parser-2285"><span class="linenos">2285</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-2286"><a href="#Parser-2286"><span class="linenos">2286</span></a> -</span><span id="Parser-2287"><a href="#Parser-2287"><span class="linenos">2287</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Ordered</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">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">nulls_first</span><span class="o">=</span><span class="n">nulls_first</span><span class="p">)</span> -</span><span id="Parser-2288"><a href="#Parser-2288"><span class="linenos">2288</span></a> -</span><span id="Parser-2289"><a href="#Parser-2289"><span class="linenos">2289</span></a> <span class="k">def</span> <span class="nf">_parse_limit</span><span class="p">(</span> -</span><span id="Parser-2290"><a href="#Parser-2290"><span class="linenos">2290</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">top</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-2291"><a href="#Parser-2291"><span class="linenos">2291</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2292"><a href="#Parser-2292"><span class="linenos">2292</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">):</span> -</span><span id="Parser-2293"><a href="#Parser-2293"><span class="linenos">2293</span></a> <span class="n">limit_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> -</span><span id="Parser-2294"><a href="#Parser-2294"><span class="linenos">2294</span></a> <span class="n">limit_exp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2295"><a href="#Parser-2295"><span class="linenos">2295</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-2296"><a href="#Parser-2296"><span class="linenos">2296</span></a> <span class="p">)</span> -</span><span id="Parser-2297"><a href="#Parser-2297"><span class="linenos">2297</span></a> -</span><span id="Parser-2298"><a href="#Parser-2298"><span class="linenos">2298</span></a> <span class="k">if</span> <span class="n">limit_paren</span><span class="p">:</span> -</span><span id="Parser-2299"><a href="#Parser-2299"><span class="linenos">2299</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2300"><a href="#Parser-2300"><span class="linenos">2300</span></a> -</span><span id="Parser-2301"><a href="#Parser-2301"><span class="linenos">2301</span></a> <span class="k">return</span> <span class="n">limit_exp</span> -</span><span id="Parser-2302"><a href="#Parser-2302"><span class="linenos">2302</span></a> -</span><span id="Parser-2303"><a href="#Parser-2303"><span class="linenos">2303</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">):</span> -</span><span id="Parser-2304"><a href="#Parser-2304"><span class="linenos">2304</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">))</span> -</span><span id="Parser-2305"><a href="#Parser-2305"><span class="linenos">2305</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">"FIRST"</span> -</span><span id="Parser-2306"><a href="#Parser-2306"><span class="linenos">2306</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-2307"><a href="#Parser-2307"><span class="linenos">2307</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> -</span><span id="Parser-2308"><a href="#Parser-2308"><span class="linenos">2308</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">)</span> -</span><span id="Parser-2309"><a href="#Parser-2309"><span class="linenos">2309</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Fetch</span><span class="p">,</span> <span class="n">direction</span><span class="o">=</span><span class="n">direction</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="n">count</span><span class="p">)</span> +</span><span id="Parser-2256"><a href="#Parser-2256"><span class="linenos">2256</span></a> <span class="k">def</span> <span class="nf">_parse_grouping_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2257"><a href="#Parser-2257"><span class="linenos">2257</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2258"><a href="#Parser-2258"><span class="linenos">2258</span></a> <span class="n">grouping_set</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-2259"><a href="#Parser-2259"><span class="linenos">2259</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2260"><a href="#Parser-2260"><span class="linenos">2260</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">grouping_set</span><span class="p">)</span> +</span><span id="Parser-2261"><a href="#Parser-2261"><span class="linenos">2261</span></a> +</span><span id="Parser-2262"><a href="#Parser-2262"><span class="linenos">2262</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-2263"><a href="#Parser-2263"><span class="linenos">2263</span></a> +</span><span id="Parser-2264"><a href="#Parser-2264"><span class="linenos">2264</span></a> <span class="k">def</span> <span class="nf">_parse_having</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">skip_having_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2265"><a href="#Parser-2265"><span class="linenos">2265</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_having_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">):</span> +</span><span id="Parser-2266"><a href="#Parser-2266"><span class="linenos">2266</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2267"><a href="#Parser-2267"><span class="linenos">2267</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="Parser-2268"><a href="#Parser-2268"><span class="linenos">2268</span></a> +</span><span id="Parser-2269"><a href="#Parser-2269"><span class="linenos">2269</span></a> <span class="k">def</span> <span class="nf">_parse_qualify</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2270"><a href="#Parser-2270"><span class="linenos">2270</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">):</span> +</span><span id="Parser-2271"><a href="#Parser-2271"><span class="linenos">2271</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2272"><a href="#Parser-2272"><span class="linenos">2272</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Qualify</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="Parser-2273"><a href="#Parser-2273"><span class="linenos">2273</span></a> +</span><span id="Parser-2274"><a href="#Parser-2274"><span class="linenos">2274</span></a> <span class="k">def</span> <span class="nf">_parse_order</span><span class="p">(</span> +</span><span id="Parser-2275"><a href="#Parser-2275"><span class="linenos">2275</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">skip_order_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2276"><a href="#Parser-2276"><span class="linenos">2276</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2277"><a href="#Parser-2277"><span class="linenos">2277</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">skip_order_token</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">):</span> +</span><span id="Parser-2278"><a href="#Parser-2278"><span class="linenos">2278</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2279"><a href="#Parser-2279"><span class="linenos">2279</span></a> +</span><span id="Parser-2280"><a href="#Parser-2280"><span class="linenos">2280</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2281"><a href="#Parser-2281"><span class="linenos">2281</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Order</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">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">)</span> +</span><span id="Parser-2282"><a href="#Parser-2282"><span class="linenos">2282</span></a> <span class="p">)</span> +</span><span id="Parser-2283"><a href="#Parser-2283"><span class="linenos">2283</span></a> +</span><span id="Parser-2284"><a href="#Parser-2284"><span class="linenos">2284</span></a> <span class="k">def</span> <span class="nf">_parse_sort</span><span class="p">(</span> +</span><span id="Parser-2285"><a href="#Parser-2285"><span class="linenos">2285</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-2286"><a href="#Parser-2286"><span class="linenos">2286</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2287"><a href="#Parser-2287"><span class="linenos">2287</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">token_type</span><span class="p">):</span> +</span><span id="Parser-2288"><a href="#Parser-2288"><span class="linenos">2288</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2289"><a href="#Parser-2289"><span class="linenos">2289</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp_class</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_ordered</span><span class="p">))</span> +</span><span id="Parser-2290"><a href="#Parser-2290"><span class="linenos">2290</span></a> +</span><span id="Parser-2291"><a href="#Parser-2291"><span class="linenos">2291</span></a> <span class="k">def</span> <span class="nf">_parse_ordered</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2292"><a href="#Parser-2292"><span class="linenos">2292</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-2293"><a href="#Parser-2293"><span class="linenos">2293</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">)</span> +</span><span id="Parser-2294"><a href="#Parser-2294"><span class="linenos">2294</span></a> <span class="n">is_desc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">)</span> +</span><span id="Parser-2295"><a href="#Parser-2295"><span class="linenos">2295</span></a> <span class="n">is_nulls_first</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_FIRST</span><span class="p">)</span> +</span><span id="Parser-2296"><a href="#Parser-2296"><span class="linenos">2296</span></a> <span class="n">is_nulls_last</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_LAST</span><span class="p">)</span> +</span><span id="Parser-2297"><a href="#Parser-2297"><span class="linenos">2297</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="n">is_desc</span> <span class="ow">or</span> <span class="kc">False</span> +</span><span id="Parser-2298"><a href="#Parser-2298"><span class="linenos">2298</span></a> <span class="n">asc</span> <span class="o">=</span> <span class="ow">not</span> <span class="n">desc</span> +</span><span id="Parser-2299"><a href="#Parser-2299"><span class="linenos">2299</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="kc">False</span> +</span><span id="Parser-2300"><a href="#Parser-2300"><span class="linenos">2300</span></a> <span class="n">explicitly_null_ordered</span> <span class="o">=</span> <span class="n">is_nulls_first</span> <span class="ow">or</span> <span class="n">is_nulls_last</span> +</span><span id="Parser-2301"><a href="#Parser-2301"><span class="linenos">2301</span></a> <span class="k">if</span> <span class="p">(</span> +</span><span id="Parser-2302"><a href="#Parser-2302"><span class="linenos">2302</span></a> <span class="ow">not</span> <span class="n">explicitly_null_ordered</span> +</span><span id="Parser-2303"><a href="#Parser-2303"><span class="linenos">2303</span></a> <span class="ow">and</span> <span class="p">(</span> +</span><span id="Parser-2304"><a href="#Parser-2304"><span class="linenos">2304</span></a> <span class="p">(</span><span class="n">asc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">==</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> +</span><span id="Parser-2305"><a href="#Parser-2305"><span class="linenos">2305</span></a> <span class="ow">or</span> <span class="p">(</span><span class="n">desc</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">!=</span> <span class="s2">"nulls_are_small"</span><span class="p">)</span> +</span><span id="Parser-2306"><a href="#Parser-2306"><span class="linenos">2306</span></a> <span class="p">)</span> +</span><span id="Parser-2307"><a href="#Parser-2307"><span class="linenos">2307</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">!=</span> <span class="s2">"nulls_are_last"</span> +</span><span id="Parser-2308"><a href="#Parser-2308"><span class="linenos">2308</span></a> <span class="p">):</span> +</span><span id="Parser-2309"><a href="#Parser-2309"><span class="linenos">2309</span></a> <span class="n">nulls_first</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Parser-2310"><a href="#Parser-2310"><span class="linenos">2310</span></a> -</span><span id="Parser-2311"><a href="#Parser-2311"><span class="linenos">2311</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2311"><a href="#Parser-2311"><span class="linenos">2311</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Ordered</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">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">,</span> <span class="n">nulls_first</span><span class="o">=</span><span class="n">nulls_first</span><span class="p">)</span> </span><span id="Parser-2312"><a href="#Parser-2312"><span class="linenos">2312</span></a> -</span><span id="Parser-2313"><a href="#Parser-2313"><span class="linenos">2313</span></a> <span class="k">def</span> <span class="nf">_parse_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2314"><a href="#Parser-2314"><span class="linenos">2314</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> -</span><span id="Parser-2315"><a href="#Parser-2315"><span class="linenos">2315</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2316"><a href="#Parser-2316"><span class="linenos">2316</span></a> -</span><span id="Parser-2317"><a href="#Parser-2317"><span class="linenos">2317</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> -</span><span id="Parser-2318"><a href="#Parser-2318"><span class="linenos">2318</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> -</span><span id="Parser-2319"><a href="#Parser-2319"><span class="linenos">2319</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">count</span><span class="p">)</span> -</span><span id="Parser-2320"><a href="#Parser-2320"><span class="linenos">2320</span></a> -</span><span id="Parser-2321"><a href="#Parser-2321"><span class="linenos">2321</span></a> <span class="k">def</span> <span class="nf">_parse_lock</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2322"><a href="#Parser-2322"><span class="linenos">2322</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">):</span> -</span><span id="Parser-2323"><a href="#Parser-2323"><span class="linenos">2323</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2324"><a href="#Parser-2324"><span class="linenos">2324</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">):</span> -</span><span id="Parser-2325"><a href="#Parser-2325"><span class="linenos">2325</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-2313"><a href="#Parser-2313"><span class="linenos">2313</span></a> <span class="k">def</span> <span class="nf">_parse_limit</span><span class="p">(</span> +</span><span id="Parser-2314"><a href="#Parser-2314"><span class="linenos">2314</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">top</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2315"><a href="#Parser-2315"><span class="linenos">2315</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2316"><a href="#Parser-2316"><span class="linenos">2316</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TOP</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">):</span> +</span><span id="Parser-2317"><a href="#Parser-2317"><span class="linenos">2317</span></a> <span class="n">limit_paren</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> +</span><span id="Parser-2318"><a href="#Parser-2318"><span class="linenos">2318</span></a> <span class="n">limit_exp</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2319"><a href="#Parser-2319"><span class="linenos">2319</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Limit</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> <span class="k">if</span> <span class="n">top</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-2320"><a href="#Parser-2320"><span class="linenos">2320</span></a> <span class="p">)</span> +</span><span id="Parser-2321"><a href="#Parser-2321"><span class="linenos">2321</span></a> +</span><span id="Parser-2322"><a href="#Parser-2322"><span class="linenos">2322</span></a> <span class="k">if</span> <span class="n">limit_paren</span><span class="p">:</span> +</span><span id="Parser-2323"><a href="#Parser-2323"><span class="linenos">2323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2324"><a href="#Parser-2324"><span class="linenos">2324</span></a> +</span><span id="Parser-2325"><a href="#Parser-2325"><span class="linenos">2325</span></a> <span class="k">return</span> <span class="n">limit_exp</span> </span><span id="Parser-2326"><a href="#Parser-2326"><span class="linenos">2326</span></a> -</span><span id="Parser-2327"><a href="#Parser-2327"><span class="linenos">2327</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2328"><a href="#Parser-2328"><span class="linenos">2328</span></a> -</span><span id="Parser-2329"><a href="#Parser-2329"><span class="linenos">2329</span></a> <span class="k">def</span> <span class="nf">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2330"><a href="#Parser-2330"><span class="linenos">2330</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_OPERATIONS</span><span class="p">):</span> -</span><span id="Parser-2331"><a href="#Parser-2331"><span class="linenos">2331</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2332"><a href="#Parser-2332"><span class="linenos">2332</span></a> -</span><span id="Parser-2333"><a href="#Parser-2333"><span class="linenos">2333</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-2327"><a href="#Parser-2327"><span class="linenos">2327</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">):</span> +</span><span id="Parser-2328"><a href="#Parser-2328"><span class="linenos">2328</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">))</span> +</span><span id="Parser-2329"><a href="#Parser-2329"><span class="linenos">2329</span></a> <span class="n">direction</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> <span class="k">if</span> <span class="n">direction</span> <span class="k">else</span> <span class="s2">"FIRST"</span> +</span><span id="Parser-2330"><a href="#Parser-2330"><span class="linenos">2330</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-2331"><a href="#Parser-2331"><span class="linenos">2331</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> +</span><span id="Parser-2332"><a href="#Parser-2332"><span class="linenos">2332</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">)</span> +</span><span id="Parser-2333"><a href="#Parser-2333"><span class="linenos">2333</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Fetch</span><span class="p">,</span> <span class="n">direction</span><span class="o">=</span><span class="n">direction</span><span class="p">,</span> <span class="n">count</span><span class="o">=</span><span class="n">count</span><span class="p">)</span> </span><span id="Parser-2334"><a href="#Parser-2334"><span class="linenos">2334</span></a> -</span><span id="Parser-2335"><a href="#Parser-2335"><span class="linenos">2335</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">:</span> -</span><span id="Parser-2336"><a href="#Parser-2336"><span class="linenos">2336</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span> -</span><span id="Parser-2337"><a href="#Parser-2337"><span class="linenos">2337</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">:</span> -</span><span id="Parser-2338"><a href="#Parser-2338"><span class="linenos">2338</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span> -</span><span id="Parser-2339"><a href="#Parser-2339"><span class="linenos">2339</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2340"><a href="#Parser-2340"><span class="linenos">2340</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span> -</span><span id="Parser-2341"><a href="#Parser-2341"><span class="linenos">2341</span></a> -</span><span id="Parser-2342"><a href="#Parser-2342"><span class="linenos">2342</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2343"><a href="#Parser-2343"><span class="linenos">2343</span></a> <span class="n">expression</span><span class="p">,</span> -</span><span id="Parser-2344"><a href="#Parser-2344"><span class="linenos">2344</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-2345"><a href="#Parser-2345"><span class="linenos">2345</span></a> <span class="n">distinct</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">),</span> -</span><span id="Parser-2346"><a href="#Parser-2346"><span class="linenos">2346</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> -</span><span id="Parser-2347"><a href="#Parser-2347"><span class="linenos">2347</span></a> <span class="p">)</span> -</span><span id="Parser-2348"><a href="#Parser-2348"><span class="linenos">2348</span></a> -</span><span id="Parser-2349"><a href="#Parser-2349"><span class="linenos">2349</span></a> <span class="k">def</span> <span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2350"><a href="#Parser-2350"><span class="linenos">2350</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> -</span><span id="Parser-2351"><a href="#Parser-2351"><span class="linenos">2351</span></a> -</span><span id="Parser-2352"><a href="#Parser-2352"><span class="linenos">2352</span></a> <span class="k">def</span> <span class="nf">_parse_conjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2353"><a href="#Parser-2353"><span class="linenos">2353</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONJUNCTION</span><span class="p">)</span> -</span><span id="Parser-2354"><a href="#Parser-2354"><span class="linenos">2354</span></a> -</span><span id="Parser-2355"><a href="#Parser-2355"><span class="linenos">2355</span></a> <span class="k">def</span> <span class="nf">_parse_equality</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2356"><a href="#Parser-2356"><span class="linenos">2356</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EQUALITY</span><span class="p">)</span> -</span><span id="Parser-2357"><a href="#Parser-2357"><span class="linenos">2357</span></a> -</span><span id="Parser-2358"><a href="#Parser-2358"><span class="linenos">2358</span></a> <span class="k">def</span> <span class="nf">_parse_comparison</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2359"><a href="#Parser-2359"><span class="linenos">2359</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMPARISON</span><span class="p">)</span> -</span><span id="Parser-2360"><a href="#Parser-2360"><span class="linenos">2360</span></a> -</span><span id="Parser-2361"><a href="#Parser-2361"><span class="linenos">2361</span></a> <span class="k">def</span> <span class="nf">_parse_range</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2362"><a href="#Parser-2362"><span class="linenos">2362</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-2363"><a href="#Parser-2363"><span class="linenos">2363</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> -</span><span id="Parser-2364"><a href="#Parser-2364"><span class="linenos">2364</span></a> -</span><span id="Parser-2365"><a href="#Parser-2365"><span class="linenos">2365</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">):</span> -</span><span id="Parser-2366"><a href="#Parser-2366"><span class="linenos">2366</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2367"><a href="#Parser-2367"><span class="linenos">2367</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">):</span> -</span><span id="Parser-2368"><a href="#Parser-2368"><span class="linenos">2368</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> -</span><span id="Parser-2369"><a href="#Parser-2369"><span class="linenos">2369</span></a> -</span><span id="Parser-2370"><a href="#Parser-2370"><span class="linenos">2370</span></a> <span class="c1"># Postgres supports ISNULL and NOTNULL for conditions.</span> -</span><span id="Parser-2371"><a href="#Parser-2371"><span class="linenos">2371</span></a> <span class="c1"># https://blog.andreiavram.ro/postgresql-null-composite-type/</span> -</span><span id="Parser-2372"><a href="#Parser-2372"><span class="linenos">2372</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">):</span> -</span><span id="Parser-2373"><a href="#Parser-2373"><span class="linenos">2373</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> -</span><span id="Parser-2374"><a href="#Parser-2374"><span class="linenos">2374</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2335"><a href="#Parser-2335"><span class="linenos">2335</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2336"><a href="#Parser-2336"><span class="linenos">2336</span></a> +</span><span id="Parser-2337"><a href="#Parser-2337"><span class="linenos">2337</span></a> <span class="k">def</span> <span class="nf">_parse_offset</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2338"><a href="#Parser-2338"><span class="linenos">2338</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> +</span><span id="Parser-2339"><a href="#Parser-2339"><span class="linenos">2339</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2340"><a href="#Parser-2340"><span class="linenos">2340</span></a> +</span><span id="Parser-2341"><a href="#Parser-2341"><span class="linenos">2341</span></a> <span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_number</span><span class="p">()</span> +</span><span id="Parser-2342"><a href="#Parser-2342"><span class="linenos">2342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">))</span> +</span><span id="Parser-2343"><a href="#Parser-2343"><span class="linenos">2343</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Offset</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">count</span><span class="p">)</span> +</span><span id="Parser-2344"><a href="#Parser-2344"><span class="linenos">2344</span></a> +</span><span id="Parser-2345"><a href="#Parser-2345"><span class="linenos">2345</span></a> <span class="k">def</span> <span class="nf">_parse_lock</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2346"><a href="#Parser-2346"><span class="linenos">2346</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"UPDATE"</span><span class="p">):</span> +</span><span id="Parser-2347"><a href="#Parser-2347"><span class="linenos">2347</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2348"><a href="#Parser-2348"><span class="linenos">2348</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"SHARE"</span><span class="p">):</span> +</span><span id="Parser-2349"><a href="#Parser-2349"><span class="linenos">2349</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Lock</span><span class="p">,</span> <span class="n">update</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-2350"><a href="#Parser-2350"><span class="linenos">2350</span></a> +</span><span id="Parser-2351"><a href="#Parser-2351"><span class="linenos">2351</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2352"><a href="#Parser-2352"><span class="linenos">2352</span></a> +</span><span id="Parser-2353"><a href="#Parser-2353"><span class="linenos">2353</span></a> <span class="k">def</span> <span class="nf">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2354"><a href="#Parser-2354"><span class="linenos">2354</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_OPERATIONS</span><span class="p">):</span> +</span><span id="Parser-2355"><a href="#Parser-2355"><span class="linenos">2355</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2356"><a href="#Parser-2356"><span class="linenos">2356</span></a> +</span><span id="Parser-2357"><a href="#Parser-2357"><span class="linenos">2357</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-2358"><a href="#Parser-2358"><span class="linenos">2358</span></a> +</span><span id="Parser-2359"><a href="#Parser-2359"><span class="linenos">2359</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">:</span> +</span><span id="Parser-2360"><a href="#Parser-2360"><span class="linenos">2360</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span> +</span><span id="Parser-2361"><a href="#Parser-2361"><span class="linenos">2361</span></a> <span class="k">elif</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">:</span> +</span><span id="Parser-2362"><a href="#Parser-2362"><span class="linenos">2362</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Except</span> +</span><span id="Parser-2363"><a href="#Parser-2363"><span class="linenos">2363</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2364"><a href="#Parser-2364"><span class="linenos">2364</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Intersect</span> +</span><span id="Parser-2365"><a href="#Parser-2365"><span class="linenos">2365</span></a> +</span><span id="Parser-2366"><a href="#Parser-2366"><span class="linenos">2366</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2367"><a href="#Parser-2367"><span class="linenos">2367</span></a> <span class="n">expression</span><span class="p">,</span> +</span><span id="Parser-2368"><a href="#Parser-2368"><span class="linenos">2368</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-2369"><a href="#Parser-2369"><span class="linenos">2369</span></a> <span class="n">distinct</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">),</span> +</span><span id="Parser-2370"><a href="#Parser-2370"><span class="linenos">2370</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">)),</span> +</span><span id="Parser-2371"><a href="#Parser-2371"><span class="linenos">2371</span></a> <span class="p">)</span> +</span><span id="Parser-2372"><a href="#Parser-2372"><span class="linenos">2372</span></a> +</span><span id="Parser-2373"><a href="#Parser-2373"><span class="linenos">2373</span></a> <span class="k">def</span> <span class="nf">_parse_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2374"><a href="#Parser-2374"><span class="linenos">2374</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> </span><span id="Parser-2375"><a href="#Parser-2375"><span class="linenos">2375</span></a> -</span><span id="Parser-2376"><a href="#Parser-2376"><span class="linenos">2376</span></a> <span class="k">if</span> <span class="n">negate</span><span class="p">:</span> -</span><span id="Parser-2377"><a href="#Parser-2377"><span class="linenos">2377</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2376"><a href="#Parser-2376"><span class="linenos">2376</span></a> <span class="k">def</span> <span class="nf">_parse_conjunction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2377"><a href="#Parser-2377"><span class="linenos">2377</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONJUNCTION</span><span class="p">)</span> </span><span id="Parser-2378"><a href="#Parser-2378"><span class="linenos">2378</span></a> -</span><span id="Parser-2379"><a href="#Parser-2379"><span class="linenos">2379</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">):</span> -</span><span id="Parser-2380"><a href="#Parser-2380"><span class="linenos">2380</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2379"><a href="#Parser-2379"><span class="linenos">2379</span></a> <span class="k">def</span> <span class="nf">_parse_equality</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2380"><a href="#Parser-2380"><span class="linenos">2380</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_comparison</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EQUALITY</span><span class="p">)</span> </span><span id="Parser-2381"><a href="#Parser-2381"><span class="linenos">2381</span></a> -</span><span id="Parser-2382"><a href="#Parser-2382"><span class="linenos">2382</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2383"><a href="#Parser-2383"><span class="linenos">2383</span></a> -</span><span id="Parser-2384"><a href="#Parser-2384"><span class="linenos">2384</span></a> <span class="k">def</span> <span class="nf">_parse_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-2385"><a href="#Parser-2385"><span class="linenos">2385</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> -</span><span id="Parser-2386"><a href="#Parser-2386"><span class="linenos">2386</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT_FROM</span><span class="p">):</span> -</span><span id="Parser-2387"><a href="#Parser-2387"><span class="linenos">2387</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeNEQ</span> -</span><span id="Parser-2388"><a href="#Parser-2388"><span class="linenos">2388</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">())</span> -</span><span id="Parser-2389"><a href="#Parser-2389"><span class="linenos">2389</span></a> -</span><span id="Parser-2390"><a href="#Parser-2390"><span class="linenos">2390</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2391"><a href="#Parser-2391"><span class="linenos">2391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> -</span><span id="Parser-2392"><a href="#Parser-2392"><span class="linenos">2392</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-2393"><a href="#Parser-2393"><span class="linenos">2393</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_null</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_boolean</span><span class="p">(),</span> -</span><span id="Parser-2394"><a href="#Parser-2394"><span class="linenos">2394</span></a> <span class="p">)</span> -</span><span id="Parser-2395"><a href="#Parser-2395"><span class="linenos">2395</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">this</span> -</span><span id="Parser-2396"><a href="#Parser-2396"><span class="linenos">2396</span></a> -</span><span id="Parser-2397"><a href="#Parser-2397"><span class="linenos">2397</span></a> <span class="k">def</span> <span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-2398"><a href="#Parser-2398"><span class="linenos">2398</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> -</span><span id="Parser-2399"><a href="#Parser-2399"><span class="linenos">2399</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> -</span><span id="Parser-2400"><a href="#Parser-2400"><span class="linenos">2400</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">unnest</span><span class="o">=</span><span class="n">unnest</span><span class="p">)</span> -</span><span id="Parser-2401"><a href="#Parser-2401"><span class="linenos">2401</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2402"><a href="#Parser-2402"><span class="linenos">2402</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">)</span> -</span><span id="Parser-2403"><a href="#Parser-2403"><span class="linenos">2403</span></a> -</span><span id="Parser-2404"><a href="#Parser-2404"><span class="linenos">2404</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="Parser-2405"><a href="#Parser-2405"><span class="linenos">2405</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">query</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> -</span><span id="Parser-2406"><a href="#Parser-2406"><span class="linenos">2406</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2407"><a href="#Parser-2407"><span class="linenos">2407</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-2408"><a href="#Parser-2408"><span class="linenos">2408</span></a> -</span><span id="Parser-2409"><a href="#Parser-2409"><span class="linenos">2409</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2410"><a href="#Parser-2410"><span class="linenos">2410</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2411"><a href="#Parser-2411"><span class="linenos">2411</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">field</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> -</span><span id="Parser-2412"><a href="#Parser-2412"><span class="linenos">2412</span></a> -</span><span id="Parser-2413"><a href="#Parser-2413"><span class="linenos">2413</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2414"><a href="#Parser-2414"><span class="linenos">2414</span></a> -</span><span id="Parser-2415"><a href="#Parser-2415"><span class="linenos">2415</span></a> <span class="k">def</span> <span class="nf">_parse_between</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-2416"><a href="#Parser-2416"><span class="linenos">2416</span></a> <span class="n">low</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-2417"><a href="#Parser-2417"><span class="linenos">2417</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> -</span><span id="Parser-2418"><a href="#Parser-2418"><span class="linenos">2418</span></a> <span class="n">high</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-2419"><a href="#Parser-2419"><span class="linenos">2419</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Between</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">low</span><span class="o">=</span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="o">=</span><span class="n">high</span><span class="p">)</span> +</span><span id="Parser-2382"><a href="#Parser-2382"><span class="linenos">2382</span></a> <span class="k">def</span> <span class="nf">_parse_comparison</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2383"><a href="#Parser-2383"><span class="linenos">2383</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_range</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMPARISON</span><span class="p">)</span> +</span><span id="Parser-2384"><a href="#Parser-2384"><span class="linenos">2384</span></a> +</span><span id="Parser-2385"><a href="#Parser-2385"><span class="linenos">2385</span></a> <span class="k">def</span> <span class="nf">_parse_range</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2386"><a href="#Parser-2386"><span class="linenos">2386</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-2387"><a href="#Parser-2387"><span class="linenos">2387</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="Parser-2388"><a href="#Parser-2388"><span class="linenos">2388</span></a> +</span><span id="Parser-2389"><a href="#Parser-2389"><span class="linenos">2389</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">):</span> +</span><span id="Parser-2390"><a href="#Parser-2390"><span class="linenos">2390</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2391"><a href="#Parser-2391"><span class="linenos">2391</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">):</span> +</span><span id="Parser-2392"><a href="#Parser-2392"><span class="linenos">2392</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> +</span><span id="Parser-2393"><a href="#Parser-2393"><span class="linenos">2393</span></a> +</span><span id="Parser-2394"><a href="#Parser-2394"><span class="linenos">2394</span></a> <span class="c1"># Postgres supports ISNULL and NOTNULL for conditions.</span> +</span><span id="Parser-2395"><a href="#Parser-2395"><span class="linenos">2395</span></a> <span class="c1"># https://blog.andreiavram.ro/postgresql-null-composite-type/</span> +</span><span id="Parser-2396"><a href="#Parser-2396"><span class="linenos">2396</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">):</span> +</span><span id="Parser-2397"><a href="#Parser-2397"><span class="linenos">2397</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Null</span><span class="p">())</span> +</span><span id="Parser-2398"><a href="#Parser-2398"><span class="linenos">2398</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2399"><a href="#Parser-2399"><span class="linenos">2399</span></a> +</span><span id="Parser-2400"><a href="#Parser-2400"><span class="linenos">2400</span></a> <span class="k">if</span> <span class="n">negate</span><span class="p">:</span> +</span><span id="Parser-2401"><a href="#Parser-2401"><span class="linenos">2401</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2402"><a href="#Parser-2402"><span class="linenos">2402</span></a> +</span><span id="Parser-2403"><a href="#Parser-2403"><span class="linenos">2403</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">):</span> +</span><span id="Parser-2404"><a href="#Parser-2404"><span class="linenos">2404</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_is</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2405"><a href="#Parser-2405"><span class="linenos">2405</span></a> +</span><span id="Parser-2406"><a href="#Parser-2406"><span class="linenos">2406</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2407"><a href="#Parser-2407"><span class="linenos">2407</span></a> +</span><span id="Parser-2408"><a href="#Parser-2408"><span class="linenos">2408</span></a> <span class="k">def</span> <span class="nf">_parse_is</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2409"><a href="#Parser-2409"><span class="linenos">2409</span></a> <span class="n">negate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">)</span> +</span><span id="Parser-2410"><a href="#Parser-2410"><span class="linenos">2410</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT_FROM</span><span class="p">):</span> +</span><span id="Parser-2411"><a href="#Parser-2411"><span class="linenos">2411</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeEQ</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">NullSafeNEQ</span> +</span><span id="Parser-2412"><a href="#Parser-2412"><span class="linenos">2412</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">klass</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">())</span> +</span><span id="Parser-2413"><a href="#Parser-2413"><span class="linenos">2413</span></a> +</span><span id="Parser-2414"><a href="#Parser-2414"><span class="linenos">2414</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2415"><a href="#Parser-2415"><span class="linenos">2415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">,</span> +</span><span id="Parser-2416"><a href="#Parser-2416"><span class="linenos">2416</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-2417"><a href="#Parser-2417"><span class="linenos">2417</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_null</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_boolean</span><span class="p">(),</span> +</span><span id="Parser-2418"><a href="#Parser-2418"><span class="linenos">2418</span></a> <span class="p">)</span> +</span><span id="Parser-2419"><a href="#Parser-2419"><span class="linenos">2419</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Not</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="n">negate</span> <span class="k">else</span> <span class="n">this</span> </span><span id="Parser-2420"><a href="#Parser-2420"><span class="linenos">2420</span></a> -</span><span id="Parser-2421"><a href="#Parser-2421"><span class="linenos">2421</span></a> <span class="k">def</span> <span class="nf">_parse_escape</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2422"><a href="#Parser-2422"><span class="linenos">2422</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">):</span> -</span><span id="Parser-2423"><a href="#Parser-2423"><span class="linenos">2423</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2424"><a href="#Parser-2424"><span class="linenos">2424</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Escape</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> -</span><span id="Parser-2425"><a href="#Parser-2425"><span class="linenos">2425</span></a> -</span><span id="Parser-2426"><a href="#Parser-2426"><span class="linenos">2426</span></a> <span class="k">def</span> <span class="nf">_parse_bitwise</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2427"><a href="#Parser-2427"><span class="linenos">2427</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-2428"><a href="#Parser-2428"><span class="linenos">2428</span></a> -</span><span id="Parser-2429"><a href="#Parser-2429"><span class="linenos">2429</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-2430"><a href="#Parser-2430"><span class="linenos">2430</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">):</span> -</span><span id="Parser-2431"><a href="#Parser-2431"><span class="linenos">2431</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2432"><a href="#Parser-2432"><span class="linenos">2432</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="Parser-2433"><a href="#Parser-2433"><span class="linenos">2433</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-2434"><a href="#Parser-2434"><span class="linenos">2434</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="Parser-2435"><a href="#Parser-2435"><span class="linenos">2435</span></a> <span class="p">)</span> -</span><span id="Parser-2436"><a href="#Parser-2436"><span class="linenos">2436</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="Parser-2437"><a href="#Parser-2437"><span class="linenos">2437</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2438"><a href="#Parser-2438"><span class="linenos">2438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-2439"><a href="#Parser-2439"><span class="linenos">2439</span></a> <span class="p">)</span> -</span><span id="Parser-2440"><a href="#Parser-2440"><span class="linenos">2440</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="Parser-2441"><a href="#Parser-2441"><span class="linenos">2441</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2442"><a href="#Parser-2442"><span class="linenos">2442</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-2443"><a href="#Parser-2443"><span class="linenos">2443</span></a> <span class="p">)</span> -</span><span id="Parser-2444"><a href="#Parser-2444"><span class="linenos">2444</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2445"><a href="#Parser-2445"><span class="linenos">2445</span></a> <span class="k">break</span> -</span><span id="Parser-2446"><a href="#Parser-2446"><span class="linenos">2446</span></a> -</span><span id="Parser-2447"><a href="#Parser-2447"><span class="linenos">2447</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2448"><a href="#Parser-2448"><span class="linenos">2448</span></a> -</span><span id="Parser-2449"><a href="#Parser-2449"><span class="linenos">2449</span></a> <span class="k">def</span> <span class="nf">_parse_term</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2450"><a href="#Parser-2450"><span class="linenos">2450</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">TERM</span><span class="p">)</span> -</span><span id="Parser-2451"><a href="#Parser-2451"><span class="linenos">2451</span></a> -</span><span id="Parser-2452"><a href="#Parser-2452"><span class="linenos">2452</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2453"><a href="#Parser-2453"><span class="linenos">2453</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span> -</span><span id="Parser-2454"><a href="#Parser-2454"><span class="linenos">2454</span></a> -</span><span id="Parser-2455"><a href="#Parser-2455"><span class="linenos">2455</span></a> <span class="k">def</span> <span class="nf">_parse_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2456"><a href="#Parser-2456"><span class="linenos">2456</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">):</span> -</span><span id="Parser-2457"><a href="#Parser-2457"><span class="linenos">2457</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-2458"><a href="#Parser-2458"><span class="linenos">2458</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">())</span> -</span><span id="Parser-2459"><a href="#Parser-2459"><span class="linenos">2459</span></a> -</span><span id="Parser-2460"><a href="#Parser-2460"><span class="linenos">2460</span></a> <span class="k">def</span> <span class="nf">_parse_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2461"><a href="#Parser-2461"><span class="linenos">2461</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">):</span> -</span><span id="Parser-2462"><a href="#Parser-2462"><span class="linenos">2462</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> -</span><span id="Parser-2463"><a href="#Parser-2463"><span class="linenos">2463</span></a> -</span><span id="Parser-2464"><a href="#Parser-2464"><span class="linenos">2464</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-2465"><a href="#Parser-2465"><span class="linenos">2465</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2466"><a href="#Parser-2466"><span class="linenos">2466</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-2467"><a href="#Parser-2467"><span class="linenos">2467</span></a> -</span><span id="Parser-2468"><a href="#Parser-2468"><span class="linenos">2468</span></a> <span class="k">if</span> <span class="n">type_token</span><span class="p">:</span> -</span><span id="Parser-2469"><a href="#Parser-2469"><span class="linenos">2469</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> -</span><span id="Parser-2470"><a href="#Parser-2470"><span class="linenos">2470</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</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">to</span><span class="o">=</span><span class="n">type_token</span><span class="p">)</span> -</span><span id="Parser-2471"><a href="#Parser-2471"><span class="linenos">2471</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">type_token</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">"expressions"</span><span class="p">):</span> -</span><span id="Parser-2472"><a href="#Parser-2472"><span class="linenos">2472</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2473"><a href="#Parser-2473"><span class="linenos">2473</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-2474"><a href="#Parser-2474"><span class="linenos">2474</span></a> <span class="k">return</span> <span class="n">type_token</span> +</span><span id="Parser-2421"><a href="#Parser-2421"><span class="linenos">2421</span></a> <span class="k">def</span> <span class="nf">_parse_in</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2422"><a href="#Parser-2422"><span class="linenos">2422</span></a> <span class="n">unnest</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnest</span><span class="p">()</span> +</span><span id="Parser-2423"><a href="#Parser-2423"><span class="linenos">2423</span></a> <span class="k">if</span> <span class="n">unnest</span><span class="p">:</span> +</span><span id="Parser-2424"><a href="#Parser-2424"><span class="linenos">2424</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">unnest</span><span class="o">=</span><span class="n">unnest</span><span class="p">)</span> +</span><span id="Parser-2425"><a href="#Parser-2425"><span class="linenos">2425</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2426"><a href="#Parser-2426"><span class="linenos">2426</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">)</span> +</span><span id="Parser-2427"><a href="#Parser-2427"><span class="linenos">2427</span></a> +</span><span id="Parser-2428"><a href="#Parser-2428"><span class="linenos">2428</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="Parser-2429"><a href="#Parser-2429"><span class="linenos">2429</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">query</span><span class="o">=</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> +</span><span id="Parser-2430"><a href="#Parser-2430"><span class="linenos">2430</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2431"><a href="#Parser-2431"><span class="linenos">2431</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2432"><a href="#Parser-2432"><span class="linenos">2432</span></a> +</span><span id="Parser-2433"><a href="#Parser-2433"><span class="linenos">2433</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2434"><a href="#Parser-2434"><span class="linenos">2434</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2435"><a href="#Parser-2435"><span class="linenos">2435</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">In</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">field</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">())</span> +</span><span id="Parser-2436"><a href="#Parser-2436"><span class="linenos">2436</span></a> +</span><span id="Parser-2437"><a href="#Parser-2437"><span class="linenos">2437</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2438"><a href="#Parser-2438"><span class="linenos">2438</span></a> +</span><span id="Parser-2439"><a href="#Parser-2439"><span class="linenos">2439</span></a> <span class="k">def</span> <span class="nf">_parse_between</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2440"><a href="#Parser-2440"><span class="linenos">2440</span></a> <span class="n">low</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-2441"><a href="#Parser-2441"><span class="linenos">2441</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> +</span><span id="Parser-2442"><a href="#Parser-2442"><span class="linenos">2442</span></a> <span class="n">high</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-2443"><a href="#Parser-2443"><span class="linenos">2443</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Between</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">low</span><span class="o">=</span><span class="n">low</span><span class="p">,</span> <span class="n">high</span><span class="o">=</span><span class="n">high</span><span class="p">)</span> +</span><span id="Parser-2444"><a href="#Parser-2444"><span class="linenos">2444</span></a> +</span><span id="Parser-2445"><a href="#Parser-2445"><span class="linenos">2445</span></a> <span class="k">def</span> <span class="nf">_parse_escape</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2446"><a href="#Parser-2446"><span class="linenos">2446</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">):</span> +</span><span id="Parser-2447"><a href="#Parser-2447"><span class="linenos">2447</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2448"><a href="#Parser-2448"><span class="linenos">2448</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Escape</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">())</span> +</span><span id="Parser-2449"><a href="#Parser-2449"><span class="linenos">2449</span></a> +</span><span id="Parser-2450"><a href="#Parser-2450"><span class="linenos">2450</span></a> <span class="k">def</span> <span class="nf">_parse_bitwise</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2451"><a href="#Parser-2451"><span class="linenos">2451</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-2452"><a href="#Parser-2452"><span class="linenos">2452</span></a> +</span><span id="Parser-2453"><a href="#Parser-2453"><span class="linenos">2453</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-2454"><a href="#Parser-2454"><span class="linenos">2454</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">):</span> +</span><span id="Parser-2455"><a href="#Parser-2455"><span class="linenos">2455</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2456"><a href="#Parser-2456"><span class="linenos">2456</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> +</span><span id="Parser-2457"><a href="#Parser-2457"><span class="linenos">2457</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-2458"><a href="#Parser-2458"><span class="linenos">2458</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> +</span><span id="Parser-2459"><a href="#Parser-2459"><span class="linenos">2459</span></a> <span class="p">)</span> +</span><span id="Parser-2460"><a href="#Parser-2460"><span class="linenos">2460</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="Parser-2461"><a href="#Parser-2461"><span class="linenos">2461</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2462"><a href="#Parser-2462"><span class="linenos">2462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseLeftShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-2463"><a href="#Parser-2463"><span class="linenos">2463</span></a> <span class="p">)</span> +</span><span id="Parser-2464"><a href="#Parser-2464"><span class="linenos">2464</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="Parser-2465"><a href="#Parser-2465"><span class="linenos">2465</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2466"><a href="#Parser-2466"><span class="linenos">2466</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseRightShift</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-2467"><a href="#Parser-2467"><span class="linenos">2467</span></a> <span class="p">)</span> +</span><span id="Parser-2468"><a href="#Parser-2468"><span class="linenos">2468</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2469"><a href="#Parser-2469"><span class="linenos">2469</span></a> <span class="k">break</span> +</span><span id="Parser-2470"><a href="#Parser-2470"><span class="linenos">2470</span></a> +</span><span id="Parser-2471"><a href="#Parser-2471"><span class="linenos">2471</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2472"><a href="#Parser-2472"><span class="linenos">2472</span></a> +</span><span id="Parser-2473"><a href="#Parser-2473"><span class="linenos">2473</span></a> <span class="k">def</span> <span class="nf">_parse_term</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2474"><a href="#Parser-2474"><span class="linenos">2474</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_factor</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">TERM</span><span class="p">)</span> </span><span id="Parser-2475"><a href="#Parser-2475"><span class="linenos">2475</span></a> -</span><span id="Parser-2476"><a href="#Parser-2476"><span class="linenos">2476</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2477"><a href="#Parser-2477"><span class="linenos">2477</span></a> -</span><span id="Parser-2478"><a href="#Parser-2478"><span class="linenos">2478</span></a> <span class="k">def</span> <span class="nf">_parse_types</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2479"><a href="#Parser-2479"><span class="linenos">2479</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-2480"><a href="#Parser-2480"><span class="linenos">2480</span></a> -</span><span id="Parser-2481"><a href="#Parser-2481"><span class="linenos">2481</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SYSUDTLIB"</span><span class="p">,</span> <span class="s2">"."</span><span class="p">)</span> -</span><span id="Parser-2482"><a href="#Parser-2482"><span class="linenos">2482</span></a> -</span><span id="Parser-2483"><a href="#Parser-2483"><span class="linenos">2483</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">):</span> -</span><span id="Parser-2484"><a href="#Parser-2484"><span class="linenos">2484</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2485"><a href="#Parser-2485"><span class="linenos">2485</span></a> -</span><span id="Parser-2486"><a href="#Parser-2486"><span class="linenos">2486</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-2476"><a href="#Parser-2476"><span class="linenos">2476</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2477"><a href="#Parser-2477"><span class="linenos">2477</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span> +</span><span id="Parser-2478"><a href="#Parser-2478"><span class="linenos">2478</span></a> +</span><span id="Parser-2479"><a href="#Parser-2479"><span class="linenos">2479</span></a> <span class="k">def</span> <span class="nf">_parse_unary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2480"><a href="#Parser-2480"><span class="linenos">2480</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">):</span> +</span><span id="Parser-2481"><a href="#Parser-2481"><span class="linenos">2481</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">UNARY_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-2482"><a href="#Parser-2482"><span class="linenos">2482</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">())</span> +</span><span id="Parser-2483"><a href="#Parser-2483"><span class="linenos">2483</span></a> +</span><span id="Parser-2484"><a href="#Parser-2484"><span class="linenos">2484</span></a> <span class="k">def</span> <span class="nf">_parse_type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2485"><a href="#Parser-2485"><span class="linenos">2485</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">):</span> +</span><span id="Parser-2486"><a href="#Parser-2486"><span class="linenos">2486</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> </span><span id="Parser-2487"><a href="#Parser-2487"><span class="linenos">2487</span></a> -</span><span id="Parser-2488"><a href="#Parser-2488"><span class="linenos">2488</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">:</span> -</span><span id="Parser-2489"><a href="#Parser-2489"><span class="linenos">2489</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PseudoType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-2490"><a href="#Parser-2490"><span class="linenos">2490</span></a> -</span><span id="Parser-2491"><a href="#Parser-2491"><span class="linenos">2491</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NESTED_TYPE_TOKENS</span> -</span><span id="Parser-2492"><a href="#Parser-2492"><span class="linenos">2492</span></a> <span class="n">is_struct</span> <span class="o">=</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span> -</span><span id="Parser-2493"><a href="#Parser-2493"><span class="linenos">2493</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2494"><a href="#Parser-2494"><span class="linenos">2494</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-2495"><a href="#Parser-2495"><span class="linenos">2495</span></a> -</span><span id="Parser-2496"><a href="#Parser-2496"><span class="linenos">2496</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2497"><a href="#Parser-2497"><span class="linenos">2497</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> -</span><span id="Parser-2498"><a href="#Parser-2498"><span class="linenos">2498</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">)</span> -</span><span id="Parser-2499"><a href="#Parser-2499"><span class="linenos">2499</span></a> <span class="k">elif</span> <span class="n">nested</span><span class="p">:</span> -</span><span id="Parser-2500"><a href="#Parser-2500"><span class="linenos">2500</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> -</span><span id="Parser-2501"><a href="#Parser-2501"><span class="linenos">2501</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2502"><a href="#Parser-2502"><span class="linenos">2502</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-2503"><a href="#Parser-2503"><span class="linenos">2503</span></a> -</span><span id="Parser-2504"><a href="#Parser-2504"><span class="linenos">2504</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Parser-2505"><a href="#Parser-2505"><span class="linenos">2505</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2506"><a href="#Parser-2506"><span class="linenos">2506</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2507"><a href="#Parser-2507"><span class="linenos">2507</span></a> -</span><span id="Parser-2508"><a href="#Parser-2508"><span class="linenos">2508</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2509"><a href="#Parser-2509"><span class="linenos">2509</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Parser-2510"><a href="#Parser-2510"><span class="linenos">2510</span></a> -</span><span id="Parser-2511"><a href="#Parser-2511"><span class="linenos">2511</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> -</span><span id="Parser-2512"><a href="#Parser-2512"><span class="linenos">2512</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="Parser-2513"><a href="#Parser-2513"><span class="linenos">2513</span></a> <span class="n">this</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">ARRAY</span><span class="p">,</span> -</span><span id="Parser-2514"><a href="#Parser-2514"><span class="linenos">2514</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)],</span> -</span><span id="Parser-2515"><a href="#Parser-2515"><span class="linenos">2515</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-2516"><a href="#Parser-2516"><span class="linenos">2516</span></a> <span class="p">)</span> -</span><span id="Parser-2517"><a href="#Parser-2517"><span class="linenos">2517</span></a> -</span><span id="Parser-2518"><a href="#Parser-2518"><span class="linenos">2518</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> -</span><span id="Parser-2519"><a href="#Parser-2519"><span class="linenos">2519</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="Parser-2520"><a href="#Parser-2520"><span class="linenos">2520</span></a> <span class="n">this</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">ARRAY</span><span class="p">,</span> -</span><span id="Parser-2521"><a href="#Parser-2521"><span class="linenos">2521</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> -</span><span id="Parser-2522"><a href="#Parser-2522"><span class="linenos">2522</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-2523"><a href="#Parser-2523"><span class="linenos">2523</span></a> <span class="p">)</span> -</span><span id="Parser-2524"><a href="#Parser-2524"><span class="linenos">2524</span></a> -</span><span id="Parser-2525"><a href="#Parser-2525"><span class="linenos">2525</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2526"><a href="#Parser-2526"><span class="linenos">2526</span></a> -</span><span id="Parser-2527"><a href="#Parser-2527"><span class="linenos">2527</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span> -</span><span id="Parser-2528"><a href="#Parser-2528"><span class="linenos">2528</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2529"><a href="#Parser-2529"><span class="linenos">2529</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2530"><a href="#Parser-2530"><span class="linenos">2530</span></a> -</span><span id="Parser-2531"><a href="#Parser-2531"><span class="linenos">2531</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2532"><a href="#Parser-2532"><span class="linenos">2532</span></a> <span class="k">if</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> -</span><span id="Parser-2533"><a href="#Parser-2533"><span class="linenos">2533</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> -</span><span id="Parser-2534"><a href="#Parser-2534"><span class="linenos">2534</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">)</span> -</span><span id="Parser-2535"><a href="#Parser-2535"><span class="linenos">2535</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2536"><a href="#Parser-2536"><span class="linenos">2536</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> -</span><span id="Parser-2537"><a href="#Parser-2537"><span class="linenos">2537</span></a> -</span><span id="Parser-2538"><a href="#Parser-2538"><span class="linenos">2538</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> -</span><span id="Parser-2539"><a href="#Parser-2539"><span class="linenos">2539</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> -</span><span id="Parser-2540"><a href="#Parser-2540"><span class="linenos">2540</span></a> -</span><span id="Parser-2541"><a href="#Parser-2541"><span class="linenos">2541</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)):</span> -</span><span id="Parser-2542"><a href="#Parser-2542"><span class="linenos">2542</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-2543"><a href="#Parser-2543"><span class="linenos">2543</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">))</span> -</span><span id="Parser-2544"><a href="#Parser-2544"><span class="linenos">2544</span></a> -</span><span id="Parser-2545"><a href="#Parser-2545"><span class="linenos">2545</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2546"><a href="#Parser-2546"><span class="linenos">2546</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMESTAMPS</span><span class="p">:</span> -</span><span id="Parser-2547"><a href="#Parser-2547"><span class="linenos">2547</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_TIME_ZONE</span><span class="p">)</span> <span class="ow">or</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">:</span> -</span><span id="Parser-2548"><a href="#Parser-2548"><span class="linenos">2548</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-2549"><a href="#Parser-2549"><span class="linenos">2549</span></a> <span class="k">elif</span> <span class="p">(</span> -</span><span id="Parser-2550"><a href="#Parser-2550"><span class="linenos">2550</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_LOCAL_TIME_ZONE</span><span class="p">)</span> <span class="ow">or</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span> -</span><span id="Parser-2551"><a href="#Parser-2551"><span class="linenos">2551</span></a> <span class="p">):</span> -</span><span id="Parser-2552"><a href="#Parser-2552"><span class="linenos">2552</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-2553"><a href="#Parser-2553"><span class="linenos">2553</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHOUT_TIME_ZONE</span><span class="p">):</span> -</span><span id="Parser-2554"><a href="#Parser-2554"><span class="linenos">2554</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">:</span> -</span><span id="Parser-2555"><a href="#Parser-2555"><span class="linenos">2555</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-2556"><a href="#Parser-2556"><span class="linenos">2556</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2557"><a href="#Parser-2557"><span class="linenos">2557</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-2558"><a href="#Parser-2558"><span class="linenos">2558</span></a> -</span><span id="Parser-2559"><a href="#Parser-2559"><span class="linenos">2559</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span> -</span><span id="Parser-2560"><a href="#Parser-2560"><span class="linenos">2560</span></a> -</span><span id="Parser-2561"><a href="#Parser-2561"><span class="linenos">2561</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-2562"><a href="#Parser-2562"><span class="linenos">2562</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-2563"><a href="#Parser-2563"><span class="linenos">2563</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">:</span> -</span><span id="Parser-2564"><a href="#Parser-2564"><span class="linenos">2564</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> -</span><span id="Parser-2565"><a href="#Parser-2565"><span class="linenos">2565</span></a> -</span><span id="Parser-2566"><a href="#Parser-2566"><span class="linenos">2566</span></a> <span class="k">if</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">check_func</span><span class="p">:</span> -</span><span id="Parser-2567"><a href="#Parser-2567"><span class="linenos">2567</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-2568"><a href="#Parser-2568"><span class="linenos">2568</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-2569"><a href="#Parser-2569"><span class="linenos">2569</span></a> -</span><span id="Parser-2570"><a href="#Parser-2570"><span class="linenos">2570</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">peek</span><span class="p">:</span> -</span><span id="Parser-2571"><a href="#Parser-2571"><span class="linenos">2571</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2572"><a href="#Parser-2572"><span class="linenos">2572</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2573"><a href="#Parser-2573"><span class="linenos">2573</span></a> -</span><span id="Parser-2574"><a href="#Parser-2574"><span class="linenos">2574</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> -</span><span id="Parser-2575"><a href="#Parser-2575"><span class="linenos">2575</span></a> -</span><span id="Parser-2576"><a href="#Parser-2576"><span class="linenos">2576</span></a> <span class="k">if</span> <span class="n">value</span><span class="p">:</span> -</span><span id="Parser-2577"><a href="#Parser-2577"><span class="linenos">2577</span></a> <span class="k">return</span> <span class="n">value</span> -</span><span id="Parser-2578"><a href="#Parser-2578"><span class="linenos">2578</span></a> -</span><span id="Parser-2579"><a href="#Parser-2579"><span class="linenos">2579</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> -</span><span id="Parser-2580"><a href="#Parser-2580"><span class="linenos">2580</span></a> <span class="n">this</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="p">[</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">upper</span><span class="p">()],</span> -</span><span id="Parser-2581"><a href="#Parser-2581"><span class="linenos">2581</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> -</span><span id="Parser-2582"><a href="#Parser-2582"><span class="linenos">2582</span></a> <span class="n">nested</span><span class="o">=</span><span class="n">nested</span><span class="p">,</span> -</span><span id="Parser-2583"><a href="#Parser-2583"><span class="linenos">2583</span></a> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> -</span><span id="Parser-2584"><a href="#Parser-2584"><span class="linenos">2584</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> -</span><span id="Parser-2585"><a href="#Parser-2585"><span class="linenos">2585</span></a> <span class="p">)</span> -</span><span id="Parser-2586"><a href="#Parser-2586"><span class="linenos">2586</span></a> -</span><span id="Parser-2587"><a href="#Parser-2587"><span class="linenos">2587</span></a> <span class="k">def</span> <span class="nf">_parse_struct_kwargs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2588"><a href="#Parser-2588"><span class="linenos">2588</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">:</span> -</span><span id="Parser-2589"><a href="#Parser-2589"><span class="linenos">2589</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-2590"><a href="#Parser-2590"><span class="linenos">2590</span></a> -</span><span id="Parser-2591"><a href="#Parser-2591"><span class="linenos">2591</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-2592"><a href="#Parser-2592"><span class="linenos">2592</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> -</span><span id="Parser-2593"><a href="#Parser-2593"><span class="linenos">2593</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-2594"><a href="#Parser-2594"><span class="linenos">2594</span></a> -</span><span id="Parser-2595"><a href="#Parser-2595"><span class="linenos">2595</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">data_type</span><span class="p">:</span> -</span><span id="Parser-2596"><a href="#Parser-2596"><span class="linenos">2596</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2597"><a href="#Parser-2597"><span class="linenos">2597</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> -</span><span id="Parser-2598"><a href="#Parser-2598"><span class="linenos">2598</span></a> -</span><span id="Parser-2599"><a href="#Parser-2599"><span class="linenos">2599</span></a> <span class="k">def</span> <span class="nf">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2600"><a href="#Parser-2600"><span class="linenos">2600</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AT_TIME_ZONE</span><span class="p">):</span> -</span><span id="Parser-2601"><a href="#Parser-2601"><span class="linenos">2601</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2602"><a href="#Parser-2602"><span class="linenos">2602</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">zone</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">())</span> -</span><span id="Parser-2603"><a href="#Parser-2603"><span class="linenos">2603</span></a> -</span><span id="Parser-2604"><a href="#Parser-2604"><span class="linenos">2604</span></a> <span class="k">def</span> <span class="nf">_parse_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2605"><a href="#Parser-2605"><span class="linenos">2605</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> -</span><span id="Parser-2606"><a href="#Parser-2606"><span class="linenos">2606</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="Parser-2607"><a href="#Parser-2607"><span class="linenos">2607</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2608"><a href="#Parser-2608"><span class="linenos">2608</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-2609"><a href="#Parser-2609"><span class="linenos">2609</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2610"><a href="#Parser-2610"><span class="linenos">2610</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2611"><a href="#Parser-2611"><span class="linenos">2611</span></a> -</span><span id="Parser-2612"><a href="#Parser-2612"><span class="linenos">2612</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="p">):</span> -</span><span id="Parser-2613"><a href="#Parser-2613"><span class="linenos">2613</span></a> <span class="n">op_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-2614"><a href="#Parser-2614"><span class="linenos">2614</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">op_token</span><span class="p">)</span> -</span><span id="Parser-2615"><a href="#Parser-2615"><span class="linenos">2615</span></a> -</span><span id="Parser-2616"><a href="#Parser-2616"><span class="linenos">2616</span></a> <span class="k">if</span> <span class="n">op_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> -</span><span id="Parser-2617"><a href="#Parser-2617"><span class="linenos">2617</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-2618"><a href="#Parser-2618"><span class="linenos">2618</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">field</span><span class="p">:</span> -</span><span id="Parser-2619"><a href="#Parser-2619"><span class="linenos">2619</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected type"</span><span class="p">)</span> -</span><span id="Parser-2620"><a href="#Parser-2620"><span class="linenos">2620</span></a> <span class="k">elif</span> <span class="n">op</span><span class="p">:</span> -</span><span id="Parser-2621"><a href="#Parser-2621"><span class="linenos">2621</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-2622"><a href="#Parser-2622"><span class="linenos">2622</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-2623"><a href="#Parser-2623"><span class="linenos">2623</span></a> <span class="n">field</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-2624"><a href="#Parser-2624"><span class="linenos">2624</span></a> <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="n">value</span><span class="p">)</span> -</span><span id="Parser-2625"><a href="#Parser-2625"><span class="linenos">2625</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span> -</span><span id="Parser-2626"><a href="#Parser-2626"><span class="linenos">2626</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> -</span><span id="Parser-2627"><a href="#Parser-2627"><span class="linenos">2627</span></a> <span class="p">)</span> -</span><span id="Parser-2628"><a href="#Parser-2628"><span class="linenos">2628</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2629"><a href="#Parser-2629"><span class="linenos">2629</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-2630"><a href="#Parser-2630"><span class="linenos">2630</span></a> -</span><span id="Parser-2631"><a href="#Parser-2631"><span class="linenos">2631</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> -</span><span id="Parser-2632"><a href="#Parser-2632"><span class="linenos">2632</span></a> <span class="c1"># bigquery allows function calls like x.y.count(...)</span> -</span><span id="Parser-2633"><a href="#Parser-2633"><span class="linenos">2633</span></a> <span class="c1"># SAFE.SUBSTR(...)</span> -</span><span id="Parser-2634"><a href="#Parser-2634"><span class="linenos">2634</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules</span> -</span><span id="Parser-2635"><a href="#Parser-2635"><span class="linenos">2635</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2636"><a href="#Parser-2636"><span class="linenos">2636</span></a> -</span><span id="Parser-2637"><a href="#Parser-2637"><span class="linenos">2637</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> -</span><span id="Parser-2638"><a href="#Parser-2638"><span class="linenos">2638</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> -</span><span id="Parser-2639"><a href="#Parser-2639"><span class="linenos">2639</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">):</span> -</span><span id="Parser-2640"><a href="#Parser-2640"><span class="linenos">2640</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2641"><a href="#Parser-2641"><span class="linenos">2641</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> -</span><span id="Parser-2642"><a href="#Parser-2642"><span class="linenos">2642</span></a> <span class="n">this</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> -</span><span id="Parser-2643"><a href="#Parser-2643"><span class="linenos">2643</span></a> <span class="n">table</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="Parser-2644"><a href="#Parser-2644"><span class="linenos">2644</span></a> <span class="n">db</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> -</span><span id="Parser-2645"><a href="#Parser-2645"><span class="linenos">2645</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> -</span><span id="Parser-2646"><a href="#Parser-2646"><span class="linenos">2646</span></a> <span class="p">)</span> -</span><span id="Parser-2647"><a href="#Parser-2647"><span class="linenos">2647</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2648"><a href="#Parser-2648"><span class="linenos">2648</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">field</span><span class="p">)</span> -</span><span id="Parser-2649"><a href="#Parser-2649"><span class="linenos">2649</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2650"><a href="#Parser-2650"><span class="linenos">2650</span></a> -</span><span id="Parser-2651"><a href="#Parser-2651"><span class="linenos">2651</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2652"><a href="#Parser-2652"><span class="linenos">2652</span></a> -</span><span id="Parser-2653"><a href="#Parser-2653"><span class="linenos">2653</span></a> <span class="k">def</span> <span class="nf">_parse_primary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2654"><a href="#Parser-2654"><span class="linenos">2654</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">):</span> -</span><span id="Parser-2655"><a href="#Parser-2655"><span class="linenos">2655</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-2656"><a href="#Parser-2656"><span class="linenos">2656</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-2657"><a href="#Parser-2657"><span class="linenos">2657</span></a> -</span><span id="Parser-2658"><a href="#Parser-2658"><span class="linenos">2658</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> -</span><span id="Parser-2659"><a href="#Parser-2659"><span class="linenos">2659</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">primary</span><span class="p">]</span> -</span><span id="Parser-2660"><a href="#Parser-2660"><span class="linenos">2660</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> -</span><span id="Parser-2661"><a href="#Parser-2661"><span class="linenos">2661</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> -</span><span id="Parser-2662"><a href="#Parser-2662"><span class="linenos">2662</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-2663"><a href="#Parser-2663"><span class="linenos">2663</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-2664"><a href="#Parser-2664"><span class="linenos">2664</span></a> <span class="k">return</span> <span class="n">primary</span> -</span><span id="Parser-2665"><a href="#Parser-2665"><span class="linenos">2665</span></a> -</span><span id="Parser-2666"><a href="#Parser-2666"><span class="linenos">2666</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> -</span><span id="Parser-2667"><a href="#Parser-2667"><span class="linenos">2667</span></a> <span class="k">return</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="sa">f</span><span class="s2">"0.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-2668"><a href="#Parser-2668"><span class="linenos">2668</span></a> -</span><span id="Parser-2669"><a href="#Parser-2669"><span class="linenos">2669</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2670"><a href="#Parser-2670"><span class="linenos">2670</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-2671"><a href="#Parser-2671"><span class="linenos">2671</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> -</span><span id="Parser-2672"><a href="#Parser-2672"><span class="linenos">2672</span></a> -</span><span id="Parser-2673"><a href="#Parser-2673"><span class="linenos">2673</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> -</span><span id="Parser-2674"><a href="#Parser-2674"><span class="linenos">2674</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">query</span><span class="p">]</span> -</span><span id="Parser-2675"><a href="#Parser-2675"><span class="linenos">2675</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2676"><a href="#Parser-2676"><span class="linenos">2676</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-2677"><a href="#Parser-2677"><span class="linenos">2677</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> <span class="n">explicit</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2678"><a href="#Parser-2678"><span class="linenos">2678</span></a> <span class="p">)</span> -</span><span id="Parser-2679"><a href="#Parser-2679"><span class="linenos">2679</span></a> -</span><span id="Parser-2680"><a href="#Parser-2680"><span class="linenos">2680</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> -</span><span id="Parser-2681"><a href="#Parser-2681"><span class="linenos">2681</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2682"><a href="#Parser-2682"><span class="linenos">2682</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2683"><a href="#Parser-2683"><span class="linenos">2683</span></a> -</span><span id="Parser-2684"><a href="#Parser-2684"><span class="linenos">2684</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> -</span><span id="Parser-2685"><a href="#Parser-2685"><span class="linenos">2685</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> -</span><span id="Parser-2686"><a href="#Parser-2686"><span class="linenos">2686</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</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">parse_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-2687"><a href="#Parser-2687"><span class="linenos">2687</span></a> <span class="p">)</span> -</span><span id="Parser-2688"><a href="#Parser-2688"><span class="linenos">2688</span></a> <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Parser-2689"><a href="#Parser-2689"><span class="linenos">2689</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-2690"><a href="#Parser-2690"><span class="linenos">2690</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2691"><a href="#Parser-2691"><span class="linenos">2691</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2488"><a href="#Parser-2488"><span class="linenos">2488</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-2489"><a href="#Parser-2489"><span class="linenos">2489</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(</span><span class="n">check_func</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2490"><a href="#Parser-2490"><span class="linenos">2490</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-2491"><a href="#Parser-2491"><span class="linenos">2491</span></a> +</span><span id="Parser-2492"><a href="#Parser-2492"><span class="linenos">2492</span></a> <span class="k">if</span> <span class="n">type_token</span><span class="p">:</span> +</span><span id="Parser-2493"><a href="#Parser-2493"><span class="linenos">2493</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Star</span><span class="p">):</span> +</span><span id="Parser-2494"><a href="#Parser-2494"><span class="linenos">2494</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</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">to</span><span class="o">=</span><span class="n">type_token</span><span class="p">)</span> +</span><span id="Parser-2495"><a href="#Parser-2495"><span class="linenos">2495</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">type_token</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">"expressions"</span><span class="p">):</span> +</span><span id="Parser-2496"><a href="#Parser-2496"><span class="linenos">2496</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2497"><a href="#Parser-2497"><span class="linenos">2497</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-2498"><a href="#Parser-2498"><span class="linenos">2498</span></a> <span class="k">return</span> <span class="n">type_token</span> +</span><span id="Parser-2499"><a href="#Parser-2499"><span class="linenos">2499</span></a> +</span><span id="Parser-2500"><a href="#Parser-2500"><span class="linenos">2500</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2501"><a href="#Parser-2501"><span class="linenos">2501</span></a> +</span><span id="Parser-2502"><a href="#Parser-2502"><span class="linenos">2502</span></a> <span class="k">def</span> <span class="nf">_parse_types</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">check_func</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2503"><a href="#Parser-2503"><span class="linenos">2503</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-2504"><a href="#Parser-2504"><span class="linenos">2504</span></a> +</span><span id="Parser-2505"><a href="#Parser-2505"><span class="linenos">2505</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SYSUDTLIB"</span><span class="p">,</span> <span class="s2">"."</span><span class="p">)</span> +</span><span id="Parser-2506"><a href="#Parser-2506"><span class="linenos">2506</span></a> +</span><span id="Parser-2507"><a href="#Parser-2507"><span class="linenos">2507</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">):</span> +</span><span id="Parser-2508"><a href="#Parser-2508"><span class="linenos">2508</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2509"><a href="#Parser-2509"><span class="linenos">2509</span></a> +</span><span id="Parser-2510"><a href="#Parser-2510"><span class="linenos">2510</span></a> <span class="n">type_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-2511"><a href="#Parser-2511"><span class="linenos">2511</span></a> +</span><span id="Parser-2512"><a href="#Parser-2512"><span class="linenos">2512</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">:</span> +</span><span id="Parser-2513"><a href="#Parser-2513"><span class="linenos">2513</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PseudoType</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-2514"><a href="#Parser-2514"><span class="linenos">2514</span></a> +</span><span id="Parser-2515"><a href="#Parser-2515"><span class="linenos">2515</span></a> <span class="n">nested</span> <span class="o">=</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NESTED_TYPE_TOKENS</span> +</span><span id="Parser-2516"><a href="#Parser-2516"><span class="linenos">2516</span></a> <span class="n">is_struct</span> <span class="o">=</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRUCT</span> +</span><span id="Parser-2517"><a href="#Parser-2517"><span class="linenos">2517</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2518"><a href="#Parser-2518"><span class="linenos">2518</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-2519"><a href="#Parser-2519"><span class="linenos">2519</span></a> +</span><span id="Parser-2520"><a href="#Parser-2520"><span class="linenos">2520</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2521"><a href="#Parser-2521"><span class="linenos">2521</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> +</span><span id="Parser-2522"><a href="#Parser-2522"><span class="linenos">2522</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">)</span> +</span><span id="Parser-2523"><a href="#Parser-2523"><span class="linenos">2523</span></a> <span class="k">elif</span> <span class="n">nested</span><span class="p">:</span> +</span><span id="Parser-2524"><a href="#Parser-2524"><span class="linenos">2524</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> +</span><span id="Parser-2525"><a href="#Parser-2525"><span class="linenos">2525</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2526"><a href="#Parser-2526"><span class="linenos">2526</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-2527"><a href="#Parser-2527"><span class="linenos">2527</span></a> +</span><span id="Parser-2528"><a href="#Parser-2528"><span class="linenos">2528</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Parser-2529"><a href="#Parser-2529"><span class="linenos">2529</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2530"><a href="#Parser-2530"><span class="linenos">2530</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2531"><a href="#Parser-2531"><span class="linenos">2531</span></a> +</span><span id="Parser-2532"><a href="#Parser-2532"><span class="linenos">2532</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2533"><a href="#Parser-2533"><span class="linenos">2533</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Parser-2534"><a href="#Parser-2534"><span class="linenos">2534</span></a> +</span><span id="Parser-2535"><a href="#Parser-2535"><span class="linenos">2535</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="Parser-2536"><a href="#Parser-2536"><span class="linenos">2536</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="Parser-2537"><a href="#Parser-2537"><span class="linenos">2537</span></a> <span class="n">this</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">ARRAY</span><span class="p">,</span> +</span><span id="Parser-2538"><a href="#Parser-2538"><span class="linenos">2538</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)],</span> +</span><span id="Parser-2539"><a href="#Parser-2539"><span class="linenos">2539</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-2540"><a href="#Parser-2540"><span class="linenos">2540</span></a> <span class="p">)</span> +</span><span id="Parser-2541"><a href="#Parser-2541"><span class="linenos">2541</span></a> +</span><span id="Parser-2542"><a href="#Parser-2542"><span class="linenos">2542</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">):</span> +</span><span id="Parser-2543"><a href="#Parser-2543"><span class="linenos">2543</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="Parser-2544"><a href="#Parser-2544"><span class="linenos">2544</span></a> <span class="n">this</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">ARRAY</span><span class="p">,</span> +</span><span id="Parser-2545"><a href="#Parser-2545"><span class="linenos">2545</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">this</span><span class="p">],</span> +</span><span id="Parser-2546"><a href="#Parser-2546"><span class="linenos">2546</span></a> <span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-2547"><a href="#Parser-2547"><span class="linenos">2547</span></a> <span class="p">)</span> +</span><span id="Parser-2548"><a href="#Parser-2548"><span class="linenos">2548</span></a> +</span><span id="Parser-2549"><a href="#Parser-2549"><span class="linenos">2549</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2550"><a href="#Parser-2550"><span class="linenos">2550</span></a> +</span><span id="Parser-2551"><a href="#Parser-2551"><span class="linenos">2551</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">):</span> +</span><span id="Parser-2552"><a href="#Parser-2552"><span class="linenos">2552</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2553"><a href="#Parser-2553"><span class="linenos">2553</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2554"><a href="#Parser-2554"><span class="linenos">2554</span></a> +</span><span id="Parser-2555"><a href="#Parser-2555"><span class="linenos">2555</span></a> <span class="n">values</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2556"><a href="#Parser-2556"><span class="linenos">2556</span></a> <span class="k">if</span> <span class="n">nested</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">):</span> +</span><span id="Parser-2557"><a href="#Parser-2557"><span class="linenos">2557</span></a> <span class="k">if</span> <span class="n">is_struct</span><span class="p">:</span> +</span><span id="Parser-2558"><a href="#Parser-2558"><span class="linenos">2558</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_struct_kwargs</span><span class="p">)</span> +</span><span id="Parser-2559"><a href="#Parser-2559"><span class="linenos">2559</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2560"><a href="#Parser-2560"><span class="linenos">2560</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">)</span> +</span><span id="Parser-2561"><a href="#Parser-2561"><span class="linenos">2561</span></a> +</span><span id="Parser-2562"><a href="#Parser-2562"><span class="linenos">2562</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">):</span> +</span><span id="Parser-2563"><a href="#Parser-2563"><span class="linenos">2563</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting >"</span><span class="p">)</span> +</span><span id="Parser-2564"><a href="#Parser-2564"><span class="linenos">2564</span></a> +</span><span id="Parser-2565"><a href="#Parser-2565"><span class="linenos">2565</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)):</span> +</span><span id="Parser-2566"><a href="#Parser-2566"><span class="linenos">2566</span></a> <span class="n">values</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-2567"><a href="#Parser-2567"><span class="linenos">2567</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">))</span> +</span><span id="Parser-2568"><a href="#Parser-2568"><span class="linenos">2568</span></a> +</span><span id="Parser-2569"><a href="#Parser-2569"><span class="linenos">2569</span></a> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2570"><a href="#Parser-2570"><span class="linenos">2570</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TIMESTAMPS</span><span class="p">:</span> +</span><span id="Parser-2571"><a href="#Parser-2571"><span class="linenos">2571</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_TIME_ZONE</span><span class="p">)</span> <span class="ow">or</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">:</span> +</span><span id="Parser-2572"><a href="#Parser-2572"><span class="linenos">2572</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2573"><a href="#Parser-2573"><span class="linenos">2573</span></a> <span class="k">elif</span> <span class="p">(</span> +</span><span id="Parser-2574"><a href="#Parser-2574"><span class="linenos">2574</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_LOCAL_TIME_ZONE</span><span class="p">)</span> <span class="ow">or</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span> +</span><span id="Parser-2575"><a href="#Parser-2575"><span class="linenos">2575</span></a> <span class="p">):</span> +</span><span id="Parser-2576"><a href="#Parser-2576"><span class="linenos">2576</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2577"><a href="#Parser-2577"><span class="linenos">2577</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHOUT_TIME_ZONE</span><span class="p">):</span> +</span><span id="Parser-2578"><a href="#Parser-2578"><span class="linenos">2578</span></a> <span class="k">if</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">:</span> +</span><span id="Parser-2579"><a href="#Parser-2579"><span class="linenos">2579</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2580"><a href="#Parser-2580"><span class="linenos">2580</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2581"><a href="#Parser-2581"><span class="linenos">2581</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2582"><a href="#Parser-2582"><span class="linenos">2582</span></a> +</span><span id="Parser-2583"><a href="#Parser-2583"><span class="linenos">2583</span></a> <span class="n">maybe_func</span> <span class="o">=</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span> +</span><span id="Parser-2584"><a href="#Parser-2584"><span class="linenos">2584</span></a> +</span><span id="Parser-2585"><a href="#Parser-2585"><span class="linenos">2585</span></a> <span class="k">if</span> <span class="n">value</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-2586"><a href="#Parser-2586"><span class="linenos">2586</span></a> <span class="n">value</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2587"><a href="#Parser-2587"><span class="linenos">2587</span></a> <span class="k">elif</span> <span class="n">type_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">:</span> +</span><span id="Parser-2588"><a href="#Parser-2588"><span class="linenos">2588</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> +</span><span id="Parser-2589"><a href="#Parser-2589"><span class="linenos">2589</span></a> +</span><span id="Parser-2590"><a href="#Parser-2590"><span class="linenos">2590</span></a> <span class="k">if</span> <span class="n">maybe_func</span> <span class="ow">and</span> <span class="n">check_func</span><span class="p">:</span> +</span><span id="Parser-2591"><a href="#Parser-2591"><span class="linenos">2591</span></a> <span class="n">index2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-2592"><a href="#Parser-2592"><span class="linenos">2592</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-2593"><a href="#Parser-2593"><span class="linenos">2593</span></a> +</span><span id="Parser-2594"><a href="#Parser-2594"><span class="linenos">2594</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">peek</span><span class="p">:</span> +</span><span id="Parser-2595"><a href="#Parser-2595"><span class="linenos">2595</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2596"><a href="#Parser-2596"><span class="linenos">2596</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2597"><a href="#Parser-2597"><span class="linenos">2597</span></a> +</span><span id="Parser-2598"><a href="#Parser-2598"><span class="linenos">2598</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index2</span><span class="p">)</span> +</span><span id="Parser-2599"><a href="#Parser-2599"><span class="linenos">2599</span></a> +</span><span id="Parser-2600"><a href="#Parser-2600"><span class="linenos">2600</span></a> <span class="k">if</span> <span class="n">value</span><span class="p">:</span> +</span><span id="Parser-2601"><a href="#Parser-2601"><span class="linenos">2601</span></a> <span class="k">return</span> <span class="n">value</span> +</span><span id="Parser-2602"><a href="#Parser-2602"><span class="linenos">2602</span></a> +</span><span id="Parser-2603"><a href="#Parser-2603"><span class="linenos">2603</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">(</span> +</span><span id="Parser-2604"><a href="#Parser-2604"><span class="linenos">2604</span></a> <span class="n">this</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="p">[</span><span class="n">type_token</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">upper</span><span class="p">()],</span> +</span><span id="Parser-2605"><a href="#Parser-2605"><span class="linenos">2605</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> +</span><span id="Parser-2606"><a href="#Parser-2606"><span class="linenos">2606</span></a> <span class="n">nested</span><span class="o">=</span><span class="n">nested</span><span class="p">,</span> +</span><span id="Parser-2607"><a href="#Parser-2607"><span class="linenos">2607</span></a> <span class="n">values</span><span class="o">=</span><span class="n">values</span><span class="p">,</span> +</span><span id="Parser-2608"><a href="#Parser-2608"><span class="linenos">2608</span></a> <span class="n">prefix</span><span class="o">=</span><span class="n">prefix</span><span class="p">,</span> +</span><span id="Parser-2609"><a href="#Parser-2609"><span class="linenos">2609</span></a> <span class="p">)</span> +</span><span id="Parser-2610"><a href="#Parser-2610"><span class="linenos">2610</span></a> +</span><span id="Parser-2611"><a href="#Parser-2611"><span class="linenos">2611</span></a> <span class="k">def</span> <span class="nf">_parse_struct_kwargs</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2612"><a href="#Parser-2612"><span class="linenos">2612</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TYPE_TOKENS</span><span class="p">:</span> +</span><span id="Parser-2613"><a href="#Parser-2613"><span class="linenos">2613</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-2614"><a href="#Parser-2614"><span class="linenos">2614</span></a> +</span><span id="Parser-2615"><a href="#Parser-2615"><span class="linenos">2615</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-2616"><a href="#Parser-2616"><span class="linenos">2616</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">)</span> +</span><span id="Parser-2617"><a href="#Parser-2617"><span class="linenos">2617</span></a> <span class="n">data_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-2618"><a href="#Parser-2618"><span class="linenos">2618</span></a> +</span><span id="Parser-2619"><a href="#Parser-2619"><span class="linenos">2619</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">data_type</span><span class="p">:</span> +</span><span id="Parser-2620"><a href="#Parser-2620"><span class="linenos">2620</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2621"><a href="#Parser-2621"><span class="linenos">2621</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StructKwarg</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">data_type</span><span class="p">)</span> +</span><span id="Parser-2622"><a href="#Parser-2622"><span class="linenos">2622</span></a> +</span><span id="Parser-2623"><a href="#Parser-2623"><span class="linenos">2623</span></a> <span class="k">def</span> <span class="nf">_parse_at_time_zone</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2624"><a href="#Parser-2624"><span class="linenos">2624</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AT_TIME_ZONE</span><span class="p">):</span> +</span><span id="Parser-2625"><a href="#Parser-2625"><span class="linenos">2625</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2626"><a href="#Parser-2626"><span class="linenos">2626</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</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">zone</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">())</span> +</span><span id="Parser-2627"><a href="#Parser-2627"><span class="linenos">2627</span></a> +</span><span id="Parser-2628"><a href="#Parser-2628"><span class="linenos">2628</span></a> <span class="k">def</span> <span class="nf">_parse_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2629"><a href="#Parser-2629"><span class="linenos">2629</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">()</span> +</span><span id="Parser-2630"><a href="#Parser-2630"><span class="linenos">2630</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="Parser-2631"><a href="#Parser-2631"><span class="linenos">2631</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2632"><a href="#Parser-2632"><span class="linenos">2632</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-2633"><a href="#Parser-2633"><span class="linenos">2633</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2634"><a href="#Parser-2634"><span class="linenos">2634</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2635"><a href="#Parser-2635"><span class="linenos">2635</span></a> +</span><span id="Parser-2636"><a href="#Parser-2636"><span class="linenos">2636</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="p">):</span> +</span><span id="Parser-2637"><a href="#Parser-2637"><span class="linenos">2637</span></a> <span class="n">op_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-2638"><a href="#Parser-2638"><span class="linenos">2638</span></a> <span class="n">op</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">COLUMN_OPERATORS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">op_token</span><span class="p">)</span> +</span><span id="Parser-2639"><a href="#Parser-2639"><span class="linenos">2639</span></a> +</span><span id="Parser-2640"><a href="#Parser-2640"><span class="linenos">2640</span></a> <span class="k">if</span> <span class="n">op_token</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">:</span> +</span><span id="Parser-2641"><a href="#Parser-2641"><span class="linenos">2641</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-2642"><a href="#Parser-2642"><span class="linenos">2642</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">field</span><span class="p">:</span> +</span><span id="Parser-2643"><a href="#Parser-2643"><span class="linenos">2643</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected type"</span><span class="p">)</span> +</span><span id="Parser-2644"><a href="#Parser-2644"><span class="linenos">2644</span></a> <span class="k">elif</span> <span class="n">op</span><span class="p">:</span> +</span><span id="Parser-2645"><a href="#Parser-2645"><span class="linenos">2645</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-2646"><a href="#Parser-2646"><span class="linenos">2646</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-2647"><a href="#Parser-2647"><span class="linenos">2647</span></a> <span class="n">field</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-2648"><a href="#Parser-2648"><span class="linenos">2648</span></a> <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="n">value</span><span class="p">)</span> +</span><span id="Parser-2649"><a href="#Parser-2649"><span class="linenos">2649</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span> +</span><span id="Parser-2650"><a href="#Parser-2650"><span class="linenos">2650</span></a> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> +</span><span id="Parser-2651"><a href="#Parser-2651"><span class="linenos">2651</span></a> <span class="p">)</span> +</span><span id="Parser-2652"><a href="#Parser-2652"><span class="linenos">2652</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2653"><a href="#Parser-2653"><span class="linenos">2653</span></a> <span class="n">field</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-2654"><a href="#Parser-2654"><span class="linenos">2654</span></a> +</span><span id="Parser-2655"><a href="#Parser-2655"><span class="linenos">2655</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">field</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">):</span> +</span><span id="Parser-2656"><a href="#Parser-2656"><span class="linenos">2656</span></a> <span class="c1"># bigquery allows function calls like x.y.count(...)</span> +</span><span id="Parser-2657"><a href="#Parser-2657"><span class="linenos">2657</span></a> <span class="c1"># SAFE.SUBSTR(...)</span> +</span><span id="Parser-2658"><a href="#Parser-2658"><span class="linenos">2658</span></a> <span class="c1"># https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-reference#function_call_rules</span> +</span><span id="Parser-2659"><a href="#Parser-2659"><span class="linenos">2659</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2660"><a href="#Parser-2660"><span class="linenos">2660</span></a> +</span><span id="Parser-2661"><a href="#Parser-2661"><span class="linenos">2661</span></a> <span class="k">if</span> <span class="n">op</span><span class="p">:</span> +</span><span id="Parser-2662"><a href="#Parser-2662"><span class="linenos">2662</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">op</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> +</span><span id="Parser-2663"><a href="#Parser-2663"><span class="linenos">2663</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"catalog"</span><span class="p">):</span> +</span><span id="Parser-2664"><a href="#Parser-2664"><span class="linenos">2664</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2665"><a href="#Parser-2665"><span class="linenos">2665</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> +</span><span id="Parser-2666"><a href="#Parser-2666"><span class="linenos">2666</span></a> <span class="n">this</span><span class="o">=</span><span class="n">field</span><span class="p">,</span> +</span><span id="Parser-2667"><a href="#Parser-2667"><span class="linenos">2667</span></a> <span class="n">table</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="Parser-2668"><a href="#Parser-2668"><span class="linenos">2668</span></a> <span class="n">db</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">),</span> +</span><span id="Parser-2669"><a href="#Parser-2669"><span class="linenos">2669</span></a> <span class="n">catalog</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"db"</span><span class="p">),</span> +</span><span id="Parser-2670"><a href="#Parser-2670"><span class="linenos">2670</span></a> <span class="p">)</span> +</span><span id="Parser-2671"><a href="#Parser-2671"><span class="linenos">2671</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2672"><a href="#Parser-2672"><span class="linenos">2672</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">field</span><span class="p">)</span> +</span><span id="Parser-2673"><a href="#Parser-2673"><span class="linenos">2673</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2674"><a href="#Parser-2674"><span class="linenos">2674</span></a> +</span><span id="Parser-2675"><a href="#Parser-2675"><span class="linenos">2675</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2676"><a href="#Parser-2676"><span class="linenos">2676</span></a> +</span><span id="Parser-2677"><a href="#Parser-2677"><span class="linenos">2677</span></a> <span class="k">def</span> <span class="nf">_parse_primary</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2678"><a href="#Parser-2678"><span class="linenos">2678</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">):</span> +</span><span id="Parser-2679"><a href="#Parser-2679"><span class="linenos">2679</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-2680"><a href="#Parser-2680"><span class="linenos">2680</span></a> <span class="n">primary</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-2681"><a href="#Parser-2681"><span class="linenos">2681</span></a> +</span><span id="Parser-2682"><a href="#Parser-2682"><span class="linenos">2682</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">:</span> +</span><span id="Parser-2683"><a href="#Parser-2683"><span class="linenos">2683</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">primary</span><span class="p">]</span> +</span><span id="Parser-2684"><a href="#Parser-2684"><span class="linenos">2684</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> +</span><span id="Parser-2685"><a href="#Parser-2685"><span class="linenos">2685</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> +</span><span id="Parser-2686"><a href="#Parser-2686"><span class="linenos">2686</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-2687"><a href="#Parser-2687"><span class="linenos">2687</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Concat</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2688"><a href="#Parser-2688"><span class="linenos">2688</span></a> <span class="k">return</span> <span class="n">primary</span> +</span><span id="Parser-2689"><a href="#Parser-2689"><span class="linenos">2689</span></a> +</span><span id="Parser-2690"><a href="#Parser-2690"><span class="linenos">2690</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> +</span><span id="Parser-2691"><a href="#Parser-2691"><span class="linenos">2691</span></a> <span class="k">return</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="sa">f</span><span class="s2">"0.</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="Parser-2692"><a href="#Parser-2692"><span class="linenos">2692</span></a> -</span><span id="Parser-2693"><a href="#Parser-2693"><span class="linenos">2693</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">comments</span><span class="p">:</span> -</span><span id="Parser-2694"><a href="#Parser-2694"><span class="linenos">2694</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="Parser-2695"><a href="#Parser-2695"><span class="linenos">2695</span></a> -</span><span id="Parser-2696"><a href="#Parser-2696"><span class="linenos">2696</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2697"><a href="#Parser-2697"><span class="linenos">2697</span></a> -</span><span id="Parser-2698"><a href="#Parser-2698"><span class="linenos">2698</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2699"><a href="#Parser-2699"><span class="linenos">2699</span></a> -</span><span id="Parser-2700"><a href="#Parser-2700"><span class="linenos">2700</span></a> <span class="k">def</span> <span class="nf">_parse_field</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2701"><a href="#Parser-2701"><span class="linenos">2701</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)</span> -</span><span id="Parser-2702"><a href="#Parser-2702"><span class="linenos">2702</span></a> -</span><span id="Parser-2703"><a href="#Parser-2703"><span class="linenos">2703</span></a> <span class="k">def</span> <span class="nf">_parse_function</span><span class="p">(</span> -</span><span id="Parser-2704"><a href="#Parser-2704"><span class="linenos">2704</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">functions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2705"><a href="#Parser-2705"><span class="linenos">2705</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2706"><a href="#Parser-2706"><span class="linenos">2706</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-2707"><a href="#Parser-2707"><span class="linenos">2707</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2708"><a href="#Parser-2708"><span class="linenos">2708</span></a> -</span><span id="Parser-2709"><a href="#Parser-2709"><span class="linenos">2709</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-2710"><a href="#Parser-2710"><span class="linenos">2710</span></a> -</span><span id="Parser-2711"><a href="#Parser-2711"><span class="linenos">2711</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">):</span> -</span><span id="Parser-2712"><a href="#Parser-2712"><span class="linenos">2712</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-2713"><a href="#Parser-2713"><span class="linenos">2713</span></a> -</span><span id="Parser-2714"><a href="#Parser-2714"><span class="linenos">2714</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> -</span><span id="Parser-2715"><a href="#Parser-2715"><span class="linenos">2715</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">:</span> -</span><span id="Parser-2716"><a href="#Parser-2716"><span class="linenos">2716</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-2717"><a href="#Parser-2717"><span class="linenos">2717</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">[</span><span class="n">token_type</span><span class="p">])</span> -</span><span id="Parser-2718"><a href="#Parser-2718"><span class="linenos">2718</span></a> -</span><span id="Parser-2719"><a href="#Parser-2719"><span class="linenos">2719</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2720"><a href="#Parser-2720"><span class="linenos">2720</span></a> -</span><span id="Parser-2721"><a href="#Parser-2721"><span class="linenos">2721</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">:</span> -</span><span id="Parser-2722"><a href="#Parser-2722"><span class="linenos">2722</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2693"><a href="#Parser-2693"><span class="linenos">2693</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2694"><a href="#Parser-2694"><span class="linenos">2694</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-2695"><a href="#Parser-2695"><span class="linenos">2695</span></a> <span class="n">query</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> +</span><span id="Parser-2696"><a href="#Parser-2696"><span class="linenos">2696</span></a> +</span><span id="Parser-2697"><a href="#Parser-2697"><span class="linenos">2697</span></a> <span class="k">if</span> <span class="n">query</span><span class="p">:</span> +</span><span id="Parser-2698"><a href="#Parser-2698"><span class="linenos">2698</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="n">query</span><span class="p">]</span> +</span><span id="Parser-2699"><a href="#Parser-2699"><span class="linenos">2699</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2700"><a href="#Parser-2700"><span class="linenos">2700</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-2701"><a href="#Parser-2701"><span class="linenos">2701</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_alias</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> <span class="n">explicit</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2702"><a href="#Parser-2702"><span class="linenos">2702</span></a> <span class="p">)</span> +</span><span id="Parser-2703"><a href="#Parser-2703"><span class="linenos">2703</span></a> +</span><span id="Parser-2704"><a href="#Parser-2704"><span class="linenos">2704</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">seq_get</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> +</span><span id="Parser-2705"><a href="#Parser-2705"><span class="linenos">2705</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_query_modifiers</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2706"><a href="#Parser-2706"><span class="linenos">2706</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2707"><a href="#Parser-2707"><span class="linenos">2707</span></a> +</span><span id="Parser-2708"><a href="#Parser-2708"><span class="linenos">2708</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subqueryable</span><span class="p">):</span> +</span><span id="Parser-2709"><a href="#Parser-2709"><span class="linenos">2709</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> +</span><span id="Parser-2710"><a href="#Parser-2710"><span class="linenos">2710</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_subquery</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">parse_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-2711"><a href="#Parser-2711"><span class="linenos">2711</span></a> <span class="p">)</span> +</span><span id="Parser-2712"><a href="#Parser-2712"><span class="linenos">2712</span></a> <span class="k">elif</span> <span class="nb">len</span><span class="p">(</span><span class="n">expressions</span><span class="p">)</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Parser-2713"><a href="#Parser-2713"><span class="linenos">2713</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2714"><a href="#Parser-2714"><span class="linenos">2714</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2715"><a href="#Parser-2715"><span class="linenos">2715</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2716"><a href="#Parser-2716"><span class="linenos">2716</span></a> +</span><span id="Parser-2717"><a href="#Parser-2717"><span class="linenos">2717</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="n">comments</span><span class="p">:</span> +</span><span id="Parser-2718"><a href="#Parser-2718"><span class="linenos">2718</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="Parser-2719"><a href="#Parser-2719"><span class="linenos">2719</span></a> +</span><span id="Parser-2720"><a href="#Parser-2720"><span class="linenos">2720</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2721"><a href="#Parser-2721"><span class="linenos">2721</span></a> +</span><span id="Parser-2722"><a href="#Parser-2722"><span class="linenos">2722</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-2723"><a href="#Parser-2723"><span class="linenos">2723</span></a> -</span><span id="Parser-2724"><a href="#Parser-2724"><span class="linenos">2724</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-2725"><a href="#Parser-2725"><span class="linenos">2725</span></a> <span class="n">upper</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="Parser-2726"><a href="#Parser-2726"><span class="linenos">2726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> -</span><span id="Parser-2727"><a href="#Parser-2727"><span class="linenos">2727</span></a> -</span><span id="Parser-2728"><a href="#Parser-2728"><span class="linenos">2728</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="Parser-2729"><a href="#Parser-2729"><span class="linenos">2729</span></a> -</span><span id="Parser-2730"><a href="#Parser-2730"><span class="linenos">2730</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="Parser-2731"><a href="#Parser-2731"><span class="linenos">2731</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-2732"><a href="#Parser-2732"><span class="linenos">2732</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2733"><a href="#Parser-2733"><span class="linenos">2733</span></a> <span class="n">subquery_predicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUBQUERY_PREDICATES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="Parser-2724"><a href="#Parser-2724"><span class="linenos">2724</span></a> <span class="k">def</span> <span class="nf">_parse_field</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2725"><a href="#Parser-2725"><span class="linenos">2725</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)</span> +</span><span id="Parser-2726"><a href="#Parser-2726"><span class="linenos">2726</span></a> +</span><span id="Parser-2727"><a href="#Parser-2727"><span class="linenos">2727</span></a> <span class="k">def</span> <span class="nf">_parse_function</span><span class="p">(</span> +</span><span id="Parser-2728"><a href="#Parser-2728"><span class="linenos">2728</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">functions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2729"><a href="#Parser-2729"><span class="linenos">2729</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2730"><a href="#Parser-2730"><span class="linenos">2730</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-2731"><a href="#Parser-2731"><span class="linenos">2731</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2732"><a href="#Parser-2732"><span class="linenos">2732</span></a> +</span><span id="Parser-2733"><a href="#Parser-2733"><span class="linenos">2733</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> </span><span id="Parser-2734"><a href="#Parser-2734"><span class="linenos">2734</span></a> -</span><span id="Parser-2735"><a href="#Parser-2735"><span class="linenos">2735</span></a> <span class="k">if</span> <span class="n">subquery_predicate</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> -</span><span id="Parser-2736"><a href="#Parser-2736"><span class="linenos">2736</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">subquery_predicate</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> -</span><span id="Parser-2737"><a href="#Parser-2737"><span class="linenos">2737</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2738"><a href="#Parser-2738"><span class="linenos">2738</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2739"><a href="#Parser-2739"><span class="linenos">2739</span></a> -</span><span id="Parser-2740"><a href="#Parser-2740"><span class="linenos">2740</span></a> <span class="k">if</span> <span class="n">functions</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-2741"><a href="#Parser-2741"><span class="linenos">2741</span></a> <span class="n">functions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS</span> +</span><span id="Parser-2735"><a href="#Parser-2735"><span class="linenos">2735</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">):</span> +</span><span id="Parser-2736"><a href="#Parser-2736"><span class="linenos">2736</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTION_PARSERS</span><span class="p">[</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-2737"><a href="#Parser-2737"><span class="linenos">2737</span></a> +</span><span id="Parser-2738"><a href="#Parser-2738"><span class="linenos">2738</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">:</span> +</span><span id="Parser-2739"><a href="#Parser-2739"><span class="linenos">2739</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">:</span> +</span><span id="Parser-2740"><a href="#Parser-2740"><span class="linenos">2740</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-2741"><a href="#Parser-2741"><span class="linenos">2741</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NO_PAREN_FUNCTIONS</span><span class="p">[</span><span class="n">token_type</span><span class="p">])</span> </span><span id="Parser-2742"><a href="#Parser-2742"><span class="linenos">2742</span></a> -</span><span id="Parser-2743"><a href="#Parser-2743"><span class="linenos">2743</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">functions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> -</span><span id="Parser-2744"><a href="#Parser-2744"><span class="linenos">2744</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> -</span><span id="Parser-2745"><a href="#Parser-2745"><span class="linenos">2745</span></a> -</span><span id="Parser-2746"><a href="#Parser-2746"><span class="linenos">2746</span></a> <span class="k">if</span> <span class="n">function</span><span class="p">:</span> -</span><span id="Parser-2747"><a href="#Parser-2747"><span class="linenos">2747</span></a> <span class="c1"># Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the</span> -</span><span id="Parser-2748"><a href="#Parser-2748"><span class="linenos">2748</span></a> <span class="c1"># second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists.</span> -</span><span id="Parser-2749"><a href="#Parser-2749"><span class="linenos">2749</span></a> <span class="k">if</span> <span class="n">count_params</span><span class="p">(</span><span class="n">function</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="Parser-2750"><a href="#Parser-2750"><span class="linenos">2750</span></a> <span class="n">params</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2751"><a href="#Parser-2751"><span class="linenos">2751</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2752"><a href="#Parser-2752"><span class="linenos">2752</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> +</span><span id="Parser-2743"><a href="#Parser-2743"><span class="linenos">2743</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2744"><a href="#Parser-2744"><span class="linenos">2744</span></a> +</span><span id="Parser-2745"><a href="#Parser-2745"><span class="linenos">2745</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNC_TOKENS</span><span class="p">:</span> +</span><span id="Parser-2746"><a href="#Parser-2746"><span class="linenos">2746</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2747"><a href="#Parser-2747"><span class="linenos">2747</span></a> +</span><span id="Parser-2748"><a href="#Parser-2748"><span class="linenos">2748</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-2749"><a href="#Parser-2749"><span class="linenos">2749</span></a> <span class="n">upper</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="Parser-2750"><a href="#Parser-2750"><span class="linenos">2750</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> +</span><span id="Parser-2751"><a href="#Parser-2751"><span class="linenos">2751</span></a> +</span><span id="Parser-2752"><a href="#Parser-2752"><span class="linenos">2752</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> </span><span id="Parser-2753"><a href="#Parser-2753"><span class="linenos">2753</span></a> -</span><span id="Parser-2754"><a href="#Parser-2754"><span class="linenos">2754</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> -</span><span id="Parser-2755"><a href="#Parser-2755"><span class="linenos">2755</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2756"><a href="#Parser-2756"><span class="linenos">2756</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> -</span><span id="Parser-2757"><a href="#Parser-2757"><span class="linenos">2757</span></a> -</span><span id="Parser-2758"><a href="#Parser-2758"><span class="linenos">2758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="Parser-2759"><a href="#Parser-2759"><span class="linenos">2759</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2760"><a href="#Parser-2760"><span class="linenos">2760</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</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">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="Parser-2761"><a href="#Parser-2761"><span class="linenos">2761</span></a> -</span><span id="Parser-2762"><a href="#Parser-2762"><span class="linenos">2762</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2763"><a href="#Parser-2763"><span class="linenos">2763</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2764"><a href="#Parser-2764"><span class="linenos">2764</span></a> -</span><span id="Parser-2765"><a href="#Parser-2765"><span class="linenos">2765</span></a> <span class="k">def</span> <span class="nf">_parse_function_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2766"><a href="#Parser-2766"><span class="linenos">2766</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="Parser-2767"><a href="#Parser-2767"><span class="linenos">2767</span></a> -</span><span id="Parser-2768"><a href="#Parser-2768"><span class="linenos">2768</span></a> <span class="k">def</span> <span class="nf">_parse_user_defined_function</span><span class="p">(</span> -</span><span id="Parser-2769"><a href="#Parser-2769"><span class="linenos">2769</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2770"><a href="#Parser-2770"><span class="linenos">2770</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2771"><a href="#Parser-2771"><span class="linenos">2771</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-2772"><a href="#Parser-2772"><span class="linenos">2772</span></a> -</span><span id="Parser-2773"><a href="#Parser-2773"><span class="linenos">2773</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-2774"><a href="#Parser-2774"><span class="linenos">2774</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> -</span><span id="Parser-2775"><a href="#Parser-2775"><span class="linenos">2775</span></a> -</span><span id="Parser-2776"><a href="#Parser-2776"><span class="linenos">2776</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2777"><a href="#Parser-2777"><span class="linenos">2777</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2778"><a href="#Parser-2778"><span class="linenos">2778</span></a> -</span><span id="Parser-2779"><a href="#Parser-2779"><span class="linenos">2779</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> -</span><span id="Parser-2780"><a href="#Parser-2780"><span class="linenos">2780</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2781"><a href="#Parser-2781"><span class="linenos">2781</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2782"><a href="#Parser-2782"><span class="linenos">2782</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span> -</span><span id="Parser-2783"><a href="#Parser-2783"><span class="linenos">2783</span></a> <span class="p">)</span> -</span><span id="Parser-2784"><a href="#Parser-2784"><span class="linenos">2784</span></a> -</span><span id="Parser-2785"><a href="#Parser-2785"><span class="linenos">2785</span></a> <span class="k">def</span> <span class="nf">_parse_introducer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2786"><a href="#Parser-2786"><span class="linenos">2786</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-2787"><a href="#Parser-2787"><span class="linenos">2787</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span> -</span><span id="Parser-2788"><a href="#Parser-2788"><span class="linenos">2788</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Introducer</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">literal</span><span class="p">)</span> -</span><span id="Parser-2789"><a href="#Parser-2789"><span class="linenos">2789</span></a> -</span><span id="Parser-2790"><a href="#Parser-2790"><span class="linenos">2790</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-2754"><a href="#Parser-2754"><span class="linenos">2754</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="Parser-2755"><a href="#Parser-2755"><span class="linenos">2755</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-2756"><a href="#Parser-2756"><span class="linenos">2756</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2757"><a href="#Parser-2757"><span class="linenos">2757</span></a> <span class="n">subquery_predicate</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">SUBQUERY_PREDICATES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">token_type</span><span class="p">)</span> +</span><span id="Parser-2758"><a href="#Parser-2758"><span class="linenos">2758</span></a> +</span><span id="Parser-2759"><a href="#Parser-2759"><span class="linenos">2759</span></a> <span class="k">if</span> <span class="n">subquery_predicate</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">):</span> +</span><span id="Parser-2760"><a href="#Parser-2760"><span class="linenos">2760</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">subquery_predicate</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">())</span> +</span><span id="Parser-2761"><a href="#Parser-2761"><span class="linenos">2761</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2762"><a href="#Parser-2762"><span class="linenos">2762</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2763"><a href="#Parser-2763"><span class="linenos">2763</span></a> +</span><span id="Parser-2764"><a href="#Parser-2764"><span class="linenos">2764</span></a> <span class="k">if</span> <span class="n">functions</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-2765"><a href="#Parser-2765"><span class="linenos">2765</span></a> <span class="n">functions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">FUNCTIONS</span> +</span><span id="Parser-2766"><a href="#Parser-2766"><span class="linenos">2766</span></a> +</span><span id="Parser-2767"><a href="#Parser-2767"><span class="linenos">2767</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">functions</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">upper</span><span class="p">)</span> +</span><span id="Parser-2768"><a href="#Parser-2768"><span class="linenos">2768</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> +</span><span id="Parser-2769"><a href="#Parser-2769"><span class="linenos">2769</span></a> +</span><span id="Parser-2770"><a href="#Parser-2770"><span class="linenos">2770</span></a> <span class="k">if</span> <span class="n">function</span><span class="p">:</span> +</span><span id="Parser-2771"><a href="#Parser-2771"><span class="linenos">2771</span></a> <span class="c1"># Clickhouse supports function calls like foo(x, y)(z), so for these we need to also parse the</span> +</span><span id="Parser-2772"><a href="#Parser-2772"><span class="linenos">2772</span></a> <span class="c1"># second parameter list (i.e. "(z)") and the corresponding function will receive both arg lists.</span> +</span><span id="Parser-2773"><a href="#Parser-2773"><span class="linenos">2773</span></a> <span class="k">if</span> <span class="n">count_params</span><span class="p">(</span><span class="n">function</span><span class="p">)</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="Parser-2774"><a href="#Parser-2774"><span class="linenos">2774</span></a> <span class="n">params</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2775"><a href="#Parser-2775"><span class="linenos">2775</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2776"><a href="#Parser-2776"><span class="linenos">2776</span></a> <span class="n">params</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_lambda</span><span class="p">)</span> +</span><span id="Parser-2777"><a href="#Parser-2777"><span class="linenos">2777</span></a> +</span><span id="Parser-2778"><a href="#Parser-2778"><span class="linenos">2778</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">params</span><span class="p">)</span> +</span><span id="Parser-2779"><a href="#Parser-2779"><span class="linenos">2779</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2780"><a href="#Parser-2780"><span class="linenos">2780</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">function</span><span class="p">(</span><span class="n">args</span><span class="p">)</span> +</span><span id="Parser-2781"><a href="#Parser-2781"><span class="linenos">2781</span></a> +</span><span id="Parser-2782"><a href="#Parser-2782"><span class="linenos">2782</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-2783"><a href="#Parser-2783"><span class="linenos">2783</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2784"><a href="#Parser-2784"><span class="linenos">2784</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Anonymous</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">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> +</span><span id="Parser-2785"><a href="#Parser-2785"><span class="linenos">2785</span></a> +</span><span id="Parser-2786"><a href="#Parser-2786"><span class="linenos">2786</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2787"><a href="#Parser-2787"><span class="linenos">2787</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2788"><a href="#Parser-2788"><span class="linenos">2788</span></a> +</span><span id="Parser-2789"><a href="#Parser-2789"><span class="linenos">2789</span></a> <span class="k">def</span> <span class="nf">_parse_function_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2790"><a href="#Parser-2790"><span class="linenos">2790</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> </span><span id="Parser-2791"><a href="#Parser-2791"><span class="linenos">2791</span></a> -</span><span id="Parser-2792"><a href="#Parser-2792"><span class="linenos">2792</span></a> <span class="k">def</span> <span class="nf">_parse_national</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-2793"><a href="#Parser-2793"><span class="linenos">2793</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">National</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> -</span><span id="Parser-2794"><a href="#Parser-2794"><span class="linenos">2794</span></a> -</span><span id="Parser-2795"><a href="#Parser-2795"><span class="linenos">2795</span></a> <span class="k">def</span> <span class="nf">_parse_session_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-2796"><a href="#Parser-2796"><span class="linenos">2796</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2797"><a href="#Parser-2797"><span class="linenos">2797</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-2798"><a href="#Parser-2798"><span class="linenos">2798</span></a> -</span><span id="Parser-2799"><a href="#Parser-2799"><span class="linenos">2799</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> -</span><span id="Parser-2800"><a href="#Parser-2800"><span class="linenos">2800</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span> -</span><span id="Parser-2801"><a href="#Parser-2801"><span class="linenos">2801</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-2792"><a href="#Parser-2792"><span class="linenos">2792</span></a> <span class="k">def</span> <span class="nf">_parse_user_defined_function</span><span class="p">(</span> +</span><span id="Parser-2793"><a href="#Parser-2793"><span class="linenos">2793</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">kind</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2794"><a href="#Parser-2794"><span class="linenos">2794</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2795"><a href="#Parser-2795"><span class="linenos">2795</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-2796"><a href="#Parser-2796"><span class="linenos">2796</span></a> +</span><span id="Parser-2797"><a href="#Parser-2797"><span class="linenos">2797</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-2798"><a href="#Parser-2798"><span class="linenos">2798</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">())</span> +</span><span id="Parser-2799"><a href="#Parser-2799"><span class="linenos">2799</span></a> +</span><span id="Parser-2800"><a href="#Parser-2800"><span class="linenos">2800</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2801"><a href="#Parser-2801"><span class="linenos">2801</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-2802"><a href="#Parser-2802"><span class="linenos">2802</span></a> -</span><span id="Parser-2803"><a href="#Parser-2803"><span class="linenos">2803</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> -</span><span id="Parser-2804"><a href="#Parser-2804"><span class="linenos">2804</span></a> -</span><span id="Parser-2805"><a href="#Parser-2805"><span class="linenos">2805</span></a> <span class="k">def</span> <span class="nf">_parse_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2806"><a href="#Parser-2806"><span class="linenos">2806</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-2807"><a href="#Parser-2807"><span class="linenos">2807</span></a> -</span><span id="Parser-2808"><a href="#Parser-2808"><span class="linenos">2808</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2809"><a href="#Parser-2809"><span class="linenos">2809</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> -</span><span id="Parser-2810"><a href="#Parser-2810"><span class="linenos">2810</span></a> -</span><span id="Parser-2811"><a href="#Parser-2811"><span class="linenos">2811</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Parser-2812"><a href="#Parser-2812"><span class="linenos">2812</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2813"><a href="#Parser-2813"><span class="linenos">2813</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2814"><a href="#Parser-2814"><span class="linenos">2814</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()]</span> +</span><span id="Parser-2803"><a href="#Parser-2803"><span class="linenos">2803</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_function_parameter</span><span class="p">)</span> +</span><span id="Parser-2804"><a href="#Parser-2804"><span class="linenos">2804</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2805"><a href="#Parser-2805"><span class="linenos">2805</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2806"><a href="#Parser-2806"><span class="linenos">2806</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">wrapped</span><span class="o">=</span><span class="kc">True</span> +</span><span id="Parser-2807"><a href="#Parser-2807"><span class="linenos">2807</span></a> <span class="p">)</span> +</span><span id="Parser-2808"><a href="#Parser-2808"><span class="linenos">2808</span></a> +</span><span id="Parser-2809"><a href="#Parser-2809"><span class="linenos">2809</span></a> <span class="k">def</span> <span class="nf">_parse_introducer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2810"><a href="#Parser-2810"><span class="linenos">2810</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-2811"><a href="#Parser-2811"><span class="linenos">2811</span></a> <span class="k">if</span> <span class="n">literal</span><span class="p">:</span> +</span><span id="Parser-2812"><a href="#Parser-2812"><span class="linenos">2812</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Introducer</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">literal</span><span class="p">)</span> +</span><span id="Parser-2813"><a href="#Parser-2813"><span class="linenos">2813</span></a> +</span><span id="Parser-2814"><a href="#Parser-2814"><span class="linenos">2814</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> </span><span id="Parser-2815"><a href="#Parser-2815"><span class="linenos">2815</span></a> -</span><span id="Parser-2816"><a href="#Parser-2816"><span class="linenos">2816</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">):</span> -</span><span id="Parser-2817"><a href="#Parser-2817"><span class="linenos">2817</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2816"><a href="#Parser-2816"><span class="linenos">2816</span></a> <span class="k">def</span> <span class="nf">_parse_national</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2817"><a href="#Parser-2817"><span class="linenos">2817</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">National</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">))</span> </span><span id="Parser-2818"><a href="#Parser-2818"><span class="linenos">2818</span></a> -</span><span id="Parser-2819"><a href="#Parser-2819"><span class="linenos">2819</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2820"><a href="#Parser-2820"><span class="linenos">2820</span></a> -</span><span id="Parser-2821"><a href="#Parser-2821"><span class="linenos">2821</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-2819"><a href="#Parser-2819"><span class="linenos">2819</span></a> <span class="k">def</span> <span class="nf">_parse_session_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2820"><a href="#Parser-2820"><span class="linenos">2820</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2821"><a href="#Parser-2821"><span class="linenos">2821</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> </span><span id="Parser-2822"><a href="#Parser-2822"><span class="linenos">2822</span></a> -</span><span id="Parser-2823"><a href="#Parser-2823"><span class="linenos">2823</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="Parser-2824"><a href="#Parser-2824"><span class="linenos">2824</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2825"><a href="#Parser-2825"><span class="linenos">2825</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-2826"><a href="#Parser-2826"><span class="linenos">2826</span></a> <span class="p">)</span> -</span><span id="Parser-2827"><a href="#Parser-2827"><span class="linenos">2827</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2828"><a href="#Parser-2828"><span class="linenos">2828</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">()</span> -</span><span id="Parser-2829"><a href="#Parser-2829"><span class="linenos">2829</span></a> -</span><span id="Parser-2830"><a href="#Parser-2830"><span class="linenos">2830</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">):</span> -</span><span id="Parser-2831"><a href="#Parser-2831"><span class="linenos">2831</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-2832"><a href="#Parser-2832"><span class="linenos">2832</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2833"><a href="#Parser-2833"><span class="linenos">2833</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">)</span> +</span><span id="Parser-2823"><a href="#Parser-2823"><span class="linenos">2823</span></a> <span class="k">if</span> <span class="n">this</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">):</span> +</span><span id="Parser-2824"><a href="#Parser-2824"><span class="linenos">2824</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">name</span> +</span><span id="Parser-2825"><a href="#Parser-2825"><span class="linenos">2825</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-2826"><a href="#Parser-2826"><span class="linenos">2826</span></a> +</span><span id="Parser-2827"><a href="#Parser-2827"><span class="linenos">2827</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">SessionParameter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">)</span> +</span><span id="Parser-2828"><a href="#Parser-2828"><span class="linenos">2828</span></a> +</span><span id="Parser-2829"><a href="#Parser-2829"><span class="linenos">2829</span></a> <span class="k">def</span> <span class="nf">_parse_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2830"><a href="#Parser-2830"><span class="linenos">2830</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-2831"><a href="#Parser-2831"><span class="linenos">2831</span></a> +</span><span id="Parser-2832"><a href="#Parser-2832"><span class="linenos">2832</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2833"><a href="#Parser-2833"><span class="linenos">2833</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> </span><span id="Parser-2834"><a href="#Parser-2834"><span class="linenos">2834</span></a> -</span><span id="Parser-2835"><a href="#Parser-2835"><span class="linenos">2835</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> -</span><span id="Parser-2836"><a href="#Parser-2836"><span class="linenos">2836</span></a> -</span><span id="Parser-2837"><a href="#Parser-2837"><span class="linenos">2837</span></a> <span class="k">def</span> <span class="nf">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2838"><a href="#Parser-2838"><span class="linenos">2838</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-2839"><a href="#Parser-2839"><span class="linenos">2839</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> -</span><span id="Parser-2840"><a href="#Parser-2840"><span class="linenos">2840</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-2841"><a href="#Parser-2841"><span class="linenos">2841</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2835"><a href="#Parser-2835"><span class="linenos">2835</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Parser-2836"><a href="#Parser-2836"><span class="linenos">2836</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2837"><a href="#Parser-2837"><span class="linenos">2837</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2838"><a href="#Parser-2838"><span class="linenos">2838</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()]</span> +</span><span id="Parser-2839"><a href="#Parser-2839"><span class="linenos">2839</span></a> +</span><span id="Parser-2840"><a href="#Parser-2840"><span class="linenos">2840</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">):</span> +</span><span id="Parser-2841"><a href="#Parser-2841"><span class="linenos">2841</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">LAMBDAS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="n">expressions</span><span class="p">)</span> </span><span id="Parser-2842"><a href="#Parser-2842"><span class="linenos">2842</span></a> -</span><span id="Parser-2843"><a href="#Parser-2843"><span class="linenos">2843</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-2844"><a href="#Parser-2844"><span class="linenos">2844</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> -</span><span id="Parser-2845"><a href="#Parser-2845"><span class="linenos">2845</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-2846"><a href="#Parser-2846"><span class="linenos">2846</span></a> <span class="p">)</span> -</span><span id="Parser-2847"><a href="#Parser-2847"><span class="linenos">2847</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2848"><a href="#Parser-2848"><span class="linenos">2848</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Schema</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">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="Parser-2849"><a href="#Parser-2849"><span class="linenos">2849</span></a> -</span><span id="Parser-2850"><a href="#Parser-2850"><span class="linenos">2850</span></a> <span class="k">def</span> <span class="nf">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2851"><a href="#Parser-2851"><span class="linenos">2851</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-2852"><a href="#Parser-2852"><span class="linenos">2852</span></a> -</span><span id="Parser-2853"><a href="#Parser-2853"><span class="linenos">2853</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ORDINALITY"</span><span class="p">):</span> -</span><span id="Parser-2854"><a href="#Parser-2854"><span class="linenos">2854</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">ordinality</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2855"><a href="#Parser-2855"><span class="linenos">2855</span></a> -</span><span id="Parser-2856"><a href="#Parser-2856"><span class="linenos">2856</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-2857"><a href="#Parser-2857"><span class="linenos">2857</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-2858"><a href="#Parser-2858"><span class="linenos">2858</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_constraint</span><span class="p">()</span> -</span><span id="Parser-2859"><a href="#Parser-2859"><span class="linenos">2859</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> -</span><span id="Parser-2860"><a href="#Parser-2860"><span class="linenos">2860</span></a> <span class="k">break</span> -</span><span id="Parser-2861"><a href="#Parser-2861"><span class="linenos">2861</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> -</span><span id="Parser-2862"><a href="#Parser-2862"><span class="linenos">2862</span></a> -</span><span id="Parser-2863"><a href="#Parser-2863"><span class="linenos">2863</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">constraints</span><span class="p">:</span> -</span><span id="Parser-2864"><a href="#Parser-2864"><span class="linenos">2864</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2865"><a href="#Parser-2865"><span class="linenos">2865</span></a> -</span><span id="Parser-2866"><a href="#Parser-2866"><span class="linenos">2866</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">constraints</span><span class="o">=</span><span class="n">constraints</span><span class="p">)</span> -</span><span id="Parser-2867"><a href="#Parser-2867"><span class="linenos">2867</span></a> -</span><span id="Parser-2868"><a href="#Parser-2868"><span class="linenos">2868</span></a> <span class="k">def</span> <span class="nf">_parse_auto_increment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-2869"><a href="#Parser-2869"><span class="linenos">2869</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2870"><a href="#Parser-2870"><span class="linenos">2870</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2871"><a href="#Parser-2871"><span class="linenos">2871</span></a> -</span><span id="Parser-2872"><a href="#Parser-2872"><span class="linenos">2872</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-2873"><a href="#Parser-2873"><span class="linenos">2873</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-2874"><a href="#Parser-2874"><span class="linenos">2874</span></a> <span class="n">start</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="Parser-2875"><a href="#Parser-2875"><span class="linenos">2875</span></a> <span class="n">increment</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="Parser-2876"><a href="#Parser-2876"><span class="linenos">2876</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> -</span><span id="Parser-2877"><a href="#Parser-2877"><span class="linenos">2877</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-2878"><a href="#Parser-2878"><span class="linenos">2878</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">)</span> -</span><span id="Parser-2879"><a href="#Parser-2879"><span class="linenos">2879</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> -</span><span id="Parser-2880"><a href="#Parser-2880"><span class="linenos">2880</span></a> -</span><span id="Parser-2881"><a href="#Parser-2881"><span class="linenos">2881</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">and</span> <span class="n">increment</span><span class="p">:</span> -</span><span id="Parser-2882"><a href="#Parser-2882"><span class="linenos">2882</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">increment</span><span class="o">=</span><span class="n">increment</span><span class="p">)</span> -</span><span id="Parser-2883"><a href="#Parser-2883"><span class="linenos">2883</span></a> -</span><span id="Parser-2884"><a href="#Parser-2884"><span class="linenos">2884</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">()</span> -</span><span id="Parser-2885"><a href="#Parser-2885"><span class="linenos">2885</span></a> -</span><span id="Parser-2886"><a href="#Parser-2886"><span class="linenos">2886</span></a> <span class="k">def</span> <span class="nf">_parse_generated_as_identity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-2887"><a href="#Parser-2887"><span class="linenos">2887</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BY_DEFAULT</span><span class="p">):</span> -</span><span id="Parser-2888"><a href="#Parser-2888"><span class="linenos">2888</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-2889"><a href="#Parser-2889"><span class="linenos">2889</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2890"><a href="#Parser-2890"><span class="linenos">2890</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> -</span><span id="Parser-2891"><a href="#Parser-2891"><span class="linenos">2891</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2892"><a href="#Parser-2892"><span class="linenos">2892</span></a> -</span><span id="Parser-2893"><a href="#Parser-2893"><span class="linenos">2893</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AS"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">)</span> -</span><span id="Parser-2894"><a href="#Parser-2894"><span class="linenos">2894</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-2895"><a href="#Parser-2895"><span class="linenos">2895</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">,</span> <span class="s2">"WITH"</span><span class="p">):</span> -</span><span id="Parser-2896"><a href="#Parser-2896"><span class="linenos">2896</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-2897"><a href="#Parser-2897"><span class="linenos">2897</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> -</span><span id="Parser-2898"><a href="#Parser-2898"><span class="linenos">2898</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-2899"><a href="#Parser-2899"><span class="linenos">2899</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> -</span><span id="Parser-2900"><a href="#Parser-2900"><span class="linenos">2900</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-2901"><a href="#Parser-2901"><span class="linenos">2901</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> -</span><span id="Parser-2902"><a href="#Parser-2902"><span class="linenos">2902</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-2903"><a href="#Parser-2903"><span class="linenos">2903</span></a> -</span><span id="Parser-2904"><a href="#Parser-2904"><span class="linenos">2904</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">):</span> -</span><span id="Parser-2905"><a href="#Parser-2905"><span class="linenos">2905</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2906"><a href="#Parser-2906"><span class="linenos">2906</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"CYCLE"</span><span class="p">):</span> -</span><span id="Parser-2907"><a href="#Parser-2907"><span class="linenos">2907</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-2908"><a href="#Parser-2908"><span class="linenos">2908</span></a> -</span><span id="Parser-2909"><a href="#Parser-2909"><span class="linenos">2909</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-2910"><a href="#Parser-2910"><span class="linenos">2910</span></a> -</span><span id="Parser-2911"><a href="#Parser-2911"><span class="linenos">2911</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2912"><a href="#Parser-2912"><span class="linenos">2912</span></a> -</span><span id="Parser-2913"><a href="#Parser-2913"><span class="linenos">2913</span></a> <span class="k">def</span> <span class="nf">_parse_not_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2914"><a href="#Parser-2914"><span class="linenos">2914</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">):</span> -</span><span id="Parser-2915"><a href="#Parser-2915"><span class="linenos">2915</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">)</span> -</span><span id="Parser-2916"><a href="#Parser-2916"><span class="linenos">2916</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASESPECIFIC"</span><span class="p">):</span> -</span><span id="Parser-2917"><a href="#Parser-2917"><span class="linenos">2917</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-2918"><a href="#Parser-2918"><span class="linenos">2918</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2919"><a href="#Parser-2919"><span class="linenos">2919</span></a> -</span><span id="Parser-2920"><a href="#Parser-2920"><span class="linenos">2920</span></a> <span class="k">def</span> <span class="nf">_parse_column_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2921"><a href="#Parser-2921"><span class="linenos">2921</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> -</span><span id="Parser-2922"><a href="#Parser-2922"><span class="linenos">2922</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> -</span><span id="Parser-2923"><a href="#Parser-2923"><span class="linenos">2923</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2843"><a href="#Parser-2843"><span class="linenos">2843</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2844"><a href="#Parser-2844"><span class="linenos">2844</span></a> +</span><span id="Parser-2845"><a href="#Parser-2845"><span class="linenos">2845</span></a> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-2846"><a href="#Parser-2846"><span class="linenos">2846</span></a> +</span><span id="Parser-2847"><a href="#Parser-2847"><span class="linenos">2847</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="Parser-2848"><a href="#Parser-2848"><span class="linenos">2848</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2849"><a href="#Parser-2849"><span class="linenos">2849</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-2850"><a href="#Parser-2850"><span class="linenos">2850</span></a> <span class="p">)</span> +</span><span id="Parser-2851"><a href="#Parser-2851"><span class="linenos">2851</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2852"><a href="#Parser-2852"><span class="linenos">2852</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select_or_expression</span><span class="p">()</span> +</span><span id="Parser-2853"><a href="#Parser-2853"><span class="linenos">2853</span></a> +</span><span id="Parser-2854"><a href="#Parser-2854"><span class="linenos">2854</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">):</span> +</span><span id="Parser-2855"><a href="#Parser-2855"><span class="linenos">2855</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2856"><a href="#Parser-2856"><span class="linenos">2856</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2857"><a href="#Parser-2857"><span class="linenos">2857</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">)</span> +</span><span id="Parser-2858"><a href="#Parser-2858"><span class="linenos">2858</span></a> +</span><span id="Parser-2859"><a href="#Parser-2859"><span class="linenos">2859</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_limit</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="p">))</span> +</span><span id="Parser-2860"><a href="#Parser-2860"><span class="linenos">2860</span></a> +</span><span id="Parser-2861"><a href="#Parser-2861"><span class="linenos">2861</span></a> <span class="k">def</span> <span class="nf">_parse_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2862"><a href="#Parser-2862"><span class="linenos">2862</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-2863"><a href="#Parser-2863"><span class="linenos">2863</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">)</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">):</span> +</span><span id="Parser-2864"><a href="#Parser-2864"><span class="linenos">2864</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-2865"><a href="#Parser-2865"><span class="linenos">2865</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2866"><a href="#Parser-2866"><span class="linenos">2866</span></a> +</span><span id="Parser-2867"><a href="#Parser-2867"><span class="linenos">2867</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-2868"><a href="#Parser-2868"><span class="linenos">2868</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_constraint</span><span class="p">()</span> +</span><span id="Parser-2869"><a href="#Parser-2869"><span class="linenos">2869</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-2870"><a href="#Parser-2870"><span class="linenos">2870</span></a> <span class="p">)</span> +</span><span id="Parser-2871"><a href="#Parser-2871"><span class="linenos">2871</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2872"><a href="#Parser-2872"><span class="linenos">2872</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Schema</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">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> +</span><span id="Parser-2873"><a href="#Parser-2873"><span class="linenos">2873</span></a> +</span><span id="Parser-2874"><a href="#Parser-2874"><span class="linenos">2874</span></a> <span class="k">def</span> <span class="nf">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2875"><a href="#Parser-2875"><span class="linenos">2875</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-2876"><a href="#Parser-2876"><span class="linenos">2876</span></a> +</span><span id="Parser-2877"><a href="#Parser-2877"><span class="linenos">2877</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"FOR"</span><span class="p">,</span> <span class="s2">"ORDINALITY"</span><span class="p">):</span> +</span><span id="Parser-2878"><a href="#Parser-2878"><span class="linenos">2878</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">ordinality</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2879"><a href="#Parser-2879"><span class="linenos">2879</span></a> +</span><span id="Parser-2880"><a href="#Parser-2880"><span class="linenos">2880</span></a> <span class="n">constraints</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-2881"><a href="#Parser-2881"><span class="linenos">2881</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-2882"><a href="#Parser-2882"><span class="linenos">2882</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_constraint</span><span class="p">()</span> +</span><span id="Parser-2883"><a href="#Parser-2883"><span class="linenos">2883</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> +</span><span id="Parser-2884"><a href="#Parser-2884"><span class="linenos">2884</span></a> <span class="k">break</span> +</span><span id="Parser-2885"><a href="#Parser-2885"><span class="linenos">2885</span></a> <span class="n">constraints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="Parser-2886"><a href="#Parser-2886"><span class="linenos">2886</span></a> +</span><span id="Parser-2887"><a href="#Parser-2887"><span class="linenos">2887</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">kind</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">constraints</span><span class="p">:</span> +</span><span id="Parser-2888"><a href="#Parser-2888"><span class="linenos">2888</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2889"><a href="#Parser-2889"><span class="linenos">2889</span></a> +</span><span id="Parser-2890"><a href="#Parser-2890"><span class="linenos">2890</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> <span class="n">constraints</span><span class="o">=</span><span class="n">constraints</span><span class="p">)</span> +</span><span id="Parser-2891"><a href="#Parser-2891"><span class="linenos">2891</span></a> +</span><span id="Parser-2892"><a href="#Parser-2892"><span class="linenos">2892</span></a> <span class="k">def</span> <span class="nf">_parse_auto_increment</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2893"><a href="#Parser-2893"><span class="linenos">2893</span></a> <span class="n">start</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2894"><a href="#Parser-2894"><span class="linenos">2894</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2895"><a href="#Parser-2895"><span class="linenos">2895</span></a> +</span><span id="Parser-2896"><a href="#Parser-2896"><span class="linenos">2896</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-2897"><a href="#Parser-2897"><span class="linenos">2897</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-2898"><a href="#Parser-2898"><span class="linenos">2898</span></a> <span class="n">start</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="Parser-2899"><a href="#Parser-2899"><span class="linenos">2899</span></a> <span class="n">increment</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="Parser-2900"><a href="#Parser-2900"><span class="linenos">2900</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">):</span> +</span><span id="Parser-2901"><a href="#Parser-2901"><span class="linenos">2901</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-2902"><a href="#Parser-2902"><span class="linenos">2902</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">)</span> +</span><span id="Parser-2903"><a href="#Parser-2903"><span class="linenos">2903</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span> +</span><span id="Parser-2904"><a href="#Parser-2904"><span class="linenos">2904</span></a> +</span><span id="Parser-2905"><a href="#Parser-2905"><span class="linenos">2905</span></a> <span class="k">if</span> <span class="n">start</span> <span class="ow">and</span> <span class="n">increment</span><span class="p">:</span> +</span><span id="Parser-2906"><a href="#Parser-2906"><span class="linenos">2906</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">,</span> <span class="n">increment</span><span class="o">=</span><span class="n">increment</span><span class="p">)</span> +</span><span id="Parser-2907"><a href="#Parser-2907"><span class="linenos">2907</span></a> +</span><span id="Parser-2908"><a href="#Parser-2908"><span class="linenos">2908</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">AutoIncrementColumnConstraint</span><span class="p">()</span> +</span><span id="Parser-2909"><a href="#Parser-2909"><span class="linenos">2909</span></a> +</span><span id="Parser-2910"><a href="#Parser-2910"><span class="linenos">2910</span></a> <span class="k">def</span> <span class="nf">_parse_compress</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2911"><a href="#Parser-2911"><span class="linenos">2911</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-2912"><a href="#Parser-2912"><span class="linenos">2912</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2913"><a href="#Parser-2913"><span class="linenos">2913</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-2914"><a href="#Parser-2914"><span class="linenos">2914</span></a> <span class="p">)</span> +</span><span id="Parser-2915"><a href="#Parser-2915"><span class="linenos">2915</span></a> +</span><span id="Parser-2916"><a href="#Parser-2916"><span class="linenos">2916</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CompressColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-2917"><a href="#Parser-2917"><span class="linenos">2917</span></a> +</span><span id="Parser-2918"><a href="#Parser-2918"><span class="linenos">2918</span></a> <span class="k">def</span> <span class="nf">_parse_generated_as_identity</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-2919"><a href="#Parser-2919"><span class="linenos">2919</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BY_DEFAULT</span><span class="p">):</span> +</span><span id="Parser-2920"><a href="#Parser-2920"><span class="linenos">2920</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-2921"><a href="#Parser-2921"><span class="linenos">2921</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-2922"><a href="#Parser-2922"><span class="linenos">2922</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALWAYS"</span><span class="p">)</span> +</span><span id="Parser-2923"><a href="#Parser-2923"><span class="linenos">2923</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GeneratedAsIdentityColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="Parser-2924"><a href="#Parser-2924"><span class="linenos">2924</span></a> -</span><span id="Parser-2925"><a href="#Parser-2925"><span class="linenos">2925</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> -</span><span id="Parser-2926"><a href="#Parser-2926"><span class="linenos">2926</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-2927"><a href="#Parser-2927"><span class="linenos">2927</span></a> -</span><span id="Parser-2928"><a href="#Parser-2928"><span class="linenos">2928</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> -</span><span id="Parser-2929"><a href="#Parser-2929"><span class="linenos">2929</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-2930"><a href="#Parser-2930"><span class="linenos">2930</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">,</span> -</span><span id="Parser-2931"><a href="#Parser-2931"><span class="linenos">2931</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-2932"><a href="#Parser-2932"><span class="linenos">2932</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">),</span> -</span><span id="Parser-2933"><a href="#Parser-2933"><span class="linenos">2933</span></a> <span class="p">)</span> -</span><span id="Parser-2934"><a href="#Parser-2934"><span class="linenos">2934</span></a> -</span><span id="Parser-2935"><a href="#Parser-2935"><span class="linenos">2935</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-2936"><a href="#Parser-2936"><span class="linenos">2936</span></a> -</span><span id="Parser-2937"><a href="#Parser-2937"><span class="linenos">2937</span></a> <span class="k">def</span> <span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2938"><a href="#Parser-2938"><span class="linenos">2938</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> -</span><span id="Parser-2939"><a href="#Parser-2939"><span class="linenos">2939</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">)</span> +</span><span id="Parser-2925"><a href="#Parser-2925"><span class="linenos">2925</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"AS"</span><span class="p">,</span> <span class="s2">"IDENTITY"</span><span class="p">)</span> +</span><span id="Parser-2926"><a href="#Parser-2926"><span class="linenos">2926</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-2927"><a href="#Parser-2927"><span class="linenos">2927</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"START"</span><span class="p">,</span> <span class="s2">"WITH"</span><span class="p">):</span> +</span><span id="Parser-2928"><a href="#Parser-2928"><span class="linenos">2928</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"start"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-2929"><a href="#Parser-2929"><span class="linenos">2929</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INCREMENT"</span><span class="p">,</span> <span class="s2">"BY"</span><span class="p">):</span> +</span><span id="Parser-2930"><a href="#Parser-2930"><span class="linenos">2930</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"increment"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-2931"><a href="#Parser-2931"><span class="linenos">2931</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MINVALUE"</span><span class="p">):</span> +</span><span id="Parser-2932"><a href="#Parser-2932"><span class="linenos">2932</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"minvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-2933"><a href="#Parser-2933"><span class="linenos">2933</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MAXVALUE"</span><span class="p">):</span> +</span><span id="Parser-2934"><a href="#Parser-2934"><span class="linenos">2934</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"maxvalue"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-2935"><a href="#Parser-2935"><span class="linenos">2935</span></a> +</span><span id="Parser-2936"><a href="#Parser-2936"><span class="linenos">2936</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CYCLE"</span><span class="p">):</span> +</span><span id="Parser-2937"><a href="#Parser-2937"><span class="linenos">2937</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2938"><a href="#Parser-2938"><span class="linenos">2938</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">,</span> <span class="s2">"CYCLE"</span><span class="p">):</span> +</span><span id="Parser-2939"><a href="#Parser-2939"><span class="linenos">2939</span></a> <span class="n">this</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"cycle"</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span> </span><span id="Parser-2940"><a href="#Parser-2940"><span class="linenos">2940</span></a> -</span><span id="Parser-2941"><a href="#Parser-2941"><span class="linenos">2941</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-2942"><a href="#Parser-2942"><span class="linenos">2942</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-2943"><a href="#Parser-2943"><span class="linenos">2943</span></a> -</span><span id="Parser-2944"><a href="#Parser-2944"><span class="linenos">2944</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-2945"><a href="#Parser-2945"><span class="linenos">2945</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> -</span><span id="Parser-2946"><a href="#Parser-2946"><span class="linenos">2946</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> -</span><span id="Parser-2947"><a href="#Parser-2947"><span class="linenos">2947</span></a> <span class="k">break</span> -</span><span id="Parser-2948"><a href="#Parser-2948"><span class="linenos">2948</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> -</span><span id="Parser-2949"><a href="#Parser-2949"><span class="linenos">2949</span></a> -</span><span id="Parser-2950"><a href="#Parser-2950"><span class="linenos">2950</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Constraint</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-2951"><a href="#Parser-2951"><span class="linenos">2951</span></a> -</span><span id="Parser-2952"><a href="#Parser-2952"><span class="linenos">2952</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraint</span><span class="p">(</span> -</span><span id="Parser-2953"><a href="#Parser-2953"><span class="linenos">2953</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">constraints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2954"><a href="#Parser-2954"><span class="linenos">2954</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-2955"><a href="#Parser-2955"><span class="linenos">2955</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="n">constraints</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> -</span><span id="Parser-2956"><a href="#Parser-2956"><span class="linenos">2956</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-2957"><a href="#Parser-2957"><span class="linenos">2957</span></a> -</span><span id="Parser-2958"><a href="#Parser-2958"><span class="linenos">2958</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-2959"><a href="#Parser-2959"><span class="linenos">2959</span></a> <span class="k">if</span> <span class="n">constraint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">:</span> -</span><span id="Parser-2960"><a href="#Parser-2960"><span class="linenos">2960</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser found for schema constraint </span><span class="si">{</span><span class="n">constraint</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> -</span><span id="Parser-2961"><a href="#Parser-2961"><span class="linenos">2961</span></a> -</span><span id="Parser-2962"><a href="#Parser-2962"><span class="linenos">2962</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="n">constraint</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-2941"><a href="#Parser-2941"><span class="linenos">2941</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-2942"><a href="#Parser-2942"><span class="linenos">2942</span></a> +</span><span id="Parser-2943"><a href="#Parser-2943"><span class="linenos">2943</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2944"><a href="#Parser-2944"><span class="linenos">2944</span></a> +</span><span id="Parser-2945"><a href="#Parser-2945"><span class="linenos">2945</span></a> <span class="k">def</span> <span class="nf">_parse_inline</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2946"><a href="#Parser-2946"><span class="linenos">2946</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"LENGTH"</span><span class="p">)</span> +</span><span id="Parser-2947"><a href="#Parser-2947"><span class="linenos">2947</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">InlineLengthColumnConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-2948"><a href="#Parser-2948"><span class="linenos">2948</span></a> +</span><span id="Parser-2949"><a href="#Parser-2949"><span class="linenos">2949</span></a> <span class="k">def</span> <span class="nf">_parse_not_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2950"><a href="#Parser-2950"><span class="linenos">2950</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NULL"</span><span class="p">):</span> +</span><span id="Parser-2951"><a href="#Parser-2951"><span class="linenos">2951</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">NotNullColumnConstraint</span><span class="p">)</span> +</span><span id="Parser-2952"><a href="#Parser-2952"><span class="linenos">2952</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CASESPECIFIC"</span><span class="p">):</span> +</span><span id="Parser-2953"><a href="#Parser-2953"><span class="linenos">2953</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CaseSpecificColumnConstraint</span><span class="p">,</span> <span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-2954"><a href="#Parser-2954"><span class="linenos">2954</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2955"><a href="#Parser-2955"><span class="linenos">2955</span></a> +</span><span id="Parser-2956"><a href="#Parser-2956"><span class="linenos">2956</span></a> <span class="k">def</span> <span class="nf">_parse_column_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2957"><a href="#Parser-2957"><span class="linenos">2957</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> +</span><span id="Parser-2958"><a href="#Parser-2958"><span class="linenos">2958</span></a> <span class="k">if</span> <span class="n">this</span><span class="p">:</span> +</span><span id="Parser-2959"><a href="#Parser-2959"><span class="linenos">2959</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2960"><a href="#Parser-2960"><span class="linenos">2960</span></a> +</span><span id="Parser-2961"><a href="#Parser-2961"><span class="linenos">2961</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> +</span><span id="Parser-2962"><a href="#Parser-2962"><span class="linenos">2962</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> </span><span id="Parser-2963"><a href="#Parser-2963"><span class="linenos">2963</span></a> -</span><span id="Parser-2964"><a href="#Parser-2964"><span class="linenos">2964</span></a> <span class="k">def</span> <span class="nf">_parse_unique</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-2965"><a href="#Parser-2965"><span class="linenos">2965</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-2966"><a href="#Parser-2966"><span class="linenos">2966</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">)</span> -</span><span id="Parser-2967"><a href="#Parser-2967"><span class="linenos">2967</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Unique</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">())</span> -</span><span id="Parser-2968"><a href="#Parser-2968"><span class="linenos">2968</span></a> -</span><span id="Parser-2969"><a href="#Parser-2969"><span class="linenos">2969</span></a> <span class="k">def</span> <span class="nf">_parse_key_constraint_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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="Parser-2970"><a href="#Parser-2970"><span class="linenos">2970</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-2971"><a href="#Parser-2971"><span class="linenos">2971</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-2972"><a href="#Parser-2972"><span class="linenos">2972</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-2973"><a href="#Parser-2973"><span class="linenos">2973</span></a> <span class="k">break</span> -</span><span id="Parser-2974"><a href="#Parser-2974"><span class="linenos">2974</span></a> -</span><span id="Parser-2975"><a href="#Parser-2975"><span class="linenos">2975</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-2976"><a href="#Parser-2976"><span class="linenos">2976</span></a> <span class="n">action</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-2977"><a href="#Parser-2977"><span class="linenos">2977</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-2978"><a href="#Parser-2978"><span class="linenos">2978</span></a> -</span><span id="Parser-2979"><a href="#Parser-2979"><span class="linenos">2979</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">):</span> -</span><span id="Parser-2980"><a href="#Parser-2980"><span class="linenos">2980</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> -</span><span id="Parser-2981"><a href="#Parser-2981"><span class="linenos">2981</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">):</span> -</span><span id="Parser-2982"><a href="#Parser-2982"><span class="linenos">2982</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"CASCADE"</span> -</span><span id="Parser-2983"><a href="#Parser-2983"><span class="linenos">2983</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> -</span><span id="Parser-2984"><a href="#Parser-2984"><span class="linenos">2984</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET NULL"</span> -</span><span id="Parser-2985"><a href="#Parser-2985"><span class="linenos">2985</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="Parser-2986"><a href="#Parser-2986"><span class="linenos">2986</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET DEFAULT"</span> -</span><span id="Parser-2987"><a href="#Parser-2987"><span class="linenos">2987</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-2988"><a href="#Parser-2988"><span class="linenos">2988</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid key constraint"</span><span class="p">)</span> -</span><span id="Parser-2989"><a href="#Parser-2989"><span class="linenos">2989</span></a> -</span><span id="Parser-2990"><a href="#Parser-2990"><span class="linenos">2990</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">action</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser-2991"><a href="#Parser-2991"><span class="linenos">2991</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"ENFORCED"</span><span class="p">):</span> -</span><span id="Parser-2992"><a href="#Parser-2992"><span class="linenos">2992</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NOT ENFORCED"</span><span class="p">)</span> -</span><span id="Parser-2993"><a href="#Parser-2993"><span class="linenos">2993</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">):</span> -</span><span id="Parser-2994"><a href="#Parser-2994"><span class="linenos">2994</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">)</span> -</span><span id="Parser-2995"><a href="#Parser-2995"><span class="linenos">2995</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INITIALLY"</span><span class="p">,</span> <span class="s2">"DEFERRED"</span><span class="p">):</span> -</span><span id="Parser-2996"><a href="#Parser-2996"><span class="linenos">2996</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"INITIALLY DEFERRED"</span><span class="p">)</span> -</span><span id="Parser-2997"><a href="#Parser-2997"><span class="linenos">2997</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">):</span> -</span><span id="Parser-2998"><a href="#Parser-2998"><span class="linenos">2998</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">)</span> -</span><span id="Parser-2999"><a href="#Parser-2999"><span class="linenos">2999</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"FULL"</span><span class="p">):</span> -</span><span id="Parser-3000"><a href="#Parser-3000"><span class="linenos">3000</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"MATCH FULL"</span><span class="p">)</span> -</span><span id="Parser-3001"><a href="#Parser-3001"><span class="linenos">3001</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3002"><a href="#Parser-3002"><span class="linenos">3002</span></a> <span class="k">break</span> -</span><span id="Parser-3003"><a href="#Parser-3003"><span class="linenos">3003</span></a> -</span><span id="Parser-3004"><a href="#Parser-3004"><span class="linenos">3004</span></a> <span class="k">return</span> <span class="n">options</span> -</span><span id="Parser-3005"><a href="#Parser-3005"><span class="linenos">3005</span></a> -</span><span id="Parser-3006"><a href="#Parser-3006"><span class="linenos">3006</span></a> <span class="k">def</span> <span class="nf">_parse_references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3007"><a href="#Parser-3007"><span class="linenos">3007</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">):</span> -</span><span id="Parser-3008"><a href="#Parser-3008"><span class="linenos">3008</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3009"><a href="#Parser-3009"><span class="linenos">3009</span></a> -</span><span id="Parser-3010"><a href="#Parser-3010"><span class="linenos">3010</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3011"><a href="#Parser-3011"><span class="linenos">3011</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-3012"><a href="#Parser-3012"><span class="linenos">3012</span></a> -</span><span id="Parser-3013"><a href="#Parser-3013"><span class="linenos">3013</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3014"><a href="#Parser-3014"><span class="linenos">3014</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="Parser-3015"><a href="#Parser-3015"><span class="linenos">3015</span></a> -</span><span id="Parser-3016"><a href="#Parser-3016"><span class="linenos">3016</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> -</span><span id="Parser-3017"><a href="#Parser-3017"><span class="linenos">3017</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> -</span><span id="Parser-3018"><a href="#Parser-3018"><span class="linenos">3018</span></a> -</span><span id="Parser-3019"><a href="#Parser-3019"><span class="linenos">3019</span></a> <span class="k">def</span> <span class="nf">_parse_foreign_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3020"><a href="#Parser-3020"><span class="linenos">3020</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="Parser-3021"><a href="#Parser-3021"><span class="linenos">3021</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> -</span><span id="Parser-3022"><a href="#Parser-3022"><span class="linenos">3022</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Parser-3023"><a href="#Parser-3023"><span class="linenos">3023</span></a> -</span><span id="Parser-3024"><a href="#Parser-3024"><span class="linenos">3024</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> -</span><span id="Parser-3025"><a href="#Parser-3025"><span class="linenos">3025</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)):</span> -</span><span id="Parser-3026"><a href="#Parser-3026"><span class="linenos">3026</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected DELETE or UPDATE"</span><span class="p">)</span> -</span><span id="Parser-3027"><a href="#Parser-3027"><span class="linenos">3027</span></a> -</span><span id="Parser-3028"><a href="#Parser-3028"><span class="linenos">3028</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> -</span><span id="Parser-3029"><a href="#Parser-3029"><span class="linenos">3029</span></a> -</span><span id="Parser-3030"><a href="#Parser-3030"><span class="linenos">3030</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">):</span> -</span><span id="Parser-3031"><a href="#Parser-3031"><span class="linenos">3031</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> -</span><span id="Parser-3032"><a href="#Parser-3032"><span class="linenos">3032</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> -</span><span id="Parser-3033"><a href="#Parser-3033"><span class="linenos">3033</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> -</span><span id="Parser-3034"><a href="#Parser-3034"><span class="linenos">3034</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-3035"><a href="#Parser-3035"><span class="linenos">3035</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3036"><a href="#Parser-3036"><span class="linenos">3036</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3037"><a href="#Parser-3037"><span class="linenos">3037</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-3038"><a href="#Parser-3038"><span class="linenos">3038</span></a> -</span><span id="Parser-3039"><a href="#Parser-3039"><span class="linenos">3039</span></a> <span class="n">options</span><span class="p">[</span><span class="n">kind</span><span class="p">]</span> <span class="o">=</span> <span class="n">action</span> -</span><span id="Parser-3040"><a href="#Parser-3040"><span class="linenos">3040</span></a> -</span><span id="Parser-3041"><a href="#Parser-3041"><span class="linenos">3041</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3042"><a href="#Parser-3042"><span class="linenos">3042</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">reference</span><span class="o">=</span><span class="n">reference</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-3043"><a href="#Parser-3043"><span class="linenos">3043</span></a> <span class="p">)</span> -</span><span id="Parser-3044"><a href="#Parser-3044"><span class="linenos">3044</span></a> -</span><span id="Parser-3045"><a href="#Parser-3045"><span class="linenos">3045</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3046"><a href="#Parser-3046"><span class="linenos">3046</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-3047"><a href="#Parser-3047"><span class="linenos">3047</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">))</span> -</span><span id="Parser-3048"><a href="#Parser-3048"><span class="linenos">3048</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span> -</span><span id="Parser-3049"><a href="#Parser-3049"><span class="linenos">3049</span></a> <span class="p">)</span> -</span><span id="Parser-3050"><a href="#Parser-3050"><span class="linenos">3050</span></a> -</span><span id="Parser-3051"><a href="#Parser-3051"><span class="linenos">3051</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3052"><a href="#Parser-3052"><span class="linenos">3052</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">)</span> -</span><span id="Parser-3053"><a href="#Parser-3053"><span class="linenos">3053</span></a> -</span><span id="Parser-3054"><a href="#Parser-3054"><span class="linenos">3054</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> -</span><span id="Parser-3055"><a href="#Parser-3055"><span class="linenos">3055</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> -</span><span id="Parser-3056"><a href="#Parser-3056"><span class="linenos">3056</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> -</span><span id="Parser-3057"><a href="#Parser-3057"><span class="linenos">3057</span></a> -</span><span id="Parser-3058"><a href="#Parser-3058"><span class="linenos">3058</span></a> <span class="k">def</span> <span class="nf">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3059"><a href="#Parser-3059"><span class="linenos">3059</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)):</span> -</span><span id="Parser-3060"><a href="#Parser-3060"><span class="linenos">3060</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3061"><a href="#Parser-3061"><span class="linenos">3061</span></a> -</span><span id="Parser-3062"><a href="#Parser-3062"><span class="linenos">3062</span></a> <span class="n">bracket_kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-3063"><a href="#Parser-3063"><span class="linenos">3063</span></a> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> -</span><span id="Parser-3064"><a href="#Parser-3064"><span class="linenos">3064</span></a> -</span><span id="Parser-3065"><a href="#Parser-3065"><span class="linenos">3065</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> -</span><span id="Parser-3066"><a href="#Parser-3066"><span class="linenos">3066</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())]</span> -</span><span id="Parser-3067"><a href="#Parser-3067"><span class="linenos">3067</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3068"><a href="#Parser-3068"><span class="linenos">3068</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()))</span> -</span><span id="Parser-3069"><a href="#Parser-3069"><span class="linenos">3069</span></a> -</span><span id="Parser-3070"><a href="#Parser-3070"><span class="linenos">3070</span></a> <span class="c1"># https://duckdb.org/docs/sql/data_types/struct.html#creating-structs</span> -</span><span id="Parser-3071"><a href="#Parser-3071"><span class="linenos">3071</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> -</span><span id="Parser-3072"><a href="#Parser-3072"><span class="linenos">3072</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-3073"><a href="#Parser-3073"><span class="linenos">3073</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">this</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="o">==</span> <span class="s2">"ARRAY"</span><span class="p">:</span> -</span><span id="Parser-3074"><a href="#Parser-3074"><span class="linenos">3074</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-3075"><a href="#Parser-3075"><span class="linenos">3075</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3076"><a href="#Parser-3076"><span class="linenos">3076</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> -</span><span id="Parser-3077"><a href="#Parser-3077"><span class="linenos">3077</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Bracket</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-3078"><a href="#Parser-3078"><span class="linenos">3078</span></a> -</span><span id="Parser-3079"><a href="#Parser-3079"><span class="linenos">3079</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">)</span> <span class="ow">and</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">:</span> -</span><span id="Parser-3080"><a href="#Parser-3080"><span class="linenos">3080</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected ]"</span><span class="p">)</span> -</span><span id="Parser-3081"><a href="#Parser-3081"><span class="linenos">3081</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> <span class="ow">and</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> -</span><span id="Parser-3082"><a href="#Parser-3082"><span class="linenos">3082</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected }"</span><span class="p">)</span> -</span><span id="Parser-3083"><a href="#Parser-3083"><span class="linenos">3083</span></a> -</span><span id="Parser-3084"><a href="#Parser-3084"><span class="linenos">3084</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-3085"><a href="#Parser-3085"><span class="linenos">3085</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-2964"><a href="#Parser-2964"><span class="linenos">2964</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> +</span><span id="Parser-2965"><a href="#Parser-2965"><span class="linenos">2965</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-2966"><a href="#Parser-2966"><span class="linenos">2966</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnConstraint</span><span class="p">,</span> +</span><span id="Parser-2967"><a href="#Parser-2967"><span class="linenos">2967</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-2968"><a href="#Parser-2968"><span class="linenos">2968</span></a> <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()](</span><span class="bp">self</span><span class="p">),</span> +</span><span id="Parser-2969"><a href="#Parser-2969"><span class="linenos">2969</span></a> <span class="p">)</span> +</span><span id="Parser-2970"><a href="#Parser-2970"><span class="linenos">2970</span></a> +</span><span id="Parser-2971"><a href="#Parser-2971"><span class="linenos">2971</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-2972"><a href="#Parser-2972"><span class="linenos">2972</span></a> +</span><span id="Parser-2973"><a href="#Parser-2973"><span class="linenos">2973</span></a> <span class="k">def</span> <span class="nf">_parse_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2974"><a href="#Parser-2974"><span class="linenos">2974</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">):</span> +</span><span id="Parser-2975"><a href="#Parser-2975"><span class="linenos">2975</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">(</span><span class="n">constraints</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">SCHEMA_UNNAMED_CONSTRAINTS</span><span class="p">)</span> +</span><span id="Parser-2976"><a href="#Parser-2976"><span class="linenos">2976</span></a> +</span><span id="Parser-2977"><a href="#Parser-2977"><span class="linenos">2977</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-2978"><a href="#Parser-2978"><span class="linenos">2978</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-2979"><a href="#Parser-2979"><span class="linenos">2979</span></a> +</span><span id="Parser-2980"><a href="#Parser-2980"><span class="linenos">2980</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-2981"><a href="#Parser-2981"><span class="linenos">2981</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_unnamed_constraint</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> +</span><span id="Parser-2982"><a href="#Parser-2982"><span class="linenos">2982</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">constraint</span><span class="p">:</span> +</span><span id="Parser-2983"><a href="#Parser-2983"><span class="linenos">2983</span></a> <span class="k">break</span> +</span><span id="Parser-2984"><a href="#Parser-2984"><span class="linenos">2984</span></a> <span class="n">expressions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">constraint</span><span class="p">)</span> +</span><span id="Parser-2985"><a href="#Parser-2985"><span class="linenos">2985</span></a> +</span><span id="Parser-2986"><a href="#Parser-2986"><span class="linenos">2986</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Constraint</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-2987"><a href="#Parser-2987"><span class="linenos">2987</span></a> +</span><span id="Parser-2988"><a href="#Parser-2988"><span class="linenos">2988</span></a> <span class="k">def</span> <span class="nf">_parse_unnamed_constraint</span><span class="p">(</span> +</span><span id="Parser-2989"><a href="#Parser-2989"><span class="linenos">2989</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">constraints</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-2990"><a href="#Parser-2990"><span class="linenos">2990</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-2991"><a href="#Parser-2991"><span class="linenos">2991</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="n">constraints</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">):</span> +</span><span id="Parser-2992"><a href="#Parser-2992"><span class="linenos">2992</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-2993"><a href="#Parser-2993"><span class="linenos">2993</span></a> +</span><span id="Parser-2994"><a href="#Parser-2994"><span class="linenos">2994</span></a> <span class="n">constraint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-2995"><a href="#Parser-2995"><span class="linenos">2995</span></a> <span class="k">if</span> <span class="n">constraint</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">:</span> +</span><span id="Parser-2996"><a href="#Parser-2996"><span class="linenos">2996</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser found for schema constraint </span><span class="si">{</span><span class="n">constraint</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</span><span id="Parser-2997"><a href="#Parser-2997"><span class="linenos">2997</span></a> +</span><span id="Parser-2998"><a href="#Parser-2998"><span class="linenos">2998</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">CONSTRAINT_PARSERS</span><span class="p">[</span><span class="n">constraint</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-2999"><a href="#Parser-2999"><span class="linenos">2999</span></a> +</span><span id="Parser-3000"><a href="#Parser-3000"><span class="linenos">3000</span></a> <span class="k">def</span> <span class="nf">_parse_unique</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3001"><a href="#Parser-3001"><span class="linenos">3001</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3002"><a href="#Parser-3002"><span class="linenos">3002</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">)</span> +</span><span id="Parser-3003"><a href="#Parser-3003"><span class="linenos">3003</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Unique</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">())</span> +</span><span id="Parser-3004"><a href="#Parser-3004"><span class="linenos">3004</span></a> +</span><span id="Parser-3005"><a href="#Parser-3005"><span class="linenos">3005</span></a> <span class="k">def</span> <span class="nf">_parse_key_constraint_options</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></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="Parser-3006"><a href="#Parser-3006"><span class="linenos">3006</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3007"><a href="#Parser-3007"><span class="linenos">3007</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-3008"><a href="#Parser-3008"><span class="linenos">3008</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-3009"><a href="#Parser-3009"><span class="linenos">3009</span></a> <span class="k">break</span> +</span><span id="Parser-3010"><a href="#Parser-3010"><span class="linenos">3010</span></a> +</span><span id="Parser-3011"><a href="#Parser-3011"><span class="linenos">3011</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-3012"><a href="#Parser-3012"><span class="linenos">3012</span></a> <span class="n">action</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3013"><a href="#Parser-3013"><span class="linenos">3013</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-3014"><a href="#Parser-3014"><span class="linenos">3014</span></a> +</span><span id="Parser-3015"><a href="#Parser-3015"><span class="linenos">3015</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">):</span> +</span><span id="Parser-3016"><a href="#Parser-3016"><span class="linenos">3016</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> +</span><span id="Parser-3017"><a href="#Parser-3017"><span class="linenos">3017</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">):</span> +</span><span id="Parser-3018"><a href="#Parser-3018"><span class="linenos">3018</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"CASCADE"</span> +</span><span id="Parser-3019"><a href="#Parser-3019"><span class="linenos">3019</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> +</span><span id="Parser-3020"><a href="#Parser-3020"><span class="linenos">3020</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET NULL"</span> +</span><span id="Parser-3021"><a href="#Parser-3021"><span class="linenos">3021</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="Parser-3022"><a href="#Parser-3022"><span class="linenos">3022</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET DEFAULT"</span> +</span><span id="Parser-3023"><a href="#Parser-3023"><span class="linenos">3023</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3024"><a href="#Parser-3024"><span class="linenos">3024</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Invalid key constraint"</span><span class="p">)</span> +</span><span id="Parser-3025"><a href="#Parser-3025"><span class="linenos">3025</span></a> +</span><span id="Parser-3026"><a href="#Parser-3026"><span class="linenos">3026</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ON </span><span class="si">{</span><span class="n">on</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">action</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser-3027"><a href="#Parser-3027"><span class="linenos">3027</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NOT"</span><span class="p">,</span> <span class="s2">"ENFORCED"</span><span class="p">):</span> +</span><span id="Parser-3028"><a href="#Parser-3028"><span class="linenos">3028</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NOT ENFORCED"</span><span class="p">)</span> +</span><span id="Parser-3029"><a href="#Parser-3029"><span class="linenos">3029</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">):</span> +</span><span id="Parser-3030"><a href="#Parser-3030"><span class="linenos">3030</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"DEFERRABLE"</span><span class="p">)</span> +</span><span id="Parser-3031"><a href="#Parser-3031"><span class="linenos">3031</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"INITIALLY"</span><span class="p">,</span> <span class="s2">"DEFERRED"</span><span class="p">):</span> +</span><span id="Parser-3032"><a href="#Parser-3032"><span class="linenos">3032</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"INITIALLY DEFERRED"</span><span class="p">)</span> +</span><span id="Parser-3033"><a href="#Parser-3033"><span class="linenos">3033</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">):</span> +</span><span id="Parser-3034"><a href="#Parser-3034"><span class="linenos">3034</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"NORELY"</span><span class="p">)</span> +</span><span id="Parser-3035"><a href="#Parser-3035"><span class="linenos">3035</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"MATCH"</span><span class="p">,</span> <span class="s2">"FULL"</span><span class="p">):</span> +</span><span id="Parser-3036"><a href="#Parser-3036"><span class="linenos">3036</span></a> <span class="n">options</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">"MATCH FULL"</span><span class="p">)</span> +</span><span id="Parser-3037"><a href="#Parser-3037"><span class="linenos">3037</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3038"><a href="#Parser-3038"><span class="linenos">3038</span></a> <span class="k">break</span> +</span><span id="Parser-3039"><a href="#Parser-3039"><span class="linenos">3039</span></a> +</span><span id="Parser-3040"><a href="#Parser-3040"><span class="linenos">3040</span></a> <span class="k">return</span> <span class="n">options</span> +</span><span id="Parser-3041"><a href="#Parser-3041"><span class="linenos">3041</span></a> +</span><span id="Parser-3042"><a href="#Parser-3042"><span class="linenos">3042</span></a> <span class="k">def</span> <span class="nf">_parse_references</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3043"><a href="#Parser-3043"><span class="linenos">3043</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">):</span> +</span><span id="Parser-3044"><a href="#Parser-3044"><span class="linenos">3044</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3045"><a href="#Parser-3045"><span class="linenos">3045</span></a> +</span><span id="Parser-3046"><a href="#Parser-3046"><span class="linenos">3046</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3047"><a href="#Parser-3047"><span class="linenos">3047</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-3048"><a href="#Parser-3048"><span class="linenos">3048</span></a> +</span><span id="Parser-3049"><a href="#Parser-3049"><span class="linenos">3049</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3050"><a href="#Parser-3050"><span class="linenos">3050</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="Parser-3051"><a href="#Parser-3051"><span class="linenos">3051</span></a> +</span><span id="Parser-3052"><a href="#Parser-3052"><span class="linenos">3052</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> +</span><span id="Parser-3053"><a href="#Parser-3053"><span class="linenos">3053</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Reference</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="Parser-3054"><a href="#Parser-3054"><span class="linenos">3054</span></a> +</span><span id="Parser-3055"><a href="#Parser-3055"><span class="linenos">3055</span></a> <span class="k">def</span> <span class="nf">_parse_foreign_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3056"><a href="#Parser-3056"><span class="linenos">3056</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="Parser-3057"><a href="#Parser-3057"><span class="linenos">3057</span></a> <span class="n">reference</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_references</span><span class="p">()</span> +</span><span id="Parser-3058"><a href="#Parser-3058"><span class="linenos">3058</span></a> <span class="n">options</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Parser-3059"><a href="#Parser-3059"><span class="linenos">3059</span></a> +</span><span id="Parser-3060"><a href="#Parser-3060"><span class="linenos">3060</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">):</span> +</span><span id="Parser-3061"><a href="#Parser-3061"><span class="linenos">3061</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">)):</span> +</span><span id="Parser-3062"><a href="#Parser-3062"><span class="linenos">3062</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected DELETE or UPDATE"</span><span class="p">)</span> +</span><span id="Parser-3063"><a href="#Parser-3063"><span class="linenos">3063</span></a> +</span><span id="Parser-3064"><a href="#Parser-3064"><span class="linenos">3064</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> +</span><span id="Parser-3065"><a href="#Parser-3065"><span class="linenos">3065</span></a> +</span><span id="Parser-3066"><a href="#Parser-3066"><span class="linenos">3066</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">):</span> +</span><span id="Parser-3067"><a href="#Parser-3067"><span class="linenos">3067</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"NO ACTION"</span> +</span><span id="Parser-3068"><a href="#Parser-3068"><span class="linenos">3068</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">):</span> +</span><span id="Parser-3069"><a href="#Parser-3069"><span class="linenos">3069</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">))</span> +</span><span id="Parser-3070"><a href="#Parser-3070"><span class="linenos">3070</span></a> <span class="n">action</span> <span class="o">=</span> <span class="s2">"SET "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-3071"><a href="#Parser-3071"><span class="linenos">3071</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3072"><a href="#Parser-3072"><span class="linenos">3072</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3073"><a href="#Parser-3073"><span class="linenos">3073</span></a> <span class="n">action</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-3074"><a href="#Parser-3074"><span class="linenos">3074</span></a> +</span><span id="Parser-3075"><a href="#Parser-3075"><span class="linenos">3075</span></a> <span class="n">options</span><span class="p">[</span><span class="n">kind</span><span class="p">]</span> <span class="o">=</span> <span class="n">action</span> +</span><span id="Parser-3076"><a href="#Parser-3076"><span class="linenos">3076</span></a> +</span><span id="Parser-3077"><a href="#Parser-3077"><span class="linenos">3077</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3078"><a href="#Parser-3078"><span class="linenos">3078</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">reference</span><span class="o">=</span><span class="n">reference</span><span class="p">,</span> <span class="o">**</span><span class="n">options</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-3079"><a href="#Parser-3079"><span class="linenos">3079</span></a> <span class="p">)</span> +</span><span id="Parser-3080"><a href="#Parser-3080"><span class="linenos">3080</span></a> +</span><span id="Parser-3081"><a href="#Parser-3081"><span class="linenos">3081</span></a> <span class="k">def</span> <span class="nf">_parse_primary_key</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3082"><a href="#Parser-3082"><span class="linenos">3082</span></a> <span class="n">desc</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-3083"><a href="#Parser-3083"><span class="linenos">3083</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">))</span> +</span><span id="Parser-3084"><a href="#Parser-3084"><span class="linenos">3084</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span> +</span><span id="Parser-3085"><a href="#Parser-3085"><span class="linenos">3085</span></a> <span class="p">)</span> </span><span id="Parser-3086"><a href="#Parser-3086"><span class="linenos">3086</span></a> -</span><span id="Parser-3087"><a href="#Parser-3087"><span class="linenos">3087</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3088"><a href="#Parser-3088"><span class="linenos">3088</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> -</span><span id="Parser-3089"><a href="#Parser-3089"><span class="linenos">3089</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> -</span><span id="Parser-3090"><a href="#Parser-3090"><span class="linenos">3090</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3091"><a href="#Parser-3091"><span class="linenos">3091</span></a> -</span><span id="Parser-3092"><a href="#Parser-3092"><span class="linenos">3092</span></a> <span class="k">def</span> <span class="nf">_parse_case</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3093"><a href="#Parser-3093"><span class="linenos">3093</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-3094"><a href="#Parser-3094"><span class="linenos">3094</span></a> <span class="n">default</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3095"><a href="#Parser-3095"><span class="linenos">3095</span></a> -</span><span id="Parser-3096"><a href="#Parser-3096"><span class="linenos">3096</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3087"><a href="#Parser-3087"><span class="linenos">3087</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3088"><a href="#Parser-3088"><span class="linenos">3088</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKeyColumnConstraint</span><span class="p">,</span> <span class="n">desc</span><span class="o">=</span><span class="n">desc</span><span class="p">)</span> +</span><span id="Parser-3089"><a href="#Parser-3089"><span class="linenos">3089</span></a> +</span><span id="Parser-3090"><a href="#Parser-3090"><span class="linenos">3090</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_id_vars</span><span class="p">()</span> +</span><span id="Parser-3091"><a href="#Parser-3091"><span class="linenos">3091</span></a> <span class="n">options</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_key_constraint_options</span><span class="p">()</span> +</span><span id="Parser-3092"><a href="#Parser-3092"><span class="linenos">3092</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">PrimaryKey</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">options</span><span class="p">)</span> +</span><span id="Parser-3093"><a href="#Parser-3093"><span class="linenos">3093</span></a> +</span><span id="Parser-3094"><a href="#Parser-3094"><span class="linenos">3094</span></a> <span class="k">def</span> <span class="nf">_parse_bracket</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3095"><a href="#Parser-3095"><span class="linenos">3095</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)):</span> +</span><span id="Parser-3096"><a href="#Parser-3096"><span class="linenos">3096</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-3097"><a href="#Parser-3097"><span class="linenos">3097</span></a> -</span><span id="Parser-3098"><a href="#Parser-3098"><span class="linenos">3098</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> -</span><span id="Parser-3099"><a href="#Parser-3099"><span class="linenos">3099</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-3100"><a href="#Parser-3100"><span class="linenos">3100</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="Parser-3101"><a href="#Parser-3101"><span class="linenos">3101</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-3102"><a href="#Parser-3102"><span class="linenos">3102</span></a> <span class="n">ifs</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">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</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">true</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> -</span><span id="Parser-3103"><a href="#Parser-3103"><span class="linenos">3103</span></a> -</span><span id="Parser-3104"><a href="#Parser-3104"><span class="linenos">3104</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">):</span> -</span><span id="Parser-3105"><a href="#Parser-3105"><span class="linenos">3105</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-3106"><a href="#Parser-3106"><span class="linenos">3106</span></a> -</span><span id="Parser-3107"><a href="#Parser-3107"><span class="linenos">3107</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">):</span> -</span><span id="Parser-3108"><a href="#Parser-3108"><span class="linenos">3108</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected END after CASE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-3109"><a href="#Parser-3109"><span class="linenos">3109</span></a> -</span><span id="Parser-3110"><a href="#Parser-3110"><span class="linenos">3110</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span> -</span><span id="Parser-3111"><a href="#Parser-3111"><span class="linenos">3111</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> -</span><span id="Parser-3112"><a href="#Parser-3112"><span class="linenos">3112</span></a> <span class="p">)</span> -</span><span id="Parser-3113"><a href="#Parser-3113"><span class="linenos">3113</span></a> -</span><span id="Parser-3114"><a href="#Parser-3114"><span class="linenos">3114</span></a> <span class="k">def</span> <span class="nf">_parse_if</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3115"><a href="#Parser-3115"><span class="linenos">3115</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-3116"><a href="#Parser-3116"><span class="linenos">3116</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-3117"><a href="#Parser-3117"><span class="linenos">3117</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</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="Parser-3118"><a href="#Parser-3118"><span class="linenos">3118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="Parser-3119"><a href="#Parser-3119"><span class="linenos">3119</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3120"><a href="#Parser-3120"><span class="linenos">3120</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3121"><a href="#Parser-3121"><span class="linenos">3121</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-3122"><a href="#Parser-3122"><span class="linenos">3122</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="Parser-3123"><a href="#Parser-3123"><span class="linenos">3123</span></a> <span class="n">true</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-3124"><a href="#Parser-3124"><span class="linenos">3124</span></a> <span class="n">false</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> -</span><span id="Parser-3125"><a href="#Parser-3125"><span class="linenos">3125</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> -</span><span id="Parser-3126"><a href="#Parser-3126"><span class="linenos">3126</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">true</span><span class="p">,</span> <span class="n">false</span><span class="o">=</span><span class="n">false</span><span class="p">)</span> +</span><span id="Parser-3098"><a href="#Parser-3098"><span class="linenos">3098</span></a> <span class="n">bracket_kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-3099"><a href="#Parser-3099"><span class="linenos">3099</span></a> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> +</span><span id="Parser-3100"><a href="#Parser-3100"><span class="linenos">3100</span></a> +</span><span id="Parser-3101"><a href="#Parser-3101"><span class="linenos">3101</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> +</span><span id="Parser-3102"><a href="#Parser-3102"><span class="linenos">3102</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())]</span> +</span><span id="Parser-3103"><a href="#Parser-3103"><span class="linenos">3103</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3104"><a href="#Parser-3104"><span class="linenos">3104</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()))</span> +</span><span id="Parser-3105"><a href="#Parser-3105"><span class="linenos">3105</span></a> +</span><span id="Parser-3106"><a href="#Parser-3106"><span class="linenos">3106</span></a> <span class="c1"># https://duckdb.org/docs/sql/data_types/struct.html#creating-structs</span> +</span><span id="Parser-3107"><a href="#Parser-3107"><span class="linenos">3107</span></a> <span class="k">if</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> +</span><span id="Parser-3108"><a href="#Parser-3108"><span class="linenos">3108</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-3109"><a href="#Parser-3109"><span class="linenos">3109</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="n">this</span> <span class="ow">or</span> <span class="n">this</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="o">==</span> <span class="s2">"ARRAY"</span><span class="p">:</span> +</span><span id="Parser-3110"><a href="#Parser-3110"><span class="linenos">3110</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-3111"><a href="#Parser-3111"><span class="linenos">3111</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3112"><a href="#Parser-3112"><span class="linenos">3112</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="n">apply_index_offset</span><span class="p">(</span><span class="n">expressions</span><span class="p">,</span> <span class="o">-</span><span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span><span class="p">)</span> +</span><span id="Parser-3113"><a href="#Parser-3113"><span class="linenos">3113</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Bracket</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">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-3114"><a href="#Parser-3114"><span class="linenos">3114</span></a> +</span><span id="Parser-3115"><a href="#Parser-3115"><span class="linenos">3115</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">)</span> <span class="ow">and</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">:</span> +</span><span id="Parser-3116"><a href="#Parser-3116"><span class="linenos">3116</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected ]"</span><span class="p">)</span> +</span><span id="Parser-3117"><a href="#Parser-3117"><span class="linenos">3117</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> <span class="ow">and</span> <span class="n">bracket_kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">:</span> +</span><span id="Parser-3118"><a href="#Parser-3118"><span class="linenos">3118</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected }"</span><span class="p">)</span> +</span><span id="Parser-3119"><a href="#Parser-3119"><span class="linenos">3119</span></a> +</span><span id="Parser-3120"><a href="#Parser-3120"><span class="linenos">3120</span></a> <span class="n">this</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-3121"><a href="#Parser-3121"><span class="linenos">3121</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bracket</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-3122"><a href="#Parser-3122"><span class="linenos">3122</span></a> +</span><span id="Parser-3123"><a href="#Parser-3123"><span class="linenos">3123</span></a> <span class="k">def</span> <span class="nf">_parse_slice</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3124"><a href="#Parser-3124"><span class="linenos">3124</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">):</span> +</span><span id="Parser-3125"><a href="#Parser-3125"><span class="linenos">3125</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Slice</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">())</span> +</span><span id="Parser-3126"><a href="#Parser-3126"><span class="linenos">3126</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-3127"><a href="#Parser-3127"><span class="linenos">3127</span></a> -</span><span id="Parser-3128"><a href="#Parser-3128"><span class="linenos">3128</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-3129"><a href="#Parser-3129"><span class="linenos">3129</span></a> -</span><span id="Parser-3130"><a href="#Parser-3130"><span class="linenos">3130</span></a> <span class="k">def</span> <span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3131"><a href="#Parser-3131"><span class="linenos">3131</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> -</span><span id="Parser-3132"><a href="#Parser-3132"><span class="linenos">3132</span></a> -</span><span id="Parser-3133"><a href="#Parser-3133"><span class="linenos">3133</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="Parser-3134"><a href="#Parser-3134"><span class="linenos">3134</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-3135"><a href="#Parser-3135"><span class="linenos">3135</span></a> -</span><span id="Parser-3136"><a href="#Parser-3136"><span class="linenos">3136</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-3137"><a href="#Parser-3137"><span class="linenos">3137</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected FROM or comma after EXTRACT"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-3138"><a href="#Parser-3138"><span class="linenos">3138</span></a> -</span><span id="Parser-3139"><a href="#Parser-3139"><span class="linenos">3139</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-3140"><a href="#Parser-3140"><span class="linenos">3140</span></a> -</span><span id="Parser-3141"><a href="#Parser-3141"><span class="linenos">3141</span></a> <span class="k">def</span> <span class="nf">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3142"><a href="#Parser-3142"><span class="linenos">3142</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-3143"><a href="#Parser-3143"><span class="linenos">3143</span></a> -</span><span id="Parser-3144"><a href="#Parser-3144"><span class="linenos">3144</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">):</span> -</span><span id="Parser-3145"><a href="#Parser-3145"><span class="linenos">3145</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected AS after CAST"</span><span class="p">)</span> -</span><span id="Parser-3146"><a href="#Parser-3146"><span class="linenos">3146</span></a> -</span><span id="Parser-3147"><a href="#Parser-3147"><span class="linenos">3147</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-3148"><a href="#Parser-3148"><span class="linenos">3148</span></a> -</span><span id="Parser-3149"><a href="#Parser-3149"><span class="linenos">3149</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> -</span><span id="Parser-3150"><a href="#Parser-3150"><span class="linenos">3150</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected TYPE after CAST"</span><span class="p">)</span> -</span><span id="Parser-3151"><a href="#Parser-3151"><span class="linenos">3151</span></a> <span class="k">elif</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">CHAR</span><span class="p">:</span> -</span><span id="Parser-3152"><a href="#Parser-3152"><span class="linenos">3152</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> -</span><span id="Parser-3153"><a href="#Parser-3153"><span class="linenos">3153</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">())</span> -</span><span id="Parser-3154"><a href="#Parser-3154"><span class="linenos">3154</span></a> -</span><span id="Parser-3155"><a href="#Parser-3155"><span class="linenos">3155</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</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">to</span><span class="o">=</span><span class="n">to</span><span class="p">)</span> -</span><span id="Parser-3156"><a href="#Parser-3156"><span class="linenos">3156</span></a> -</span><span id="Parser-3157"><a href="#Parser-3157"><span class="linenos">3157</span></a> <span class="k">def</span> <span class="nf">_parse_string_agg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3158"><a href="#Parser-3158"><span class="linenos">3158</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-3159"><a href="#Parser-3159"><span class="linenos">3159</span></a> -</span><span id="Parser-3160"><a href="#Parser-3160"><span class="linenos">3160</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> -</span><span id="Parser-3161"><a href="#Parser-3161"><span class="linenos">3161</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-3162"><a href="#Parser-3162"><span class="linenos">3162</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distinct</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">0</span><span class="p">)])</span> -</span><span id="Parser-3163"><a href="#Parser-3163"><span class="linenos">3163</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3164"><a href="#Parser-3164"><span class="linenos">3164</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-3165"><a href="#Parser-3165"><span class="linenos">3165</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">0</span><span class="p">)</span> -</span><span id="Parser-3166"><a href="#Parser-3166"><span class="linenos">3166</span></a> -</span><span id="Parser-3167"><a href="#Parser-3167"><span class="linenos">3167</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-3168"><a href="#Parser-3168"><span class="linenos">3168</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Parser-3169"><a href="#Parser-3169"><span class="linenos">3169</span></a> <span class="c1"># postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])</span> -</span><span id="Parser-3170"><a href="#Parser-3170"><span class="linenos">3170</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-3171"><a href="#Parser-3171"><span class="linenos">3171</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</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="Parser-3172"><a href="#Parser-3172"><span class="linenos">3172</span></a> -</span><span id="Parser-3173"><a href="#Parser-3173"><span class="linenos">3173</span></a> <span class="c1"># Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).</span> -</span><span id="Parser-3174"><a href="#Parser-3174"><span class="linenos">3174</span></a> <span class="c1"># This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that</span> -</span><span id="Parser-3175"><a href="#Parser-3175"><span class="linenos">3175</span></a> <span class="c1"># the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.</span> -</span><span id="Parser-3176"><a href="#Parser-3176"><span class="linenos">3176</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">):</span> -</span><span id="Parser-3177"><a href="#Parser-3177"><span class="linenos">3177</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-3178"><a href="#Parser-3178"><span class="linenos">3178</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</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="Parser-3179"><a href="#Parser-3179"><span class="linenos">3179</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> -</span><span id="Parser-3180"><a href="#Parser-3180"><span class="linenos">3180</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3181"><a href="#Parser-3181"><span class="linenos">3181</span></a> -</span><span id="Parser-3182"><a href="#Parser-3182"><span class="linenos">3182</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> <span class="c1"># The corresponding match_r_paren will be called in parse_function (caller)</span> -</span><span id="Parser-3183"><a href="#Parser-3183"><span class="linenos">3183</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> -</span><span id="Parser-3184"><a href="#Parser-3184"><span class="linenos">3184</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</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="Parser-3185"><a href="#Parser-3185"><span class="linenos">3185</span></a> -</span><span id="Parser-3186"><a href="#Parser-3186"><span class="linenos">3186</span></a> <span class="k">def</span> <span class="nf">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3187"><a href="#Parser-3187"><span class="linenos">3187</span></a> <span class="n">to</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> -</span><span id="Parser-3188"><a href="#Parser-3188"><span class="linenos">3188</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> -</span><span id="Parser-3189"><a href="#Parser-3189"><span class="linenos">3189</span></a> -</span><span id="Parser-3190"><a href="#Parser-3190"><span class="linenos">3190</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> -</span><span id="Parser-3191"><a href="#Parser-3191"><span class="linenos">3191</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> -</span><span id="Parser-3192"><a href="#Parser-3192"><span class="linenos">3192</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-3193"><a href="#Parser-3193"><span class="linenos">3193</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> -</span><span id="Parser-3194"><a href="#Parser-3194"><span class="linenos">3194</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3195"><a href="#Parser-3195"><span class="linenos">3195</span></a> <span class="n">to</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3196"><a href="#Parser-3196"><span class="linenos">3196</span></a> -</span><span id="Parser-3197"><a href="#Parser-3197"><span class="linenos">3197</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</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">to</span><span class="o">=</span><span class="n">to</span><span class="p">)</span> -</span><span id="Parser-3198"><a href="#Parser-3198"><span class="linenos">3198</span></a> -</span><span id="Parser-3199"><a href="#Parser-3199"><span class="linenos">3199</span></a> <span class="k">def</span> <span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3200"><a href="#Parser-3200"><span class="linenos">3200</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-3201"><a href="#Parser-3201"><span class="linenos">3201</span></a> -</span><span id="Parser-3202"><a href="#Parser-3202"><span class="linenos">3202</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> -</span><span id="Parser-3203"><a href="#Parser-3203"><span class="linenos">3203</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3204"><a href="#Parser-3204"><span class="linenos">3204</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</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">0</span><span class="p">)</span> -</span><span id="Parser-3205"><a href="#Parser-3205"><span class="linenos">3205</span></a> <span class="p">)</span> -</span><span id="Parser-3206"><a href="#Parser-3206"><span class="linenos">3206</span></a> -</span><span id="Parser-3207"><a href="#Parser-3207"><span class="linenos">3207</span></a> <span class="k">if</span> <span class="n">haystack_first</span><span class="p">:</span> -</span><span id="Parser-3208"><a href="#Parser-3208"><span class="linenos">3208</span></a> <span class="n">haystack</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="Parser-3209"><a href="#Parser-3209"><span class="linenos">3209</span></a> <span class="n">needle</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="Parser-3210"><a href="#Parser-3210"><span class="linenos">3210</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3211"><a href="#Parser-3211"><span class="linenos">3211</span></a> <span class="n">needle</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="Parser-3212"><a href="#Parser-3212"><span class="linenos">3212</span></a> <span class="n">haystack</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="Parser-3213"><a href="#Parser-3213"><span class="linenos">3213</span></a> -</span><span id="Parser-3214"><a href="#Parser-3214"><span class="linenos">3214</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">haystack</span><span class="p">,</span> <span class="n">substr</span><span class="o">=</span><span class="n">needle</span><span class="p">,</span> <span class="n">position</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="Parser-3215"><a href="#Parser-3215"><span class="linenos">3215</span></a> -</span><span id="Parser-3216"><a href="#Parser-3216"><span class="linenos">3216</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-3128"><a href="#Parser-3128"><span class="linenos">3128</span></a> <span class="k">def</span> <span class="nf">_parse_case</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3129"><a href="#Parser-3129"><span class="linenos">3129</span></a> <span class="n">ifs</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3130"><a href="#Parser-3130"><span class="linenos">3130</span></a> <span class="n">default</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3131"><a href="#Parser-3131"><span class="linenos">3131</span></a> +</span><span id="Parser-3132"><a href="#Parser-3132"><span class="linenos">3132</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3133"><a href="#Parser-3133"><span class="linenos">3133</span></a> +</span><span id="Parser-3134"><a href="#Parser-3134"><span class="linenos">3134</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> +</span><span id="Parser-3135"><a href="#Parser-3135"><span class="linenos">3135</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3136"><a href="#Parser-3136"><span class="linenos">3136</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="Parser-3137"><a href="#Parser-3137"><span class="linenos">3137</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3138"><a href="#Parser-3138"><span class="linenos">3138</span></a> <span class="n">ifs</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">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</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">true</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> +</span><span id="Parser-3139"><a href="#Parser-3139"><span class="linenos">3139</span></a> +</span><span id="Parser-3140"><a href="#Parser-3140"><span class="linenos">3140</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">):</span> +</span><span id="Parser-3141"><a href="#Parser-3141"><span class="linenos">3141</span></a> <span class="n">default</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3142"><a href="#Parser-3142"><span class="linenos">3142</span></a> +</span><span id="Parser-3143"><a href="#Parser-3143"><span class="linenos">3143</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">):</span> +</span><span id="Parser-3144"><a href="#Parser-3144"><span class="linenos">3144</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected END after CASE"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-3145"><a href="#Parser-3145"><span class="linenos">3145</span></a> +</span><span id="Parser-3146"><a href="#Parser-3146"><span class="linenos">3146</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span> +</span><span id="Parser-3147"><a href="#Parser-3147"><span class="linenos">3147</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="n">ifs</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="n">default</span><span class="p">)</span> +</span><span id="Parser-3148"><a href="#Parser-3148"><span class="linenos">3148</span></a> <span class="p">)</span> +</span><span id="Parser-3149"><a href="#Parser-3149"><span class="linenos">3149</span></a> +</span><span id="Parser-3150"><a href="#Parser-3150"><span class="linenos">3150</span></a> <span class="k">def</span> <span class="nf">_parse_if</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3151"><a href="#Parser-3151"><span class="linenos">3151</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-3152"><a href="#Parser-3152"><span class="linenos">3152</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-3153"><a href="#Parser-3153"><span class="linenos">3153</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</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="Parser-3154"><a href="#Parser-3154"><span class="linenos">3154</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-3155"><a href="#Parser-3155"><span class="linenos">3155</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3156"><a href="#Parser-3156"><span class="linenos">3156</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3157"><a href="#Parser-3157"><span class="linenos">3157</span></a> <span class="n">condition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3158"><a href="#Parser-3158"><span class="linenos">3158</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> +</span><span id="Parser-3159"><a href="#Parser-3159"><span class="linenos">3159</span></a> <span class="n">true</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3160"><a href="#Parser-3160"><span class="linenos">3160</span></a> <span class="n">false</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> +</span><span id="Parser-3161"><a href="#Parser-3161"><span class="linenos">3161</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">)</span> +</span><span id="Parser-3162"><a href="#Parser-3162"><span class="linenos">3162</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">condition</span><span class="p">,</span> <span class="n">true</span><span class="o">=</span><span class="n">true</span><span class="p">,</span> <span class="n">false</span><span class="o">=</span><span class="n">false</span><span class="p">)</span> +</span><span id="Parser-3163"><a href="#Parser-3163"><span class="linenos">3163</span></a> +</span><span id="Parser-3164"><a href="#Parser-3164"><span class="linenos">3164</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-3165"><a href="#Parser-3165"><span class="linenos">3165</span></a> +</span><span id="Parser-3166"><a href="#Parser-3166"><span class="linenos">3166</span></a> <span class="k">def</span> <span class="nf">_parse_extract</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3167"><a href="#Parser-3167"><span class="linenos">3167</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_function</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span> +</span><span id="Parser-3168"><a href="#Parser-3168"><span class="linenos">3168</span></a> +</span><span id="Parser-3169"><a href="#Parser-3169"><span class="linenos">3169</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="Parser-3170"><a href="#Parser-3170"><span class="linenos">3170</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-3171"><a href="#Parser-3171"><span class="linenos">3171</span></a> +</span><span id="Parser-3172"><a href="#Parser-3172"><span class="linenos">3172</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-3173"><a href="#Parser-3173"><span class="linenos">3173</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected FROM or comma after EXTRACT"</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-3174"><a href="#Parser-3174"><span class="linenos">3174</span></a> +</span><span id="Parser-3175"><a href="#Parser-3175"><span class="linenos">3175</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-3176"><a href="#Parser-3176"><span class="linenos">3176</span></a> +</span><span id="Parser-3177"><a href="#Parser-3177"><span class="linenos">3177</span></a> <span class="k">def</span> <span class="nf">_parse_cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3178"><a href="#Parser-3178"><span class="linenos">3178</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3179"><a href="#Parser-3179"><span class="linenos">3179</span></a> +</span><span id="Parser-3180"><a href="#Parser-3180"><span class="linenos">3180</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">):</span> +</span><span id="Parser-3181"><a href="#Parser-3181"><span class="linenos">3181</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected AS after CAST"</span><span class="p">)</span> +</span><span id="Parser-3182"><a href="#Parser-3182"><span class="linenos">3182</span></a> +</span><span id="Parser-3183"><a href="#Parser-3183"><span class="linenos">3183</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-3184"><a href="#Parser-3184"><span class="linenos">3184</span></a> +</span><span id="Parser-3185"><a href="#Parser-3185"><span class="linenos">3185</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">to</span><span class="p">:</span> +</span><span id="Parser-3186"><a href="#Parser-3186"><span class="linenos">3186</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expected TYPE after CAST"</span><span class="p">)</span> +</span><span id="Parser-3187"><a href="#Parser-3187"><span class="linenos">3187</span></a> <span class="k">elif</span> <span class="n">to</span><span class="o">.</span><span class="n">this</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">CHAR</span><span class="p">:</span> +</span><span id="Parser-3188"><a href="#Parser-3188"><span class="linenos">3188</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">):</span> +</span><span id="Parser-3189"><a href="#Parser-3189"><span class="linenos">3189</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var_or_string</span><span class="p">())</span> +</span><span id="Parser-3190"><a href="#Parser-3190"><span class="linenos">3190</span></a> +</span><span id="Parser-3191"><a href="#Parser-3191"><span class="linenos">3191</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</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">to</span><span class="o">=</span><span class="n">to</span><span class="p">)</span> +</span><span id="Parser-3192"><a href="#Parser-3192"><span class="linenos">3192</span></a> +</span><span id="Parser-3193"><a href="#Parser-3193"><span class="linenos">3193</span></a> <span class="k">def</span> <span class="nf">_parse_string_agg</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3194"><a href="#Parser-3194"><span class="linenos">3194</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-3195"><a href="#Parser-3195"><span class="linenos">3195</span></a> +</span><span id="Parser-3196"><a href="#Parser-3196"><span class="linenos">3196</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">):</span> +</span><span id="Parser-3197"><a href="#Parser-3197"><span class="linenos">3197</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-3198"><a href="#Parser-3198"><span class="linenos">3198</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Distinct</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">0</span><span class="p">)])</span> +</span><span id="Parser-3199"><a href="#Parser-3199"><span class="linenos">3199</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3200"><a href="#Parser-3200"><span class="linenos">3200</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-3201"><a href="#Parser-3201"><span class="linenos">3201</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">0</span><span class="p">)</span> +</span><span id="Parser-3202"><a href="#Parser-3202"><span class="linenos">3202</span></a> +</span><span id="Parser-3203"><a href="#Parser-3203"><span class="linenos">3203</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-3204"><a href="#Parser-3204"><span class="linenos">3204</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Parser-3205"><a href="#Parser-3205"><span class="linenos">3205</span></a> <span class="c1"># postgres: STRING_AGG([DISTINCT] expression, separator [ORDER BY expression1 {ASC | DESC} [, ...]])</span> +</span><span id="Parser-3206"><a href="#Parser-3206"><span class="linenos">3206</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-3207"><a href="#Parser-3207"><span class="linenos">3207</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</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="Parser-3208"><a href="#Parser-3208"><span class="linenos">3208</span></a> +</span><span id="Parser-3209"><a href="#Parser-3209"><span class="linenos">3209</span></a> <span class="c1"># Checks if we can parse an order clause: WITHIN GROUP (ORDER BY <order_by_expression_list> [ASC | DESC]).</span> +</span><span id="Parser-3210"><a href="#Parser-3210"><span class="linenos">3210</span></a> <span class="c1"># This is done "manually", instead of letting _parse_window parse it into an exp.WithinGroup node, so that</span> +</span><span id="Parser-3211"><a href="#Parser-3211"><span class="linenos">3211</span></a> <span class="c1"># the STRING_AGG call is parsed like in MySQL / SQLite and can thus be transpiled more easily to them.</span> +</span><span id="Parser-3212"><a href="#Parser-3212"><span class="linenos">3212</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">):</span> +</span><span id="Parser-3213"><a href="#Parser-3213"><span class="linenos">3213</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3214"><a href="#Parser-3214"><span class="linenos">3214</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</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="Parser-3215"><a href="#Parser-3215"><span class="linenos">3215</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-3216"><a href="#Parser-3216"><span class="linenos">3216</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-3217"><a href="#Parser-3217"><span class="linenos">3217</span></a> -</span><span id="Parser-3218"><a href="#Parser-3218"><span class="linenos">3218</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3219"><a href="#Parser-3219"><span class="linenos">3219</span></a> -</span><span id="Parser-3220"><a href="#Parser-3220"><span class="linenos">3220</span></a> <span class="k">def</span> <span class="nf">_parse_join_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3221"><a href="#Parser-3221"><span class="linenos">3221</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> -</span><span id="Parser-3222"><a href="#Parser-3222"><span class="linenos">3222</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">func_name</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> -</span><span id="Parser-3223"><a href="#Parser-3223"><span class="linenos">3223</span></a> -</span><span id="Parser-3224"><a href="#Parser-3224"><span class="linenos">3224</span></a> <span class="k">def</span> <span class="nf">_parse_substring</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3225"><a href="#Parser-3225"><span class="linenos">3225</span></a> <span class="c1"># Postgres supports the form: substring(string [from int] [for int])</span> -</span><span id="Parser-3226"><a href="#Parser-3226"><span class="linenos">3226</span></a> <span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> -</span><span id="Parser-3227"><a href="#Parser-3227"><span class="linenos">3227</span></a> -</span><span id="Parser-3228"><a href="#Parser-3228"><span class="linenos">3228</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> -</span><span id="Parser-3229"><a href="#Parser-3229"><span class="linenos">3229</span></a> -</span><span id="Parser-3230"><a href="#Parser-3230"><span class="linenos">3230</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> -</span><span id="Parser-3231"><a href="#Parser-3231"><span class="linenos">3231</span></a> <span class="n">args</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">_parse_bitwise</span><span class="p">())</span> -</span><span id="Parser-3232"><a href="#Parser-3232"><span class="linenos">3232</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> -</span><span id="Parser-3233"><a href="#Parser-3233"><span class="linenos">3233</span></a> <span class="n">args</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">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-3218"><a href="#Parser-3218"><span class="linenos">3218</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> <span class="c1"># The corresponding match_r_paren will be called in parse_function (caller)</span> +</span><span id="Parser-3219"><a href="#Parser-3219"><span class="linenos">3219</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-3220"><a href="#Parser-3220"><span class="linenos">3220</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> <span class="n">separator</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="Parser-3221"><a href="#Parser-3221"><span class="linenos">3221</span></a> +</span><span id="Parser-3222"><a href="#Parser-3222"><span class="linenos">3222</span></a> <span class="k">def</span> <span class="nf">_parse_convert</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">strict</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3223"><a href="#Parser-3223"><span class="linenos">3223</span></a> <span class="n">to</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> +</span><span id="Parser-3224"><a href="#Parser-3224"><span class="linenos">3224</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">()</span> +</span><span id="Parser-3225"><a href="#Parser-3225"><span class="linenos">3225</span></a> +</span><span id="Parser-3226"><a href="#Parser-3226"><span class="linenos">3226</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">):</span> +</span><span id="Parser-3227"><a href="#Parser-3227"><span class="linenos">3227</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">CharacterSet</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">())</span> +</span><span id="Parser-3228"><a href="#Parser-3228"><span class="linenos">3228</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-3229"><a href="#Parser-3229"><span class="linenos">3229</span></a> <span class="n">to</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">()</span> +</span><span id="Parser-3230"><a href="#Parser-3230"><span class="linenos">3230</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3231"><a href="#Parser-3231"><span class="linenos">3231</span></a> <span class="n">to</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3232"><a href="#Parser-3232"><span class="linenos">3232</span></a> +</span><span id="Parser-3233"><a href="#Parser-3233"><span class="linenos">3233</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span> <span class="k">if</span> <span class="n">strict</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</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">to</span><span class="o">=</span><span class="n">to</span><span class="p">)</span> </span><span id="Parser-3234"><a href="#Parser-3234"><span class="linenos">3234</span></a> -</span><span id="Parser-3235"><a href="#Parser-3235"><span class="linenos">3235</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</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="Parser-3236"><a href="#Parser-3236"><span class="linenos">3236</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-3235"><a href="#Parser-3235"><span class="linenos">3235</span></a> <span class="k">def</span> <span class="nf">_parse_position</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">haystack_first</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3236"><a href="#Parser-3236"><span class="linenos">3236</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> </span><span id="Parser-3237"><a href="#Parser-3237"><span class="linenos">3237</span></a> -</span><span id="Parser-3238"><a href="#Parser-3238"><span class="linenos">3238</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3239"><a href="#Parser-3239"><span class="linenos">3239</span></a> -</span><span id="Parser-3240"><a href="#Parser-3240"><span class="linenos">3240</span></a> <span class="k">def</span> <span class="nf">_parse_trim</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3241"><a href="#Parser-3241"><span class="linenos">3241</span></a> <span class="c1"># https://www.w3resource.com/sql/character-functions/trim.php</span> -</span><span id="Parser-3242"><a href="#Parser-3242"><span class="linenos">3242</span></a> <span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html</span> -</span><span id="Parser-3243"><a href="#Parser-3243"><span class="linenos">3243</span></a> -</span><span id="Parser-3244"><a href="#Parser-3244"><span class="linenos">3244</span></a> <span class="n">position</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3245"><a href="#Parser-3245"><span class="linenos">3245</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3246"><a href="#Parser-3246"><span class="linenos">3246</span></a> -</span><span id="Parser-3247"><a href="#Parser-3247"><span class="linenos">3247</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRIM_TYPES</span><span class="p">):</span> -</span><span id="Parser-3248"><a href="#Parser-3248"><span class="linenos">3248</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-3238"><a href="#Parser-3238"><span class="linenos">3238</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">):</span> +</span><span id="Parser-3239"><a href="#Parser-3239"><span class="linenos">3239</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3240"><a href="#Parser-3240"><span class="linenos">3240</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</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">0</span><span class="p">)</span> +</span><span id="Parser-3241"><a href="#Parser-3241"><span class="linenos">3241</span></a> <span class="p">)</span> +</span><span id="Parser-3242"><a href="#Parser-3242"><span class="linenos">3242</span></a> +</span><span id="Parser-3243"><a href="#Parser-3243"><span class="linenos">3243</span></a> <span class="k">if</span> <span class="n">haystack_first</span><span class="p">:</span> +</span><span id="Parser-3244"><a href="#Parser-3244"><span class="linenos">3244</span></a> <span class="n">haystack</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="Parser-3245"><a href="#Parser-3245"><span class="linenos">3245</span></a> <span class="n">needle</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="Parser-3246"><a href="#Parser-3246"><span class="linenos">3246</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3247"><a href="#Parser-3247"><span class="linenos">3247</span></a> <span class="n">needle</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="Parser-3248"><a href="#Parser-3248"><span class="linenos">3248</span></a> <span class="n">haystack</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="Parser-3249"><a href="#Parser-3249"><span class="linenos">3249</span></a> -</span><span id="Parser-3250"><a href="#Parser-3250"><span class="linenos">3250</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-3251"><a href="#Parser-3251"><span class="linenos">3251</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> -</span><span id="Parser-3252"><a href="#Parser-3252"><span class="linenos">3252</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> -</span><span id="Parser-3253"><a href="#Parser-3253"><span class="linenos">3253</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3254"><a href="#Parser-3254"><span class="linenos">3254</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span> -</span><span id="Parser-3255"><a href="#Parser-3255"><span class="linenos">3255</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3256"><a href="#Parser-3256"><span class="linenos">3256</span></a> -</span><span id="Parser-3257"><a href="#Parser-3257"><span class="linenos">3257</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">):</span> -</span><span id="Parser-3258"><a href="#Parser-3258"><span class="linenos">3258</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-3250"><a href="#Parser-3250"><span class="linenos">3250</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">haystack</span><span class="p">,</span> <span class="n">substr</span><span class="o">=</span><span class="n">needle</span><span class="p">,</span> <span class="n">position</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="Parser-3251"><a href="#Parser-3251"><span class="linenos">3251</span></a> +</span><span id="Parser-3252"><a href="#Parser-3252"><span class="linenos">3252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> +</span><span id="Parser-3253"><a href="#Parser-3253"><span class="linenos">3253</span></a> +</span><span id="Parser-3254"><a href="#Parser-3254"><span class="linenos">3254</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3255"><a href="#Parser-3255"><span class="linenos">3255</span></a> +</span><span id="Parser-3256"><a href="#Parser-3256"><span class="linenos">3256</span></a> <span class="k">def</span> <span class="nf">_parse_join_hint</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3257"><a href="#Parser-3257"><span class="linenos">3257</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">)</span> +</span><span id="Parser-3258"><a href="#Parser-3258"><span class="linenos">3258</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">JoinHint</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">func_name</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">expressions</span><span class="o">=</span><span class="n">args</span><span class="p">)</span> </span><span id="Parser-3259"><a href="#Parser-3259"><span class="linenos">3259</span></a> -</span><span id="Parser-3260"><a href="#Parser-3260"><span class="linenos">3260</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3261"><a href="#Parser-3261"><span class="linenos">3261</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">,</span> -</span><span id="Parser-3262"><a href="#Parser-3262"><span class="linenos">3262</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3263"><a href="#Parser-3263"><span class="linenos">3263</span></a> <span class="n">position</span><span class="o">=</span><span class="n">position</span><span class="p">,</span> -</span><span id="Parser-3264"><a href="#Parser-3264"><span class="linenos">3264</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> -</span><span id="Parser-3265"><a href="#Parser-3265"><span class="linenos">3265</span></a> <span class="n">collation</span><span class="o">=</span><span class="n">collation</span><span class="p">,</span> -</span><span id="Parser-3266"><a href="#Parser-3266"><span class="linenos">3266</span></a> <span class="p">)</span> -</span><span id="Parser-3267"><a href="#Parser-3267"><span class="linenos">3267</span></a> -</span><span id="Parser-3268"><a href="#Parser-3268"><span class="linenos">3268</span></a> <span class="k">def</span> <span class="nf">_parse_window_clause</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="Parser-3269"><a href="#Parser-3269"><span class="linenos">3269</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">)</span> +</span><span id="Parser-3260"><a href="#Parser-3260"><span class="linenos">3260</span></a> <span class="k">def</span> <span class="nf">_parse_substring</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3261"><a href="#Parser-3261"><span class="linenos">3261</span></a> <span class="c1"># Postgres supports the form: substring(string [from int] [for int])</span> +</span><span id="Parser-3262"><a href="#Parser-3262"><span class="linenos">3262</span></a> <span class="c1"># https://www.postgresql.org/docs/9.1/functions-string.html @ Table 9-6</span> +</span><span id="Parser-3263"><a href="#Parser-3263"><span class="linenos">3263</span></a> +</span><span id="Parser-3264"><a href="#Parser-3264"><span class="linenos">3264</span></a> <span class="n">args</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">)</span> +</span><span id="Parser-3265"><a href="#Parser-3265"><span class="linenos">3265</span></a> +</span><span id="Parser-3266"><a href="#Parser-3266"><span class="linenos">3266</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">):</span> +</span><span id="Parser-3267"><a href="#Parser-3267"><span class="linenos">3267</span></a> <span class="n">args</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">_parse_bitwise</span><span class="p">())</span> +</span><span id="Parser-3268"><a href="#Parser-3268"><span class="linenos">3268</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">):</span> +</span><span id="Parser-3269"><a href="#Parser-3269"><span class="linenos">3269</span></a> <span class="n">args</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">_parse_bitwise</span><span class="p">())</span> </span><span id="Parser-3270"><a href="#Parser-3270"><span class="linenos">3270</span></a> -</span><span id="Parser-3271"><a href="#Parser-3271"><span class="linenos">3271</span></a> <span class="k">def</span> <span class="nf">_parse_named_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3272"><a href="#Parser-3272"><span class="linenos">3272</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> <span class="n">alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3271"><a href="#Parser-3271"><span class="linenos">3271</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</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="Parser-3272"><a href="#Parser-3272"><span class="linenos">3272</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span> </span><span id="Parser-3273"><a href="#Parser-3273"><span class="linenos">3273</span></a> -</span><span id="Parser-3274"><a href="#Parser-3274"><span class="linenos">3274</span></a> <span class="k">def</span> <span class="nf">_parse_window</span><span class="p">(</span> -</span><span id="Parser-3275"><a href="#Parser-3275"><span class="linenos">3275</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3276"><a href="#Parser-3276"><span class="linenos">3276</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3277"><a href="#Parser-3277"><span class="linenos">3277</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">):</span> -</span><span id="Parser-3278"><a href="#Parser-3278"><span class="linenos">3278</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">)</span> -</span><span id="Parser-3279"><a href="#Parser-3279"><span class="linenos">3279</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Filter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> -</span><span id="Parser-3280"><a href="#Parser-3280"><span class="linenos">3280</span></a> -</span><span id="Parser-3281"><a href="#Parser-3281"><span class="linenos">3281</span></a> <span class="c1"># T-SQL allows the OVER (...) syntax after WITHIN GROUP.</span> -</span><span id="Parser-3282"><a href="#Parser-3282"><span class="linenos">3282</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16</span> -</span><span id="Parser-3283"><a href="#Parser-3283"><span class="linenos">3283</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">):</span> -</span><span id="Parser-3284"><a href="#Parser-3284"><span class="linenos">3284</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">)</span> -</span><span id="Parser-3285"><a href="#Parser-3285"><span class="linenos">3285</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">order</span><span class="p">)</span> -</span><span id="Parser-3286"><a href="#Parser-3286"><span class="linenos">3286</span></a> -</span><span id="Parser-3287"><a href="#Parser-3287"><span class="linenos">3287</span></a> <span class="c1"># SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER</span> -</span><span id="Parser-3288"><a href="#Parser-3288"><span class="linenos">3288</span></a> <span class="c1"># Some dialects choose to implement and some do not.</span> -</span><span id="Parser-3289"><a href="#Parser-3289"><span class="linenos">3289</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html</span> -</span><span id="Parser-3290"><a href="#Parser-3290"><span class="linenos">3290</span></a> -</span><span id="Parser-3291"><a href="#Parser-3291"><span class="linenos">3291</span></a> <span class="c1"># There is some code above in _parse_lambda that handles</span> -</span><span id="Parser-3292"><a href="#Parser-3292"><span class="linenos">3292</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...</span> -</span><span id="Parser-3293"><a href="#Parser-3293"><span class="linenos">3293</span></a> -</span><span id="Parser-3294"><a href="#Parser-3294"><span class="linenos">3294</span></a> <span class="c1"># The below changes handle</span> -</span><span id="Parser-3295"><a href="#Parser-3295"><span class="linenos">3295</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...</span> -</span><span id="Parser-3296"><a href="#Parser-3296"><span class="linenos">3296</span></a> -</span><span id="Parser-3297"><a href="#Parser-3297"><span class="linenos">3297</span></a> <span class="c1"># Oracle allows both formats</span> -</span><span id="Parser-3298"><a href="#Parser-3298"><span class="linenos">3298</span></a> <span class="c1"># (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)</span> -</span><span id="Parser-3299"><a href="#Parser-3299"><span class="linenos">3299</span></a> <span class="c1"># and Snowflake chose to do the same for familiarity</span> -</span><span id="Parser-3300"><a href="#Parser-3300"><span class="linenos">3300</span></a> <span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes</span> -</span><span id="Parser-3301"><a href="#Parser-3301"><span class="linenos">3301</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">):</span> -</span><span id="Parser-3302"><a href="#Parser-3302"><span class="linenos">3302</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-3303"><a href="#Parser-3303"><span class="linenos">3303</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">):</span> -</span><span id="Parser-3304"><a href="#Parser-3304"><span class="linenos">3304</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> -</span><span id="Parser-3305"><a href="#Parser-3305"><span class="linenos">3305</span></a> -</span><span id="Parser-3306"><a href="#Parser-3306"><span class="linenos">3306</span></a> <span class="c1"># bigquery select from window x AS (partition by ...)</span> -</span><span id="Parser-3307"><a href="#Parser-3307"><span class="linenos">3307</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-3308"><a href="#Parser-3308"><span class="linenos">3308</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-3309"><a href="#Parser-3309"><span class="linenos">3309</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">):</span> -</span><span id="Parser-3310"><a href="#Parser-3310"><span class="linenos">3310</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3311"><a href="#Parser-3311"><span class="linenos">3311</span></a> -</span><span id="Parser-3312"><a href="#Parser-3312"><span class="linenos">3312</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-3313"><a href="#Parser-3313"><span class="linenos">3313</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Window</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">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="kc">False</span><span class="p">))</span> -</span><span id="Parser-3314"><a href="#Parser-3314"><span class="linenos">3314</span></a> -</span><span id="Parser-3315"><a href="#Parser-3315"><span class="linenos">3315</span></a> <span class="n">window_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_ALIAS_TOKENS</span><span class="p">)</span> -</span><span id="Parser-3316"><a href="#Parser-3316"><span class="linenos">3316</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> -</span><span id="Parser-3317"><a href="#Parser-3317"><span class="linenos">3317</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> -</span><span id="Parser-3318"><a href="#Parser-3318"><span class="linenos">3318</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-3319"><a href="#Parser-3319"><span class="linenos">3319</span></a> -</span><span id="Parser-3320"><a href="#Parser-3320"><span class="linenos">3320</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> -</span><span id="Parser-3321"><a href="#Parser-3321"><span class="linenos">3321</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> -</span><span id="Parser-3322"><a href="#Parser-3322"><span class="linenos">3322</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> -</span><span id="Parser-3323"><a href="#Parser-3323"><span class="linenos">3323</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> -</span><span id="Parser-3324"><a href="#Parser-3324"><span class="linenos">3324</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> -</span><span id="Parser-3325"><a href="#Parser-3325"><span class="linenos">3325</span></a> -</span><span id="Parser-3326"><a href="#Parser-3326"><span class="linenos">3326</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3327"><a href="#Parser-3327"><span class="linenos">3327</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WindowSpec</span><span class="p">,</span> -</span><span id="Parser-3328"><a href="#Parser-3328"><span class="linenos">3328</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> -</span><span id="Parser-3329"><a href="#Parser-3329"><span class="linenos">3329</span></a> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> -</span><span id="Parser-3330"><a href="#Parser-3330"><span class="linenos">3330</span></a> <span class="n">start_side</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> -</span><span id="Parser-3331"><a href="#Parser-3331"><span class="linenos">3331</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> -</span><span id="Parser-3332"><a href="#Parser-3332"><span class="linenos">3332</span></a> <span class="n">end_side</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> -</span><span id="Parser-3333"><a href="#Parser-3333"><span class="linenos">3333</span></a> <span class="p">)</span> -</span><span id="Parser-3334"><a href="#Parser-3334"><span class="linenos">3334</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3335"><a href="#Parser-3335"><span class="linenos">3335</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3336"><a href="#Parser-3336"><span class="linenos">3336</span></a> -</span><span id="Parser-3337"><a href="#Parser-3337"><span class="linenos">3337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3338"><a href="#Parser-3338"><span class="linenos">3338</span></a> -</span><span id="Parser-3339"><a href="#Parser-3339"><span class="linenos">3339</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3340"><a href="#Parser-3340"><span class="linenos">3340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> -</span><span id="Parser-3341"><a href="#Parser-3341"><span class="linenos">3341</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3342"><a href="#Parser-3342"><span class="linenos">3342</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> -</span><span id="Parser-3343"><a href="#Parser-3343"><span class="linenos">3343</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> -</span><span id="Parser-3344"><a href="#Parser-3344"><span class="linenos">3344</span></a> <span class="n">spec</span><span class="o">=</span><span class="n">spec</span><span class="p">,</span> -</span><span id="Parser-3345"><a href="#Parser-3345"><span class="linenos">3345</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">window_alias</span><span class="p">,</span> -</span><span id="Parser-3346"><a href="#Parser-3346"><span class="linenos">3346</span></a> <span class="p">)</span> +</span><span id="Parser-3274"><a href="#Parser-3274"><span class="linenos">3274</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3275"><a href="#Parser-3275"><span class="linenos">3275</span></a> +</span><span id="Parser-3276"><a href="#Parser-3276"><span class="linenos">3276</span></a> <span class="k">def</span> <span class="nf">_parse_trim</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3277"><a href="#Parser-3277"><span class="linenos">3277</span></a> <span class="c1"># https://www.w3resource.com/sql/character-functions/trim.php</span> +</span><span id="Parser-3278"><a href="#Parser-3278"><span class="linenos">3278</span></a> <span class="c1"># https://docs.oracle.com/javadb/10.8.3.0/ref/rreftrimfunc.html</span> +</span><span id="Parser-3279"><a href="#Parser-3279"><span class="linenos">3279</span></a> +</span><span id="Parser-3280"><a href="#Parser-3280"><span class="linenos">3280</span></a> <span class="n">position</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3281"><a href="#Parser-3281"><span class="linenos">3281</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3282"><a href="#Parser-3282"><span class="linenos">3282</span></a> +</span><span id="Parser-3283"><a href="#Parser-3283"><span class="linenos">3283</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRIM_TYPES</span><span class="p">):</span> +</span><span id="Parser-3284"><a href="#Parser-3284"><span class="linenos">3284</span></a> <span class="n">position</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-3285"><a href="#Parser-3285"><span class="linenos">3285</span></a> +</span><span id="Parser-3286"><a href="#Parser-3286"><span class="linenos">3286</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-3287"><a href="#Parser-3287"><span class="linenos">3287</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)):</span> +</span><span id="Parser-3288"><a href="#Parser-3288"><span class="linenos">3288</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-3289"><a href="#Parser-3289"><span class="linenos">3289</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3290"><a href="#Parser-3290"><span class="linenos">3290</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span> +</span><span id="Parser-3291"><a href="#Parser-3291"><span class="linenos">3291</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3292"><a href="#Parser-3292"><span class="linenos">3292</span></a> +</span><span id="Parser-3293"><a href="#Parser-3293"><span class="linenos">3293</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">):</span> +</span><span id="Parser-3294"><a href="#Parser-3294"><span class="linenos">3294</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">()</span> +</span><span id="Parser-3295"><a href="#Parser-3295"><span class="linenos">3295</span></a> +</span><span id="Parser-3296"><a href="#Parser-3296"><span class="linenos">3296</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3297"><a href="#Parser-3297"><span class="linenos">3297</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">,</span> +</span><span id="Parser-3298"><a href="#Parser-3298"><span class="linenos">3298</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3299"><a href="#Parser-3299"><span class="linenos">3299</span></a> <span class="n">position</span><span class="o">=</span><span class="n">position</span><span class="p">,</span> +</span><span id="Parser-3300"><a href="#Parser-3300"><span class="linenos">3300</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> +</span><span id="Parser-3301"><a href="#Parser-3301"><span class="linenos">3301</span></a> <span class="n">collation</span><span class="o">=</span><span class="n">collation</span><span class="p">,</span> +</span><span id="Parser-3302"><a href="#Parser-3302"><span class="linenos">3302</span></a> <span class="p">)</span> +</span><span id="Parser-3303"><a href="#Parser-3303"><span class="linenos">3303</span></a> +</span><span id="Parser-3304"><a href="#Parser-3304"><span class="linenos">3304</span></a> <span class="k">def</span> <span class="nf">_parse_window_clause</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="Parser-3305"><a href="#Parser-3305"><span class="linenos">3305</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_named_window</span><span class="p">)</span> +</span><span id="Parser-3306"><a href="#Parser-3306"><span class="linenos">3306</span></a> +</span><span id="Parser-3307"><a href="#Parser-3307"><span class="linenos">3307</span></a> <span class="k">def</span> <span class="nf">_parse_named_window</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3308"><a href="#Parser-3308"><span class="linenos">3308</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(),</span> <span class="n">alias</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3309"><a href="#Parser-3309"><span class="linenos">3309</span></a> +</span><span id="Parser-3310"><a href="#Parser-3310"><span class="linenos">3310</span></a> <span class="k">def</span> <span class="nf">_parse_window</span><span class="p">(</span> +</span><span id="Parser-3311"><a href="#Parser-3311"><span class="linenos">3311</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">alias</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3312"><a href="#Parser-3312"><span class="linenos">3312</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3313"><a href="#Parser-3313"><span class="linenos">3313</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">):</span> +</span><span id="Parser-3314"><a href="#Parser-3314"><span class="linenos">3314</span></a> <span class="n">where</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">)</span> +</span><span id="Parser-3315"><a href="#Parser-3315"><span class="linenos">3315</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Filter</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">where</span><span class="p">)</span> +</span><span id="Parser-3316"><a href="#Parser-3316"><span class="linenos">3316</span></a> +</span><span id="Parser-3317"><a href="#Parser-3317"><span class="linenos">3317</span></a> <span class="c1"># T-SQL allows the OVER (...) syntax after WITHIN GROUP.</span> +</span><span id="Parser-3318"><a href="#Parser-3318"><span class="linenos">3318</span></a> <span class="c1"># https://learn.microsoft.com/en-us/sql/t-sql/functions/percentile-disc-transact-sql?view=sql-server-ver16</span> +</span><span id="Parser-3319"><a href="#Parser-3319"><span class="linenos">3319</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">):</span> +</span><span id="Parser-3320"><a href="#Parser-3320"><span class="linenos">3320</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">)</span> +</span><span id="Parser-3321"><a href="#Parser-3321"><span class="linenos">3321</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">WithinGroup</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">order</span><span class="p">)</span> +</span><span id="Parser-3322"><a href="#Parser-3322"><span class="linenos">3322</span></a> +</span><span id="Parser-3323"><a href="#Parser-3323"><span class="linenos">3323</span></a> <span class="c1"># SQL spec defines an optional [ { IGNORE | RESPECT } NULLS ] OVER</span> +</span><span id="Parser-3324"><a href="#Parser-3324"><span class="linenos">3324</span></a> <span class="c1"># Some dialects choose to implement and some do not.</span> +</span><span id="Parser-3325"><a href="#Parser-3325"><span class="linenos">3325</span></a> <span class="c1"># https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html</span> +</span><span id="Parser-3326"><a href="#Parser-3326"><span class="linenos">3326</span></a> +</span><span id="Parser-3327"><a href="#Parser-3327"><span class="linenos">3327</span></a> <span class="c1"># There is some code above in _parse_lambda that handles</span> +</span><span id="Parser-3328"><a href="#Parser-3328"><span class="linenos">3328</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN IGNORE|RESPECT NULLS) OVER ...</span> +</span><span id="Parser-3329"><a href="#Parser-3329"><span class="linenos">3329</span></a> +</span><span id="Parser-3330"><a href="#Parser-3330"><span class="linenos">3330</span></a> <span class="c1"># The below changes handle</span> +</span><span id="Parser-3331"><a href="#Parser-3331"><span class="linenos">3331</span></a> <span class="c1"># SELECT FIRST_VALUE(TABLE.COLUMN) IGNORE|RESPECT NULLS OVER ...</span> +</span><span id="Parser-3332"><a href="#Parser-3332"><span class="linenos">3332</span></a> +</span><span id="Parser-3333"><a href="#Parser-3333"><span class="linenos">3333</span></a> <span class="c1"># Oracle allows both formats</span> +</span><span id="Parser-3334"><a href="#Parser-3334"><span class="linenos">3334</span></a> <span class="c1"># (https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/img_text/first_value.html)</span> +</span><span id="Parser-3335"><a href="#Parser-3335"><span class="linenos">3335</span></a> <span class="c1"># and Snowflake chose to do the same for familiarity</span> +</span><span id="Parser-3336"><a href="#Parser-3336"><span class="linenos">3336</span></a> <span class="c1"># https://docs.snowflake.com/en/sql-reference/functions/first_value.html#usage-notes</span> +</span><span id="Parser-3337"><a href="#Parser-3337"><span class="linenos">3337</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">):</span> +</span><span id="Parser-3338"><a href="#Parser-3338"><span class="linenos">3338</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">IgnoreNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-3339"><a href="#Parser-3339"><span class="linenos">3339</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">):</span> +</span><span id="Parser-3340"><a href="#Parser-3340"><span class="linenos">3340</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RespectNulls</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">)</span> +</span><span id="Parser-3341"><a href="#Parser-3341"><span class="linenos">3341</span></a> +</span><span id="Parser-3342"><a href="#Parser-3342"><span class="linenos">3342</span></a> <span class="c1"># bigquery select from window x AS (partition by ...)</span> +</span><span id="Parser-3343"><a href="#Parser-3343"><span class="linenos">3343</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-3344"><a href="#Parser-3344"><span class="linenos">3344</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> +</span><span id="Parser-3345"><a href="#Parser-3345"><span class="linenos">3345</span></a> <span class="k">elif</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">):</span> +</span><span id="Parser-3346"><a href="#Parser-3346"><span class="linenos">3346</span></a> <span class="k">return</span> <span class="n">this</span> </span><span id="Parser-3347"><a href="#Parser-3347"><span class="linenos">3347</span></a> -</span><span id="Parser-3348"><a href="#Parser-3348"><span class="linenos">3348</span></a> <span class="k">def</span> <span class="nf">_parse_window_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-3349"><a href="#Parser-3349"><span class="linenos">3349</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> +</span><span id="Parser-3348"><a href="#Parser-3348"><span class="linenos">3348</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-3349"><a href="#Parser-3349"><span class="linenos">3349</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Window</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">alias</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="kc">False</span><span class="p">))</span> </span><span id="Parser-3350"><a href="#Parser-3350"><span class="linenos">3350</span></a> -</span><span id="Parser-3351"><a href="#Parser-3351"><span class="linenos">3351</span></a> <span class="k">return</span> <span class="p">{</span> -</span><span id="Parser-3352"><a href="#Parser-3352"><span class="linenos">3352</span></a> <span class="s2">"value"</span><span class="p">:</span> <span class="p">(</span> -</span><span id="Parser-3353"><a href="#Parser-3353"><span class="linenos">3353</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_ROW</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-3354"><a href="#Parser-3354"><span class="linenos">3354</span></a> <span class="p">)</span> -</span><span id="Parser-3355"><a href="#Parser-3355"><span class="linenos">3355</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> -</span><span id="Parser-3356"><a href="#Parser-3356"><span class="linenos">3356</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> -</span><span id="Parser-3357"><a href="#Parser-3357"><span class="linenos">3357</span></a> <span class="p">}</span> -</span><span id="Parser-3358"><a href="#Parser-3358"><span class="linenos">3358</span></a> -</span><span id="Parser-3359"><a href="#Parser-3359"><span class="linenos">3359</span></a> <span class="k">def</span> <span class="nf">_parse_alias</span><span class="p">(</span> -</span><span id="Parser-3360"><a href="#Parser-3360"><span class="linenos">3360</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Parser-3361"><a href="#Parser-3361"><span class="linenos">3361</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3362"><a href="#Parser-3362"><span class="linenos">3362</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> -</span><span id="Parser-3363"><a href="#Parser-3363"><span class="linenos">3363</span></a> -</span><span id="Parser-3364"><a href="#Parser-3364"><span class="linenos">3364</span></a> <span class="k">if</span> <span class="n">explicit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">any_token</span><span class="p">:</span> -</span><span id="Parser-3365"><a href="#Parser-3365"><span class="linenos">3365</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3366"><a href="#Parser-3366"><span class="linenos">3366</span></a> -</span><span id="Parser-3367"><a href="#Parser-3367"><span class="linenos">3367</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-3368"><a href="#Parser-3368"><span class="linenos">3368</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3369"><a href="#Parser-3369"><span class="linenos">3369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Aliases</span><span class="p">,</span> -</span><span id="Parser-3370"><a href="#Parser-3370"><span class="linenos">3370</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3371"><a href="#Parser-3371"><span class="linenos">3371</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)),</span> -</span><span id="Parser-3372"><a href="#Parser-3372"><span class="linenos">3372</span></a> <span class="p">)</span> -</span><span id="Parser-3373"><a href="#Parser-3373"><span class="linenos">3373</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span> -</span><span id="Parser-3374"><a href="#Parser-3374"><span class="linenos">3374</span></a> <span class="k">return</span> <span class="n">aliases</span> -</span><span id="Parser-3375"><a href="#Parser-3375"><span class="linenos">3375</span></a> -</span><span id="Parser-3376"><a href="#Parser-3376"><span class="linenos">3376</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)</span> -</span><span id="Parser-3377"><a href="#Parser-3377"><span class="linenos">3377</span></a> -</span><span id="Parser-3378"><a href="#Parser-3378"><span class="linenos">3378</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> -</span><span id="Parser-3379"><a href="#Parser-3379"><span class="linenos">3379</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> -</span><span id="Parser-3380"><a href="#Parser-3380"><span class="linenos">3380</span></a> -</span><span id="Parser-3381"><a href="#Parser-3381"><span class="linenos">3381</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3382"><a href="#Parser-3382"><span class="linenos">3382</span></a> -</span><span id="Parser-3383"><a href="#Parser-3383"><span class="linenos">3383</span></a> <span class="k">def</span> <span class="nf">_parse_id_var</span><span class="p">(</span> -</span><span id="Parser-3384"><a href="#Parser-3384"><span class="linenos">3384</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser-3385"><a href="#Parser-3385"><span class="linenos">3385</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> -</span><span id="Parser-3386"><a href="#Parser-3386"><span class="linenos">3386</span></a> <span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-3387"><a href="#Parser-3387"><span class="linenos">3387</span></a> <span class="n">prefix_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser-3388"><a href="#Parser-3388"><span class="linenos">3388</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3389"><a href="#Parser-3389"><span class="linenos">3389</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> -</span><span id="Parser-3390"><a href="#Parser-3390"><span class="linenos">3390</span></a> -</span><span id="Parser-3391"><a href="#Parser-3391"><span class="linenos">3391</span></a> <span class="k">if</span> <span class="n">identifier</span><span class="p">:</span> -</span><span id="Parser-3392"><a href="#Parser-3392"><span class="linenos">3392</span></a> <span class="k">return</span> <span class="n">identifier</span> -</span><span id="Parser-3393"><a href="#Parser-3393"><span class="linenos">3393</span></a> -</span><span id="Parser-3394"><a href="#Parser-3394"><span class="linenos">3394</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Parser-3395"><a href="#Parser-3395"><span class="linenos">3395</span></a> -</span><span id="Parser-3396"><a href="#Parser-3396"><span class="linenos">3396</span></a> <span class="k">if</span> <span class="n">prefix_tokens</span><span class="p">:</span> -</span><span id="Parser-3397"><a href="#Parser-3397"><span class="linenos">3397</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">prefix_tokens</span><span class="p">):</span> -</span><span id="Parser-3398"><a href="#Parser-3398"><span class="linenos">3398</span></a> <span class="n">prefix</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-3351"><a href="#Parser-3351"><span class="linenos">3351</span></a> <span class="n">window_alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">tokens</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">WINDOW_ALIAS_TOKENS</span><span class="p">)</span> +</span><span id="Parser-3352"><a href="#Parser-3352"><span class="linenos">3352</span></a> <span class="n">partition</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition_by</span><span class="p">()</span> +</span><span id="Parser-3353"><a href="#Parser-3353"><span class="linenos">3353</span></a> <span class="n">order</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_order</span><span class="p">()</span> +</span><span id="Parser-3354"><a href="#Parser-3354"><span class="linenos">3354</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-3355"><a href="#Parser-3355"><span class="linenos">3355</span></a> +</span><span id="Parser-3356"><a href="#Parser-3356"><span class="linenos">3356</span></a> <span class="k">if</span> <span class="n">kind</span><span class="p">:</span> +</span><span id="Parser-3357"><a href="#Parser-3357"><span class="linenos">3357</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> +</span><span id="Parser-3358"><a href="#Parser-3358"><span class="linenos">3358</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> +</span><span id="Parser-3359"><a href="#Parser-3359"><span class="linenos">3359</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">)</span> +</span><span id="Parser-3360"><a href="#Parser-3360"><span class="linenos">3360</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_window_spec</span><span class="p">()</span> +</span><span id="Parser-3361"><a href="#Parser-3361"><span class="linenos">3361</span></a> +</span><span id="Parser-3362"><a href="#Parser-3362"><span class="linenos">3362</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3363"><a href="#Parser-3363"><span class="linenos">3363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WindowSpec</span><span class="p">,</span> +</span><span id="Parser-3364"><a href="#Parser-3364"><span class="linenos">3364</span></a> <span class="n">kind</span><span class="o">=</span><span class="n">kind</span><span class="p">,</span> +</span><span id="Parser-3365"><a href="#Parser-3365"><span class="linenos">3365</span></a> <span class="n">start</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> +</span><span id="Parser-3366"><a href="#Parser-3366"><span class="linenos">3366</span></a> <span class="n">start_side</span><span class="o">=</span><span class="n">start</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> +</span><span id="Parser-3367"><a href="#Parser-3367"><span class="linenos">3367</span></a> <span class="n">end</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"value"</span><span class="p">],</span> +</span><span id="Parser-3368"><a href="#Parser-3368"><span class="linenos">3368</span></a> <span class="n">end_side</span><span class="o">=</span><span class="n">end</span><span class="p">[</span><span class="s2">"side"</span><span class="p">],</span> +</span><span id="Parser-3369"><a href="#Parser-3369"><span class="linenos">3369</span></a> <span class="p">)</span> +</span><span id="Parser-3370"><a href="#Parser-3370"><span class="linenos">3370</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3371"><a href="#Parser-3371"><span class="linenos">3371</span></a> <span class="n">spec</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3372"><a href="#Parser-3372"><span class="linenos">3372</span></a> +</span><span id="Parser-3373"><a href="#Parser-3373"><span class="linenos">3373</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3374"><a href="#Parser-3374"><span class="linenos">3374</span></a> +</span><span id="Parser-3375"><a href="#Parser-3375"><span class="linenos">3375</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3376"><a href="#Parser-3376"><span class="linenos">3376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Window</span><span class="p">,</span> +</span><span id="Parser-3377"><a href="#Parser-3377"><span class="linenos">3377</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3378"><a href="#Parser-3378"><span class="linenos">3378</span></a> <span class="n">partition_by</span><span class="o">=</span><span class="n">partition</span><span class="p">,</span> +</span><span id="Parser-3379"><a href="#Parser-3379"><span class="linenos">3379</span></a> <span class="n">order</span><span class="o">=</span><span class="n">order</span><span class="p">,</span> +</span><span id="Parser-3380"><a href="#Parser-3380"><span class="linenos">3380</span></a> <span class="n">spec</span><span class="o">=</span><span class="n">spec</span><span class="p">,</span> +</span><span id="Parser-3381"><a href="#Parser-3381"><span class="linenos">3381</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">window_alias</span><span class="p">,</span> +</span><span id="Parser-3382"><a href="#Parser-3382"><span class="linenos">3382</span></a> <span class="p">)</span> +</span><span id="Parser-3383"><a href="#Parser-3383"><span class="linenos">3383</span></a> +</span><span id="Parser-3384"><a href="#Parser-3384"><span class="linenos">3384</span></a> <span class="k">def</span> <span class="nf">_parse_window_spec</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-3385"><a href="#Parser-3385"><span class="linenos">3385</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">)</span> +</span><span id="Parser-3386"><a href="#Parser-3386"><span class="linenos">3386</span></a> +</span><span id="Parser-3387"><a href="#Parser-3387"><span class="linenos">3387</span></a> <span class="k">return</span> <span class="p">{</span> +</span><span id="Parser-3388"><a href="#Parser-3388"><span class="linenos">3388</span></a> <span class="s2">"value"</span><span class="p">:</span> <span class="p">(</span> +</span><span id="Parser-3389"><a href="#Parser-3389"><span class="linenos">3389</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_ROW</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-3390"><a href="#Parser-3390"><span class="linenos">3390</span></a> <span class="p">)</span> +</span><span id="Parser-3391"><a href="#Parser-3391"><span class="linenos">3391</span></a> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">(),</span> +</span><span id="Parser-3392"><a href="#Parser-3392"><span class="linenos">3392</span></a> <span class="s2">"side"</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">((</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">))</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> +</span><span id="Parser-3393"><a href="#Parser-3393"><span class="linenos">3393</span></a> <span class="p">}</span> +</span><span id="Parser-3394"><a href="#Parser-3394"><span class="linenos">3394</span></a> +</span><span id="Parser-3395"><a href="#Parser-3395"><span class="linenos">3395</span></a> <span class="k">def</span> <span class="nf">_parse_alias</span><span class="p">(</span> +</span><span id="Parser-3396"><a href="#Parser-3396"><span class="linenos">3396</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">explicit</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Parser-3397"><a href="#Parser-3397"><span class="linenos">3397</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3398"><a href="#Parser-3398"><span class="linenos">3398</span></a> <span class="n">any_token</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">)</span> </span><span id="Parser-3399"><a href="#Parser-3399"><span class="linenos">3399</span></a> -</span><span id="Parser-3400"><a href="#Parser-3400"><span class="linenos">3400</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">):</span> -</span><span id="Parser-3401"><a href="#Parser-3401"><span class="linenos">3401</span></a> <span class="n">quoted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> -</span><span id="Parser-3402"><a href="#Parser-3402"><span class="linenos">3402</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> -</span><span id="Parser-3403"><a href="#Parser-3403"><span class="linenos">3403</span></a> -</span><span id="Parser-3404"><a href="#Parser-3404"><span class="linenos">3404</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3405"><a href="#Parser-3405"><span class="linenos">3405</span></a> -</span><span id="Parser-3406"><a href="#Parser-3406"><span class="linenos">3406</span></a> <span class="k">def</span> <span class="nf">_parse_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3407"><a href="#Parser-3407"><span class="linenos">3407</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> -</span><span id="Parser-3408"><a href="#Parser-3408"><span class="linenos">3408</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-3409"><a href="#Parser-3409"><span class="linenos">3409</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-3410"><a href="#Parser-3410"><span class="linenos">3410</span></a> -</span><span id="Parser-3411"><a href="#Parser-3411"><span class="linenos">3411</span></a> <span class="k">def</span> <span class="nf">_parse_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3412"><a href="#Parser-3412"><span class="linenos">3412</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> -</span><span id="Parser-3413"><a href="#Parser-3413"><span class="linenos">3413</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-3414"><a href="#Parser-3414"><span class="linenos">3414</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-3415"><a href="#Parser-3415"><span class="linenos">3415</span></a> -</span><span id="Parser-3416"><a href="#Parser-3416"><span class="linenos">3416</span></a> <span class="k">def</span> <span class="nf">_parse_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3417"><a href="#Parser-3417"><span class="linenos">3417</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">):</span> -</span><span id="Parser-3418"><a href="#Parser-3418"><span class="linenos">3418</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3419"><a href="#Parser-3419"><span class="linenos">3419</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-3420"><a href="#Parser-3420"><span class="linenos">3420</span></a> -</span><span id="Parser-3421"><a href="#Parser-3421"><span class="linenos">3421</span></a> <span class="k">def</span> <span class="nf">_parse_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3422"><a href="#Parser-3422"><span class="linenos">3422</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> -</span><span id="Parser-3423"><a href="#Parser-3423"><span class="linenos">3423</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-3424"><a href="#Parser-3424"><span class="linenos">3424</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> -</span><span id="Parser-3425"><a href="#Parser-3425"><span class="linenos">3425</span></a> -</span><span id="Parser-3426"><a href="#Parser-3426"><span class="linenos">3426</span></a> <span class="k">def</span> <span class="nf">_advance_any</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="Parser-3427"><a href="#Parser-3427"><span class="linenos">3427</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_KEYWORDS</span><span class="p">:</span> -</span><span id="Parser-3428"><a href="#Parser-3428"><span class="linenos">3428</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3429"><a href="#Parser-3429"><span class="linenos">3429</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> -</span><span id="Parser-3430"><a href="#Parser-3430"><span class="linenos">3430</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3400"><a href="#Parser-3400"><span class="linenos">3400</span></a> <span class="k">if</span> <span class="n">explicit</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">any_token</span><span class="p">:</span> +</span><span id="Parser-3401"><a href="#Parser-3401"><span class="linenos">3401</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3402"><a href="#Parser-3402"><span class="linenos">3402</span></a> +</span><span id="Parser-3403"><a href="#Parser-3403"><span class="linenos">3403</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-3404"><a href="#Parser-3404"><span class="linenos">3404</span></a> <span class="n">aliases</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3405"><a href="#Parser-3405"><span class="linenos">3405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Aliases</span><span class="p">,</span> +</span><span id="Parser-3406"><a href="#Parser-3406"><span class="linenos">3406</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3407"><a href="#Parser-3407"><span class="linenos">3407</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)),</span> +</span><span id="Parser-3408"><a href="#Parser-3408"><span class="linenos">3408</span></a> <span class="p">)</span> +</span><span id="Parser-3409"><a href="#Parser-3409"><span class="linenos">3409</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">(</span><span class="n">aliases</span><span class="p">)</span> +</span><span id="Parser-3410"><a href="#Parser-3410"><span class="linenos">3410</span></a> <span class="k">return</span> <span class="n">aliases</span> +</span><span id="Parser-3411"><a href="#Parser-3411"><span class="linenos">3411</span></a> +</span><span id="Parser-3412"><a href="#Parser-3412"><span class="linenos">3412</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">(</span><span class="n">any_token</span><span class="p">)</span> +</span><span id="Parser-3413"><a href="#Parser-3413"><span class="linenos">3413</span></a> +</span><span id="Parser-3414"><a href="#Parser-3414"><span class="linenos">3414</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span> +</span><span id="Parser-3415"><a href="#Parser-3415"><span class="linenos">3415</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span><span class="p">)</span> +</span><span id="Parser-3416"><a href="#Parser-3416"><span class="linenos">3416</span></a> +</span><span id="Parser-3417"><a href="#Parser-3417"><span class="linenos">3417</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3418"><a href="#Parser-3418"><span class="linenos">3418</span></a> +</span><span id="Parser-3419"><a href="#Parser-3419"><span class="linenos">3419</span></a> <span class="k">def</span> <span class="nf">_parse_id_var</span><span class="p">(</span> +</span><span id="Parser-3420"><a href="#Parser-3420"><span class="linenos">3420</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser-3421"><a href="#Parser-3421"><span class="linenos">3421</span></a> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> +</span><span id="Parser-3422"><a href="#Parser-3422"><span class="linenos">3422</span></a> <span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-3423"><a href="#Parser-3423"><span class="linenos">3423</span></a> <span class="n">prefix_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Collection</span><span class="p">[</span><span class="n">TokenType</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser-3424"><a href="#Parser-3424"><span class="linenos">3424</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3425"><a href="#Parser-3425"><span class="linenos">3425</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_identifier</span><span class="p">()</span> +</span><span id="Parser-3426"><a href="#Parser-3426"><span class="linenos">3426</span></a> +</span><span id="Parser-3427"><a href="#Parser-3427"><span class="linenos">3427</span></a> <span class="k">if</span> <span class="n">identifier</span><span class="p">:</span> +</span><span id="Parser-3428"><a href="#Parser-3428"><span class="linenos">3428</span></a> <span class="k">return</span> <span class="n">identifier</span> +</span><span id="Parser-3429"><a href="#Parser-3429"><span class="linenos">3429</span></a> +</span><span id="Parser-3430"><a href="#Parser-3430"><span class="linenos">3430</span></a> <span class="n">prefix</span> <span class="o">=</span> <span class="s2">""</span> </span><span id="Parser-3431"><a href="#Parser-3431"><span class="linenos">3431</span></a> -</span><span id="Parser-3432"><a href="#Parser-3432"><span class="linenos">3432</span></a> <span class="k">def</span> <span class="nf">_parse_var_or_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3433"><a href="#Parser-3433"><span class="linenos">3433</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> -</span><span id="Parser-3434"><a href="#Parser-3434"><span class="linenos">3434</span></a> -</span><span id="Parser-3435"><a href="#Parser-3435"><span class="linenos">3435</span></a> <span class="k">def</span> <span class="nf">_parse_null</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3436"><a href="#Parser-3436"><span class="linenos">3436</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> -</span><span id="Parser-3437"><a href="#Parser-3437"><span class="linenos">3437</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-3438"><a href="#Parser-3438"><span class="linenos">3438</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3432"><a href="#Parser-3432"><span class="linenos">3432</span></a> <span class="k">if</span> <span class="n">prefix_tokens</span><span class="p">:</span> +</span><span id="Parser-3433"><a href="#Parser-3433"><span class="linenos">3433</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">prefix_tokens</span><span class="p">):</span> +</span><span id="Parser-3434"><a href="#Parser-3434"><span class="linenos">3434</span></a> <span class="n">prefix</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-3435"><a href="#Parser-3435"><span class="linenos">3435</span></a> +</span><span id="Parser-3436"><a href="#Parser-3436"><span class="linenos">3436</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">tokens</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">ID_VAR_TOKENS</span><span class="p">):</span> +</span><span id="Parser-3437"><a href="#Parser-3437"><span class="linenos">3437</span></a> <span class="n">quoted</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span> +</span><span id="Parser-3438"><a href="#Parser-3438"><span class="linenos">3438</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">prefix</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="n">quoted</span><span class="p">)</span> </span><span id="Parser-3439"><a href="#Parser-3439"><span class="linenos">3439</span></a> -</span><span id="Parser-3440"><a href="#Parser-3440"><span class="linenos">3440</span></a> <span class="k">def</span> <span class="nf">_parse_boolean</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3441"><a href="#Parser-3441"><span class="linenos">3441</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">):</span> -</span><span id="Parser-3442"><a href="#Parser-3442"><span class="linenos">3442</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-3443"><a href="#Parser-3443"><span class="linenos">3443</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">):</span> -</span><span id="Parser-3444"><a href="#Parser-3444"><span class="linenos">3444</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-3445"><a href="#Parser-3445"><span class="linenos">3445</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3440"><a href="#Parser-3440"><span class="linenos">3440</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3441"><a href="#Parser-3441"><span class="linenos">3441</span></a> +</span><span id="Parser-3442"><a href="#Parser-3442"><span class="linenos">3442</span></a> <span class="k">def</span> <span class="nf">_parse_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3443"><a href="#Parser-3443"><span class="linenos">3443</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">):</span> +</span><span id="Parser-3444"><a href="#Parser-3444"><span class="linenos">3444</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-3445"><a href="#Parser-3445"><span class="linenos">3445</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> </span><span id="Parser-3446"><a href="#Parser-3446"><span class="linenos">3446</span></a> -</span><span id="Parser-3447"><a href="#Parser-3447"><span class="linenos">3447</span></a> <span class="k">def</span> <span class="nf">_parse_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3448"><a href="#Parser-3448"><span class="linenos">3448</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span> -</span><span id="Parser-3449"><a href="#Parser-3449"><span class="linenos">3449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-3450"><a href="#Parser-3450"><span class="linenos">3450</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3447"><a href="#Parser-3447"><span class="linenos">3447</span></a> <span class="k">def</span> <span class="nf">_parse_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3448"><a href="#Parser-3448"><span class="linenos">3448</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">):</span> +</span><span id="Parser-3449"><a href="#Parser-3449"><span class="linenos">3449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-3450"><a href="#Parser-3450"><span class="linenos">3450</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> </span><span id="Parser-3451"><a href="#Parser-3451"><span class="linenos">3451</span></a> -</span><span id="Parser-3452"><a href="#Parser-3452"><span class="linenos">3452</span></a> <span class="k">def</span> <span class="nf">_parse_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3453"><a href="#Parser-3453"><span class="linenos">3453</span></a> <span class="n">wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)</span> -</span><span id="Parser-3454"><a href="#Parser-3454"><span class="linenos">3454</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> -</span><span id="Parser-3455"><a href="#Parser-3455"><span class="linenos">3455</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> -</span><span id="Parser-3456"><a href="#Parser-3456"><span class="linenos">3456</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Parameter</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">wrapped</span><span class="o">=</span><span class="n">wrapped</span><span class="p">)</span> -</span><span id="Parser-3457"><a href="#Parser-3457"><span class="linenos">3457</span></a> -</span><span id="Parser-3458"><a href="#Parser-3458"><span class="linenos">3458</span></a> <span class="k">def</span> <span class="nf">_parse_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3459"><a href="#Parser-3459"><span class="linenos">3459</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">):</span> -</span><span id="Parser-3460"><a href="#Parser-3460"><span class="linenos">3460</span></a> <span class="n">placeholder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-3461"><a href="#Parser-3461"><span class="linenos">3461</span></a> <span class="k">if</span> <span class="n">placeholder</span><span class="p">:</span> -</span><span id="Parser-3462"><a href="#Parser-3462"><span class="linenos">3462</span></a> <span class="k">return</span> <span class="n">placeholder</span> -</span><span id="Parser-3463"><a href="#Parser-3463"><span class="linenos">3463</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> -</span><span id="Parser-3464"><a href="#Parser-3464"><span class="linenos">3464</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3465"><a href="#Parser-3465"><span class="linenos">3465</span></a> -</span><span id="Parser-3466"><a href="#Parser-3466"><span class="linenos">3466</span></a> <span class="k">def</span> <span class="nf">_parse_except</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="Parser-3467"><a href="#Parser-3467"><span class="linenos">3467</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">):</span> -</span><span id="Parser-3468"><a href="#Parser-3468"><span class="linenos">3468</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3469"><a href="#Parser-3469"><span class="linenos">3469</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3470"><a href="#Parser-3470"><span class="linenos">3470</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-3471"><a href="#Parser-3471"><span class="linenos">3471</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> -</span><span id="Parser-3472"><a href="#Parser-3472"><span class="linenos">3472</span></a> -</span><span id="Parser-3473"><a href="#Parser-3473"><span class="linenos">3473</span></a> <span class="k">def</span> <span class="nf">_parse_replace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> -</span><span id="Parser-3474"><a href="#Parser-3474"><span class="linenos">3474</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">):</span> -</span><span id="Parser-3475"><a href="#Parser-3475"><span class="linenos">3475</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3476"><a href="#Parser-3476"><span class="linenos">3476</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3477"><a href="#Parser-3477"><span class="linenos">3477</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="Parser-3478"><a href="#Parser-3478"><span class="linenos">3478</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> -</span><span id="Parser-3479"><a href="#Parser-3479"><span class="linenos">3479</span></a> -</span><span id="Parser-3480"><a href="#Parser-3480"><span class="linenos">3480</span></a> <span class="k">def</span> <span class="nf">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-3481"><a href="#Parser-3481"><span class="linenos">3481</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> -</span><span id="Parser-3482"><a href="#Parser-3482"><span class="linenos">3482</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-3483"><a href="#Parser-3483"><span class="linenos">3483</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-3484"><a href="#Parser-3484"><span class="linenos">3484</span></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[</span><span class="n">parse_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span> -</span><span id="Parser-3485"><a href="#Parser-3485"><span class="linenos">3485</span></a> -</span><span id="Parser-3486"><a href="#Parser-3486"><span class="linenos">3486</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">):</span> -</span><span id="Parser-3487"><a href="#Parser-3487"><span class="linenos">3487</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="Parser-3488"><a href="#Parser-3488"><span class="linenos">3488</span></a> <span class="n">parse_result</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-3489"><a href="#Parser-3489"><span class="linenos">3489</span></a> -</span><span id="Parser-3490"><a href="#Parser-3490"><span class="linenos">3490</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-3491"><a href="#Parser-3491"><span class="linenos">3491</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser-3492"><a href="#Parser-3492"><span class="linenos">3492</span></a> <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> +</span><span id="Parser-3452"><a href="#Parser-3452"><span class="linenos">3452</span></a> <span class="k">def</span> <span class="nf">_parse_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3453"><a href="#Parser-3453"><span class="linenos">3453</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">):</span> +</span><span id="Parser-3454"><a href="#Parser-3454"><span class="linenos">3454</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3455"><a href="#Parser-3455"><span class="linenos">3455</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-3456"><a href="#Parser-3456"><span class="linenos">3456</span></a> +</span><span id="Parser-3457"><a href="#Parser-3457"><span class="linenos">3457</span></a> <span class="k">def</span> <span class="nf">_parse_var</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">any_token</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3458"><a href="#Parser-3458"><span class="linenos">3458</span></a> <span class="k">if</span> <span class="p">(</span><span class="n">any_token</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance_any</span><span class="p">())</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> +</span><span id="Parser-3459"><a href="#Parser-3459"><span class="linenos">3459</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-3460"><a href="#Parser-3460"><span class="linenos">3460</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_placeholder</span><span class="p">()</span> +</span><span id="Parser-3461"><a href="#Parser-3461"><span class="linenos">3461</span></a> +</span><span id="Parser-3462"><a href="#Parser-3462"><span class="linenos">3462</span></a> <span class="k">def</span> <span class="nf">_advance_any</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="Parser-3463"><a href="#Parser-3463"><span class="linenos">3463</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">RESERVED_KEYWORDS</span><span class="p">:</span> +</span><span id="Parser-3464"><a href="#Parser-3464"><span class="linenos">3464</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3465"><a href="#Parser-3465"><span class="linenos">3465</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> +</span><span id="Parser-3466"><a href="#Parser-3466"><span class="linenos">3466</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3467"><a href="#Parser-3467"><span class="linenos">3467</span></a> +</span><span id="Parser-3468"><a href="#Parser-3468"><span class="linenos">3468</span></a> <span class="k">def</span> <span class="nf">_parse_var_or_string</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3469"><a href="#Parser-3469"><span class="linenos">3469</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_string</span><span class="p">()</span> +</span><span id="Parser-3470"><a href="#Parser-3470"><span class="linenos">3470</span></a> +</span><span id="Parser-3471"><a href="#Parser-3471"><span class="linenos">3471</span></a> <span class="k">def</span> <span class="nf">_parse_null</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3472"><a href="#Parser-3472"><span class="linenos">3472</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">):</span> +</span><span id="Parser-3473"><a href="#Parser-3473"><span class="linenos">3473</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-3474"><a href="#Parser-3474"><span class="linenos">3474</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3475"><a href="#Parser-3475"><span class="linenos">3475</span></a> +</span><span id="Parser-3476"><a href="#Parser-3476"><span class="linenos">3476</span></a> <span class="k">def</span> <span class="nf">_parse_boolean</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3477"><a href="#Parser-3477"><span class="linenos">3477</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">):</span> +</span><span id="Parser-3478"><a href="#Parser-3478"><span class="linenos">3478</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-3479"><a href="#Parser-3479"><span class="linenos">3479</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">):</span> +</span><span id="Parser-3480"><a href="#Parser-3480"><span class="linenos">3480</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-3481"><a href="#Parser-3481"><span class="linenos">3481</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3482"><a href="#Parser-3482"><span class="linenos">3482</span></a> +</span><span id="Parser-3483"><a href="#Parser-3483"><span class="linenos">3483</span></a> <span class="k">def</span> <span class="nf">_parse_star</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3484"><a href="#Parser-3484"><span class="linenos">3484</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">):</span> +</span><span id="Parser-3485"><a href="#Parser-3485"><span class="linenos">3485</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">PRIMARY_PARSERS</span><span class="p">[</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">](</span><span class="bp">self</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-3486"><a href="#Parser-3486"><span class="linenos">3486</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3487"><a href="#Parser-3487"><span class="linenos">3487</span></a> +</span><span id="Parser-3488"><a href="#Parser-3488"><span class="linenos">3488</span></a> <span class="k">def</span> <span class="nf">_parse_parameter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3489"><a href="#Parser-3489"><span class="linenos">3489</span></a> <span class="n">wrapped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">)</span> +</span><span id="Parser-3490"><a href="#Parser-3490"><span class="linenos">3490</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_var</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary</span><span class="p">()</span> +</span><span id="Parser-3491"><a href="#Parser-3491"><span class="linenos">3491</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">)</span> +</span><span id="Parser-3492"><a href="#Parser-3492"><span class="linenos">3492</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Parameter</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">wrapped</span><span class="o">=</span><span class="n">wrapped</span><span class="p">)</span> </span><span id="Parser-3493"><a href="#Parser-3493"><span class="linenos">3493</span></a> -</span><span id="Parser-3494"><a href="#Parser-3494"><span class="linenos">3494</span></a> <span class="k">return</span> <span class="n">items</span> -</span><span id="Parser-3495"><a href="#Parser-3495"><span class="linenos">3495</span></a> -</span><span id="Parser-3496"><a href="#Parser-3496"><span class="linenos">3496</span></a> <span class="k">def</span> <span class="nf">_parse_tokens</span><span class="p">(</span> -</span><span id="Parser-3497"><a href="#Parser-3497"><span class="linenos">3497</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> -</span><span id="Parser-3498"><a href="#Parser-3498"><span class="linenos">3498</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3499"><a href="#Parser-3499"><span class="linenos">3499</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-3500"><a href="#Parser-3500"><span class="linenos">3500</span></a> -</span><span id="Parser-3501"><a href="#Parser-3501"><span class="linenos">3501</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> -</span><span id="Parser-3502"><a href="#Parser-3502"><span class="linenos">3502</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3503"><a href="#Parser-3503"><span class="linenos">3503</span></a> <span class="n">expressions</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> -</span><span id="Parser-3504"><a href="#Parser-3504"><span class="linenos">3504</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> -</span><span id="Parser-3505"><a href="#Parser-3505"><span class="linenos">3505</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> -</span><span id="Parser-3506"><a href="#Parser-3506"><span class="linenos">3506</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">parse_method</span><span class="p">(),</span> -</span><span id="Parser-3507"><a href="#Parser-3507"><span class="linenos">3507</span></a> <span class="p">)</span> +</span><span id="Parser-3494"><a href="#Parser-3494"><span class="linenos">3494</span></a> <span class="k">def</span> <span class="nf">_parse_placeholder</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3495"><a href="#Parser-3495"><span class="linenos">3495</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">):</span> +</span><span id="Parser-3496"><a href="#Parser-3496"><span class="linenos">3496</span></a> <span class="n">placeholder</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">PLACEHOLDER_PARSERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-3497"><a href="#Parser-3497"><span class="linenos">3497</span></a> <span class="k">if</span> <span class="n">placeholder</span><span class="p">:</span> +</span><span id="Parser-3498"><a href="#Parser-3498"><span class="linenos">3498</span></a> <span class="k">return</span> <span class="n">placeholder</span> +</span><span id="Parser-3499"><a href="#Parser-3499"><span class="linenos">3499</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span> +</span><span id="Parser-3500"><a href="#Parser-3500"><span class="linenos">3500</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3501"><a href="#Parser-3501"><span class="linenos">3501</span></a> +</span><span id="Parser-3502"><a href="#Parser-3502"><span class="linenos">3502</span></a> <span class="k">def</span> <span class="nf">_parse_except</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="Parser-3503"><a href="#Parser-3503"><span class="linenos">3503</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">):</span> +</span><span id="Parser-3504"><a href="#Parser-3504"><span class="linenos">3504</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3505"><a href="#Parser-3505"><span class="linenos">3505</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3506"><a href="#Parser-3506"><span class="linenos">3506</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> +</span><span id="Parser-3507"><a href="#Parser-3507"><span class="linenos">3507</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_column</span><span class="p">)</span> </span><span id="Parser-3508"><a href="#Parser-3508"><span class="linenos">3508</span></a> -</span><span id="Parser-3509"><a href="#Parser-3509"><span class="linenos">3509</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3510"><a href="#Parser-3510"><span class="linenos">3510</span></a> -</span><span id="Parser-3511"><a href="#Parser-3511"><span class="linenos">3511</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-3512"><a href="#Parser-3512"><span class="linenos">3512</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> -</span><span id="Parser-3513"><a href="#Parser-3513"><span class="linenos">3513</span></a> -</span><span id="Parser-3514"><a href="#Parser-3514"><span class="linenos">3514</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_csv</span><span class="p">(</span> -</span><span id="Parser-3515"><a href="#Parser-3515"><span class="linenos">3515</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> -</span><span id="Parser-3516"><a href="#Parser-3516"><span class="linenos">3516</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser-3517"><a href="#Parser-3517"><span class="linenos">3517</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">parse_method</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">))</span> -</span><span id="Parser-3518"><a href="#Parser-3518"><span class="linenos">3518</span></a> -</span><span id="Parser-3519"><a href="#Parser-3519"><span class="linenos">3519</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span> -</span><span id="Parser-3520"><a href="#Parser-3520"><span class="linenos">3520</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> -</span><span id="Parser-3521"><a href="#Parser-3521"><span class="linenos">3521</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> -</span><span id="Parser-3522"><a href="#Parser-3522"><span class="linenos">3522</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> -</span><span id="Parser-3523"><a href="#Parser-3523"><span class="linenos">3523</span></a> <span class="k">return</span> <span class="n">parse_result</span> -</span><span id="Parser-3524"><a href="#Parser-3524"><span class="linenos">3524</span></a> -</span><span id="Parser-3525"><a href="#Parser-3525"><span class="linenos">3525</span></a> <span class="k">def</span> <span class="nf">_parse_select_or_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3526"><a href="#Parser-3526"><span class="linenos">3526</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> -</span><span id="Parser-3527"><a href="#Parser-3527"><span class="linenos">3527</span></a> -</span><span id="Parser-3528"><a href="#Parser-3528"><span class="linenos">3528</span></a> <span class="k">def</span> <span class="nf">_parse_ddl_select</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3529"><a href="#Parser-3529"><span class="linenos">3529</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> -</span><span id="Parser-3530"><a href="#Parser-3530"><span class="linenos">3530</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> -</span><span id="Parser-3531"><a href="#Parser-3531"><span class="linenos">3531</span></a> <span class="p">)</span> -</span><span id="Parser-3532"><a href="#Parser-3532"><span class="linenos">3532</span></a> -</span><span id="Parser-3533"><a href="#Parser-3533"><span class="linenos">3533</span></a> <span class="k">def</span> <span class="nf">_parse_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3534"><a href="#Parser-3534"><span class="linenos">3534</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3535"><a href="#Parser-3535"><span class="linenos">3535</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_KIND</span><span class="p">):</span> -</span><span id="Parser-3536"><a href="#Parser-3536"><span class="linenos">3536</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> -</span><span id="Parser-3537"><a href="#Parser-3537"><span class="linenos">3537</span></a> -</span><span id="Parser-3538"><a href="#Parser-3538"><span class="linenos">3538</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">({</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">})</span> -</span><span id="Parser-3539"><a href="#Parser-3539"><span class="linenos">3539</span></a> -</span><span id="Parser-3540"><a href="#Parser-3540"><span class="linenos">3540</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-3541"><a href="#Parser-3541"><span class="linenos">3541</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-3542"><a href="#Parser-3542"><span class="linenos">3542</span></a> <span class="n">mode</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-3543"><a href="#Parser-3543"><span class="linenos">3543</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> -</span><span id="Parser-3544"><a href="#Parser-3544"><span class="linenos">3544</span></a> <span class="n">mode</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">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-3545"><a href="#Parser-3545"><span class="linenos">3545</span></a> -</span><span id="Parser-3546"><a href="#Parser-3546"><span class="linenos">3546</span></a> <span class="k">if</span> <span class="n">mode</span><span class="p">:</span> -</span><span id="Parser-3547"><a href="#Parser-3547"><span class="linenos">3547</span></a> <span class="n">modes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mode</span><span class="p">))</span> -</span><span id="Parser-3548"><a href="#Parser-3548"><span class="linenos">3548</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> -</span><span id="Parser-3549"><a href="#Parser-3549"><span class="linenos">3549</span></a> <span class="k">break</span> -</span><span id="Parser-3550"><a href="#Parser-3550"><span class="linenos">3550</span></a> -</span><span id="Parser-3551"><a href="#Parser-3551"><span class="linenos">3551</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Transaction</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">modes</span><span class="o">=</span><span class="n">modes</span><span class="p">)</span> -</span><span id="Parser-3552"><a href="#Parser-3552"><span class="linenos">3552</span></a> -</span><span id="Parser-3553"><a href="#Parser-3553"><span class="linenos">3553</span></a> <span class="k">def</span> <span class="nf">_parse_commit_or_rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3554"><a href="#Parser-3554"><span class="linenos">3554</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3555"><a href="#Parser-3555"><span class="linenos">3555</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3556"><a href="#Parser-3556"><span class="linenos">3556</span></a> <span class="n">is_rollback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span> -</span><span id="Parser-3557"><a href="#Parser-3557"><span class="linenos">3557</span></a> -</span><span id="Parser-3558"><a href="#Parser-3558"><span class="linenos">3558</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">({</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">})</span> -</span><span id="Parser-3559"><a href="#Parser-3559"><span class="linenos">3559</span></a> -</span><span id="Parser-3560"><a href="#Parser-3560"><span class="linenos">3560</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> -</span><span id="Parser-3561"><a href="#Parser-3561"><span class="linenos">3561</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SAVEPOINT"</span><span class="p">)</span> -</span><span id="Parser-3562"><a href="#Parser-3562"><span class="linenos">3562</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-3509"><a href="#Parser-3509"><span class="linenos">3509</span></a> <span class="k">def</span> <span class="nf">_parse_replace</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]:</span> +</span><span id="Parser-3510"><a href="#Parser-3510"><span class="linenos">3510</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">):</span> +</span><span id="Parser-3511"><a href="#Parser-3511"><span class="linenos">3511</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3512"><a href="#Parser-3512"><span class="linenos">3512</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3513"><a href="#Parser-3513"><span class="linenos">3513</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="Parser-3514"><a href="#Parser-3514"><span class="linenos">3514</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">)</span> +</span><span id="Parser-3515"><a href="#Parser-3515"><span class="linenos">3515</span></a> +</span><span id="Parser-3516"><a href="#Parser-3516"><span class="linenos">3516</span></a> <span class="k">def</span> <span class="nf">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-3517"><a href="#Parser-3517"><span class="linenos">3517</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> +</span><span id="Parser-3518"><a href="#Parser-3518"><span class="linenos">3518</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-3519"><a href="#Parser-3519"><span class="linenos">3519</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="Parser-3520"><a href="#Parser-3520"><span class="linenos">3520</span></a> <span class="n">items</span> <span class="o">=</span> <span class="p">[</span><span class="n">parse_result</span><span class="p">]</span> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="p">[]</span> +</span><span id="Parser-3521"><a href="#Parser-3521"><span class="linenos">3521</span></a> +</span><span id="Parser-3522"><a href="#Parser-3522"><span class="linenos">3522</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">sep</span><span class="p">):</span> +</span><span id="Parser-3523"><a href="#Parser-3523"><span class="linenos">3523</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="Parser-3524"><a href="#Parser-3524"><span class="linenos">3524</span></a> <span class="n">parse_result</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-3525"><a href="#Parser-3525"><span class="linenos">3525</span></a> +</span><span id="Parser-3526"><a href="#Parser-3526"><span class="linenos">3526</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="Parser-3527"><a href="#Parser-3527"><span class="linenos">3527</span></a> <span class="k">if</span> <span class="n">parse_result</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser-3528"><a href="#Parser-3528"><span class="linenos">3528</span></a> <span class="n">items</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">parse_result</span><span class="p">)</span> +</span><span id="Parser-3529"><a href="#Parser-3529"><span class="linenos">3529</span></a> +</span><span id="Parser-3530"><a href="#Parser-3530"><span class="linenos">3530</span></a> <span class="k">return</span> <span class="n">items</span> +</span><span id="Parser-3531"><a href="#Parser-3531"><span class="linenos">3531</span></a> +</span><span id="Parser-3532"><a href="#Parser-3532"><span class="linenos">3532</span></a> <span class="k">def</span> <span class="nf">_parse_tokens</span><span class="p">(</span> +</span><span id="Parser-3533"><a href="#Parser-3533"><span class="linenos">3533</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">expressions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> +</span><span id="Parser-3534"><a href="#Parser-3534"><span class="linenos">3534</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3535"><a href="#Parser-3535"><span class="linenos">3535</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="Parser-3536"><a href="#Parser-3536"><span class="linenos">3536</span></a> +</span><span id="Parser-3537"><a href="#Parser-3537"><span class="linenos">3537</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="n">expressions</span><span class="p">):</span> +</span><span id="Parser-3538"><a href="#Parser-3538"><span class="linenos">3538</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3539"><a href="#Parser-3539"><span class="linenos">3539</span></a> <span class="n">expressions</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span><span class="p">],</span> +</span><span id="Parser-3540"><a href="#Parser-3540"><span class="linenos">3540</span></a> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> +</span><span id="Parser-3541"><a href="#Parser-3541"><span class="linenos">3541</span></a> <span class="n">comments</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">,</span> +</span><span id="Parser-3542"><a href="#Parser-3542"><span class="linenos">3542</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">parse_method</span><span class="p">(),</span> +</span><span id="Parser-3543"><a href="#Parser-3543"><span class="linenos">3543</span></a> <span class="p">)</span> +</span><span id="Parser-3544"><a href="#Parser-3544"><span class="linenos">3544</span></a> +</span><span id="Parser-3545"><a href="#Parser-3545"><span class="linenos">3545</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3546"><a href="#Parser-3546"><span class="linenos">3546</span></a> +</span><span id="Parser-3547"><a href="#Parser-3547"><span class="linenos">3547</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_id_vars</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-3548"><a href="#Parser-3548"><span class="linenos">3548</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">)</span> +</span><span id="Parser-3549"><a href="#Parser-3549"><span class="linenos">3549</span></a> +</span><span id="Parser-3550"><a href="#Parser-3550"><span class="linenos">3550</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped_csv</span><span class="p">(</span> +</span><span id="Parser-3551"><a href="#Parser-3551"><span class="linenos">3551</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="n">TokenType</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span> +</span><span id="Parser-3552"><a href="#Parser-3552"><span class="linenos">3552</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser-3553"><a href="#Parser-3553"><span class="linenos">3553</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="n">parse_method</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">))</span> +</span><span id="Parser-3554"><a href="#Parser-3554"><span class="linenos">3554</span></a> +</span><span id="Parser-3555"><a href="#Parser-3555"><span class="linenos">3555</span></a> <span class="k">def</span> <span class="nf">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">parse_method</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">:</span> +</span><span id="Parser-3556"><a href="#Parser-3556"><span class="linenos">3556</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_l_paren</span><span class="p">()</span> +</span><span id="Parser-3557"><a href="#Parser-3557"><span class="linenos">3557</span></a> <span class="n">parse_result</span> <span class="o">=</span> <span class="n">parse_method</span><span class="p">()</span> +</span><span id="Parser-3558"><a href="#Parser-3558"><span class="linenos">3558</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_r_paren</span><span class="p">()</span> +</span><span id="Parser-3559"><a href="#Parser-3559"><span class="linenos">3559</span></a> <span class="k">return</span> <span class="n">parse_result</span> +</span><span id="Parser-3560"><a href="#Parser-3560"><span class="linenos">3560</span></a> +</span><span id="Parser-3561"><a href="#Parser-3561"><span class="linenos">3561</span></a> <span class="k">def</span> <span class="nf">_parse_select_or_expression</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3562"><a href="#Parser-3562"><span class="linenos">3562</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">()</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_expression</span><span class="p">()</span> </span><span id="Parser-3563"><a href="#Parser-3563"><span class="linenos">3563</span></a> -</span><span id="Parser-3564"><a href="#Parser-3564"><span class="linenos">3564</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">):</span> -</span><span id="Parser-3565"><a href="#Parser-3565"><span class="linenos">3565</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> -</span><span id="Parser-3566"><a href="#Parser-3566"><span class="linenos">3566</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHAIN"</span><span class="p">)</span> -</span><span id="Parser-3567"><a href="#Parser-3567"><span class="linenos">3567</span></a> -</span><span id="Parser-3568"><a href="#Parser-3568"><span class="linenos">3568</span></a> <span class="k">if</span> <span class="n">is_rollback</span><span class="p">:</span> -</span><span id="Parser-3569"><a href="#Parser-3569"><span class="linenos">3569</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">,</span> <span class="n">savepoint</span><span class="o">=</span><span class="n">savepoint</span><span class="p">)</span> -</span><span id="Parser-3570"><a href="#Parser-3570"><span class="linenos">3570</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Commit</span><span class="p">,</span> <span class="n">chain</span><span class="o">=</span><span class="n">chain</span><span class="p">)</span> -</span><span id="Parser-3571"><a href="#Parser-3571"><span class="linenos">3571</span></a> -</span><span id="Parser-3572"><a href="#Parser-3572"><span class="linenos">3572</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3573"><a href="#Parser-3573"><span class="linenos">3573</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> -</span><span id="Parser-3574"><a href="#Parser-3574"><span class="linenos">3574</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3564"><a href="#Parser-3564"><span class="linenos">3564</span></a> <span class="k">def</span> <span class="nf">_parse_ddl_select</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3565"><a href="#Parser-3565"><span class="linenos">3565</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_operations</span><span class="p">(</span> +</span><span id="Parser-3566"><a href="#Parser-3566"><span class="linenos">3566</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_select</span><span class="p">(</span><span class="n">nested</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">parse_subquery_alias</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span> +</span><span id="Parser-3567"><a href="#Parser-3567"><span class="linenos">3567</span></a> <span class="p">)</span> +</span><span id="Parser-3568"><a href="#Parser-3568"><span class="linenos">3568</span></a> +</span><span id="Parser-3569"><a href="#Parser-3569"><span class="linenos">3569</span></a> <span class="k">def</span> <span class="nf">_parse_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3570"><a href="#Parser-3570"><span class="linenos">3570</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3571"><a href="#Parser-3571"><span class="linenos">3571</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TRANSACTION_KIND</span><span class="p">):</span> +</span><span id="Parser-3572"><a href="#Parser-3572"><span class="linenos">3572</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span> +</span><span id="Parser-3573"><a href="#Parser-3573"><span class="linenos">3573</span></a> +</span><span id="Parser-3574"><a href="#Parser-3574"><span class="linenos">3574</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">({</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">})</span> </span><span id="Parser-3575"><a href="#Parser-3575"><span class="linenos">3575</span></a> -</span><span id="Parser-3576"><a href="#Parser-3576"><span class="linenos">3576</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> -</span><span id="Parser-3577"><a href="#Parser-3577"><span class="linenos">3577</span></a> <span class="n">exists_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3578"><a href="#Parser-3578"><span class="linenos">3578</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-3579"><a href="#Parser-3579"><span class="linenos">3579</span></a> -</span><span id="Parser-3580"><a href="#Parser-3580"><span class="linenos">3580</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> -</span><span id="Parser-3581"><a href="#Parser-3581"><span class="linenos">3581</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"exists"</span><span class="p">,</span> <span class="n">exists_column</span><span class="p">)</span> -</span><span id="Parser-3582"><a href="#Parser-3582"><span class="linenos">3582</span></a> -</span><span id="Parser-3583"><a href="#Parser-3583"><span class="linenos">3583</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="Parser-3584"><a href="#Parser-3584"><span class="linenos">3584</span></a> -</span><span id="Parser-3585"><a href="#Parser-3585"><span class="linenos">3585</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3586"><a href="#Parser-3586"><span class="linenos">3586</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(</span><span class="n">default_kind</span><span class="o">=</span><span class="s2">"COLUMN"</span><span class="p">)</span> -</span><span id="Parser-3587"><a href="#Parser-3587"><span class="linenos">3587</span></a> -</span><span id="Parser-3588"><a href="#Parser-3588"><span class="linenos">3588</span></a> <span class="c1"># https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html</span> -</span><span id="Parser-3589"><a href="#Parser-3589"><span class="linenos">3589</span></a> <span class="k">def</span> <span class="nf">_parse_drop_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</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 class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3590"><a href="#Parser-3590"><span class="linenos">3590</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3591"><a href="#Parser-3591"><span class="linenos">3591</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">),</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span> -</span><span id="Parser-3592"><a href="#Parser-3592"><span class="linenos">3592</span></a> <span class="p">)</span> +</span><span id="Parser-3576"><a href="#Parser-3576"><span class="linenos">3576</span></a> <span class="n">modes</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3577"><a href="#Parser-3577"><span class="linenos">3577</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-3578"><a href="#Parser-3578"><span class="linenos">3578</span></a> <span class="n">mode</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3579"><a href="#Parser-3579"><span class="linenos">3579</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">):</span> +</span><span id="Parser-3580"><a href="#Parser-3580"><span class="linenos">3580</span></a> <span class="n">mode</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">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-3581"><a href="#Parser-3581"><span class="linenos">3581</span></a> +</span><span id="Parser-3582"><a href="#Parser-3582"><span class="linenos">3582</span></a> <span class="k">if</span> <span class="n">mode</span><span class="p">:</span> +</span><span id="Parser-3583"><a href="#Parser-3583"><span class="linenos">3583</span></a> <span class="n">modes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">mode</span><span class="p">))</span> +</span><span id="Parser-3584"><a href="#Parser-3584"><span class="linenos">3584</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">):</span> +</span><span id="Parser-3585"><a href="#Parser-3585"><span class="linenos">3585</span></a> <span class="k">break</span> +</span><span id="Parser-3586"><a href="#Parser-3586"><span class="linenos">3586</span></a> +</span><span id="Parser-3587"><a href="#Parser-3587"><span class="linenos">3587</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Transaction</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">modes</span><span class="o">=</span><span class="n">modes</span><span class="p">)</span> +</span><span id="Parser-3588"><a href="#Parser-3588"><span class="linenos">3588</span></a> +</span><span id="Parser-3589"><a href="#Parser-3589"><span class="linenos">3589</span></a> <span class="k">def</span> <span class="nf">_parse_commit_or_rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3590"><a href="#Parser-3590"><span class="linenos">3590</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3591"><a href="#Parser-3591"><span class="linenos">3591</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3592"><a href="#Parser-3592"><span class="linenos">3592</span></a> <span class="n">is_rollback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span> </span><span id="Parser-3593"><a href="#Parser-3593"><span class="linenos">3593</span></a> -</span><span id="Parser-3594"><a href="#Parser-3594"><span class="linenos">3594</span></a> <span class="k">def</span> <span class="nf">_parse_add_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3595"><a href="#Parser-3595"><span class="linenos">3595</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3596"><a href="#Parser-3596"><span class="linenos">3596</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> -</span><span id="Parser-3597"><a href="#Parser-3597"><span class="linenos">3597</span></a> -</span><span id="Parser-3598"><a href="#Parser-3598"><span class="linenos">3598</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">:</span> -</span><span id="Parser-3599"><a href="#Parser-3599"><span class="linenos">3599</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> -</span><span id="Parser-3600"><a href="#Parser-3600"><span class="linenos">3600</span></a> -</span><span id="Parser-3601"><a href="#Parser-3601"><span class="linenos">3601</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECK"</span><span class="p">):</span> -</span><span id="Parser-3602"><a href="#Parser-3602"><span class="linenos">3602</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> -</span><span id="Parser-3603"><a href="#Parser-3603"><span class="linenos">3603</span></a> <span class="n">enforced</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENFORCED"</span><span class="p">)</span> -</span><span id="Parser-3604"><a href="#Parser-3604"><span class="linenos">3604</span></a> -</span><span id="Parser-3605"><a href="#Parser-3605"><span class="linenos">3605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3606"><a href="#Parser-3606"><span class="linenos">3606</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">enforced</span><span class="o">=</span><span class="n">enforced</span> -</span><span id="Parser-3607"><a href="#Parser-3607"><span class="linenos">3607</span></a> <span class="p">)</span> -</span><span id="Parser-3608"><a href="#Parser-3608"><span class="linenos">3608</span></a> -</span><span id="Parser-3609"><a href="#Parser-3609"><span class="linenos">3609</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">):</span> -</span><span id="Parser-3610"><a href="#Parser-3610"><span class="linenos">3610</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">()</span> -</span><span id="Parser-3611"><a href="#Parser-3611"><span class="linenos">3611</span></a> <span class="k">elif</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">):</span> -</span><span id="Parser-3612"><a href="#Parser-3612"><span class="linenos">3612</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">()</span> -</span><span id="Parser-3613"><a href="#Parser-3613"><span class="linenos">3613</span></a> -</span><span id="Parser-3614"><a href="#Parser-3614"><span class="linenos">3614</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-3594"><a href="#Parser-3594"><span class="linenos">3594</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_texts</span><span class="p">({</span><span class="s2">"TRANSACTION"</span><span class="p">,</span> <span class="s2">"WORK"</span><span class="p">})</span> +</span><span id="Parser-3595"><a href="#Parser-3595"><span class="linenos">3595</span></a> +</span><span id="Parser-3596"><a href="#Parser-3596"><span class="linenos">3596</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TO"</span><span class="p">):</span> +</span><span id="Parser-3597"><a href="#Parser-3597"><span class="linenos">3597</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SAVEPOINT"</span><span class="p">)</span> +</span><span id="Parser-3598"><a href="#Parser-3598"><span class="linenos">3598</span></a> <span class="n">savepoint</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> +</span><span id="Parser-3599"><a href="#Parser-3599"><span class="linenos">3599</span></a> +</span><span id="Parser-3600"><a href="#Parser-3600"><span class="linenos">3600</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">):</span> +</span><span id="Parser-3601"><a href="#Parser-3601"><span class="linenos">3601</span></a> <span class="n">chain</span> <span class="o">=</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"NO"</span><span class="p">)</span> +</span><span id="Parser-3602"><a href="#Parser-3602"><span class="linenos">3602</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHAIN"</span><span class="p">)</span> +</span><span id="Parser-3603"><a href="#Parser-3603"><span class="linenos">3603</span></a> +</span><span id="Parser-3604"><a href="#Parser-3604"><span class="linenos">3604</span></a> <span class="k">if</span> <span class="n">is_rollback</span><span class="p">:</span> +</span><span id="Parser-3605"><a href="#Parser-3605"><span class="linenos">3605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Rollback</span><span class="p">,</span> <span class="n">savepoint</span><span class="o">=</span><span class="n">savepoint</span><span class="p">)</span> +</span><span id="Parser-3606"><a href="#Parser-3606"><span class="linenos">3606</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Commit</span><span class="p">,</span> <span class="n">chain</span><span class="o">=</span><span class="n">chain</span><span class="p">)</span> +</span><span id="Parser-3607"><a href="#Parser-3607"><span class="linenos">3607</span></a> +</span><span id="Parser-3608"><a href="#Parser-3608"><span class="linenos">3608</span></a> <span class="k">def</span> <span class="nf">_parse_add_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3609"><a href="#Parser-3609"><span class="linenos">3609</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> +</span><span id="Parser-3610"><a href="#Parser-3610"><span class="linenos">3610</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3611"><a href="#Parser-3611"><span class="linenos">3611</span></a> +</span><span id="Parser-3612"><a href="#Parser-3612"><span class="linenos">3612</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> +</span><span id="Parser-3613"><a href="#Parser-3613"><span class="linenos">3613</span></a> <span class="n">exists_column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">(</span><span class="n">not_</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3614"><a href="#Parser-3614"><span class="linenos">3614</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_column_def</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> </span><span id="Parser-3615"><a href="#Parser-3615"><span class="linenos">3615</span></a> -</span><span id="Parser-3616"><a href="#Parser-3616"><span class="linenos">3616</span></a> <span class="k">def</span> <span class="nf">_parse_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3617"><a href="#Parser-3617"><span class="linenos">3617</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> -</span><span id="Parser-3618"><a href="#Parser-3618"><span class="linenos">3618</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> -</span><span id="Parser-3619"><a href="#Parser-3619"><span class="linenos">3619</span></a> -</span><span id="Parser-3620"><a href="#Parser-3620"><span class="linenos">3620</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> -</span><span id="Parser-3621"><a href="#Parser-3621"><span class="linenos">3621</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3622"><a href="#Parser-3622"><span class="linenos">3622</span></a> -</span><span id="Parser-3623"><a href="#Parser-3623"><span class="linenos">3623</span></a> <span class="n">actions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser-3624"><a href="#Parser-3624"><span class="linenos">3624</span></a> -</span><span id="Parser-3625"><a href="#Parser-3625"><span class="linenos">3625</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-3626"><a href="#Parser-3626"><span class="linenos">3626</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> -</span><span id="Parser-3627"><a href="#Parser-3627"><span class="linenos">3627</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">())]</span> -</span><span id="Parser-3628"><a href="#Parser-3628"><span class="linenos">3628</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> -</span><span id="Parser-3629"><a href="#Parser-3629"><span class="linenos">3629</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ADD_CONSTRAINT_TOKENS</span><span class="p">):</span> -</span><span id="Parser-3630"><a href="#Parser-3630"><span class="linenos">3630</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_constraint</span><span class="p">)</span> -</span><span id="Parser-3631"><a href="#Parser-3631"><span class="linenos">3631</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3632"><a href="#Parser-3632"><span class="linenos">3632</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-3633"><a href="#Parser-3633"><span class="linenos">3633</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_column</span><span class="p">)</span> -</span><span id="Parser-3634"><a href="#Parser-3634"><span class="linenos">3634</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">):</span> -</span><span id="Parser-3635"><a href="#Parser-3635"><span class="linenos">3635</span></a> <span class="n">partition_exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="Parser-3616"><a href="#Parser-3616"><span class="linenos">3616</span></a> <span class="k">if</span> <span class="n">expression</span><span class="p">:</span> +</span><span id="Parser-3617"><a href="#Parser-3617"><span class="linenos">3617</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"exists"</span><span class="p">,</span> <span class="n">exists_column</span><span class="p">)</span> +</span><span id="Parser-3618"><a href="#Parser-3618"><span class="linenos">3618</span></a> +</span><span id="Parser-3619"><a href="#Parser-3619"><span class="linenos">3619</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="Parser-3620"><a href="#Parser-3620"><span class="linenos">3620</span></a> +</span><span id="Parser-3621"><a href="#Parser-3621"><span class="linenos">3621</span></a> <span class="k">def</span> <span class="nf">_parse_drop_column</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3622"><a href="#Parser-3622"><span class="linenos">3622</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop</span><span class="p">(</span><span class="n">default_kind</span><span class="o">=</span><span class="s2">"COLUMN"</span><span class="p">)</span> +</span><span id="Parser-3623"><a href="#Parser-3623"><span class="linenos">3623</span></a> +</span><span id="Parser-3624"><a href="#Parser-3624"><span class="linenos">3624</span></a> <span class="c1"># https://docs.aws.amazon.com/athena/latest/ug/alter-table-drop-partition.html</span> +</span><span id="Parser-3625"><a href="#Parser-3625"><span class="linenos">3625</span></a> <span class="k">def</span> <span class="nf">_parse_drop_partition</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exists</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 class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3626"><a href="#Parser-3626"><span class="linenos">3626</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3627"><a href="#Parser-3627"><span class="linenos">3627</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DropPartition</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_partition</span><span class="p">),</span> <span class="n">exists</span><span class="o">=</span><span class="n">exists</span> +</span><span id="Parser-3628"><a href="#Parser-3628"><span class="linenos">3628</span></a> <span class="p">)</span> +</span><span id="Parser-3629"><a href="#Parser-3629"><span class="linenos">3629</span></a> +</span><span id="Parser-3630"><a href="#Parser-3630"><span class="linenos">3630</span></a> <span class="k">def</span> <span class="nf">_parse_add_constraint</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3631"><a href="#Parser-3631"><span class="linenos">3631</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3632"><a href="#Parser-3632"><span class="linenos">3632</span></a> <span class="n">kind</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">token_type</span> +</span><span id="Parser-3633"><a href="#Parser-3633"><span class="linenos">3633</span></a> +</span><span id="Parser-3634"><a href="#Parser-3634"><span class="linenos">3634</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">:</span> +</span><span id="Parser-3635"><a href="#Parser-3635"><span class="linenos">3635</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_id_var</span><span class="p">()</span> </span><span id="Parser-3636"><a href="#Parser-3636"><span class="linenos">3636</span></a> -</span><span id="Parser-3637"><a href="#Parser-3637"><span class="linenos">3637</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> -</span><span id="Parser-3638"><a href="#Parser-3638"><span class="linenos">3638</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> -</span><span id="Parser-3639"><a href="#Parser-3639"><span class="linenos">3639</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_partition</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="n">partition_exists</span><span class="p">)</span> -</span><span id="Parser-3640"><a href="#Parser-3640"><span class="linenos">3640</span></a> <span class="p">)</span> -</span><span id="Parser-3641"><a href="#Parser-3641"><span class="linenos">3641</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3642"><a href="#Parser-3642"><span class="linenos">3642</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-3643"><a href="#Parser-3643"><span class="linenos">3643</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_column</span><span class="p">)</span> -</span><span id="Parser-3644"><a href="#Parser-3644"><span class="linenos">3644</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RENAME"</span><span class="p">,</span> <span class="s2">"TO"</span><span class="p">):</span> -</span><span id="Parser-3645"><a href="#Parser-3645"><span class="linenos">3645</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameTable</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> -</span><span id="Parser-3646"><a href="#Parser-3646"><span class="linenos">3646</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALTER"</span><span class="p">):</span> -</span><span id="Parser-3647"><a href="#Parser-3647"><span class="linenos">3647</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> -</span><span id="Parser-3648"><a href="#Parser-3648"><span class="linenos">3648</span></a> <span class="n">column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3637"><a href="#Parser-3637"><span class="linenos">3637</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"CHECK"</span><span class="p">):</span> +</span><span id="Parser-3638"><a href="#Parser-3638"><span class="linenos">3638</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_wrapped</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">)</span> +</span><span id="Parser-3639"><a href="#Parser-3639"><span class="linenos">3639</span></a> <span class="n">enforced</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ENFORCED"</span><span class="p">)</span> +</span><span id="Parser-3640"><a href="#Parser-3640"><span class="linenos">3640</span></a> +</span><span id="Parser-3641"><a href="#Parser-3641"><span class="linenos">3641</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3642"><a href="#Parser-3642"><span class="linenos">3642</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">,</span> <span class="n">enforced</span><span class="o">=</span><span class="n">enforced</span> +</span><span id="Parser-3643"><a href="#Parser-3643"><span class="linenos">3643</span></a> <span class="p">)</span> +</span><span id="Parser-3644"><a href="#Parser-3644"><span class="linenos">3644</span></a> +</span><span id="Parser-3645"><a href="#Parser-3645"><span class="linenos">3645</span></a> <span class="k">if</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">):</span> +</span><span id="Parser-3646"><a href="#Parser-3646"><span class="linenos">3646</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_foreign_key</span><span class="p">()</span> +</span><span id="Parser-3647"><a href="#Parser-3647"><span class="linenos">3647</span></a> <span class="k">elif</span> <span class="n">kind</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">):</span> +</span><span id="Parser-3648"><a href="#Parser-3648"><span class="linenos">3648</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_primary_key</span><span class="p">()</span> </span><span id="Parser-3649"><a href="#Parser-3649"><span class="linenos">3649</span></a> -</span><span id="Parser-3650"><a href="#Parser-3650"><span class="linenos">3650</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="Parser-3651"><a href="#Parser-3651"><span class="linenos">3651</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> -</span><span id="Parser-3652"><a href="#Parser-3652"><span class="linenos">3652</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> -</span><span id="Parser-3653"><a href="#Parser-3653"><span class="linenos">3653</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3654"><a href="#Parser-3654"><span class="linenos">3654</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-3655"><a href="#Parser-3655"><span class="linenos">3655</span></a> <span class="p">)</span> -</span><span id="Parser-3656"><a href="#Parser-3656"><span class="linenos">3656</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3657"><a href="#Parser-3657"><span class="linenos">3657</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">)</span> -</span><span id="Parser-3658"><a href="#Parser-3658"><span class="linenos">3658</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3659"><a href="#Parser-3659"><span class="linenos">3659</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> -</span><span id="Parser-3660"><a href="#Parser-3660"><span class="linenos">3660</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> -</span><span id="Parser-3661"><a href="#Parser-3661"><span class="linenos">3661</span></a> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TYPE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> -</span><span id="Parser-3662"><a href="#Parser-3662"><span class="linenos">3662</span></a> <span class="n">collate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> -</span><span id="Parser-3663"><a href="#Parser-3663"><span class="linenos">3663</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> -</span><span id="Parser-3664"><a href="#Parser-3664"><span class="linenos">3664</span></a> <span class="p">)</span> -</span><span id="Parser-3665"><a href="#Parser-3665"><span class="linenos">3665</span></a> -</span><span id="Parser-3666"><a href="#Parser-3666"><span class="linenos">3666</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">actions</span><span class="p">)</span> -</span><span id="Parser-3667"><a href="#Parser-3667"><span class="linenos">3667</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</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">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> <span class="n">actions</span><span class="o">=</span><span class="n">actions</span><span class="p">)</span> -</span><span id="Parser-3668"><a href="#Parser-3668"><span class="linenos">3668</span></a> -</span><span id="Parser-3669"><a href="#Parser-3669"><span class="linenos">3669</span></a> <span class="k">def</span> <span class="nf">_parse_show</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3670"><a href="#Parser-3670"><span class="linenos">3670</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SHOW_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_show_trie</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-3671"><a href="#Parser-3671"><span class="linenos">3671</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="Parser-3672"><a href="#Parser-3672"><span class="linenos">3672</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> -</span><span id="Parser-3673"><a href="#Parser-3673"><span class="linenos">3673</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3674"><a href="#Parser-3674"><span class="linenos">3674</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Show</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> -</span><span id="Parser-3675"><a href="#Parser-3675"><span class="linenos">3675</span></a> -</span><span id="Parser-3676"><a href="#Parser-3676"><span class="linenos">3676</span></a> <span class="k">def</span> <span class="nf">_default_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3677"><a href="#Parser-3677"><span class="linenos">3677</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3678"><a href="#Parser-3678"><span class="linenos">3678</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> -</span><span id="Parser-3679"><a href="#Parser-3679"><span class="linenos">3679</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">(),</span> -</span><span id="Parser-3680"><a href="#Parser-3680"><span class="linenos">3680</span></a> <span class="p">)</span> -</span><span id="Parser-3681"><a href="#Parser-3681"><span class="linenos">3681</span></a> -</span><span id="Parser-3682"><a href="#Parser-3682"><span class="linenos">3682</span></a> <span class="k">def</span> <span class="nf">_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> -</span><span id="Parser-3683"><a href="#Parser-3683"><span class="linenos">3683</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_trie</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Parser-3684"><a href="#Parser-3684"><span class="linenos">3684</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">if</span> <span class="n">parser</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_default_parse_set_item</span><span class="p">()</span> +</span><span id="Parser-3650"><a href="#Parser-3650"><span class="linenos">3650</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AddConstraint</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">expression</span><span class="p">)</span> +</span><span id="Parser-3651"><a href="#Parser-3651"><span class="linenos">3651</span></a> +</span><span id="Parser-3652"><a href="#Parser-3652"><span class="linenos">3652</span></a> <span class="k">def</span> <span class="nf">_parse_alter</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3653"><a href="#Parser-3653"><span class="linenos">3653</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">):</span> +</span><span id="Parser-3654"><a href="#Parser-3654"><span class="linenos">3654</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">)</span> +</span><span id="Parser-3655"><a href="#Parser-3655"><span class="linenos">3655</span></a> +</span><span id="Parser-3656"><a href="#Parser-3656"><span class="linenos">3656</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="Parser-3657"><a href="#Parser-3657"><span class="linenos">3657</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3658"><a href="#Parser-3658"><span class="linenos">3658</span></a> +</span><span id="Parser-3659"><a href="#Parser-3659"><span class="linenos">3659</span></a> <span class="n">actions</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser-3660"><a href="#Parser-3660"><span class="linenos">3660</span></a> +</span><span id="Parser-3661"><a href="#Parser-3661"><span class="linenos">3661</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-3662"><a href="#Parser-3662"><span class="linenos">3662</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> +</span><span id="Parser-3663"><a href="#Parser-3663"><span class="linenos">3663</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Delete</span><span class="p">,</span> <span class="n">where</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_where</span><span class="p">())]</span> +</span><span id="Parser-3664"><a href="#Parser-3664"><span class="linenos">3664</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ADD"</span><span class="p">):</span> +</span><span id="Parser-3665"><a href="#Parser-3665"><span class="linenos">3665</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ADD_CONSTRAINT_TOKENS</span><span class="p">):</span> +</span><span id="Parser-3666"><a href="#Parser-3666"><span class="linenos">3666</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_constraint</span><span class="p">)</span> +</span><span id="Parser-3667"><a href="#Parser-3667"><span class="linenos">3667</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3668"><a href="#Parser-3668"><span class="linenos">3668</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3669"><a href="#Parser-3669"><span class="linenos">3669</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_add_column</span><span class="p">)</span> +</span><span id="Parser-3670"><a href="#Parser-3670"><span class="linenos">3670</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"DROP"</span><span class="p">):</span> +</span><span id="Parser-3671"><a href="#Parser-3671"><span class="linenos">3671</span></a> <span class="n">partition_exists</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_exists</span><span class="p">()</span> +</span><span id="Parser-3672"><a href="#Parser-3672"><span class="linenos">3672</span></a> +</span><span id="Parser-3673"><a href="#Parser-3673"><span class="linenos">3673</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> +</span><span id="Parser-3674"><a href="#Parser-3674"><span class="linenos">3674</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span> +</span><span id="Parser-3675"><a href="#Parser-3675"><span class="linenos">3675</span></a> <span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_partition</span><span class="p">(</span><span class="n">exists</span><span class="o">=</span><span class="n">partition_exists</span><span class="p">)</span> +</span><span id="Parser-3676"><a href="#Parser-3676"><span class="linenos">3676</span></a> <span class="p">)</span> +</span><span id="Parser-3677"><a href="#Parser-3677"><span class="linenos">3677</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3678"><a href="#Parser-3678"><span class="linenos">3678</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3679"><a href="#Parser-3679"><span class="linenos">3679</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_drop_column</span><span class="p">)</span> +</span><span id="Parser-3680"><a href="#Parser-3680"><span class="linenos">3680</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"RENAME"</span><span class="p">,</span> <span class="s2">"TO"</span><span class="p">):</span> +</span><span id="Parser-3681"><a href="#Parser-3681"><span class="linenos">3681</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">RenameTable</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">(</span><span class="n">schema</span><span class="o">=</span><span class="kc">True</span><span class="p">))</span> +</span><span id="Parser-3682"><a href="#Parser-3682"><span class="linenos">3682</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"ALTER"</span><span class="p">):</span> +</span><span id="Parser-3683"><a href="#Parser-3683"><span class="linenos">3683</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">)</span> +</span><span id="Parser-3684"><a href="#Parser-3684"><span class="linenos">3684</span></a> <span class="n">column</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_field</span><span class="p">(</span><span class="n">any_token</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="Parser-3685"><a href="#Parser-3685"><span class="linenos">3685</span></a> -</span><span id="Parser-3686"><a href="#Parser-3686"><span class="linenos">3686</span></a> <span class="k">def</span> <span class="nf">_parse_merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3687"><a href="#Parser-3687"><span class="linenos">3687</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> -</span><span id="Parser-3688"><a href="#Parser-3688"><span class="linenos">3688</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="Parser-3689"><a href="#Parser-3689"><span class="linenos">3689</span></a> -</span><span id="Parser-3690"><a href="#Parser-3690"><span class="linenos">3690</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> -</span><span id="Parser-3691"><a href="#Parser-3691"><span class="linenos">3691</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> -</span><span id="Parser-3692"><a href="#Parser-3692"><span class="linenos">3692</span></a> -</span><span id="Parser-3693"><a href="#Parser-3693"><span class="linenos">3693</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> -</span><span id="Parser-3694"><a href="#Parser-3694"><span class="linenos">3694</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-3695"><a href="#Parser-3695"><span class="linenos">3695</span></a> -</span><span id="Parser-3696"><a href="#Parser-3696"><span class="linenos">3696</span></a> <span class="n">whens</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-3697"><a href="#Parser-3697"><span class="linenos">3697</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> -</span><span id="Parser-3698"><a href="#Parser-3698"><span class="linenos">3698</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> -</span><span id="Parser-3699"><a href="#Parser-3699"><span class="linenos">3699</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> -</span><span id="Parser-3700"><a href="#Parser-3700"><span class="linenos">3700</span></a> -</span><span id="Parser-3701"><a href="#Parser-3701"><span class="linenos">3701</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">):</span> -</span><span id="Parser-3702"><a href="#Parser-3702"><span class="linenos">3702</span></a> <span class="n">_this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="Parser-3703"><a href="#Parser-3703"><span class="linenos">3703</span></a> <span class="k">if</span> <span class="n">_this</span><span class="p">:</span> -</span><span id="Parser-3704"><a href="#Parser-3704"><span class="linenos">3704</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">_this</span><span class="p">)</span> -</span><span id="Parser-3705"><a href="#Parser-3705"><span class="linenos">3705</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3706"><a href="#Parser-3706"><span class="linenos">3706</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3707"><a href="#Parser-3707"><span class="linenos">3707</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> -</span><span id="Parser-3708"><a href="#Parser-3708"><span class="linenos">3708</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> -</span><span id="Parser-3709"><a href="#Parser-3709"><span class="linenos">3709</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> -</span><span id="Parser-3710"><a href="#Parser-3710"><span class="linenos">3710</span></a> <span class="p">)</span> -</span><span id="Parser-3711"><a href="#Parser-3711"><span class="linenos">3711</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">):</span> -</span><span id="Parser-3712"><a href="#Parser-3712"><span class="linenos">3712</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> -</span><span id="Parser-3713"><a href="#Parser-3713"><span class="linenos">3713</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> -</span><span id="Parser-3714"><a href="#Parser-3714"><span class="linenos">3714</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> -</span><span id="Parser-3715"><a href="#Parser-3715"><span class="linenos">3715</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3716"><a href="#Parser-3716"><span class="linenos">3716</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3717"><a href="#Parser-3717"><span class="linenos">3717</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> -</span><span id="Parser-3718"><a href="#Parser-3718"><span class="linenos">3718</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> -</span><span id="Parser-3719"><a href="#Parser-3719"><span class="linenos">3719</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> -</span><span id="Parser-3720"><a href="#Parser-3720"><span class="linenos">3720</span></a> <span class="p">)</span> -</span><span id="Parser-3721"><a href="#Parser-3721"><span class="linenos">3721</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> -</span><span id="Parser-3722"><a href="#Parser-3722"><span class="linenos">3722</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser-3723"><a href="#Parser-3723"><span class="linenos">3723</span></a> -</span><span id="Parser-3724"><a href="#Parser-3724"><span class="linenos">3724</span></a> <span class="n">whens</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">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">When</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">then</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> +</span><span id="Parser-3686"><a href="#Parser-3686"><span class="linenos">3686</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="Parser-3687"><a href="#Parser-3687"><span class="linenos">3687</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">drop</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> +</span><span id="Parser-3688"><a href="#Parser-3688"><span class="linenos">3688</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match_pair</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">):</span> +</span><span id="Parser-3689"><a href="#Parser-3689"><span class="linenos">3689</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3690"><a href="#Parser-3690"><span class="linenos">3690</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3691"><a href="#Parser-3691"><span class="linenos">3691</span></a> <span class="p">)</span> +</span><span id="Parser-3692"><a href="#Parser-3692"><span class="linenos">3692</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3693"><a href="#Parser-3693"><span class="linenos">3693</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"SET"</span><span class="p">,</span> <span class="s2">"DATA"</span><span class="p">)</span> +</span><span id="Parser-3694"><a href="#Parser-3694"><span class="linenos">3694</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3695"><a href="#Parser-3695"><span class="linenos">3695</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AlterColumn</span><span class="p">,</span> +</span><span id="Parser-3696"><a href="#Parser-3696"><span class="linenos">3696</span></a> <span class="n">this</span><span class="o">=</span><span class="n">column</span><span class="p">,</span> +</span><span id="Parser-3697"><a href="#Parser-3697"><span class="linenos">3697</span></a> <span class="n">dtype</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match_text_seq</span><span class="p">(</span><span class="s2">"TYPE"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_types</span><span class="p">(),</span> +</span><span id="Parser-3698"><a href="#Parser-3698"><span class="linenos">3698</span></a> <span class="n">collate</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_term</span><span class="p">(),</span> +</span><span id="Parser-3699"><a href="#Parser-3699"><span class="linenos">3699</span></a> <span class="n">using</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">(),</span> +</span><span id="Parser-3700"><a href="#Parser-3700"><span class="linenos">3700</span></a> <span class="p">)</span> +</span><span id="Parser-3701"><a href="#Parser-3701"><span class="linenos">3701</span></a> +</span><span id="Parser-3702"><a href="#Parser-3702"><span class="linenos">3702</span></a> <span class="n">actions</span> <span class="o">=</span> <span class="n">ensure_list</span><span class="p">(</span><span class="n">actions</span><span class="p">)</span> +</span><span id="Parser-3703"><a href="#Parser-3703"><span class="linenos">3703</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">AlterTable</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">exists</span><span class="o">=</span><span class="n">exists</span><span class="p">,</span> <span class="n">actions</span><span class="o">=</span><span class="n">actions</span><span class="p">)</span> +</span><span id="Parser-3704"><a href="#Parser-3704"><span class="linenos">3704</span></a> +</span><span id="Parser-3705"><a href="#Parser-3705"><span class="linenos">3705</span></a> <span class="k">def</span> <span class="nf">_parse_show</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3706"><a href="#Parser-3706"><span class="linenos">3706</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SHOW_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_show_trie</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-3707"><a href="#Parser-3707"><span class="linenos">3707</span></a> <span class="k">if</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="Parser-3708"><a href="#Parser-3708"><span class="linenos">3708</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> +</span><span id="Parser-3709"><a href="#Parser-3709"><span class="linenos">3709</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3710"><a href="#Parser-3710"><span class="linenos">3710</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Show</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> +</span><span id="Parser-3711"><a href="#Parser-3711"><span class="linenos">3711</span></a> +</span><span id="Parser-3712"><a href="#Parser-3712"><span class="linenos">3712</span></a> <span class="k">def</span> <span class="nf">_default_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3713"><a href="#Parser-3713"><span class="linenos">3713</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3714"><a href="#Parser-3714"><span class="linenos">3714</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SetItem</span><span class="p">,</span> +</span><span id="Parser-3715"><a href="#Parser-3715"><span class="linenos">3715</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">(),</span> +</span><span id="Parser-3716"><a href="#Parser-3716"><span class="linenos">3716</span></a> <span class="p">)</span> +</span><span id="Parser-3717"><a href="#Parser-3717"><span class="linenos">3717</span></a> +</span><span id="Parser-3718"><a href="#Parser-3718"><span class="linenos">3718</span></a> <span class="k">def</span> <span class="nf">_parse_set_item</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span> +</span><span id="Parser-3719"><a href="#Parser-3719"><span class="linenos">3719</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_parser</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SET_PARSERS</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_set_trie</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Parser-3720"><a href="#Parser-3720"><span class="linenos">3720</span></a> <span class="k">return</span> <span class="n">parser</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="k">if</span> <span class="n">parser</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">_default_parse_set_item</span><span class="p">()</span> +</span><span id="Parser-3721"><a href="#Parser-3721"><span class="linenos">3721</span></a> +</span><span id="Parser-3722"><a href="#Parser-3722"><span class="linenos">3722</span></a> <span class="k">def</span> <span class="nf">_parse_merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3723"><a href="#Parser-3723"><span class="linenos">3723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">)</span> +</span><span id="Parser-3724"><a href="#Parser-3724"><span class="linenos">3724</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> </span><span id="Parser-3725"><a href="#Parser-3725"><span class="linenos">3725</span></a> -</span><span id="Parser-3726"><a href="#Parser-3726"><span class="linenos">3726</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> -</span><span id="Parser-3727"><a href="#Parser-3727"><span class="linenos">3727</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">,</span> -</span><span id="Parser-3728"><a href="#Parser-3728"><span class="linenos">3728</span></a> <span class="n">this</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> -</span><span id="Parser-3729"><a href="#Parser-3729"><span class="linenos">3729</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> -</span><span id="Parser-3730"><a href="#Parser-3730"><span class="linenos">3730</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> -</span><span id="Parser-3731"><a href="#Parser-3731"><span class="linenos">3731</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">whens</span><span class="p">,</span> -</span><span id="Parser-3732"><a href="#Parser-3732"><span class="linenos">3732</span></a> <span class="p">)</span> -</span><span id="Parser-3733"><a href="#Parser-3733"><span class="linenos">3733</span></a> -</span><span id="Parser-3734"><a href="#Parser-3734"><span class="linenos">3734</span></a> <span class="k">def</span> <span class="nf">_parse_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser-3735"><a href="#Parser-3735"><span class="linenos">3735</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Set</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">))</span> +</span><span id="Parser-3726"><a href="#Parser-3726"><span class="linenos">3726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">)</span> +</span><span id="Parser-3727"><a href="#Parser-3727"><span class="linenos">3727</span></a> <span class="n">using</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_table</span><span class="p">()</span> +</span><span id="Parser-3728"><a href="#Parser-3728"><span class="linenos">3728</span></a> +</span><span id="Parser-3729"><a href="#Parser-3729"><span class="linenos">3729</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">)</span> +</span><span id="Parser-3730"><a href="#Parser-3730"><span class="linenos">3730</span></a> <span class="n">on</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3731"><a href="#Parser-3731"><span class="linenos">3731</span></a> +</span><span id="Parser-3732"><a href="#Parser-3732"><span class="linenos">3732</span></a> <span class="n">whens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3733"><a href="#Parser-3733"><span class="linenos">3733</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">):</span> +</span><span id="Parser-3734"><a href="#Parser-3734"><span class="linenos">3734</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_conjunction</span><span class="p">()</span> +</span><span id="Parser-3735"><a href="#Parser-3735"><span class="linenos">3735</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">)</span> </span><span id="Parser-3736"><a href="#Parser-3736"><span class="linenos">3736</span></a> -</span><span id="Parser-3737"><a href="#Parser-3737"><span class="linenos">3737</span></a> <span class="k">def</span> <span class="nf">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> -</span><span id="Parser-3738"><a href="#Parser-3738"><span class="linenos">3738</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-3739"><a href="#Parser-3739"><span class="linenos">3739</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3740"><a href="#Parser-3740"><span class="linenos">3740</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">))</span> -</span><span id="Parser-3741"><a href="#Parser-3741"><span class="linenos">3741</span></a> -</span><span id="Parser-3742"><a href="#Parser-3742"><span class="linenos">3742</span></a> <span class="k">def</span> <span class="nf">_find_parser</span><span class="p">(</span> -</span><span id="Parser-3743"><a href="#Parser-3743"><span class="linenos">3743</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parsers</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">],</span> <span class="n">trie</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> -</span><span id="Parser-3744"><a href="#Parser-3744"><span class="linenos">3744</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]:</span> -</span><span id="Parser-3745"><a href="#Parser-3745"><span class="linenos">3745</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-3746"><a href="#Parser-3746"><span class="linenos">3746</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser-3747"><a href="#Parser-3747"><span class="linenos">3747</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Parser-3748"><a href="#Parser-3748"><span class="linenos">3748</span></a> <span class="c1"># The current token might be multiple words</span> -</span><span id="Parser-3749"><a href="#Parser-3749"><span class="linenos">3749</span></a> <span class="n">curr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="Parser-3750"><a href="#Parser-3750"><span class="linenos">3750</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">curr</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> -</span><span id="Parser-3751"><a href="#Parser-3751"><span class="linenos">3751</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr</span><span class="p">)</span> -</span><span id="Parser-3752"><a href="#Parser-3752"><span class="linenos">3752</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3753"><a href="#Parser-3753"><span class="linenos">3753</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> -</span><span id="Parser-3754"><a href="#Parser-3754"><span class="linenos">3754</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="Parser-3755"><a href="#Parser-3755"><span class="linenos">3755</span></a> <span class="k">break</span> -</span><span id="Parser-3756"><a href="#Parser-3756"><span class="linenos">3756</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="Parser-3757"><a href="#Parser-3757"><span class="linenos">3757</span></a> <span class="n">subparser</span> <span class="o">=</span> <span class="n">parsers</span><span class="p">[</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">this</span><span class="p">)]</span> -</span><span id="Parser-3758"><a href="#Parser-3758"><span class="linenos">3758</span></a> <span class="k">return</span> <span class="n">subparser</span> -</span><span id="Parser-3759"><a href="#Parser-3759"><span class="linenos">3759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-3760"><a href="#Parser-3760"><span class="linenos">3760</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3737"><a href="#Parser-3737"><span class="linenos">3737</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">):</span> +</span><span id="Parser-3738"><a href="#Parser-3738"><span class="linenos">3738</span></a> <span class="n">_this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="Parser-3739"><a href="#Parser-3739"><span class="linenos">3739</span></a> <span class="k">if</span> <span class="n">_this</span><span class="p">:</span> +</span><span id="Parser-3740"><a href="#Parser-3740"><span class="linenos">3740</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">_this</span><span class="p">)</span> +</span><span id="Parser-3741"><a href="#Parser-3741"><span class="linenos">3741</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3742"><a href="#Parser-3742"><span class="linenos">3742</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3743"><a href="#Parser-3743"><span class="linenos">3743</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Insert</span><span class="p">,</span> +</span><span id="Parser-3744"><a href="#Parser-3744"><span class="linenos">3744</span></a> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> +</span><span id="Parser-3745"><a href="#Parser-3745"><span class="linenos">3745</span></a> <span class="n">expression</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_value</span><span class="p">(),</span> +</span><span id="Parser-3746"><a href="#Parser-3746"><span class="linenos">3746</span></a> <span class="p">)</span> +</span><span id="Parser-3747"><a href="#Parser-3747"><span class="linenos">3747</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">):</span> +</span><span id="Parser-3748"><a href="#Parser-3748"><span class="linenos">3748</span></a> <span class="n">expressions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_star</span><span class="p">()</span> +</span><span id="Parser-3749"><a href="#Parser-3749"><span class="linenos">3749</span></a> <span class="k">if</span> <span class="n">expressions</span><span class="p">:</span> +</span><span id="Parser-3750"><a href="#Parser-3750"><span class="linenos">3750</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="n">expressions</span><span class="p">)</span> +</span><span id="Parser-3751"><a href="#Parser-3751"><span class="linenos">3751</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3752"><a href="#Parser-3752"><span class="linenos">3752</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3753"><a href="#Parser-3753"><span class="linenos">3753</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Update</span><span class="p">,</span> +</span><span id="Parser-3754"><a href="#Parser-3754"><span class="linenos">3754</span></a> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">)</span> +</span><span id="Parser-3755"><a href="#Parser-3755"><span class="linenos">3755</span></a> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_equality</span><span class="p">),</span> +</span><span id="Parser-3756"><a href="#Parser-3756"><span class="linenos">3756</span></a> <span class="p">)</span> +</span><span id="Parser-3757"><a href="#Parser-3757"><span class="linenos">3757</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">):</span> +</span><span id="Parser-3758"><a href="#Parser-3758"><span class="linenos">3758</span></a> <span class="n">then</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser-3759"><a href="#Parser-3759"><span class="linenos">3759</span></a> +</span><span id="Parser-3760"><a href="#Parser-3760"><span class="linenos">3760</span></a> <span class="n">whens</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">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">When</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">then</span><span class="o">=</span><span class="n">then</span><span class="p">))</span> </span><span id="Parser-3761"><a href="#Parser-3761"><span class="linenos">3761</span></a> -</span><span id="Parser-3762"><a href="#Parser-3762"><span class="linenos">3762</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Parser-3763"><a href="#Parser-3763"><span class="linenos">3763</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-3764"><a href="#Parser-3764"><span class="linenos">3764</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3765"><a href="#Parser-3765"><span class="linenos">3765</span></a> -</span><span id="Parser-3766"><a href="#Parser-3766"><span class="linenos">3766</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span> -</span><span id="Parser-3767"><a href="#Parser-3767"><span class="linenos">3767</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="Parser-3768"><a href="#Parser-3768"><span class="linenos">3768</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3769"><a href="#Parser-3769"><span class="linenos">3769</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Parser-3770"><a href="#Parser-3770"><span class="linenos">3770</span></a> -</span><span id="Parser-3771"><a href="#Parser-3771"><span class="linenos">3771</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3762"><a href="#Parser-3762"><span class="linenos">3762</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span> +</span><span id="Parser-3763"><a href="#Parser-3763"><span class="linenos">3763</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">,</span> +</span><span id="Parser-3764"><a href="#Parser-3764"><span class="linenos">3764</span></a> <span class="n">this</span><span class="o">=</span><span class="n">target</span><span class="p">,</span> +</span><span id="Parser-3765"><a href="#Parser-3765"><span class="linenos">3765</span></a> <span class="n">using</span><span class="o">=</span><span class="n">using</span><span class="p">,</span> +</span><span id="Parser-3766"><a href="#Parser-3766"><span class="linenos">3766</span></a> <span class="n">on</span><span class="o">=</span><span class="n">on</span><span class="p">,</span> +</span><span id="Parser-3767"><a href="#Parser-3767"><span class="linenos">3767</span></a> <span class="n">expressions</span><span class="o">=</span><span class="n">whens</span><span class="p">,</span> +</span><span id="Parser-3768"><a href="#Parser-3768"><span class="linenos">3768</span></a> <span class="p">)</span> +</span><span id="Parser-3769"><a href="#Parser-3769"><span class="linenos">3769</span></a> +</span><span id="Parser-3770"><a href="#Parser-3770"><span class="linenos">3770</span></a> <span class="k">def</span> <span class="nf">_parse_set</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser-3771"><a href="#Parser-3771"><span class="linenos">3771</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Set</span><span class="p">,</span> <span class="n">expressions</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_csv</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_set_item</span><span class="p">))</span> </span><span id="Parser-3772"><a href="#Parser-3772"><span class="linenos">3772</span></a> -</span><span id="Parser-3773"><a href="#Parser-3773"><span class="linenos">3773</span></a> <span class="k">def</span> <span class="nf">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">types</span><span class="p">):</span> -</span><span id="Parser-3774"><a href="#Parser-3774"><span class="linenos">3774</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> -</span><span id="Parser-3775"><a href="#Parser-3775"><span class="linenos">3775</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3776"><a href="#Parser-3776"><span class="linenos">3776</span></a> -</span><span id="Parser-3777"><a href="#Parser-3777"><span class="linenos">3777</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="n">types</span><span class="p">:</span> -</span><span id="Parser-3778"><a href="#Parser-3778"><span class="linenos">3778</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3779"><a href="#Parser-3779"><span class="linenos">3779</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Parser-3780"><a href="#Parser-3780"><span class="linenos">3780</span></a> -</span><span id="Parser-3781"><a href="#Parser-3781"><span class="linenos">3781</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3782"><a href="#Parser-3782"><span class="linenos">3782</span></a> -</span><span id="Parser-3783"><a href="#Parser-3783"><span class="linenos">3783</span></a> <span class="k">def</span> <span class="nf">_match_pair</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type_a</span><span class="p">,</span> <span class="n">token_type_b</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Parser-3784"><a href="#Parser-3784"><span class="linenos">3784</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> -</span><span id="Parser-3785"><a href="#Parser-3785"><span class="linenos">3785</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3786"><a href="#Parser-3786"><span class="linenos">3786</span></a> -</span><span id="Parser-3787"><a href="#Parser-3787"><span class="linenos">3787</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_a</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_b</span><span class="p">:</span> -</span><span id="Parser-3788"><a href="#Parser-3788"><span class="linenos">3788</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="Parser-3789"><a href="#Parser-3789"><span class="linenos">3789</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> -</span><span id="Parser-3790"><a href="#Parser-3790"><span class="linenos">3790</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Parser-3791"><a href="#Parser-3791"><span class="linenos">3791</span></a> -</span><span id="Parser-3792"><a href="#Parser-3792"><span class="linenos">3792</span></a> <span class="k">return</span> <span class="kc">None</span> -</span><span id="Parser-3793"><a href="#Parser-3793"><span class="linenos">3793</span></a> -</span><span id="Parser-3794"><a href="#Parser-3794"><span class="linenos">3794</span></a> <span class="k">def</span> <span class="nf">_match_l_paren</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="kc">None</span><span class="p">):</span> -</span><span id="Parser-3795"><a href="#Parser-3795"><span class="linenos">3795</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> -</span><span id="Parser-3796"><a href="#Parser-3796"><span class="linenos">3796</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> -</span><span id="Parser-3797"><a href="#Parser-3797"><span class="linenos">3797</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="Parser-3798"><a href="#Parser-3798"><span class="linenos">3798</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-3799"><a href="#Parser-3799"><span class="linenos">3799</span></a> -</span><span id="Parser-3800"><a href="#Parser-3800"><span class="linenos">3800</span></a> <span class="k">def</span> <span class="nf">_match_r_paren</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="kc">None</span><span class="p">):</span> -</span><span id="Parser-3801"><a href="#Parser-3801"><span class="linenos">3801</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> -</span><span id="Parser-3802"><a href="#Parser-3802"><span class="linenos">3802</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">)</span> -</span><span id="Parser-3803"><a href="#Parser-3803"><span class="linenos">3803</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="Parser-3804"><a href="#Parser-3804"><span class="linenos">3804</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser-3805"><a href="#Parser-3805"><span class="linenos">3805</span></a> -</span><span id="Parser-3806"><a href="#Parser-3806"><span class="linenos">3806</span></a> <span class="k">def</span> <span class="nf">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">texts</span><span class="p">):</span> -</span><span id="Parser-3807"><a href="#Parser-3807"><span class="linenos">3807</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> -</span><span id="Parser-3808"><a href="#Parser-3808"><span class="linenos">3808</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3809"><a href="#Parser-3809"><span class="linenos">3809</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Parser-3810"><a href="#Parser-3810"><span class="linenos">3810</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="Parser-3811"><a href="#Parser-3811"><span class="linenos">3811</span></a> -</span><span id="Parser-3812"><a href="#Parser-3812"><span class="linenos">3812</span></a> <span class="k">def</span> <span class="nf">_match_text_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> -</span><span id="Parser-3813"><a href="#Parser-3813"><span class="linenos">3813</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> -</span><span id="Parser-3814"><a href="#Parser-3814"><span class="linenos">3814</span></a> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> -</span><span id="Parser-3815"><a href="#Parser-3815"><span class="linenos">3815</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="n">text</span><span class="p">:</span> -</span><span id="Parser-3816"><a href="#Parser-3816"><span class="linenos">3816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Parser-3817"><a href="#Parser-3817"><span class="linenos">3817</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Parser-3818"><a href="#Parser-3818"><span class="linenos">3818</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> -</span><span id="Parser-3819"><a href="#Parser-3819"><span class="linenos">3819</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="Parser-3820"><a href="#Parser-3820"><span class="linenos">3820</span></a> -</span><span id="Parser-3821"><a href="#Parser-3821"><span class="linenos">3821</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">advance</span><span class="p">:</span> -</span><span id="Parser-3822"><a href="#Parser-3822"><span class="linenos">3822</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3773"><a href="#Parser-3773"><span class="linenos">3773</span></a> <span class="k">def</span> <span class="nf">_parse_as_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start</span><span class="p">:</span> <span class="n">Token</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">:</span> +</span><span id="Parser-3774"><a href="#Parser-3774"><span class="linenos">3774</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-3775"><a href="#Parser-3775"><span class="linenos">3775</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3776"><a href="#Parser-3776"><span class="linenos">3776</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Command</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_find_sql</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span><span class="p">))</span> +</span><span id="Parser-3777"><a href="#Parser-3777"><span class="linenos">3777</span></a> +</span><span id="Parser-3778"><a href="#Parser-3778"><span class="linenos">3778</span></a> <span class="k">def</span> <span class="nf">_find_parser</span><span class="p">(</span> +</span><span id="Parser-3779"><a href="#Parser-3779"><span class="linenos">3779</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">parsers</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">],</span> <span class="n">trie</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span> +</span><span id="Parser-3780"><a href="#Parser-3780"><span class="linenos">3780</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]:</span> +</span><span id="Parser-3781"><a href="#Parser-3781"><span class="linenos">3781</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-3782"><a href="#Parser-3782"><span class="linenos">3782</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser-3783"><a href="#Parser-3783"><span class="linenos">3783</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Parser-3784"><a href="#Parser-3784"><span class="linenos">3784</span></a> <span class="c1"># The current token might be multiple words</span> +</span><span id="Parser-3785"><a href="#Parser-3785"><span class="linenos">3785</span></a> <span class="n">curr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="Parser-3786"><a href="#Parser-3786"><span class="linenos">3786</span></a> <span class="n">key</span> <span class="o">=</span> <span class="n">curr</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span> +</span><span id="Parser-3787"><a href="#Parser-3787"><span class="linenos">3787</span></a> <span class="n">this</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">curr</span><span class="p">)</span> +</span><span id="Parser-3788"><a href="#Parser-3788"><span class="linenos">3788</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3789"><a href="#Parser-3789"><span class="linenos">3789</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">key</span><span class="p">)</span> +</span><span id="Parser-3790"><a href="#Parser-3790"><span class="linenos">3790</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="Parser-3791"><a href="#Parser-3791"><span class="linenos">3791</span></a> <span class="k">break</span> +</span><span id="Parser-3792"><a href="#Parser-3792"><span class="linenos">3792</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="Parser-3793"><a href="#Parser-3793"><span class="linenos">3793</span></a> <span class="n">subparser</span> <span class="o">=</span> <span class="n">parsers</span><span class="p">[</span><span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">this</span><span class="p">)]</span> +</span><span id="Parser-3794"><a href="#Parser-3794"><span class="linenos">3794</span></a> <span class="k">return</span> <span class="n">subparser</span> +</span><span id="Parser-3795"><a href="#Parser-3795"><span class="linenos">3795</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3796"><a href="#Parser-3796"><span class="linenos">3796</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3797"><a href="#Parser-3797"><span class="linenos">3797</span></a> +</span><span id="Parser-3798"><a href="#Parser-3798"><span class="linenos">3798</span></a> <span class="k">def</span> <span class="nf">_match</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Parser-3799"><a href="#Parser-3799"><span class="linenos">3799</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-3800"><a href="#Parser-3800"><span class="linenos">3800</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3801"><a href="#Parser-3801"><span class="linenos">3801</span></a> +</span><span id="Parser-3802"><a href="#Parser-3802"><span class="linenos">3802</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type</span><span class="p">:</span> +</span><span id="Parser-3803"><a href="#Parser-3803"><span class="linenos">3803</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-3804"><a href="#Parser-3804"><span class="linenos">3804</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3805"><a href="#Parser-3805"><span class="linenos">3805</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Parser-3806"><a href="#Parser-3806"><span class="linenos">3806</span></a> +</span><span id="Parser-3807"><a href="#Parser-3807"><span class="linenos">3807</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3808"><a href="#Parser-3808"><span class="linenos">3808</span></a> +</span><span id="Parser-3809"><a href="#Parser-3809"><span class="linenos">3809</span></a> <span class="k">def</span> <span class="nf">_match_set</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">types</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Parser-3810"><a href="#Parser-3810"><span class="linenos">3810</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="p">:</span> +</span><span id="Parser-3811"><a href="#Parser-3811"><span class="linenos">3811</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3812"><a href="#Parser-3812"><span class="linenos">3812</span></a> +</span><span id="Parser-3813"><a href="#Parser-3813"><span class="linenos">3813</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="n">types</span><span class="p">:</span> +</span><span id="Parser-3814"><a href="#Parser-3814"><span class="linenos">3814</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-3815"><a href="#Parser-3815"><span class="linenos">3815</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3816"><a href="#Parser-3816"><span class="linenos">3816</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Parser-3817"><a href="#Parser-3817"><span class="linenos">3817</span></a> +</span><span id="Parser-3818"><a href="#Parser-3818"><span class="linenos">3818</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3819"><a href="#Parser-3819"><span class="linenos">3819</span></a> +</span><span id="Parser-3820"><a href="#Parser-3820"><span class="linenos">3820</span></a> <span class="k">def</span> <span class="nf">_match_pair</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type_a</span><span class="p">,</span> <span class="n">token_type_b</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Parser-3821"><a href="#Parser-3821"><span class="linenos">3821</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="p">:</span> +</span><span id="Parser-3822"><a href="#Parser-3822"><span class="linenos">3822</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="Parser-3823"><a href="#Parser-3823"><span class="linenos">3823</span></a> -</span><span id="Parser-3824"><a href="#Parser-3824"><span class="linenos">3824</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Parser-3825"><a href="#Parser-3825"><span class="linenos">3825</span></a> -</span><span id="Parser-3826"><a href="#Parser-3826"><span class="linenos">3826</span></a> <span class="k">def</span> <span class="nf">_replace_columns_with_dots</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">):</span> -</span><span id="Parser-3827"><a href="#Parser-3827"><span class="linenos">3827</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> -</span><span id="Parser-3828"><a href="#Parser-3828"><span class="linenos">3828</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">)</span> -</span><span id="Parser-3829"><a href="#Parser-3829"><span class="linenos">3829</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="Parser-3830"><a href="#Parser-3830"><span class="linenos">3830</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">)</span> -</span><span id="Parser-3831"><a href="#Parser-3831"><span class="linenos">3831</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">)</span> -</span><span id="Parser-3832"><a href="#Parser-3832"><span class="linenos">3832</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Parser-3833"><a href="#Parser-3833"><span class="linenos">3833</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</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="Parser-3834"><a href="#Parser-3834"><span class="linenos">3834</span></a> <span class="k">if</span> <span class="n">table</span> -</span><span id="Parser-3835"><a href="#Parser-3835"><span class="linenos">3835</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Parser-3836"><a href="#Parser-3836"><span class="linenos">3836</span></a> <span class="p">)</span> -</span><span id="Parser-3837"><a href="#Parser-3837"><span class="linenos">3837</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> -</span><span id="Parser-3838"><a href="#Parser-3838"><span class="linenos">3838</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> -</span><span id="Parser-3839"><a href="#Parser-3839"><span class="linenos">3839</span></a> <span class="k">return</span> <span class="n">this</span> -</span><span id="Parser-3840"><a href="#Parser-3840"><span class="linenos">3840</span></a> -</span><span id="Parser-3841"><a href="#Parser-3841"><span class="linenos">3841</span></a> <span class="k">def</span> <span class="nf">_replace_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">,</span> <span class="n">lambda_variables</span><span class="p">):</span> -</span><span id="Parser-3842"><a href="#Parser-3842"><span class="linenos">3842</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> -</span><span id="Parser-3843"><a href="#Parser-3843"><span class="linenos">3843</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">lambda_variables</span><span class="p">:</span> -</span><span id="Parser-3844"><a href="#Parser-3844"><span class="linenos">3844</span></a> <span class="k">return</span> <span class="n">node</span><span class="o">.</span><span class="n">this</span> -</span><span id="Parser-3845"><a href="#Parser-3845"><span class="linenos">3845</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="Parser-3824"><a href="#Parser-3824"><span class="linenos">3824</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_a</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span><span class="o">.</span><span class="n">token_type</span> <span class="o">==</span> <span class="n">token_type_b</span><span class="p">:</span> +</span><span id="Parser-3825"><a href="#Parser-3825"><span class="linenos">3825</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-3826"><a href="#Parser-3826"><span class="linenos">3826</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> +</span><span id="Parser-3827"><a href="#Parser-3827"><span class="linenos">3827</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Parser-3828"><a href="#Parser-3828"><span class="linenos">3828</span></a> +</span><span id="Parser-3829"><a href="#Parser-3829"><span class="linenos">3829</span></a> <span class="k">return</span> <span class="kc">None</span> +</span><span id="Parser-3830"><a href="#Parser-3830"><span class="linenos">3830</span></a> +</span><span id="Parser-3831"><a href="#Parser-3831"><span class="linenos">3831</span></a> <span class="k">def</span> <span class="nf">_match_l_paren</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="kc">None</span><span class="p">):</span> +</span><span id="Parser-3832"><a href="#Parser-3832"><span class="linenos">3832</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">):</span> +</span><span id="Parser-3833"><a href="#Parser-3833"><span class="linenos">3833</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting ("</span><span class="p">)</span> +</span><span id="Parser-3834"><a href="#Parser-3834"><span class="linenos">3834</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="Parser-3835"><a href="#Parser-3835"><span class="linenos">3835</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-3836"><a href="#Parser-3836"><span class="linenos">3836</span></a> +</span><span id="Parser-3837"><a href="#Parser-3837"><span class="linenos">3837</span></a> <span class="k">def</span> <span class="nf">_match_r_paren</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="kc">None</span><span class="p">):</span> +</span><span id="Parser-3838"><a href="#Parser-3838"><span class="linenos">3838</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">):</span> +</span><span id="Parser-3839"><a href="#Parser-3839"><span class="linenos">3839</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="s2">"Expecting )"</span><span class="p">)</span> +</span><span id="Parser-3840"><a href="#Parser-3840"><span class="linenos">3840</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="Parser-3841"><a href="#Parser-3841"><span class="linenos">3841</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser-3842"><a href="#Parser-3842"><span class="linenos">3842</span></a> +</span><span id="Parser-3843"><a href="#Parser-3843"><span class="linenos">3843</span></a> <span class="k">def</span> <span class="nf">_match_texts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Parser-3844"><a href="#Parser-3844"><span class="linenos">3844</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> +</span><span id="Parser-3845"><a href="#Parser-3845"><span class="linenos">3845</span></a> <span class="k">if</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-3846"><a href="#Parser-3846"><span class="linenos">3846</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3847"><a href="#Parser-3847"><span class="linenos">3847</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Parser-3848"><a href="#Parser-3848"><span class="linenos">3848</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Parser-3849"><a href="#Parser-3849"><span class="linenos">3849</span></a> +</span><span id="Parser-3850"><a href="#Parser-3850"><span class="linenos">3850</span></a> <span class="k">def</span> <span class="nf">_match_text_seq</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">texts</span><span class="p">,</span> <span class="n">advance</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span> +</span><span id="Parser-3851"><a href="#Parser-3851"><span class="linenos">3851</span></a> <span class="n">index</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> +</span><span id="Parser-3852"><a href="#Parser-3852"><span class="linenos">3852</span></a> <span class="k">for</span> <span class="n">text</span> <span class="ow">in</span> <span class="n">texts</span><span class="p">:</span> +</span><span id="Parser-3853"><a href="#Parser-3853"><span class="linenos">3853</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span><span class="o">.</span><span class="n">text</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="n">text</span><span class="p">:</span> +</span><span id="Parser-3854"><a href="#Parser-3854"><span class="linenos">3854</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Parser-3855"><a href="#Parser-3855"><span class="linenos">3855</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Parser-3856"><a href="#Parser-3856"><span class="linenos">3856</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3857"><a href="#Parser-3857"><span class="linenos">3857</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Parser-3858"><a href="#Parser-3858"><span class="linenos">3858</span></a> +</span><span id="Parser-3859"><a href="#Parser-3859"><span class="linenos">3859</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">advance</span><span class="p">:</span> +</span><span id="Parser-3860"><a href="#Parser-3860"><span class="linenos">3860</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_retreat</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> +</span><span id="Parser-3861"><a href="#Parser-3861"><span class="linenos">3861</span></a> +</span><span id="Parser-3862"><a href="#Parser-3862"><span class="linenos">3862</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Parser-3863"><a href="#Parser-3863"><span class="linenos">3863</span></a> +</span><span id="Parser-3864"><a href="#Parser-3864"><span class="linenos">3864</span></a> <span class="k">def</span> <span class="nf">_replace_columns_with_dots</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">this</span><span class="p">):</span> +</span><span id="Parser-3865"><a href="#Parser-3865"><span class="linenos">3865</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">):</span> +</span><span id="Parser-3866"><a href="#Parser-3866"><span class="linenos">3866</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">)</span> +</span><span id="Parser-3867"><a href="#Parser-3867"><span class="linenos">3867</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="Parser-3868"><a href="#Parser-3868"><span class="linenos">3868</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">replace_children</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_replace_columns_with_dots</span><span class="p">)</span> +</span><span id="Parser-3869"><a href="#Parser-3869"><span class="linenos">3869</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"table"</span><span class="p">)</span> +</span><span id="Parser-3870"><a href="#Parser-3870"><span class="linenos">3870</span></a> <span class="n">this</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Parser-3871"><a href="#Parser-3871"><span class="linenos">3871</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Dot</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">table</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="Parser-3872"><a href="#Parser-3872"><span class="linenos">3872</span></a> <span class="k">if</span> <span class="n">table</span> +</span><span id="Parser-3873"><a href="#Parser-3873"><span class="linenos">3873</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Parser-3874"><a href="#Parser-3874"><span class="linenos">3874</span></a> <span class="p">)</span> +</span><span id="Parser-3875"><a href="#Parser-3875"><span class="linenos">3875</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span> +</span><span id="Parser-3876"><a href="#Parser-3876"><span class="linenos">3876</span></a> <span class="n">this</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Var</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> +</span><span id="Parser-3877"><a href="#Parser-3877"><span class="linenos">3877</span></a> <span class="k">return</span> <span class="n">this</span> +</span><span id="Parser-3878"><a href="#Parser-3878"><span class="linenos">3878</span></a> +</span><span id="Parser-3879"><a href="#Parser-3879"><span class="linenos">3879</span></a> <span class="k">def</span> <span class="nf">_replace_lambda</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">node</span><span class="p">,</span> <span class="n">lambda_variables</span><span class="p">):</span> +</span><span id="Parser-3880"><a href="#Parser-3880"><span class="linenos">3880</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span> +</span><span id="Parser-3881"><a href="#Parser-3881"><span class="linenos">3881</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="n">lambda_variables</span><span class="p">:</span> +</span><span id="Parser-3882"><a href="#Parser-3882"><span class="linenos">3882</span></a> <span class="k">return</span> <span class="n">node</span><span class="o">.</span><span class="n">this</span> +</span><span id="Parser-3883"><a href="#Parser-3883"><span class="linenos">3883</span></a> <span class="k">return</span> <span class="n">node</span> </span></pre></div> @@ -7813,24 +7889,24 @@ Default: "nulls_are_small"</li> </div> <a class="headerlink" href="#Parser.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.__init__-701"><a href="#Parser.__init__-701"><span class="linenos">701</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Parser.__init__-702"><a href="#Parser.__init__-702"><span class="linenos">702</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser.__init__-703"><a href="#Parser.__init__-703"><span class="linenos">703</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser.__init__-704"><a href="#Parser.__init__-704"><span class="linenos">704</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> -</span><span id="Parser.__init__-705"><a href="#Parser.__init__-705"><span class="linenos">705</span></a> <span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> -</span><span id="Parser.__init__-706"><a href="#Parser.__init__-706"><span class="linenos">706</span></a> <span class="n">unnest_column_only</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Parser.__init__-707"><a href="#Parser.__init__-707"><span class="linenos">707</span></a> <span class="n">alias_post_tablesample</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> -</span><span id="Parser.__init__-708"><a href="#Parser.__init__-708"><span class="linenos">708</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> -</span><span id="Parser.__init__-709"><a href="#Parser.__init__-709"><span class="linenos">709</span></a> <span class="n">null_ordering</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser.__init__-710"><a href="#Parser.__init__-710"><span class="linenos">710</span></a> <span class="p">):</span> -</span><span id="Parser.__init__-711"><a href="#Parser.__init__-711"><span class="linenos">711</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> -</span><span id="Parser.__init__-712"><a href="#Parser.__init__-712"><span class="linenos">712</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> -</span><span id="Parser.__init__-713"><a href="#Parser.__init__-713"><span class="linenos">713</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> -</span><span id="Parser.__init__-714"><a href="#Parser.__init__-714"><span class="linenos">714</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> -</span><span id="Parser.__init__-715"><a href="#Parser.__init__-715"><span class="linenos">715</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> -</span><span id="Parser.__init__-716"><a href="#Parser.__init__-716"><span class="linenos">716</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> -</span><span id="Parser.__init__-717"><a href="#Parser.__init__-717"><span class="linenos">717</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> -</span><span id="Parser.__init__-718"><a href="#Parser.__init__-718"><span class="linenos">718</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.__init__-713"><a href="#Parser.__init__-713"><span class="linenos">713</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Parser.__init__-714"><a href="#Parser.__init__-714"><span class="linenos">714</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser.__init__-715"><a href="#Parser.__init__-715"><span class="linenos">715</span></a> <span class="n">error_level</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">ErrorLevel</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser.__init__-716"><a href="#Parser.__init__-716"><span class="linenos">716</span></a> <span class="n">error_message_context</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">100</span><span class="p">,</span> +</span><span id="Parser.__init__-717"><a href="#Parser.__init__-717"><span class="linenos">717</span></a> <span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> +</span><span id="Parser.__init__-718"><a href="#Parser.__init__-718"><span class="linenos">718</span></a> <span class="n">unnest_column_only</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Parser.__init__-719"><a href="#Parser.__init__-719"><span class="linenos">719</span></a> <span class="n">alias_post_tablesample</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> +</span><span id="Parser.__init__-720"><a href="#Parser.__init__-720"><span class="linenos">720</span></a> <span class="n">max_errors</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">3</span><span class="p">,</span> +</span><span id="Parser.__init__-721"><a href="#Parser.__init__-721"><span class="linenos">721</span></a> <span class="n">null_ordering</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser.__init__-722"><a href="#Parser.__init__-722"><span class="linenos">722</span></a> <span class="p">):</span> +</span><span id="Parser.__init__-723"><a href="#Parser.__init__-723"><span class="linenos">723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">=</span> <span class="n">error_level</span> <span class="ow">or</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span> +</span><span id="Parser.__init__-724"><a href="#Parser.__init__-724"><span class="linenos">724</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span> <span class="o">=</span> <span class="n">error_message_context</span> +</span><span id="Parser.__init__-725"><a href="#Parser.__init__-725"><span class="linenos">725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">index_offset</span> <span class="o">=</span> <span class="n">index_offset</span> +</span><span id="Parser.__init__-726"><a href="#Parser.__init__-726"><span class="linenos">726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unnest_column_only</span> <span class="o">=</span> <span class="n">unnest_column_only</span> +</span><span id="Parser.__init__-727"><a href="#Parser.__init__-727"><span class="linenos">727</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">alias_post_tablesample</span> <span class="o">=</span> <span class="n">alias_post_tablesample</span> +</span><span id="Parser.__init__-728"><a href="#Parser.__init__-728"><span class="linenos">728</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span> <span class="o">=</span> <span class="n">max_errors</span> +</span><span id="Parser.__init__-729"><a href="#Parser.__init__-729"><span class="linenos">729</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">null_ordering</span> <span class="o">=</span> <span class="n">null_ordering</span> +</span><span id="Parser.__init__-730"><a href="#Parser.__init__-730"><span class="linenos">730</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> </span></pre></div> @@ -7848,15 +7924,15 @@ Default: "nulls_are_small"</li> </div> <a class="headerlink" href="#Parser.reset"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.reset-720"><a href="#Parser.reset-720"><span class="linenos">720</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -</span><span id="Parser.reset-721"><a href="#Parser.reset-721"><span class="linenos">721</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Parser.reset-722"><a href="#Parser.reset-722"><span class="linenos">722</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser.reset-723"><a href="#Parser.reset-723"><span class="linenos">723</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser.reset-724"><a href="#Parser.reset-724"><span class="linenos">724</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Parser.reset-725"><a href="#Parser.reset-725"><span class="linenos">725</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.reset-726"><a href="#Parser.reset-726"><span class="linenos">726</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.reset-727"><a href="#Parser.reset-727"><span class="linenos">727</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.reset-728"><a href="#Parser.reset-728"><span class="linenos">728</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.reset-732"><a href="#Parser.reset-732"><span class="linenos">732</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +</span><span id="Parser.reset-733"><a href="#Parser.reset-733"><span class="linenos">733</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Parser.reset-734"><a href="#Parser.reset-734"><span class="linenos">734</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser.reset-735"><a href="#Parser.reset-735"><span class="linenos">735</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_tokens</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser.reset-736"><a href="#Parser.reset-736"><span class="linenos">736</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_index</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Parser.reset-737"><a href="#Parser.reset-737"><span class="linenos">737</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.reset-738"><a href="#Parser.reset-738"><span class="linenos">738</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_next</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.reset-739"><a href="#Parser.reset-739"><span class="linenos">739</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.reset-740"><a href="#Parser.reset-740"><span class="linenos">740</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> </span></pre></div> @@ -7874,23 +7950,23 @@ Default: "nulls_are_small"</li> </div> <a class="headerlink" href="#Parser.parse"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.parse-730"><a href="#Parser.parse-730"><span class="linenos">730</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> -</span><span id="Parser.parse-731"><a href="#Parser.parse-731"><span class="linenos">731</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.parse-732"><a href="#Parser.parse-732"><span class="linenos">732</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser.parse-733"><a href="#Parser.parse-733"><span class="linenos">733</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.parse-734"><a href="#Parser.parse-734"><span class="linenos">734</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> -</span><span id="Parser.parse-735"><a href="#Parser.parse-735"><span class="linenos">735</span></a><span class="sd"> per parsed SQL statement.</span> -</span><span id="Parser.parse-736"><a href="#Parser.parse-736"><span class="linenos">736</span></a> -</span><span id="Parser.parse-737"><a href="#Parser.parse-737"><span class="linenos">737</span></a><span class="sd"> Args:</span> -</span><span id="Parser.parse-738"><a href="#Parser.parse-738"><span class="linenos">738</span></a><span class="sd"> raw_tokens: the list of tokens.</span> -</span><span id="Parser.parse-739"><a href="#Parser.parse-739"><span class="linenos">739</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> -</span><span id="Parser.parse-740"><a href="#Parser.parse-740"><span class="linenos">740</span></a> -</span><span id="Parser.parse-741"><a href="#Parser.parse-741"><span class="linenos">741</span></a><span class="sd"> Returns:</span> -</span><span id="Parser.parse-742"><a href="#Parser.parse-742"><span class="linenos">742</span></a><span class="sd"> The list of syntax trees.</span> -</span><span id="Parser.parse-743"><a href="#Parser.parse-743"><span class="linenos">743</span></a><span class="sd"> """</span> -</span><span id="Parser.parse-744"><a href="#Parser.parse-744"><span class="linenos">744</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> -</span><span id="Parser.parse-745"><a href="#Parser.parse-745"><span class="linenos">745</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> -</span><span id="Parser.parse-746"><a href="#Parser.parse-746"><span class="linenos">746</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.parse-742"><a href="#Parser.parse-742"><span class="linenos">742</span></a> <span class="k">def</span> <span class="nf">parse</span><span class="p">(</span> +</span><span id="Parser.parse-743"><a href="#Parser.parse-743"><span class="linenos">743</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.parse-744"><a href="#Parser.parse-744"><span class="linenos">744</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser.parse-745"><a href="#Parser.parse-745"><span class="linenos">745</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.parse-746"><a href="#Parser.parse-746"><span class="linenos">746</span></a><span class="sd"> Parses a list of tokens and returns a list of syntax trees, one tree</span> +</span><span id="Parser.parse-747"><a href="#Parser.parse-747"><span class="linenos">747</span></a><span class="sd"> per parsed SQL statement.</span> +</span><span id="Parser.parse-748"><a href="#Parser.parse-748"><span class="linenos">748</span></a> +</span><span id="Parser.parse-749"><a href="#Parser.parse-749"><span class="linenos">749</span></a><span class="sd"> Args:</span> +</span><span id="Parser.parse-750"><a href="#Parser.parse-750"><span class="linenos">750</span></a><span class="sd"> raw_tokens: the list of tokens.</span> +</span><span id="Parser.parse-751"><a href="#Parser.parse-751"><span class="linenos">751</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> +</span><span id="Parser.parse-752"><a href="#Parser.parse-752"><span class="linenos">752</span></a> +</span><span id="Parser.parse-753"><a href="#Parser.parse-753"><span class="linenos">753</span></a><span class="sd"> Returns:</span> +</span><span id="Parser.parse-754"><a href="#Parser.parse-754"><span class="linenos">754</span></a><span class="sd"> The list of syntax trees.</span> +</span><span id="Parser.parse-755"><a href="#Parser.parse-755"><span class="linenos">755</span></a><span class="sd"> """</span> +</span><span id="Parser.parse-756"><a href="#Parser.parse-756"><span class="linenos">756</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span> +</span><span id="Parser.parse-757"><a href="#Parser.parse-757"><span class="linenos">757</span></a> <span class="n">parse_method</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">_parse_statement</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="o">=</span><span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="o">=</span><span class="n">sql</span> +</span><span id="Parser.parse-758"><a href="#Parser.parse-758"><span class="linenos">758</span></a> <span class="p">)</span> </span></pre></div> @@ -7924,39 +8000,39 @@ per parsed SQL statement.</p> </div> <a class="headerlink" href="#Parser.parse_into"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.parse_into-748"><a href="#Parser.parse_into-748"><span class="linenos">748</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> -</span><span id="Parser.parse_into-749"><a href="#Parser.parse_into-749"><span class="linenos">749</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Parser.parse_into-750"><a href="#Parser.parse_into-750"><span class="linenos">750</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> -</span><span id="Parser.parse_into-751"><a href="#Parser.parse_into-751"><span class="linenos">751</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> -</span><span id="Parser.parse_into-752"><a href="#Parser.parse_into-752"><span class="linenos">752</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> -</span><span id="Parser.parse_into-753"><a href="#Parser.parse_into-753"><span class="linenos">753</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> -</span><span id="Parser.parse_into-754"><a href="#Parser.parse_into-754"><span class="linenos">754</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.parse_into-755"><a href="#Parser.parse_into-755"><span class="linenos">755</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> -</span><span id="Parser.parse_into-756"><a href="#Parser.parse_into-756"><span class="linenos">756</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> -</span><span id="Parser.parse_into-757"><a href="#Parser.parse_into-757"><span class="linenos">757</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> -</span><span id="Parser.parse_into-758"><a href="#Parser.parse_into-758"><span class="linenos">758</span></a> -</span><span id="Parser.parse_into-759"><a href="#Parser.parse_into-759"><span class="linenos">759</span></a><span class="sd"> Args:</span> -</span><span id="Parser.parse_into-760"><a href="#Parser.parse_into-760"><span class="linenos">760</span></a><span class="sd"> expression_types: the expression type(s) to try and parse the token list into.</span> -</span><span id="Parser.parse_into-761"><a href="#Parser.parse_into-761"><span class="linenos">761</span></a><span class="sd"> raw_tokens: the list of tokens.</span> -</span><span id="Parser.parse_into-762"><a href="#Parser.parse_into-762"><span class="linenos">762</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> -</span><span id="Parser.parse_into-763"><a href="#Parser.parse_into-763"><span class="linenos">763</span></a> -</span><span id="Parser.parse_into-764"><a href="#Parser.parse_into-764"><span class="linenos">764</span></a><span class="sd"> Returns:</span> -</span><span id="Parser.parse_into-765"><a href="#Parser.parse_into-765"><span class="linenos">765</span></a><span class="sd"> The target Expression.</span> -</span><span id="Parser.parse_into-766"><a href="#Parser.parse_into-766"><span class="linenos">766</span></a><span class="sd"> """</span> -</span><span id="Parser.parse_into-767"><a href="#Parser.parse_into-767"><span class="linenos">767</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Parser.parse_into-768"><a href="#Parser.parse_into-768"><span class="linenos">768</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> -</span><span id="Parser.parse_into-769"><a href="#Parser.parse_into-769"><span class="linenos">769</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> -</span><span id="Parser.parse_into-770"><a href="#Parser.parse_into-770"><span class="linenos">770</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> -</span><span id="Parser.parse_into-771"><a href="#Parser.parse_into-771"><span class="linenos">771</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Parser.parse_into-772"><a href="#Parser.parse_into-772"><span class="linenos">772</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Parser.parse_into-773"><a href="#Parser.parse_into-773"><span class="linenos">773</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> -</span><span id="Parser.parse_into-774"><a href="#Parser.parse_into-774"><span class="linenos">774</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> -</span><span id="Parser.parse_into-775"><a href="#Parser.parse_into-775"><span class="linenos">775</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> -</span><span id="Parser.parse_into-776"><a href="#Parser.parse_into-776"><span class="linenos">776</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> -</span><span id="Parser.parse_into-777"><a href="#Parser.parse_into-777"><span class="linenos">777</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="Parser.parse_into-778"><a href="#Parser.parse_into-778"><span class="linenos">778</span></a> <span class="sa">f</span><span class="s2">"Failed to parse into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Parser.parse_into-779"><a href="#Parser.parse_into-779"><span class="linenos">779</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> -</span><span id="Parser.parse_into-780"><a href="#Parser.parse_into-780"><span class="linenos">780</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.parse_into-760"><a href="#Parser.parse_into-760"><span class="linenos">760</span></a> <span class="k">def</span> <span class="nf">parse_into</span><span class="p">(</span> +</span><span id="Parser.parse_into-761"><a href="#Parser.parse_into-761"><span class="linenos">761</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Parser.parse_into-762"><a href="#Parser.parse_into-762"><span class="linenos">762</span></a> <span class="n">expression_types</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">IntoType</span><span class="p">,</span> +</span><span id="Parser.parse_into-763"><a href="#Parser.parse_into-763"><span class="linenos">763</span></a> <span class="n">raw_tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">],</span> +</span><span id="Parser.parse_into-764"><a href="#Parser.parse_into-764"><span class="linenos">764</span></a> <span class="n">sql</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> +</span><span id="Parser.parse_into-765"><a href="#Parser.parse_into-765"><span class="linenos">765</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]:</span> +</span><span id="Parser.parse_into-766"><a href="#Parser.parse_into-766"><span class="linenos">766</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.parse_into-767"><a href="#Parser.parse_into-767"><span class="linenos">767</span></a><span class="sd"> Parses a list of tokens into a given Expression type. If a collection of Expression</span> +</span><span id="Parser.parse_into-768"><a href="#Parser.parse_into-768"><span class="linenos">768</span></a><span class="sd"> types is given instead, this method will try to parse the token list into each one</span> +</span><span id="Parser.parse_into-769"><a href="#Parser.parse_into-769"><span class="linenos">769</span></a><span class="sd"> of them, stopping at the first for which the parsing succeeds.</span> +</span><span id="Parser.parse_into-770"><a href="#Parser.parse_into-770"><span class="linenos">770</span></a> +</span><span id="Parser.parse_into-771"><a href="#Parser.parse_into-771"><span class="linenos">771</span></a><span class="sd"> Args:</span> +</span><span id="Parser.parse_into-772"><a href="#Parser.parse_into-772"><span class="linenos">772</span></a><span class="sd"> expression_types: the expression type(s) to try and parse the token list into.</span> +</span><span id="Parser.parse_into-773"><a href="#Parser.parse_into-773"><span class="linenos">773</span></a><span class="sd"> raw_tokens: the list of tokens.</span> +</span><span id="Parser.parse_into-774"><a href="#Parser.parse_into-774"><span class="linenos">774</span></a><span class="sd"> sql: the original SQL string, used to produce helpful debug messages.</span> +</span><span id="Parser.parse_into-775"><a href="#Parser.parse_into-775"><span class="linenos">775</span></a> +</span><span id="Parser.parse_into-776"><a href="#Parser.parse_into-776"><span class="linenos">776</span></a><span class="sd"> Returns:</span> +</span><span id="Parser.parse_into-777"><a href="#Parser.parse_into-777"><span class="linenos">777</span></a><span class="sd"> The target Expression.</span> +</span><span id="Parser.parse_into-778"><a href="#Parser.parse_into-778"><span class="linenos">778</span></a><span class="sd"> """</span> +</span><span id="Parser.parse_into-779"><a href="#Parser.parse_into-779"><span class="linenos">779</span></a> <span class="n">errors</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Parser.parse_into-780"><a href="#Parser.parse_into-780"><span class="linenos">780</span></a> <span class="k">for</span> <span class="n">expression_type</span> <span class="ow">in</span> <span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">):</span> +</span><span id="Parser.parse_into-781"><a href="#Parser.parse_into-781"><span class="linenos">781</span></a> <span class="n">parser</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPRESSION_PARSERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">expression_type</span><span class="p">)</span> +</span><span id="Parser.parse_into-782"><a href="#Parser.parse_into-782"><span class="linenos">782</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">parser</span><span class="p">:</span> +</span><span id="Parser.parse_into-783"><a href="#Parser.parse_into-783"><span class="linenos">783</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"No parser registered for </span><span class="si">{</span><span class="n">expression_type</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Parser.parse_into-784"><a href="#Parser.parse_into-784"><span class="linenos">784</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Parser.parse_into-785"><a href="#Parser.parse_into-785"><span class="linenos">785</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse</span><span class="p">(</span><span class="n">parser</span><span class="p">,</span> <span class="n">raw_tokens</span><span class="p">,</span> <span class="n">sql</span><span class="p">)</span> +</span><span id="Parser.parse_into-786"><a href="#Parser.parse_into-786"><span class="linenos">786</span></a> <span class="k">except</span> <span class="n">ParseError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> +</span><span id="Parser.parse_into-787"><a href="#Parser.parse_into-787"><span class="linenos">787</span></a> <span class="n">e</span><span class="o">.</span><span class="n">errors</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="s2">"into_expression"</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression_type</span> +</span><span id="Parser.parse_into-788"><a href="#Parser.parse_into-788"><span class="linenos">788</span></a> <span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> +</span><span id="Parser.parse_into-789"><a href="#Parser.parse_into-789"><span class="linenos">789</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="Parser.parse_into-790"><a href="#Parser.parse_into-790"><span class="linenos">790</span></a> <span class="sa">f</span><span class="s2">"Failed to parse into </span><span class="si">{</span><span class="n">expression_types</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Parser.parse_into-791"><a href="#Parser.parse_into-791"><span class="linenos">791</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="n">errors</span><span class="p">),</span> +</span><span id="Parser.parse_into-792"><a href="#Parser.parse_into-792"><span class="linenos">792</span></a> <span class="p">)</span> <span class="kn">from</span> <span class="nn">errors</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> </span></pre></div> @@ -7992,18 +8068,18 @@ of them, stopping at the first for which the parsing succeeds.</p> </div> <a class="headerlink" href="#Parser.check_errors"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.check_errors-816"><a href="#Parser.check_errors-816"><span class="linenos">816</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser.check_errors-817"><a href="#Parser.check_errors-817"><span class="linenos">817</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.check_errors-818"><a href="#Parser.check_errors-818"><span class="linenos">818</span></a><span class="sd"> Logs or raises any found errors, depending on the chosen error level setting.</span> -</span><span id="Parser.check_errors-819"><a href="#Parser.check_errors-819"><span class="linenos">819</span></a><span class="sd"> """</span> -</span><span id="Parser.check_errors-820"><a href="#Parser.check_errors-820"><span class="linenos">820</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> -</span><span id="Parser.check_errors-821"><a href="#Parser.check_errors-821"><span class="linenos">821</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="Parser.check_errors-822"><a href="#Parser.check_errors-822"><span class="linenos">822</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> -</span><span id="Parser.check_errors-823"><a href="#Parser.check_errors-823"><span class="linenos">823</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> -</span><span id="Parser.check_errors-824"><a href="#Parser.check_errors-824"><span class="linenos">824</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> -</span><span id="Parser.check_errors-825"><a href="#Parser.check_errors-825"><span class="linenos">825</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> -</span><span id="Parser.check_errors-826"><a href="#Parser.check_errors-826"><span class="linenos">826</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> -</span><span id="Parser.check_errors-827"><a href="#Parser.check_errors-827"><span class="linenos">827</span></a> <span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.check_errors-828"><a href="#Parser.check_errors-828"><span class="linenos">828</span></a> <span class="k">def</span> <span class="nf">check_errors</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser.check_errors-829"><a href="#Parser.check_errors-829"><span class="linenos">829</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.check_errors-830"><a href="#Parser.check_errors-830"><span class="linenos">830</span></a><span class="sd"> Logs or raises any found errors, depending on the chosen error level setting.</span> +</span><span id="Parser.check_errors-831"><a href="#Parser.check_errors-831"><span class="linenos">831</span></a><span class="sd"> """</span> +</span><span id="Parser.check_errors-832"><a href="#Parser.check_errors-832"><span class="linenos">832</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">WARN</span><span class="p">:</span> +</span><span id="Parser.check_errors-833"><a href="#Parser.check_errors-833"><span class="linenos">833</span></a> <span class="k">for</span> <span class="n">error</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="Parser.check_errors-834"><a href="#Parser.check_errors-834"><span class="linenos">834</span></a> <span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span> +</span><span id="Parser.check_errors-835"><a href="#Parser.check_errors-835"><span class="linenos">835</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">RAISE</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">:</span> +</span><span id="Parser.check_errors-836"><a href="#Parser.check_errors-836"><span class="linenos">836</span></a> <span class="k">raise</span> <span class="n">ParseError</span><span class="p">(</span> +</span><span id="Parser.check_errors-837"><a href="#Parser.check_errors-837"><span class="linenos">837</span></a> <span class="n">concat_messages</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">max_errors</span><span class="p">),</span> +</span><span id="Parser.check_errors-838"><a href="#Parser.check_errors-838"><span class="linenos">838</span></a> <span class="n">errors</span><span class="o">=</span><span class="n">merge_errors</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="p">),</span> +</span><span id="Parser.check_errors-839"><a href="#Parser.check_errors-839"><span class="linenos">839</span></a> <span class="p">)</span> </span></pre></div> @@ -8023,33 +8099,33 @@ of them, stopping at the first for which the parsing succeeds.</p> </div> <a class="headerlink" href="#Parser.raise_error"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.raise_error-829"><a href="#Parser.raise_error-829"><span class="linenos">829</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser.raise_error-830"><a href="#Parser.raise_error-830"><span class="linenos">830</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.raise_error-831"><a href="#Parser.raise_error-831"><span class="linenos">831</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> -</span><span id="Parser.raise_error-832"><a href="#Parser.raise_error-832"><span class="linenos">832</span></a><span class="sd"> error level setting.</span> -</span><span id="Parser.raise_error-833"><a href="#Parser.raise_error-833"><span class="linenos">833</span></a><span class="sd"> """</span> -</span><span id="Parser.raise_error-834"><a href="#Parser.raise_error-834"><span class="linenos">834</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> -</span><span id="Parser.raise_error-835"><a href="#Parser.raise_error-835"><span class="linenos">835</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> -</span><span id="Parser.raise_error-836"><a href="#Parser.raise_error-836"><span class="linenos">836</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> -</span><span id="Parser.raise_error-837"><a href="#Parser.raise_error-837"><span class="linenos">837</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> -</span><span id="Parser.raise_error-838"><a href="#Parser.raise_error-838"><span class="linenos">838</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="Parser.raise_error-839"><a href="#Parser.raise_error-839"><span class="linenos">839</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> -</span><span id="Parser.raise_error-840"><a href="#Parser.raise_error-840"><span class="linenos">840</span></a> -</span><span id="Parser.raise_error-841"><a href="#Parser.raise_error-841"><span class="linenos">841</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> -</span><span id="Parser.raise_error-842"><a href="#Parser.raise_error-842"><span class="linenos">842</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> -</span><span id="Parser.raise_error-843"><a href="#Parser.raise_error-843"><span class="linenos">843</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> -</span><span id="Parser.raise_error-844"><a href="#Parser.raise_error-844"><span class="linenos">844</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> -</span><span id="Parser.raise_error-845"><a href="#Parser.raise_error-845"><span class="linenos">845</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> -</span><span id="Parser.raise_error-846"><a href="#Parser.raise_error-846"><span class="linenos">846</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> -</span><span id="Parser.raise_error-847"><a href="#Parser.raise_error-847"><span class="linenos">847</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> -</span><span id="Parser.raise_error-848"><a href="#Parser.raise_error-848"><span class="linenos">848</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> -</span><span id="Parser.raise_error-849"><a href="#Parser.raise_error-849"><span class="linenos">849</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> -</span><span id="Parser.raise_error-850"><a href="#Parser.raise_error-850"><span class="linenos">850</span></a> <span class="p">)</span> -</span><span id="Parser.raise_error-851"><a href="#Parser.raise_error-851"><span class="linenos">851</span></a> -</span><span id="Parser.raise_error-852"><a href="#Parser.raise_error-852"><span class="linenos">852</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> -</span><span id="Parser.raise_error-853"><a href="#Parser.raise_error-853"><span class="linenos">853</span></a> <span class="k">raise</span> <span class="n">error</span> -</span><span id="Parser.raise_error-854"><a href="#Parser.raise_error-854"><span class="linenos">854</span></a> -</span><span id="Parser.raise_error-855"><a href="#Parser.raise_error-855"><span class="linenos">855</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.raise_error-841"><a href="#Parser.raise_error-841"><span class="linenos">841</span></a> <span class="k">def</span> <span class="nf">raise_error</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">message</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">token</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser.raise_error-842"><a href="#Parser.raise_error-842"><span class="linenos">842</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.raise_error-843"><a href="#Parser.raise_error-843"><span class="linenos">843</span></a><span class="sd"> Appends an error in the list of recorded errors or raises it, depending on the chosen</span> +</span><span id="Parser.raise_error-844"><a href="#Parser.raise_error-844"><span class="linenos">844</span></a><span class="sd"> error level setting.</span> +</span><span id="Parser.raise_error-845"><a href="#Parser.raise_error-845"><span class="linenos">845</span></a><span class="sd"> """</span> +</span><span id="Parser.raise_error-846"><a href="#Parser.raise_error-846"><span class="linenos">846</span></a> <span class="n">token</span> <span class="o">=</span> <span class="n">token</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_curr</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev</span> <span class="ow">or</span> <span class="n">Token</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="s2">""</span><span class="p">)</span> +</span><span id="Parser.raise_error-847"><a href="#Parser.raise_error-847"><span class="linenos">847</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_find_token</span><span class="p">(</span><span class="n">token</span><span class="p">)</span> +</span><span id="Parser.raise_error-848"><a href="#Parser.raise_error-848"><span class="linenos">848</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">token</span><span class="o">.</span><span class="n">text</span><span class="p">)</span> +</span><span id="Parser.raise_error-849"><a href="#Parser.raise_error-849"><span class="linenos">849</span></a> <span class="n">start_context</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="nb">max</span><span class="p">(</span><span class="n">start</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="p">:</span> <span class="n">start</span><span class="p">]</span> +</span><span id="Parser.raise_error-850"><a href="#Parser.raise_error-850"><span class="linenos">850</span></a> <span class="n">highlight</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="Parser.raise_error-851"><a href="#Parser.raise_error-851"><span class="linenos">851</span></a> <span class="n">end_context</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">end</span> <span class="p">:</span> <span class="n">end</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_message_context</span><span class="p">]</span> +</span><span id="Parser.raise_error-852"><a href="#Parser.raise_error-852"><span class="linenos">852</span></a> +</span><span id="Parser.raise_error-853"><a href="#Parser.raise_error-853"><span class="linenos">853</span></a> <span class="n">error</span> <span class="o">=</span> <span class="n">ParseError</span><span class="o">.</span><span class="n">new</span><span class="p">(</span> +</span><span id="Parser.raise_error-854"><a href="#Parser.raise_error-854"><span class="linenos">854</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">message</span><span class="si">}</span><span class="s2">. Line </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="si">}</span><span class="s2">, Col: </span><span class="si">{</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="si">}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">"</span> +</span><span id="Parser.raise_error-855"><a href="#Parser.raise_error-855"><span class="linenos">855</span></a> <span class="sa">f</span><span class="s2">" </span><span class="si">{</span><span class="n">start_context</span><span class="si">}</span><span class="se">\033</span><span class="s2">[4m</span><span class="si">{</span><span class="n">highlight</span><span class="si">}</span><span class="se">\033</span><span class="s2">[0m</span><span class="si">{</span><span class="n">end_context</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> +</span><span id="Parser.raise_error-856"><a href="#Parser.raise_error-856"><span class="linenos">856</span></a> <span class="n">description</span><span class="o">=</span><span class="n">message</span><span class="p">,</span> +</span><span id="Parser.raise_error-857"><a href="#Parser.raise_error-857"><span class="linenos">857</span></a> <span class="n">line</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">line</span><span class="p">,</span> +</span><span id="Parser.raise_error-858"><a href="#Parser.raise_error-858"><span class="linenos">858</span></a> <span class="n">col</span><span class="o">=</span><span class="n">token</span><span class="o">.</span><span class="n">col</span><span class="p">,</span> +</span><span id="Parser.raise_error-859"><a href="#Parser.raise_error-859"><span class="linenos">859</span></a> <span class="n">start_context</span><span class="o">=</span><span class="n">start_context</span><span class="p">,</span> +</span><span id="Parser.raise_error-860"><a href="#Parser.raise_error-860"><span class="linenos">860</span></a> <span class="n">highlight</span><span class="o">=</span><span class="n">highlight</span><span class="p">,</span> +</span><span id="Parser.raise_error-861"><a href="#Parser.raise_error-861"><span class="linenos">861</span></a> <span class="n">end_context</span><span class="o">=</span><span class="n">end_context</span><span class="p">,</span> +</span><span id="Parser.raise_error-862"><a href="#Parser.raise_error-862"><span class="linenos">862</span></a> <span class="p">)</span> +</span><span id="Parser.raise_error-863"><a href="#Parser.raise_error-863"><span class="linenos">863</span></a> +</span><span id="Parser.raise_error-864"><a href="#Parser.raise_error-864"><span class="linenos">864</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IMMEDIATE</span><span class="p">:</span> +</span><span id="Parser.raise_error-865"><a href="#Parser.raise_error-865"><span class="linenos">865</span></a> <span class="k">raise</span> <span class="n">error</span> +</span><span id="Parser.raise_error-866"><a href="#Parser.raise_error-866"><span class="linenos">866</span></a> +</span><span id="Parser.raise_error-867"><a href="#Parser.raise_error-867"><span class="linenos">867</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">errors</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">error</span><span class="p">)</span> </span></pre></div> @@ -8070,28 +8146,28 @@ error level setting.</p> </div> <a class="headerlink" href="#Parser.expression"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.expression-857"><a href="#Parser.expression-857"><span class="linenos">857</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> -</span><span id="Parser.expression-858"><a href="#Parser.expression-858"><span class="linenos">858</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">comments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> -</span><span id="Parser.expression-859"><a href="#Parser.expression-859"><span class="linenos">859</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> -</span><span id="Parser.expression-860"><a href="#Parser.expression-860"><span class="linenos">860</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.expression-861"><a href="#Parser.expression-861"><span class="linenos">861</span></a><span class="sd"> Creates a new, validated Expression.</span> -</span><span id="Parser.expression-862"><a href="#Parser.expression-862"><span class="linenos">862</span></a> -</span><span id="Parser.expression-863"><a href="#Parser.expression-863"><span class="linenos">863</span></a><span class="sd"> Args:</span> -</span><span id="Parser.expression-864"><a href="#Parser.expression-864"><span class="linenos">864</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> -</span><span id="Parser.expression-865"><a href="#Parser.expression-865"><span class="linenos">865</span></a><span class="sd"> comments: an optional list of comments to attach to the expression.</span> -</span><span id="Parser.expression-866"><a href="#Parser.expression-866"><span class="linenos">866</span></a><span class="sd"> kwargs: the arguments to set for the expression along with their respective values.</span> -</span><span id="Parser.expression-867"><a href="#Parser.expression-867"><span class="linenos">867</span></a> -</span><span id="Parser.expression-868"><a href="#Parser.expression-868"><span class="linenos">868</span></a><span class="sd"> Returns:</span> -</span><span id="Parser.expression-869"><a href="#Parser.expression-869"><span class="linenos">869</span></a><span class="sd"> The target expression.</span> -</span><span id="Parser.expression-870"><a href="#Parser.expression-870"><span class="linenos">870</span></a><span class="sd"> """</span> -</span><span id="Parser.expression-871"><a href="#Parser.expression-871"><span class="linenos">871</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> -</span><span id="Parser.expression-872"><a href="#Parser.expression-872"><span class="linenos">872</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> -</span><span id="Parser.expression-873"><a href="#Parser.expression-873"><span class="linenos">873</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> -</span><span id="Parser.expression-874"><a href="#Parser.expression-874"><span class="linenos">874</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.expression-875"><a href="#Parser.expression-875"><span class="linenos">875</span></a> <span class="k">if</span> <span class="n">comments</span><span class="p">:</span> -</span><span id="Parser.expression-876"><a href="#Parser.expression-876"><span class="linenos">876</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="Parser.expression-877"><a href="#Parser.expression-877"><span class="linenos">877</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> -</span><span id="Parser.expression-878"><a href="#Parser.expression-878"><span class="linenos">878</span></a> <span class="k">return</span> <span class="n">instance</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.expression-869"><a href="#Parser.expression-869"><span class="linenos">869</span></a> <span class="k">def</span> <span class="nf">expression</span><span class="p">(</span> +</span><span id="Parser.expression-870"><a href="#Parser.expression-870"><span class="linenos">870</span></a> <span class="bp">self</span><span class="p">,</span> <span class="n">exp_class</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">],</span> <span class="n">comments</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span> +</span><span id="Parser.expression-871"><a href="#Parser.expression-871"><span class="linenos">871</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span> +</span><span id="Parser.expression-872"><a href="#Parser.expression-872"><span class="linenos">872</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.expression-873"><a href="#Parser.expression-873"><span class="linenos">873</span></a><span class="sd"> Creates a new, validated Expression.</span> +</span><span id="Parser.expression-874"><a href="#Parser.expression-874"><span class="linenos">874</span></a> +</span><span id="Parser.expression-875"><a href="#Parser.expression-875"><span class="linenos">875</span></a><span class="sd"> Args:</span> +</span><span id="Parser.expression-876"><a href="#Parser.expression-876"><span class="linenos">876</span></a><span class="sd"> exp_class: the expression class to instantiate.</span> +</span><span id="Parser.expression-877"><a href="#Parser.expression-877"><span class="linenos">877</span></a><span class="sd"> comments: an optional list of comments to attach to the expression.</span> +</span><span id="Parser.expression-878"><a href="#Parser.expression-878"><span class="linenos">878</span></a><span class="sd"> kwargs: the arguments to set for the expression along with their respective values.</span> +</span><span id="Parser.expression-879"><a href="#Parser.expression-879"><span class="linenos">879</span></a> +</span><span id="Parser.expression-880"><a href="#Parser.expression-880"><span class="linenos">880</span></a><span class="sd"> Returns:</span> +</span><span id="Parser.expression-881"><a href="#Parser.expression-881"><span class="linenos">881</span></a><span class="sd"> The target expression.</span> +</span><span id="Parser.expression-882"><a href="#Parser.expression-882"><span class="linenos">882</span></a><span class="sd"> """</span> +</span><span id="Parser.expression-883"><a href="#Parser.expression-883"><span class="linenos">883</span></a> <span class="n">instance</span> <span class="o">=</span> <span class="n">exp_class</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> +</span><span id="Parser.expression-884"><a href="#Parser.expression-884"><span class="linenos">884</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span><span class="p">:</span> +</span><span id="Parser.expression-885"><a href="#Parser.expression-885"><span class="linenos">885</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> +</span><span id="Parser.expression-886"><a href="#Parser.expression-886"><span class="linenos">886</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_comments</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.expression-887"><a href="#Parser.expression-887"><span class="linenos">887</span></a> <span class="k">if</span> <span class="n">comments</span><span class="p">:</span> +</span><span id="Parser.expression-888"><a href="#Parser.expression-888"><span class="linenos">888</span></a> <span class="n">instance</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="Parser.expression-889"><a href="#Parser.expression-889"><span class="linenos">889</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">validate_expression</span><span class="p">(</span><span class="n">instance</span><span class="p">)</span> +</span><span id="Parser.expression-890"><a href="#Parser.expression-890"><span class="linenos">890</span></a> <span class="k">return</span> <span class="n">instance</span> </span></pre></div> @@ -8125,22 +8201,22 @@ error level setting.</p> </div> <a class="headerlink" href="#Parser.validate_expression"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.validate_expression-880"><a href="#Parser.validate_expression-880"><span class="linenos">880</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span> -</span><span id="Parser.validate_expression-881"><a href="#Parser.validate_expression-881"><span class="linenos">881</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">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Parser.validate_expression-882"><a href="#Parser.validate_expression-882"><span class="linenos">882</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Parser.validate_expression-883"><a href="#Parser.validate_expression-883"><span class="linenos">883</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="Parser.validate_expression-884"><a href="#Parser.validate_expression-884"><span class="linenos">884</span></a><span class="sd"> Validates an already instantiated expression, making sure that all its mandatory arguments</span> -</span><span id="Parser.validate_expression-885"><a href="#Parser.validate_expression-885"><span class="linenos">885</span></a><span class="sd"> are set.</span> -</span><span id="Parser.validate_expression-886"><a href="#Parser.validate_expression-886"><span class="linenos">886</span></a> -</span><span id="Parser.validate_expression-887"><a href="#Parser.validate_expression-887"><span class="linenos">887</span></a><span class="sd"> Args:</span> -</span><span id="Parser.validate_expression-888"><a href="#Parser.validate_expression-888"><span class="linenos">888</span></a><span class="sd"> expression: the expression to validate.</span> -</span><span id="Parser.validate_expression-889"><a href="#Parser.validate_expression-889"><span class="linenos">889</span></a><span class="sd"> args: an optional list of items that was used to instantiate the expression, if it's a Func.</span> -</span><span id="Parser.validate_expression-890"><a href="#Parser.validate_expression-890"><span class="linenos">890</span></a><span class="sd"> """</span> -</span><span id="Parser.validate_expression-891"><a href="#Parser.validate_expression-891"><span class="linenos">891</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> -</span><span id="Parser.validate_expression-892"><a href="#Parser.validate_expression-892"><span class="linenos">892</span></a> <span class="k">return</span> -</span><span id="Parser.validate_expression-893"><a href="#Parser.validate_expression-893"><span class="linenos">893</span></a> -</span><span id="Parser.validate_expression-894"><a href="#Parser.validate_expression-894"><span class="linenos">894</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> -</span><span id="Parser.validate_expression-895"><a href="#Parser.validate_expression-895"><span class="linenos">895</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Parser.validate_expression-892"><a href="#Parser.validate_expression-892"><span class="linenos">892</span></a> <span class="k">def</span> <span class="nf">validate_expression</span><span class="p">(</span> +</span><span id="Parser.validate_expression-893"><a href="#Parser.validate_expression-893"><span class="linenos">893</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">args</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Parser.validate_expression-894"><a href="#Parser.validate_expression-894"><span class="linenos">894</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Parser.validate_expression-895"><a href="#Parser.validate_expression-895"><span class="linenos">895</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="Parser.validate_expression-896"><a href="#Parser.validate_expression-896"><span class="linenos">896</span></a><span class="sd"> Validates an already instantiated expression, making sure that all its mandatory arguments</span> +</span><span id="Parser.validate_expression-897"><a href="#Parser.validate_expression-897"><span class="linenos">897</span></a><span class="sd"> are set.</span> +</span><span id="Parser.validate_expression-898"><a href="#Parser.validate_expression-898"><span class="linenos">898</span></a> +</span><span id="Parser.validate_expression-899"><a href="#Parser.validate_expression-899"><span class="linenos">899</span></a><span class="sd"> Args:</span> +</span><span id="Parser.validate_expression-900"><a href="#Parser.validate_expression-900"><span class="linenos">900</span></a><span class="sd"> expression: the expression to validate.</span> +</span><span id="Parser.validate_expression-901"><a href="#Parser.validate_expression-901"><span class="linenos">901</span></a><span class="sd"> args: an optional list of items that was used to instantiate the expression, if it's a Func.</span> +</span><span id="Parser.validate_expression-902"><a href="#Parser.validate_expression-902"><span class="linenos">902</span></a><span class="sd"> """</span> +</span><span id="Parser.validate_expression-903"><a href="#Parser.validate_expression-903"><span class="linenos">903</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_level</span> <span class="o">==</span> <span class="n">ErrorLevel</span><span class="o">.</span><span class="n">IGNORE</span><span class="p">:</span> +</span><span id="Parser.validate_expression-904"><a href="#Parser.validate_expression-904"><span class="linenos">904</span></a> <span class="k">return</span> +</span><span id="Parser.validate_expression-905"><a href="#Parser.validate_expression-905"><span class="linenos">905</span></a> +</span><span id="Parser.validate_expression-906"><a href="#Parser.validate_expression-906"><span class="linenos">906</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">args</span><span class="p">):</span> +</span><span id="Parser.validate_expression-907"><a href="#Parser.validate_expression-907"><span class="linenos">907</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">raise_error</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span> </span></pre></div> @@ -8278,7 +8354,7 @@ are set.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/planner.html b/docs/sqlglot/planner.html index 7df7e4e..cfe613e 100644 --- a/docs/sqlglot/planner.html +++ b/docs/sqlglot/planner.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.planner 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -43,9 +43,6 @@ <a class="class" href="#Step">Step</a> <ul class="memberlist"> <li> - <a class="function" href="#Step.__init__">Step</a> - </li> - <li> <a class="function" href="#Step.from_expression">from_expression</a> </li> <li> @@ -61,9 +58,6 @@ <a class="class" href="#Scan">Scan</a> <ul class="memberlist"> <li> - <a class="function" href="#Scan.__init__">Scan</a> - </li> - <li> <a class="function" href="#Scan.from_expression">from_expression</a> </li> </ul> @@ -73,9 +67,6 @@ <a class="class" href="#Join">Join</a> <ul class="memberlist"> <li> - <a class="function" href="#Join.__init__">Join</a> - </li> - <li> <a class="function" href="#Join.from_joins">from_joins</a> </li> </ul> @@ -84,18 +75,12 @@ <li> <a class="class" href="#Aggregate">Aggregate</a> <ul class="memberlist"> - <li> - <a class="function" href="#Aggregate.__init__">Aggregate</a> - </li> </ul> </li> <li> <a class="class" href="#Sort">Sort</a> <ul class="memberlist"> - <li> - <a class="function" href="#Sort.__init__">Sort</a> - </li> </ul> </li> @@ -866,29 +851,6 @@ - <div id="Step.__init__" class="classattr"> - <input id="Step.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> -<div class="attr function"> - - <span class="name">Step</span><span class="signature pdoc-code condensed">()</span> - - <label class="view-source-button" for="Step.__init__-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#Step.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Step.__init__-214"><a href="#Step.__init__-214"><span class="linenos">214</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Step.__init__-215"><a href="#Step.__init__-215"><span class="linenos">215</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Step.__init__-216"><a href="#Step.__init__-216"><span class="linenos">216</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dependencies</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">Step</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="Step.__init__-217"><a href="#Step.__init__-217"><span class="linenos">217</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">dependents</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="n">Step</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="Step.__init__-218"><a href="#Step.__init__-218"><span class="linenos">218</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">projections</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Step.__init__-219"><a href="#Step.__init__-219"><span class="linenos">219</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">limit</span><span class="p">:</span> <span class="nb">float</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">inf</span> -</span><span id="Step.__init__-220"><a href="#Step.__init__-220"><span class="linenos">220</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">condition</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span></pre></div> - - - - - </div> <div id="Step.from_expression" class="classattr"> <input id="Step.from_expression-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr function"> @@ -1246,25 +1208,6 @@ Projections:</li> - <div id="Scan.__init__" class="classattr"> - <input id="Scan.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> -<div class="attr function"> - - <span class="name">Scan</span><span class="signature pdoc-code condensed">()</span> - - <label class="view-source-button" for="Scan.__init__-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#Scan.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Scan.__init__-296"><a href="#Scan.__init__-296"><span class="linenos">296</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Scan.__init__-297"><a href="#Scan.__init__-297"><span class="linenos">297</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> -</span><span id="Scan.__init__-298"><a href="#Scan.__init__-298"><span class="linenos">298</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">source</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span></pre></div> - - - - - </div> <div id="Scan.from_expression" class="classattr"> <input id="Scan.from_expression-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr function"> @@ -1419,25 +1362,6 @@ Projections:</li> - <div id="Join.__init__" class="classattr"> - <input id="Join.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> -<div class="attr function"> - - <span class="name">Join</span><span class="signature pdoc-code condensed">()</span> - - <label class="view-source-button" for="Join.__init__-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#Join.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Join.__init__-324"><a href="#Join.__init__-324"><span class="linenos">324</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Join.__init__-325"><a href="#Join.__init__-325"><span class="linenos">325</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> -</span><span id="Join.__init__-326"><a href="#Join.__init__-326"><span class="linenos">326</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">joins</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]]</span> <span class="o">=</span> <span class="p">{}</span> -</span></pre></div> - - - - - </div> <div id="Join.from_joins" class="classattr"> <input id="Join.from_joins-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr function"> @@ -1529,28 +1453,6 @@ Projections:</li> - <div id="Aggregate.__init__" class="classattr"> - <input id="Aggregate.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> -<div class="attr function"> - - <span class="name">Aggregate</span><span class="signature pdoc-code condensed">()</span> - - <label class="view-source-button" for="Aggregate.__init__-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#Aggregate.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Aggregate.__init__-338"><a href="#Aggregate.__init__-338"><span class="linenos">338</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Aggregate.__init__-339"><a href="#Aggregate.__init__-339"><span class="linenos">339</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> -</span><span id="Aggregate.__init__-340"><a href="#Aggregate.__init__-340"><span class="linenos">340</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">aggregations</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Aggregate.__init__-341"><a href="#Aggregate.__init__-341"><span class="linenos">341</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">operands</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="o">...</span><span class="p">]</span> <span class="o">=</span> <span class="p">()</span> -</span><span id="Aggregate.__init__-342"><a href="#Aggregate.__init__-342"><span class="linenos">342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">group</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Aggregate.__init__-343"><a href="#Aggregate.__init__-343"><span class="linenos">343</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">source</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span></pre></div> - - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -1591,25 +1493,6 @@ Projections:</li> - <div id="Sort.__init__" class="classattr"> - <input id="Sort.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> -<div class="attr function"> - - <span class="name">Sort</span><span class="signature pdoc-code condensed">()</span> - - <label class="view-source-button" for="Sort.__init__-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#Sort.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Sort.__init__-367"><a href="#Sort.__init__-367"><span class="linenos">367</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Sort.__init__-368"><a href="#Sort.__init__-368"><span class="linenos">368</span></a> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span> -</span><span id="Sort.__init__-369"><a href="#Sort.__init__-369"><span class="linenos">369</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">key</span> <span class="o">=</span> <span class="kc">None</span> -</span></pre></div> - - - - - </div> <div class="inherited"> <h5>Inherited Members</h5> <dl> @@ -1929,7 +1812,7 @@ Projections:</li> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/schema.html b/docs/sqlglot/schema.html index 9edba6c..c9d1b44 100644 --- a/docs/sqlglot/schema.html +++ b/docs/sqlglot/schema.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.schema 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -1558,7 +1558,7 @@ are assumed to be visible. The nesting should mirror that of the schema: if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/serde.html b/docs/sqlglot/serde.html index 84be9d8..2ab2b84 100644 --- a/docs/sqlglot/serde.html +++ b/docs/sqlglot/serde.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.serde 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -93,39 +93,40 @@ </span><span id="L-32"><a href="#L-32"><span class="linenos">32</span></a> <span class="n">obj</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span> </span><span id="L-33"><a href="#L-33"><span class="linenos">33</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> </span><span id="L-34"><a href="#L-34"><span class="linenos">34</span></a> <span class="n">obj</span><span class="p">[</span><span class="s2">"comments"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">comments</span> -</span><span id="L-35"><a href="#L-35"><span class="linenos">35</span></a> <span class="k">return</span> <span class="n">obj</span> -</span><span id="L-36"><a href="#L-36"><span class="linenos">36</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-35"><a href="#L-35"><span class="linenos">35</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">_meta</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-36"><a href="#L-36"><span class="linenos">36</span></a> <span class="n">obj</span><span class="p">[</span><span class="s2">"meta"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">_meta</span> </span><span id="L-37"><a href="#L-37"><span class="linenos">37</span></a> -</span><span id="L-38"><a href="#L-38"><span class="linenos">38</span></a> -</span><span id="L-39"><a href="#L-39"><span class="linenos">39</span></a><span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="n">obj</span><span class="p">:</span> <span class="n">JSON</span><span class="p">)</span> <span class="o">-></span> <span class="n">Node</span><span class="p">:</span> -</span><span id="L-40"><a href="#L-40"><span class="linenos">40</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="L-41"><a href="#L-41"><span class="linenos">41</span></a><span class="sd"> Recursively load a dict (as returned by `dump`) into an AST.</span> -</span><span id="L-42"><a href="#L-42"><span class="linenos">42</span></a><span class="sd"> """</span> -</span><span id="L-43"><a href="#L-43"><span class="linenos">43</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="L-44"><a href="#L-44"><span class="linenos">44</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">load</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">]</span> -</span><span id="L-45"><a href="#L-45"><span class="linenos">45</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="L-46"><a href="#L-46"><span class="linenos">46</span></a> <span class="n">class_name</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="s2">"class"</span><span class="p">]</span> -</span><span id="L-47"><a href="#L-47"><span class="linenos">47</span></a> -</span><span id="L-48"><a href="#L-48"><span class="linenos">48</span></a> <span class="k">if</span> <span class="n">class_name</span> <span class="o">==</span> <span class="s2">"DataType.Type"</span><span class="p">:</span> -</span><span id="L-49"><a href="#L-49"><span class="linenos">49</span></a> <span class="k">return</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="p">(</span><span class="n">obj</span><span class="p">[</span><span class="s2">"value"</span><span class="p">])</span> +</span><span id="L-38"><a href="#L-38"><span class="linenos">38</span></a> <span class="k">return</span> <span class="n">obj</span> +</span><span id="L-39"><a href="#L-39"><span class="linenos">39</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="L-40"><a href="#L-40"><span class="linenos">40</span></a> +</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 class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="n">obj</span><span class="p">:</span> <span class="n">JSON</span><span class="p">)</span> <span class="o">-></span> <span class="n">Node</span><span class="p">:</span> +</span><span id="L-43"><a href="#L-43"><span class="linenos">43</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="L-44"><a href="#L-44"><span class="linenos">44</span></a><span class="sd"> Recursively load a dict (as returned by `dump`) into an AST.</span> +</span><span id="L-45"><a href="#L-45"><span class="linenos">45</span></a><span class="sd"> """</span> +</span><span id="L-46"><a href="#L-46"><span class="linenos">46</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="L-47"><a href="#L-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">load</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">]</span> +</span><span id="L-48"><a href="#L-48"><span class="linenos">48</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="L-49"><a href="#L-49"><span class="linenos">49</span></a> <span class="n">class_name</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="s2">"class"</span><span class="p">]</span> </span><span id="L-50"><a href="#L-50"><span class="linenos">50</span></a> -</span><span id="L-51"><a href="#L-51"><span class="linenos">51</span></a> <span class="k">if</span> <span class="s2">"."</span> <span class="ow">in</span> <span class="n">class_name</span><span class="p">:</span> -</span><span id="L-52"><a href="#L-52"><span class="linenos">52</span></a> <span class="n">module_path</span><span class="p">,</span> <span class="n">class_name</span> <span class="o">=</span> <span class="n">class_name</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">"."</span><span class="p">,</span> <span class="n">maxsplit</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> -</span><span id="L-53"><a href="#L-53"><span class="linenos">53</span></a> <span class="n">module</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="n">module_path</span><span class="p">,</span> <span class="n">fromlist</span><span class="o">=</span><span class="p">[</span><span class="n">class_name</span><span class="p">])</span> -</span><span id="L-54"><a href="#L-54"><span class="linenos">54</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-55"><a href="#L-55"><span class="linenos">55</span></a> <span class="n">module</span> <span class="o">=</span> <span class="n">exp</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 class="n">klass</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">class_name</span><span class="p">)</span> -</span><span id="L-58"><a href="#L-58"><span class="linenos">58</span></a> -</span><span id="L-59"><a href="#L-59"><span class="linenos">59</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">klass</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">load</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">[</span><span class="s2">"args"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">()})</span> -</span><span id="L-60"><a href="#L-60"><span class="linenos">60</span></a> <span class="n">type_</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"type"</span><span class="p">)</span> -</span><span id="L-61"><a href="#L-61"><span class="linenos">61</span></a> <span class="k">if</span> <span class="n">type_</span><span class="p">:</span> -</span><span id="L-62"><a href="#L-62"><span class="linenos">62</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">type_</span><span class="p">)</span> -</span><span id="L-63"><a href="#L-63"><span class="linenos">63</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"comments"</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">comments</span><span class="p">:</span> -</span><span id="L-65"><a href="#L-65"><span class="linenos">65</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">load</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> -</span><span id="L-66"><a href="#L-66"><span class="linenos">66</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="L-67"><a href="#L-67"><span class="linenos">67</span></a> <span class="k">return</span> <span class="n">obj</span> +</span><span id="L-51"><a href="#L-51"><span class="linenos">51</span></a> <span class="k">if</span> <span class="n">class_name</span> <span class="o">==</span> <span class="s2">"DataType.Type"</span><span class="p">:</span> +</span><span id="L-52"><a href="#L-52"><span class="linenos">52</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">(</span><span class="n">obj</span><span class="p">[</span><span class="s2">"value"</span><span class="p">])</span> +</span><span id="L-53"><a href="#L-53"><span class="linenos">53</span></a> +</span><span id="L-54"><a href="#L-54"><span class="linenos">54</span></a> <span class="k">if</span> <span class="s2">"."</span> <span class="ow">in</span> <span class="n">class_name</span><span class="p">:</span> +</span><span id="L-55"><a href="#L-55"><span class="linenos">55</span></a> <span class="n">module_path</span><span class="p">,</span> <span class="n">class_name</span> <span class="o">=</span> <span class="n">class_name</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">"."</span><span class="p">,</span> <span class="n">maxsplit</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> +</span><span id="L-56"><a href="#L-56"><span class="linenos">56</span></a> <span class="n">module</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="n">module_path</span><span class="p">,</span> <span class="n">fromlist</span><span class="o">=</span><span class="p">[</span><span class="n">class_name</span><span class="p">])</span> +</span><span id="L-57"><a href="#L-57"><span class="linenos">57</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-58"><a href="#L-58"><span class="linenos">58</span></a> <span class="n">module</span> <span class="o">=</span> <span class="n">exp</span> +</span><span id="L-59"><a href="#L-59"><span class="linenos">59</span></a> +</span><span id="L-60"><a href="#L-60"><span class="linenos">60</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">class_name</span><span class="p">)</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 class="n">expression</span> <span class="o">=</span> <span class="n">klass</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">load</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">[</span><span class="s2">"args"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">()})</span> +</span><span id="L-63"><a href="#L-63"><span class="linenos">63</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"type"</span><span class="p">)</span> +</span><span id="L-64"><a href="#L-64"><span class="linenos">64</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"comments"</span><span class="p">)</span> +</span><span id="L-65"><a href="#L-65"><span class="linenos">65</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">_meta</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"meta"</span><span class="p">)</span> +</span><span id="L-66"><a href="#L-66"><span class="linenos">66</span></a> +</span><span id="L-67"><a href="#L-67"><span class="linenos">67</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="L-68"><a href="#L-68"><span class="linenos">68</span></a> <span class="k">return</span> <span class="n">obj</span> </span></pre></div> @@ -164,8 +165,11 @@ </span><span id="dump-33"><a href="#dump-33"><span class="linenos">33</span></a> <span class="n">obj</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span> </span><span id="dump-34"><a href="#dump-34"><span class="linenos">34</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">comments</span><span class="p">:</span> </span><span id="dump-35"><a href="#dump-35"><span class="linenos">35</span></a> <span class="n">obj</span><span class="p">[</span><span class="s2">"comments"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">comments</span> -</span><span id="dump-36"><a href="#dump-36"><span class="linenos">36</span></a> <span class="k">return</span> <span class="n">obj</span> -</span><span id="dump-37"><a href="#dump-37"><span class="linenos">37</span></a> <span class="k">return</span> <span class="n">node</span> +</span><span id="dump-36"><a href="#dump-36"><span class="linenos">36</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">_meta</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="dump-37"><a href="#dump-37"><span class="linenos">37</span></a> <span class="n">obj</span><span class="p">[</span><span class="s2">"meta"</span><span class="p">]</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">_meta</span> +</span><span id="dump-38"><a href="#dump-38"><span class="linenos">38</span></a> +</span><span id="dump-39"><a href="#dump-39"><span class="linenos">39</span></a> <span class="k">return</span> <span class="n">obj</span> +</span><span id="dump-40"><a href="#dump-40"><span class="linenos">40</span></a> <span class="k">return</span> <span class="n">node</span> </span></pre></div> @@ -185,35 +189,33 @@ </div> <a class="headerlink" href="#load"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="load-40"><a href="#load-40"><span class="linenos">40</span></a><span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="n">obj</span><span class="p">:</span> <span class="n">JSON</span><span class="p">)</span> <span class="o">-></span> <span class="n">Node</span><span class="p">:</span> -</span><span id="load-41"><a href="#load-41"><span class="linenos">41</span></a><span class="w"> </span><span class="sd">"""</span> -</span><span id="load-42"><a href="#load-42"><span class="linenos">42</span></a><span class="sd"> Recursively load a dict (as returned by `dump`) into an AST.</span> -</span><span id="load-43"><a href="#load-43"><span class="linenos">43</span></a><span class="sd"> """</span> -</span><span id="load-44"><a href="#load-44"><span class="linenos">44</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> -</span><span id="load-45"><a href="#load-45"><span class="linenos">45</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">load</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">]</span> -</span><span id="load-46"><a href="#load-46"><span class="linenos">46</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> -</span><span id="load-47"><a href="#load-47"><span class="linenos">47</span></a> <span class="n">class_name</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="s2">"class"</span><span class="p">]</span> -</span><span id="load-48"><a href="#load-48"><span class="linenos">48</span></a> -</span><span id="load-49"><a href="#load-49"><span class="linenos">49</span></a> <span class="k">if</span> <span class="n">class_name</span> <span class="o">==</span> <span class="s2">"DataType.Type"</span><span class="p">:</span> -</span><span id="load-50"><a href="#load-50"><span class="linenos">50</span></a> <span class="k">return</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="p">(</span><span class="n">obj</span><span class="p">[</span><span class="s2">"value"</span><span class="p">])</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="load-43"><a href="#load-43"><span class="linenos">43</span></a><span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="n">obj</span><span class="p">:</span> <span class="n">JSON</span><span class="p">)</span> <span class="o">-></span> <span class="n">Node</span><span class="p">:</span> +</span><span id="load-44"><a href="#load-44"><span class="linenos">44</span></a><span class="w"> </span><span class="sd">"""</span> +</span><span id="load-45"><a href="#load-45"><span class="linenos">45</span></a><span class="sd"> Recursively load a dict (as returned by `dump`) into an AST.</span> +</span><span id="load-46"><a href="#load-46"><span class="linenos">46</span></a><span class="sd"> """</span> +</span><span id="load-47"><a href="#load-47"><span class="linenos">47</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> +</span><span id="load-48"><a href="#load-48"><span class="linenos">48</span></a> <span class="k">return</span> <span class="p">[</span><span class="n">load</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">]</span> +</span><span id="load-49"><a href="#load-49"><span class="linenos">49</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> +</span><span id="load-50"><a href="#load-50"><span class="linenos">50</span></a> <span class="n">class_name</span> <span class="o">=</span> <span class="n">obj</span><span class="p">[</span><span class="s2">"class"</span><span class="p">]</span> </span><span id="load-51"><a href="#load-51"><span class="linenos">51</span></a> -</span><span id="load-52"><a href="#load-52"><span class="linenos">52</span></a> <span class="k">if</span> <span class="s2">"."</span> <span class="ow">in</span> <span class="n">class_name</span><span class="p">:</span> -</span><span id="load-53"><a href="#load-53"><span class="linenos">53</span></a> <span class="n">module_path</span><span class="p">,</span> <span class="n">class_name</span> <span class="o">=</span> <span class="n">class_name</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">"."</span><span class="p">,</span> <span class="n">maxsplit</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> -</span><span id="load-54"><a href="#load-54"><span class="linenos">54</span></a> <span class="n">module</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="n">module_path</span><span class="p">,</span> <span class="n">fromlist</span><span class="o">=</span><span class="p">[</span><span class="n">class_name</span><span class="p">])</span> -</span><span id="load-55"><a href="#load-55"><span class="linenos">55</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="load-56"><a href="#load-56"><span class="linenos">56</span></a> <span class="n">module</span> <span class="o">=</span> <span class="n">exp</span> -</span><span id="load-57"><a href="#load-57"><span class="linenos">57</span></a> -</span><span id="load-58"><a href="#load-58"><span class="linenos">58</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">class_name</span><span class="p">)</span> -</span><span id="load-59"><a href="#load-59"><span class="linenos">59</span></a> -</span><span id="load-60"><a href="#load-60"><span class="linenos">60</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">klass</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">load</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">[</span><span class="s2">"args"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">()})</span> -</span><span id="load-61"><a href="#load-61"><span class="linenos">61</span></a> <span class="n">type_</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"type"</span><span class="p">)</span> -</span><span id="load-62"><a href="#load-62"><span class="linenos">62</span></a> <span class="k">if</span> <span class="n">type_</span><span class="p">:</span> -</span><span id="load-63"><a href="#load-63"><span class="linenos">63</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">type_</span><span class="p">)</span> -</span><span id="load-64"><a href="#load-64"><span class="linenos">64</span></a> <span class="n">comments</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"comments"</span><span class="p">)</span> -</span><span id="load-65"><a href="#load-65"><span class="linenos">65</span></a> <span class="k">if</span> <span class="n">comments</span><span class="p">:</span> -</span><span id="load-66"><a href="#load-66"><span class="linenos">66</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">load</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span> -</span><span id="load-67"><a href="#load-67"><span class="linenos">67</span></a> <span class="k">return</span> <span class="n">expression</span> -</span><span id="load-68"><a href="#load-68"><span class="linenos">68</span></a> <span class="k">return</span> <span class="n">obj</span> +</span><span id="load-52"><a href="#load-52"><span class="linenos">52</span></a> <span class="k">if</span> <span class="n">class_name</span> <span class="o">==</span> <span class="s2">"DataType.Type"</span><span class="p">:</span> +</span><span id="load-53"><a href="#load-53"><span class="linenos">53</span></a> <span class="k">return</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="p">(</span><span class="n">obj</span><span class="p">[</span><span class="s2">"value"</span><span class="p">])</span> +</span><span id="load-54"><a href="#load-54"><span class="linenos">54</span></a> +</span><span id="load-55"><a href="#load-55"><span class="linenos">55</span></a> <span class="k">if</span> <span class="s2">"."</span> <span class="ow">in</span> <span class="n">class_name</span><span class="p">:</span> +</span><span id="load-56"><a href="#load-56"><span class="linenos">56</span></a> <span class="n">module_path</span><span class="p">,</span> <span class="n">class_name</span> <span class="o">=</span> <span class="n">class_name</span><span class="o">.</span><span class="n">rsplit</span><span class="p">(</span><span class="s2">"."</span><span class="p">,</span> <span class="n">maxsplit</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> +</span><span id="load-57"><a href="#load-57"><span class="linenos">57</span></a> <span class="n">module</span> <span class="o">=</span> <span class="nb">__import__</span><span class="p">(</span><span class="n">module_path</span><span class="p">,</span> <span class="n">fromlist</span><span class="o">=</span><span class="p">[</span><span class="n">class_name</span><span class="p">])</span> +</span><span id="load-58"><a href="#load-58"><span class="linenos">58</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="load-59"><a href="#load-59"><span class="linenos">59</span></a> <span class="n">module</span> <span class="o">=</span> <span class="n">exp</span> +</span><span id="load-60"><a href="#load-60"><span class="linenos">60</span></a> +</span><span id="load-61"><a href="#load-61"><span class="linenos">61</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">module</span><span class="p">,</span> <span class="n">class_name</span><span class="p">)</span> +</span><span id="load-62"><a href="#load-62"><span class="linenos">62</span></a> +</span><span id="load-63"><a href="#load-63"><span class="linenos">63</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">klass</span><span class="p">(</span><span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">load</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">obj</span><span class="p">[</span><span class="s2">"args"</span><span class="p">]</span><span class="o">.</span><span class="n">items</span><span class="p">()})</span> +</span><span id="load-64"><a href="#load-64"><span class="linenos">64</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"type"</span><span class="p">)</span> +</span><span id="load-65"><a href="#load-65"><span class="linenos">65</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"comments"</span><span class="p">)</span> +</span><span id="load-66"><a href="#load-66"><span class="linenos">66</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">_meta</span> <span class="o">=</span> <span class="n">obj</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"meta"</span><span class="p">)</span> +</span><span id="load-67"><a href="#load-67"><span class="linenos">67</span></a> +</span><span id="load-68"><a href="#load-68"><span class="linenos">68</span></a> <span class="k">return</span> <span class="n">expression</span> +</span><span id="load-69"><a href="#load-69"><span class="linenos">69</span></a> <span class="k">return</span> <span class="n">obj</span> </span></pre></div> @@ -342,7 +344,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/time.html b/docs/sqlglot/time.html index 8d07b25..8882d05 100644 --- a/docs/sqlglot/time.html +++ b/docs/sqlglot/time.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.time 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -319,7 +319,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/tokens.html b/docs/sqlglot/tokens.html index cf375ec..101b3bc 100644 --- a/docs/sqlglot/tokens.html +++ b/docs/sqlglot/tokens.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.tokens 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -340,6 +340,9 @@ <a class="variable" href="#TokenType.OBJECT">OBJECT</a> </li> <li> + <a class="variable" href="#TokenType.INET">INET</a> + </li> + <li> <a class="variable" href="#TokenType.ALIAS">ALIAS</a> </li> <li> @@ -910,9 +913,6 @@ <a class="class" href="#Tokenizer">Tokenizer</a> <ul class="memberlist"> <li> - <a class="function" href="#Tokenizer.__init__">Tokenizer</a> - </li> - <li> <a class="function" href="#Tokenizer.reset">reset</a> </li> <li> @@ -1061,999 +1061,1006 @@ </span><span id="L-115"><a href="#L-115"><span class="linenos"> 115</span></a> <span class="n">IMAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="L-116"><a href="#L-116"><span class="linenos"> 116</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="L-117"><a href="#L-117"><span class="linenos"> 117</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a> -</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a> <span class="c1"># keywords</span> -</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a> <span class="n">ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a> <span class="n">ALTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a> <span class="n">ALWAYS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a> <span class="n">ALL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> <span class="n">ANTI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a> <span class="n">ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-126"><a href="#L-126"><span class="linenos"> 126</span></a> <span class="n">APPLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a> <span class="n">ASC</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a> <span class="n">ASOF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> <span class="n">AT_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a> <span class="n">AUTO_INCREMENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a> <span class="n">BEGIN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a> <span class="n">BETWEEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a> <span class="n">BOTH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a> <span class="n">BUCKET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a> <span class="n">BY_DEFAULT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="n">CACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> <span class="n">CASCADE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="n">CASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a> <span class="n">CHARACTER_SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a> <span class="n">CLUSTER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a> <span class="n">COLLATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a> <span class="n">COMMAND</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="n">COMMENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a> <span class="n">COMMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a> <span class="n">COMPOUND</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="n">CONSTRAINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="n">CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a> <span class="n">CROSS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> <span class="n">CUBE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> <span class="n">CURRENT_DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="n">CURRENT_DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="n">CURRENT_ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="n">CURRENT_TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <span class="n">CURRENT_TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a> <span class="n">DEFAULT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> <span class="n">DELETE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a> <span class="n">DESC</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-159"><a href="#L-159"><span class="linenos"> 159</span></a> <span class="n">DESCRIBE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="n">DISTINCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="n">DISTINCT_FROM</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a> <span class="n">DISTRIBUTE_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a> <span class="n">DIV</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> <span class="n">DROP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="n">ELSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> <span class="n">END</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="n">ESCAPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="n">EXCEPT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> <span class="n">EXECUTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="n">EXISTS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="n">FALSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="n">FETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="n">FILTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="n">FINAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> <span class="n">FIRST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="n">FOLLOWING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a> <span class="n">FOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="n">FOREIGN_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a> <span class="n">FORMAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a> <span class="n">FROM</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a> <span class="n">FULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a> <span class="n">FUNCTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> <span class="n">GLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="n">GLOBAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> <span class="n">GROUP_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> <span class="n">GROUPING_SETS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> <span class="n">HAVING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="n">HINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a> <span class="n">IF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> <span class="n">IGNORE_NULLS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="n">ILIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a> <span class="n">ILIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> <span class="n">IN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> <span class="n">INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="n">INNER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="n">INSERT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="n">INTERSECT</span> <span class="o">=</span> <span class="n">auto</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="n">auto</span><span class="p">()</span> -</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="n">INTO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="n">INTRODUCER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> <span class="n">IRLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="n">IS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="n">ISNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="n">JOIN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">LANGUAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="n">LATERAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> <span class="n">LAZY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="n">LEADING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="n">LEFT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="n">LIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="n">LIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> <span class="n">LIMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="n">LOAD_DATA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="n">LOCAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">MATCH_RECOGNIZE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">MATERIALIZED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">MERGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="n">MOD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">NATURAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="n">NEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="n">NO_ACTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="n">NOTNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="n">NULLS_FIRST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="n">NULLS_LAST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="n">OFFSET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="n">ON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="n">ONLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">OPTIONS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="n">ORDER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="n">ORDERED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="n">ORDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="n">OUTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="n">OUT_OF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a> <span class="n">OVER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> <span class="n">OVERWRITE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">PARTITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="n">PARTITION_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> <span class="n">PERCENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="n">PIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="n">PLACEHOLDER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> <span class="n">PRECEDING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="n">PRIMARY_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a> <span class="n">PROCEDURE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="n">PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="n">PSEUDO_TYPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="n">QUALIFY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="n">QUOTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="n">RANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="n">RECURSIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="n">REPLACE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="n">RESPECT_NULLS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="n">RETURNING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="n">REFERENCES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a> <span class="n">RIGHT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="n">RLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="n">ROLLBACK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> <span class="n">ROLLUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="n">ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="n">ROWS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="n">SEED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="n">SELECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="n">SEMI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="n">SEPARATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="n">SERDE_PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="n">SHOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="n">SIMILAR_TO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="n">SOME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="n">SORTKEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> <span class="n">SORT_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="n">TABLE_SAMPLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="n">TEMPORARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="n">TOP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="n">THEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="n">TRAILING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="n">TRUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="n">UNBOUNDED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="n">UNCACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="n">UNION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> <span class="n">UNLOGGED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="n">UNNEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="n">UNPIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="n">UPDATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> <span class="n">USE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a> <span class="n">USING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> <span class="n">VALUES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> <span class="n">VIEW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="n">VOLATILE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="n">WHEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="n">WHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="n">WINDOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="n">WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="n">WITH_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">WITH_LOCAL_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="n">WITHIN_GROUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="n">WITHOUT_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="n">UNIQUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> +</span><span id="L-118"><a href="#L-118"><span class="linenos"> 118</span></a> <span class="n">INET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-119"><a href="#L-119"><span class="linenos"> 119</span></a> +</span><span id="L-120"><a href="#L-120"><span class="linenos"> 120</span></a> <span class="c1"># keywords</span> +</span><span id="L-121"><a href="#L-121"><span class="linenos"> 121</span></a> <span class="n">ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-122"><a href="#L-122"><span class="linenos"> 122</span></a> <span class="n">ALTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-123"><a href="#L-123"><span class="linenos"> 123</span></a> <span class="n">ALWAYS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-124"><a href="#L-124"><span class="linenos"> 124</span></a> <span class="n">ALL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-125"><a href="#L-125"><span class="linenos"> 125</span></a> <span class="n">ANTI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-126"><a href="#L-126"><span class="linenos"> 126</span></a> <span class="n">ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-127"><a href="#L-127"><span class="linenos"> 127</span></a> <span class="n">APPLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-128"><a href="#L-128"><span class="linenos"> 128</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-129"><a href="#L-129"><span class="linenos"> 129</span></a> <span class="n">ASC</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-130"><a href="#L-130"><span class="linenos"> 130</span></a> <span class="n">ASOF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-131"><a href="#L-131"><span class="linenos"> 131</span></a> <span class="n">AT_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-132"><a href="#L-132"><span class="linenos"> 132</span></a> <span class="n">AUTO_INCREMENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-133"><a href="#L-133"><span class="linenos"> 133</span></a> <span class="n">BEGIN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-134"><a href="#L-134"><span class="linenos"> 134</span></a> <span class="n">BETWEEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-135"><a href="#L-135"><span class="linenos"> 135</span></a> <span class="n">BOTH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-136"><a href="#L-136"><span class="linenos"> 136</span></a> <span class="n">BUCKET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-137"><a href="#L-137"><span class="linenos"> 137</span></a> <span class="n">BY_DEFAULT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-138"><a href="#L-138"><span class="linenos"> 138</span></a> <span class="n">CACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-139"><a href="#L-139"><span class="linenos"> 139</span></a> <span class="n">CASCADE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-140"><a href="#L-140"><span class="linenos"> 140</span></a> <span class="n">CASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-141"><a href="#L-141"><span class="linenos"> 141</span></a> <span class="n">CHARACTER_SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-142"><a href="#L-142"><span class="linenos"> 142</span></a> <span class="n">CLUSTER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-143"><a href="#L-143"><span class="linenos"> 143</span></a> <span class="n">COLLATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-144"><a href="#L-144"><span class="linenos"> 144</span></a> <span class="n">COMMAND</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-145"><a href="#L-145"><span class="linenos"> 145</span></a> <span class="n">COMMENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-146"><a href="#L-146"><span class="linenos"> 146</span></a> <span class="n">COMMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-147"><a href="#L-147"><span class="linenos"> 147</span></a> <span class="n">COMPOUND</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-148"><a href="#L-148"><span class="linenos"> 148</span></a> <span class="n">CONSTRAINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-149"><a href="#L-149"><span class="linenos"> 149</span></a> <span class="n">CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-150"><a href="#L-150"><span class="linenos"> 150</span></a> <span class="n">CROSS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-151"><a href="#L-151"><span class="linenos"> 151</span></a> <span class="n">CUBE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-152"><a href="#L-152"><span class="linenos"> 152</span></a> <span class="n">CURRENT_DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-153"><a href="#L-153"><span class="linenos"> 153</span></a> <span class="n">CURRENT_DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-154"><a href="#L-154"><span class="linenos"> 154</span></a> <span class="n">CURRENT_ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-155"><a href="#L-155"><span class="linenos"> 155</span></a> <span class="n">CURRENT_TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-156"><a href="#L-156"><span class="linenos"> 156</span></a> <span class="n">CURRENT_TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-157"><a href="#L-157"><span class="linenos"> 157</span></a> <span class="n">DEFAULT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-158"><a href="#L-158"><span class="linenos"> 158</span></a> <span class="n">DELETE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-159"><a href="#L-159"><span class="linenos"> 159</span></a> <span class="n">DESC</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-160"><a href="#L-160"><span class="linenos"> 160</span></a> <span class="n">DESCRIBE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-161"><a href="#L-161"><span class="linenos"> 161</span></a> <span class="n">DISTINCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-162"><a href="#L-162"><span class="linenos"> 162</span></a> <span class="n">DISTINCT_FROM</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-163"><a href="#L-163"><span class="linenos"> 163</span></a> <span class="n">DISTRIBUTE_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-164"><a href="#L-164"><span class="linenos"> 164</span></a> <span class="n">DIV</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-165"><a href="#L-165"><span class="linenos"> 165</span></a> <span class="n">DROP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-166"><a href="#L-166"><span class="linenos"> 166</span></a> <span class="n">ELSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-167"><a href="#L-167"><span class="linenos"> 167</span></a> <span class="n">END</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-168"><a href="#L-168"><span class="linenos"> 168</span></a> <span class="n">ESCAPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-169"><a href="#L-169"><span class="linenos"> 169</span></a> <span class="n">EXCEPT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-170"><a href="#L-170"><span class="linenos"> 170</span></a> <span class="n">EXECUTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-171"><a href="#L-171"><span class="linenos"> 171</span></a> <span class="n">EXISTS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-172"><a href="#L-172"><span class="linenos"> 172</span></a> <span class="n">FALSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-173"><a href="#L-173"><span class="linenos"> 173</span></a> <span class="n">FETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-174"><a href="#L-174"><span class="linenos"> 174</span></a> <span class="n">FILTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-175"><a href="#L-175"><span class="linenos"> 175</span></a> <span class="n">FINAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-176"><a href="#L-176"><span class="linenos"> 176</span></a> <span class="n">FIRST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-177"><a href="#L-177"><span class="linenos"> 177</span></a> <span class="n">FOLLOWING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-178"><a href="#L-178"><span class="linenos"> 178</span></a> <span class="n">FOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-179"><a href="#L-179"><span class="linenos"> 179</span></a> <span class="n">FOREIGN_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-180"><a href="#L-180"><span class="linenos"> 180</span></a> <span class="n">FORMAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-181"><a href="#L-181"><span class="linenos"> 181</span></a> <span class="n">FROM</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-182"><a href="#L-182"><span class="linenos"> 182</span></a> <span class="n">FULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-183"><a href="#L-183"><span class="linenos"> 183</span></a> <span class="n">FUNCTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-184"><a href="#L-184"><span class="linenos"> 184</span></a> <span class="n">GLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-185"><a href="#L-185"><span class="linenos"> 185</span></a> <span class="n">GLOBAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-186"><a href="#L-186"><span class="linenos"> 186</span></a> <span class="n">GROUP_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-187"><a href="#L-187"><span class="linenos"> 187</span></a> <span class="n">GROUPING_SETS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-188"><a href="#L-188"><span class="linenos"> 188</span></a> <span class="n">HAVING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-189"><a href="#L-189"><span class="linenos"> 189</span></a> <span class="n">HINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-190"><a href="#L-190"><span class="linenos"> 190</span></a> <span class="n">IF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-191"><a href="#L-191"><span class="linenos"> 191</span></a> <span class="n">IGNORE_NULLS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-192"><a href="#L-192"><span class="linenos"> 192</span></a> <span class="n">ILIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-193"><a href="#L-193"><span class="linenos"> 193</span></a> <span class="n">ILIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-194"><a href="#L-194"><span class="linenos"> 194</span></a> <span class="n">IN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-195"><a href="#L-195"><span class="linenos"> 195</span></a> <span class="n">INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-196"><a href="#L-196"><span class="linenos"> 196</span></a> <span class="n">INNER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-197"><a href="#L-197"><span class="linenos"> 197</span></a> <span class="n">INSERT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-198"><a href="#L-198"><span class="linenos"> 198</span></a> <span class="n">INTERSECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-199"><a href="#L-199"><span class="linenos"> 199</span></a> <span class="n">INTERVAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-200"><a href="#L-200"><span class="linenos"> 200</span></a> <span class="n">INTO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-201"><a href="#L-201"><span class="linenos"> 201</span></a> <span class="n">INTRODUCER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-202"><a href="#L-202"><span class="linenos"> 202</span></a> <span class="n">IRLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-203"><a href="#L-203"><span class="linenos"> 203</span></a> <span class="n">IS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-204"><a href="#L-204"><span class="linenos"> 204</span></a> <span class="n">ISNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-205"><a href="#L-205"><span class="linenos"> 205</span></a> <span class="n">JOIN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-206"><a href="#L-206"><span class="linenos"> 206</span></a> <span class="n">LANGUAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-207"><a href="#L-207"><span class="linenos"> 207</span></a> <span class="n">LATERAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-208"><a href="#L-208"><span class="linenos"> 208</span></a> <span class="n">LAZY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-209"><a href="#L-209"><span class="linenos"> 209</span></a> <span class="n">LEADING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-210"><a href="#L-210"><span class="linenos"> 210</span></a> <span class="n">LEFT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-211"><a href="#L-211"><span class="linenos"> 211</span></a> <span class="n">LIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-212"><a href="#L-212"><span class="linenos"> 212</span></a> <span class="n">LIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-213"><a href="#L-213"><span class="linenos"> 213</span></a> <span class="n">LIMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-214"><a href="#L-214"><span class="linenos"> 214</span></a> <span class="n">LOAD_DATA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-215"><a href="#L-215"><span class="linenos"> 215</span></a> <span class="n">LOCAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-216"><a href="#L-216"><span class="linenos"> 216</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-217"><a href="#L-217"><span class="linenos"> 217</span></a> <span class="n">MATCH_RECOGNIZE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-218"><a href="#L-218"><span class="linenos"> 218</span></a> <span class="n">MATERIALIZED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-219"><a href="#L-219"><span class="linenos"> 219</span></a> <span class="n">MERGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-220"><a href="#L-220"><span class="linenos"> 220</span></a> <span class="n">MOD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-221"><a href="#L-221"><span class="linenos"> 221</span></a> <span class="n">NATURAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-222"><a href="#L-222"><span class="linenos"> 222</span></a> <span class="n">NEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-223"><a href="#L-223"><span class="linenos"> 223</span></a> <span class="n">NO_ACTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-224"><a href="#L-224"><span class="linenos"> 224</span></a> <span class="n">NOTNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-225"><a href="#L-225"><span class="linenos"> 225</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-226"><a href="#L-226"><span class="linenos"> 226</span></a> <span class="n">NULLS_FIRST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-227"><a href="#L-227"><span class="linenos"> 227</span></a> <span class="n">NULLS_LAST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-228"><a href="#L-228"><span class="linenos"> 228</span></a> <span class="n">OFFSET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-229"><a href="#L-229"><span class="linenos"> 229</span></a> <span class="n">ON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-230"><a href="#L-230"><span class="linenos"> 230</span></a> <span class="n">ONLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-231"><a href="#L-231"><span class="linenos"> 231</span></a> <span class="n">OPTIONS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-232"><a href="#L-232"><span class="linenos"> 232</span></a> <span class="n">ORDER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-233"><a href="#L-233"><span class="linenos"> 233</span></a> <span class="n">ORDERED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-234"><a href="#L-234"><span class="linenos"> 234</span></a> <span class="n">ORDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-235"><a href="#L-235"><span class="linenos"> 235</span></a> <span class="n">OUTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-236"><a href="#L-236"><span class="linenos"> 236</span></a> <span class="n">OUT_OF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-237"><a href="#L-237"><span class="linenos"> 237</span></a> <span class="n">OVER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-238"><a href="#L-238"><span class="linenos"> 238</span></a> <span class="n">OVERWRITE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-239"><a href="#L-239"><span class="linenos"> 239</span></a> <span class="n">PARTITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-240"><a href="#L-240"><span class="linenos"> 240</span></a> <span class="n">PARTITION_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-241"><a href="#L-241"><span class="linenos"> 241</span></a> <span class="n">PERCENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-242"><a href="#L-242"><span class="linenos"> 242</span></a> <span class="n">PIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-243"><a href="#L-243"><span class="linenos"> 243</span></a> <span class="n">PLACEHOLDER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-244"><a href="#L-244"><span class="linenos"> 244</span></a> <span class="n">PRECEDING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-245"><a href="#L-245"><span class="linenos"> 245</span></a> <span class="n">PRIMARY_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-246"><a href="#L-246"><span class="linenos"> 246</span></a> <span class="n">PROCEDURE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-247"><a href="#L-247"><span class="linenos"> 247</span></a> <span class="n">PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-248"><a href="#L-248"><span class="linenos"> 248</span></a> <span class="n">PSEUDO_TYPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-249"><a href="#L-249"><span class="linenos"> 249</span></a> <span class="n">QUALIFY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-250"><a href="#L-250"><span class="linenos"> 250</span></a> <span class="n">QUOTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-251"><a href="#L-251"><span class="linenos"> 251</span></a> <span class="n">RANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-252"><a href="#L-252"><span class="linenos"> 252</span></a> <span class="n">RECURSIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-253"><a href="#L-253"><span class="linenos"> 253</span></a> <span class="n">REPLACE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-254"><a href="#L-254"><span class="linenos"> 254</span></a> <span class="n">RESPECT_NULLS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-255"><a href="#L-255"><span class="linenos"> 255</span></a> <span class="n">RETURNING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-256"><a href="#L-256"><span class="linenos"> 256</span></a> <span class="n">REFERENCES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-257"><a href="#L-257"><span class="linenos"> 257</span></a> <span class="n">RIGHT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-258"><a href="#L-258"><span class="linenos"> 258</span></a> <span class="n">RLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-259"><a href="#L-259"><span class="linenos"> 259</span></a> <span class="n">ROLLBACK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-260"><a href="#L-260"><span class="linenos"> 260</span></a> <span class="n">ROLLUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-261"><a href="#L-261"><span class="linenos"> 261</span></a> <span class="n">ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-262"><a href="#L-262"><span class="linenos"> 262</span></a> <span class="n">ROWS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-263"><a href="#L-263"><span class="linenos"> 263</span></a> <span class="n">SEED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-264"><a href="#L-264"><span class="linenos"> 264</span></a> <span class="n">SELECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-265"><a href="#L-265"><span class="linenos"> 265</span></a> <span class="n">SEMI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-266"><a href="#L-266"><span class="linenos"> 266</span></a> <span class="n">SEPARATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-267"><a href="#L-267"><span class="linenos"> 267</span></a> <span class="n">SERDE_PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-268"><a href="#L-268"><span class="linenos"> 268</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-269"><a href="#L-269"><span class="linenos"> 269</span></a> <span class="n">SHOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-270"><a href="#L-270"><span class="linenos"> 270</span></a> <span class="n">SIMILAR_TO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-271"><a href="#L-271"><span class="linenos"> 271</span></a> <span class="n">SOME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-272"><a href="#L-272"><span class="linenos"> 272</span></a> <span class="n">SORTKEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-273"><a href="#L-273"><span class="linenos"> 273</span></a> <span class="n">SORT_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-274"><a href="#L-274"><span class="linenos"> 274</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-275"><a href="#L-275"><span class="linenos"> 275</span></a> <span class="n">TABLE_SAMPLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-276"><a href="#L-276"><span class="linenos"> 276</span></a> <span class="n">TEMPORARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-277"><a href="#L-277"><span class="linenos"> 277</span></a> <span class="n">TOP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-278"><a href="#L-278"><span class="linenos"> 278</span></a> <span class="n">THEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-279"><a href="#L-279"><span class="linenos"> 279</span></a> <span class="n">TRAILING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-280"><a href="#L-280"><span class="linenos"> 280</span></a> <span class="n">TRUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-281"><a href="#L-281"><span class="linenos"> 281</span></a> <span class="n">UNBOUNDED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-282"><a href="#L-282"><span class="linenos"> 282</span></a> <span class="n">UNCACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-283"><a href="#L-283"><span class="linenos"> 283</span></a> <span class="n">UNION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-284"><a href="#L-284"><span class="linenos"> 284</span></a> <span class="n">UNLOGGED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-285"><a href="#L-285"><span class="linenos"> 285</span></a> <span class="n">UNNEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-286"><a href="#L-286"><span class="linenos"> 286</span></a> <span class="n">UNPIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-287"><a href="#L-287"><span class="linenos"> 287</span></a> <span class="n">UPDATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-288"><a href="#L-288"><span class="linenos"> 288</span></a> <span class="n">USE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-289"><a href="#L-289"><span class="linenos"> 289</span></a> <span class="n">USING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-290"><a href="#L-290"><span class="linenos"> 290</span></a> <span class="n">VALUES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-291"><a href="#L-291"><span class="linenos"> 291</span></a> <span class="n">VIEW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-292"><a href="#L-292"><span class="linenos"> 292</span></a> <span class="n">VOLATILE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-293"><a href="#L-293"><span class="linenos"> 293</span></a> <span class="n">WHEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-294"><a href="#L-294"><span class="linenos"> 294</span></a> <span class="n">WHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-295"><a href="#L-295"><span class="linenos"> 295</span></a> <span class="n">WINDOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-296"><a href="#L-296"><span class="linenos"> 296</span></a> <span class="n">WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-297"><a href="#L-297"><span class="linenos"> 297</span></a> <span class="n">WITH_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-298"><a href="#L-298"><span class="linenos"> 298</span></a> <span class="n">WITH_LOCAL_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-299"><a href="#L-299"><span class="linenos"> 299</span></a> <span class="n">WITHIN_GROUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-300"><a href="#L-300"><span class="linenos"> 300</span></a> <span class="n">WITHOUT_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="L-301"><a href="#L-301"><span class="linenos"> 301</span></a> <span class="n">UNIQUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="L-302"><a href="#L-302"><span class="linenos"> 302</span></a> -</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a><span class="k">class</span> <span class="nc">Token</span><span class="p">:</span> -</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"token_type"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"line"</span><span class="p">,</span> <span class="s2">"col"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">)</span> -</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> -</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> <span class="nd">@classmethod</span> -</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> -</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> -</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> -</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> <span class="nd">@classmethod</span> -</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> -</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</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="nd">@classmethod</span> -</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> -</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> -</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> -</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> <span class="nd">@classmethod</span> -</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> -</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> -</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> -</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> -</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="n">comments</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-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> -</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> -</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> -</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">col</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> -</span><span id="L-340"><a href="#L-340"><span class="linenos"> 340</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-341"><a href="#L-341"><span class="linenos"> 341</span></a> <span class="n">attributes</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__slots__</span><span class="p">)</span> -</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"<Token </span><span class="si">{</span><span class="n">attributes</span><span class="si">}</span><span class="s2">>"</span> -</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> +</span><span id="L-303"><a href="#L-303"><span class="linenos"> 303</span></a> +</span><span id="L-304"><a href="#L-304"><span class="linenos"> 304</span></a><span class="k">class</span> <span class="nc">Token</span><span class="p">:</span> +</span><span id="L-305"><a href="#L-305"><span class="linenos"> 305</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"token_type"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"line"</span><span class="p">,</span> <span class="s2">"col"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">)</span> +</span><span id="L-306"><a href="#L-306"><span class="linenos"> 306</span></a> +</span><span id="L-307"><a href="#L-307"><span class="linenos"> 307</span></a> <span class="nd">@classmethod</span> +</span><span id="L-308"><a href="#L-308"><span class="linenos"> 308</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="L-309"><a href="#L-309"><span class="linenos"> 309</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> +</span><span id="L-310"><a href="#L-310"><span class="linenos"> 310</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> +</span><span id="L-311"><a href="#L-311"><span class="linenos"> 311</span></a> +</span><span id="L-312"><a href="#L-312"><span class="linenos"> 312</span></a> <span class="nd">@classmethod</span> +</span><span id="L-313"><a href="#L-313"><span class="linenos"> 313</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="L-314"><a href="#L-314"><span class="linenos"> 314</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> +</span><span id="L-315"><a href="#L-315"><span class="linenos"> 315</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> +</span><span id="L-316"><a href="#L-316"><span class="linenos"> 316</span></a> +</span><span id="L-317"><a href="#L-317"><span class="linenos"> 317</span></a> <span class="nd">@classmethod</span> +</span><span id="L-318"><a href="#L-318"><span class="linenos"> 318</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="L-319"><a href="#L-319"><span class="linenos"> 319</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> +</span><span id="L-320"><a href="#L-320"><span class="linenos"> 320</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> +</span><span id="L-321"><a href="#L-321"><span class="linenos"> 321</span></a> +</span><span id="L-322"><a href="#L-322"><span class="linenos"> 322</span></a> <span class="nd">@classmethod</span> +</span><span id="L-323"><a href="#L-323"><span class="linenos"> 323</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="L-324"><a href="#L-324"><span class="linenos"> 324</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> +</span><span id="L-325"><a href="#L-325"><span class="linenos"> 325</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> +</span><span id="L-326"><a href="#L-326"><span class="linenos"> 326</span></a> +</span><span id="L-327"><a href="#L-327"><span class="linenos"> 327</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="L-328"><a href="#L-328"><span class="linenos"> 328</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="L-329"><a href="#L-329"><span class="linenos"> 329</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> +</span><span id="L-330"><a href="#L-330"><span class="linenos"> 330</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="L-331"><a href="#L-331"><span class="linenos"> 331</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="L-332"><a href="#L-332"><span class="linenos"> 332</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="L-333"><a href="#L-333"><span class="linenos"> 333</span></a> <span class="n">comments</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-334"><a href="#L-334"><span class="linenos"> 334</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-335"><a href="#L-335"><span class="linenos"> 335</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> +</span><span id="L-336"><a href="#L-336"><span class="linenos"> 336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> +</span><span id="L-337"><a href="#L-337"><span class="linenos"> 337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> +</span><span id="L-338"><a href="#L-338"><span class="linenos"> 338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">col</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-339"><a href="#L-339"><span class="linenos"> 339</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</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="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-342"><a href="#L-342"><span class="linenos"> 342</span></a> <span class="n">attributes</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__slots__</span><span class="p">)</span> +</span><span id="L-343"><a href="#L-343"><span class="linenos"> 343</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"<Token </span><span class="si">{</span><span class="n">attributes</span><span class="si">}</span><span class="s2">>"</span> </span><span id="L-344"><a href="#L-344"><span class="linenos"> 344</span></a> -</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a><span class="k">class</span> <span class="nc">_Tokenizer</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span> -</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a> <span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">):</span> <span class="c1"># type: ignore</span> -</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">)</span> -</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> -</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">s</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">e</span> -</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">QUOTES</span><span class="p">)</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> -</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">((</span><span class="s2">""</span><span class="p">,)</span> <span class="k">if</span> <span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">isalpha</span><span class="p">()</span> <span class="k">else</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">,</span> <span class="s2">"N"</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 class="n">klass</span><span class="o">.</span><span class="n">_BIT_STRINGS</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">BIT_STRINGS</span><span class="p">)</span> -</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_HEX_STRINGS</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">HEX_STRINGS</span><span class="p">)</span> -</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">BYTE_STRINGS</span><span class="p">)</span> -</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIERS</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIERS</span><span class="p">)</span> -</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">STRING_ESCAPES</span><span class="p">)</span> -</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIER_ESCAPES</span><span class="p">)</span> -</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> -</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="p">(</span><span class="n">comment</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">comment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="p">(</span><span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">comment</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> -</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">COMMENTS</span> -</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="p">)</span> -</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> -</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">KEYWORD_TRIE</span> <span class="o">=</span> <span class="n">new_trie</span><span class="p">(</span> -</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> -</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">{</span> -</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="o">**</span><span class="n">klass</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span> -</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="o">**</span><span class="p">{</span><span class="n">comment</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">},</span> -</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="o">**</span><span class="p">{</span><span class="n">quote</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span> <span class="k">for</span> <span class="n">quote</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">},</span> -</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="o">**</span><span class="p">{</span><span class="n">bit_string</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span> <span class="k">for</span> <span class="n">bit_string</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_BIT_STRINGS</span><span class="p">},</span> -</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="o">**</span><span class="p">{</span><span class="n">hex_string</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span> <span class="k">for</span> <span class="n">hex_string</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_HEX_STRINGS</span><span class="p">},</span> -</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="o">**</span><span class="p">{</span><span class="n">byte_string</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span> <span class="k">for</span> <span class="n">byte_string</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span><span class="p">},</span> -</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="p">}</span> -</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="k">if</span> <span class="s2">" "</span> <span class="ow">in</span> <span class="n">key</span> <span class="ow">or</span> <span class="nb">any</span><span class="p">(</span><span class="n">single</span> <span class="ow">in</span> <span class="n">key</span> <span class="k">for</span> <span class="n">single</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">)</span> -</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="p">)</span> -</span><span id="L-377"><a href="#L-377"><span class="linenos"> 377</span></a> -</span><span id="L-378"><a href="#L-378"><span class="linenos"> 378</span></a> <span class="k">return</span> <span class="n">klass</span> -</span><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> -</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> <span class="nd">@staticmethod</span> -</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="k">def</span> <span class="nf">_delimeter_list_to_dict</span><span class="p">(</span><span class="nb">list</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]:</span> -</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="k">return</span> <span class="nb">dict</span><span class="p">((</span><span class="n">item</span><span class="p">,</span> <span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">)</span> -</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> +</span><span id="L-345"><a href="#L-345"><span class="linenos"> 345</span></a> +</span><span id="L-346"><a href="#L-346"><span class="linenos"> 346</span></a><span class="k">class</span> <span class="nc">_Tokenizer</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span> +</span><span id="L-347"><a href="#L-347"><span class="linenos"> 347</span></a> <span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">):</span> <span class="c1"># type: ignore</span> +</span><span id="L-348"><a href="#L-348"><span class="linenos"> 348</span></a> <span class="n">klass</span> <span class="o">=</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">clsname</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">)</span> +</span><span id="L-349"><a href="#L-349"><span class="linenos"> 349</span></a> +</span><span id="L-350"><a href="#L-350"><span class="linenos"> 350</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-351"><a href="#L-351"><span class="linenos"> 351</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">s</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">e</span> +</span><span id="L-352"><a href="#L-352"><span class="linenos"> 352</span></a> <span class="k">for</span> <span class="n">s</span><span class="p">,</span> <span class="n">e</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">QUOTES</span><span class="p">)</span><span class="o">.</span><span class="n">items</span><span class="p">()</span> +</span><span id="L-353"><a href="#L-353"><span class="linenos"> 353</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">((</span><span class="s2">""</span><span class="p">,)</span> <span class="k">if</span> <span class="n">s</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">isalpha</span><span class="p">()</span> <span class="k">else</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"n"</span><span class="p">,</span> <span class="s2">"N"</span><span class="p">))</span> +</span><span id="L-354"><a href="#L-354"><span class="linenos"> 354</span></a> <span class="p">}</span> +</span><span id="L-355"><a href="#L-355"><span class="linenos"> 355</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_BIT_STRINGS</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">BIT_STRINGS</span><span class="p">)</span> +</span><span id="L-356"><a href="#L-356"><span class="linenos"> 356</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_HEX_STRINGS</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">HEX_STRINGS</span><span class="p">)</span> +</span><span id="L-357"><a href="#L-357"><span class="linenos"> 357</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">BYTE_STRINGS</span><span class="p">)</span> +</span><span id="L-358"><a href="#L-358"><span class="linenos"> 358</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIERS</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_delimeter_list_to_dict</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIERS</span><span class="p">)</span> +</span><span id="L-359"><a href="#L-359"><span class="linenos"> 359</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">STRING_ESCAPES</span><span class="p">)</span> +</span><span id="L-360"><a href="#L-360"><span class="linenos"> 360</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">klass</span><span class="o">.</span><span class="n">IDENTIFIER_ESCAPES</span><span class="p">)</span> +</span><span id="L-361"><a href="#L-361"><span class="linenos"> 361</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span> +</span><span id="L-362"><a href="#L-362"><span class="linenos"> 362</span></a> <span class="p">(</span><span class="n">comment</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">comment</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="p">(</span><span class="n">comment</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">comment</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> +</span><span id="L-363"><a href="#L-363"><span class="linenos"> 363</span></a> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">COMMENTS</span> +</span><span id="L-364"><a href="#L-364"><span class="linenos"> 364</span></a> <span class="p">)</span> +</span><span id="L-365"><a href="#L-365"><span class="linenos"> 365</span></a> +</span><span id="L-366"><a href="#L-366"><span class="linenos"> 366</span></a> <span class="n">klass</span><span class="o">.</span><span class="n">KEYWORD_TRIE</span> <span class="o">=</span> <span class="n">new_trie</span><span class="p">(</span> +</span><span id="L-367"><a href="#L-367"><span class="linenos"> 367</span></a> <span class="n">key</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> +</span><span id="L-368"><a href="#L-368"><span class="linenos"> 368</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">{</span> +</span><span id="L-369"><a href="#L-369"><span class="linenos"> 369</span></a> <span class="o">**</span><span class="n">klass</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span> +</span><span id="L-370"><a href="#L-370"><span class="linenos"> 370</span></a> <span class="o">**</span><span class="p">{</span><span class="n">comment</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMENT</span> <span class="k">for</span> <span class="n">comment</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">},</span> +</span><span id="L-371"><a href="#L-371"><span class="linenos"> 371</span></a> <span class="o">**</span><span class="p">{</span><span class="n">quote</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span> <span class="k">for</span> <span class="n">quote</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_QUOTES</span><span class="p">},</span> +</span><span id="L-372"><a href="#L-372"><span class="linenos"> 372</span></a> <span class="o">**</span><span class="p">{</span><span class="n">bit_string</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span> <span class="k">for</span> <span class="n">bit_string</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_BIT_STRINGS</span><span class="p">},</span> +</span><span id="L-373"><a href="#L-373"><span class="linenos"> 373</span></a> <span class="o">**</span><span class="p">{</span><span class="n">hex_string</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span> <span class="k">for</span> <span class="n">hex_string</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_HEX_STRINGS</span><span class="p">},</span> +</span><span id="L-374"><a href="#L-374"><span class="linenos"> 374</span></a> <span class="o">**</span><span class="p">{</span><span class="n">byte_string</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span> <span class="k">for</span> <span class="n">byte_string</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span><span class="p">},</span> +</span><span id="L-375"><a href="#L-375"><span class="linenos"> 375</span></a> <span class="p">}</span> +</span><span id="L-376"><a href="#L-376"><span class="linenos"> 376</span></a> <span class="k">if</span> <span class="s2">" "</span> <span class="ow">in</span> <span class="n">key</span> <span class="ow">or</span> <span class="nb">any</span><span class="p">(</span><span class="n">single</span> <span class="ow">in</span> <span class="n">key</span> <span class="k">for</span> <span class="n">single</span> <span class="ow">in</span> <span class="n">klass</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">)</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><span id="L-379"><a href="#L-379"><span class="linenos"> 379</span></a> <span class="k">return</span> <span class="n">klass</span> +</span><span id="L-380"><a href="#L-380"><span class="linenos"> 380</span></a> +</span><span id="L-381"><a href="#L-381"><span class="linenos"> 381</span></a> <span class="nd">@staticmethod</span> +</span><span id="L-382"><a href="#L-382"><span class="linenos"> 382</span></a> <span class="k">def</span> <span class="nf">_delimeter_list_to_dict</span><span class="p">(</span><span class="nb">list</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]])</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]:</span> +</span><span id="L-383"><a href="#L-383"><span class="linenos"> 383</span></a> <span class="k">return</span> <span class="nb">dict</span><span class="p">((</span><span class="n">item</span><span class="p">,</span> <span class="n">item</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">item</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="p">(</span><span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">item</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="k">for</span> <span class="n">item</span> <span class="ow">in</span> <span class="nb">list</span><span class="p">)</span> </span><span id="L-384"><a href="#L-384"><span class="linenos"> 384</span></a> -</span><span id="L-385"><a href="#L-385"><span class="linenos"> 385</span></a><span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Tokenizer</span><span class="p">):</span> -</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> -</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> -</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="s2">"["</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> -</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> -</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="s2">"{"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> -</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="s2">"}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">,</span> -</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="s2">"&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">,</span> -</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="s2">"^"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">,</span> -</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> -</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> -</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> -</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span> -</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="s2">"="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="s2">">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> -</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="s2">"<"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> -</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="s2">"%"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">,</span> -</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="s2">"!"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> -</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="s2">"|"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> -</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="s2">"+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">,</span> -</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="s2">";"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> -</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="s2">"/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">,</span> -</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BACKSLASH</span><span class="p">,</span> -</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> -</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">,</span> -</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span> -</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> -</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> <span class="c1"># used for breaking a var like x'y' but nothing else</span> -</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="c1"># the token type doesn't matter</span> -</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span> -</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="s2">"`"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="s2">"#"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">,</span> -</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="p">}</span> -</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> -</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> <span class="n">QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> -</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> <span class="n">BIT_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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-424"><a href="#L-424"><span class="linenos"> 424</span></a> -</span><span id="L-425"><a href="#L-425"><span class="linenos"> 425</span></a> <span class="n">HEX_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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-426"><a href="#L-426"><span class="linenos"> 426</span></a> -</span><span id="L-427"><a href="#L-427"><span class="linenos"> 427</span></a> <span class="n">BYTE_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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-428"><a href="#L-428"><span class="linenos"> 428</span></a> -</span><span id="L-429"><a href="#L-429"><span class="linenos"> 429</span></a> <span class="n">IDENTIFIERS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> -</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> -</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> -</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> <span class="n">_STRING_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> -</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> -</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> -</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> <span class="n">_IDENTIFIER_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> -</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="o">**</span><span class="p">{</span> -</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> -</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"{%"</span><span class="p">,</span> <span class="s2">"{#"</span><span class="p">)</span> -</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> -</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="p">},</span> -</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="o">**</span><span class="p">{</span> -</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> -</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"%}"</span><span class="p">,</span> <span class="s2">"#}"</span><span class="p">)</span> -</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> -</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="p">},</span> -</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="s2">"{{+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span><span class="p">,</span> -</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> <span class="s2">"{{-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span><span class="p">,</span> -</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="s2">"+}}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span><span class="p">,</span> -</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="s2">"-}}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span><span class="p">,</span> -</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="s2">"/*+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">,</span> -</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="s2">"=="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="s2">"::"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> -</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="s2">"||"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">,</span> -</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="s2">">="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> -</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="s2">"<="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> -</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="s2">"<>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="s2">"!="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="s2">"<=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">,</span> -</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="s2">"->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">,</span> -</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="s2">"->>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">,</span> -</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="s2">"=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">,</span> -</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> <span class="s2">"#>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">,</span> -</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="s2">"#>>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">,</span> -</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> <span class="s2">"<->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">,</span> -</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="s2">"ALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> -</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="s2">"ALWAYS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALWAYS</span><span class="p">,</span> -</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="s2">"AND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span> -</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="s2">"ANTI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> -</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="s2">"ASC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> -</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="s2">"AS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> -</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="s2">"AT TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_TIME_ZONE</span><span class="p">,</span> -</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="s2">"BEGIN"</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-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="s2">"BETWEEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">,</span> -</span><span id="L-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="s2">"BOTH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> -</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="s2">"BUCKET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">,</span> -</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="s2">"BY DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BY_DEFAULT</span><span class="p">,</span> -</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="s2">"CACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> -</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="s2">"UNCACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">,</span> -</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> -</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="s2">"CASCADE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> -</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">,</span> -</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> -</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="s2">"COLUMN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="s2">"COMMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> -</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="s2">"COMPOUND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> -</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="s2">"CONSTRAINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="s2">"CREATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> -</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="s2">"CROSS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> -</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="s2">"CUBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">,</span> -</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="s2">"CURRENT_DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> -</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="s2">"CURRENT ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_ROW</span><span class="p">,</span> -</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> -</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> -</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> -</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="s2">"DESC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> -</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="s2">"DESCRIBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> -</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="s2">"DISTINCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">,</span> -</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="s2">"DISTINCT FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT_FROM</span><span class="p">,</span> -</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="s2">"DISTRIBUTE BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> -</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="s2">"DIV"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> -</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> -</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="s2">"ELSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">,</span> -</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="s2">"END"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> -</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="s2">"ESCAPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> -</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="s2">"EXCEPT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="s2">"EXISTS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">,</span> -</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="s2">"FALSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> -</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="s2">"FETCH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> -</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="s2">"FILTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="s2">"FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="s2">"FULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> -</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="s2">"FUNCTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="s2">"FOLLOWING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">,</span> -</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="s2">"FOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">,</span> -</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> -</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="s2">"FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> -</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="s2">"GLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> -</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="s2">"GROUP BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">,</span> -</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="s2">"GROUPING SETS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">,</span> -</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="s2">"HAVING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">,</span> -</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="s2">"IF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">,</span> -</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="s2">"ILIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="s2">"IGNORE NULLS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">,</span> -</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="s2">"IN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> -</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="s2">"INDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="s2">"INNER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> -</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="s2">"INSERT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> -</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="s2">"INTERVAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="s2">"INTERSECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> -</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="s2">"INTO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> -</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="s2">"IS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> -</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="s2">"ISNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="s2">"JOIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">,</span> -</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="s2">"LATERAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">,</span> -</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="s2">"LAZY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">,</span> -</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="s2">"LEADING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> -</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="s2">"LEFT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="s2">"LIMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">,</span> -</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="s2">"LOAD DATA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD_DATA</span><span class="p">,</span> -</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">,</span> -</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">,</span> -</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="s2">"NATURAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> -</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="s2">"NO ACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">,</span> -</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> -</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="s2">"NOTNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">,</span> -</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> -</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="s2">"NULLS FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_FIRST</span><span class="p">,</span> -</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="s2">"NULLS LAST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_LAST</span><span class="p">,</span> -</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="s2">"OBJECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="s2">"OFFSET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> -</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> -</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">,</span> -</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="s2">"OR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> -</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">,</span> -</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="s2">"ORDINALITY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> -</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="s2">"OUTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> -</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="s2">"OUT OF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUT_OF</span><span class="p">,</span> -</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="s2">"OVER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">,</span> -</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="s2">"OVERWRITE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> -</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> -</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="s2">"PERCENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> -</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="s2">"PIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> -</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="s2">"PRECEDING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> -</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> -</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="s2">"PROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> <span class="s2">"QUALIFY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">,</span> -</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="s2">"RECURSIVE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> -</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="s2">"REGEXP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="s2">"REPLACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="s2">"RESPECT NULLS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">,</span> -</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> -</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="s2">"RIGHT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="s2">"ROLLBACK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">,</span> -</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="s2">"ROLLUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> -</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="s2">"ROWS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> -</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="s2">"SCHEMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="s2">"SEED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">,</span> -</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="s2">"SELECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> -</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="s2">"SEMI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="s2">"SHOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="s2">"SIMILAR TO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">,</span> -</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="s2">"SOME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">,</span> -</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">,</span> -</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="s2">"SORT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> -</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="s2">"TABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="s2">"TABLESAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> -</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="s2">"THEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">,</span> -</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="s2">"TRUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> -</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="s2">"TRAILING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> -</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="s2">"UNBOUNDED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> -</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="s2">"UNION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> -</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="s2">"UNLOGGED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">,</span> -</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="s2">"UNPIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> -</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> <span class="s2">"UPDATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> -</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="s2">"USE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> -</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">,</span> -</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="s2">"VALUES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> -</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="s2">"VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="s2">"WHEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">,</span> -</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="s2">"WHERE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">,</span> -</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="s2">"WINDOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> -</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="s2">"WITH TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_TIME_ZONE</span><span class="p">,</span> -</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="s2">"WITH LOCAL TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_LOCAL_TIME_ZONE</span><span class="p">,</span> -</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="s2">"WITHIN GROUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">,</span> -</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="s2">"WITHOUT TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITHOUT_TIME_ZONE</span><span class="p">,</span> -</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="s2">"APPLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> -</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="s2">"BOOL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> -</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="s2">"BOOLEAN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> -</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="s2">"BYTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="s2">"TINYINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="s2">"SHORT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="s2">"SMALLINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="s2">"INT2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="s2">"INTEGER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="s2">"INT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="s2">"INT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="s2">"LONG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="s2">"BIGINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="s2">"DECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> -</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="s2">"NULLABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> -</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="s2">"NUMBER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="s2">"NUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="s2">"FIXED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="s2">"REAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="s2">"FLOAT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="s2">"FLOAT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="s2">"DOUBLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="s2">"DOUBLE PRECISION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="s2">"JSON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> -</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="s2">"CHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="s2">"NCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="s2">"VARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="s2">"VARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="s2">"NVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="s2">"NVARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="s2">"STR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="s2">"STRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="s2">"TEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="s2">"CLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="s2">"LONGVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a> <span class="s2">"BINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> -</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="s2">"BLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> -</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="s2">"BYTEA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> -</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="s2">"VARBINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> -</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="s2">"TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="s2">"TIMESTAMPTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="s2">"TIMESTAMPLTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="s2">"DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="s2">"DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> -</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="s2">"STRUCT"</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-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="s2">"VARIANT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> -</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">,</span> -</span><span id="L-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="s2">"ALTER AGGREGATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="s2">"ALTER DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="s2">"ALTER DOMAIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="s2">"ALTER ROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="s2">"ALTER RULE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="s2">"ALTER SEQUENCE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="s2">"ALTER TYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> <span class="s2">"ALTER USER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="s2">"ALTER VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="s2">"ANALYZE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="s2">"CALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="s2">"EXPLAIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> <span class="s2">"OPTIMIZE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="s2">"PREPARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="s2">"TRUNCATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="s2">"VACUUM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="p">}</span> -</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> -</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="n">WHITE_SPACE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> <span class="s2">" "</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> -</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> -</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="s2">"</span><span class="se">\r\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="p">}</span> -</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> -</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="n">COMMANDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> -</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="p">}</span> -</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> -</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="n">COMMAND_PREFIX_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</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-385"><a href="#L-385"><span class="linenos"> 385</span></a> +</span><span id="L-386"><a href="#L-386"><span class="linenos"> 386</span></a><span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Tokenizer</span><span class="p">):</span> +</span><span id="L-387"><a href="#L-387"><span class="linenos"> 387</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-388"><a href="#L-388"><span class="linenos"> 388</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> +</span><span id="L-389"><a href="#L-389"><span class="linenos"> 389</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> +</span><span id="L-390"><a href="#L-390"><span class="linenos"> 390</span></a> <span class="s2">"["</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> +</span><span id="L-391"><a href="#L-391"><span class="linenos"> 391</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> +</span><span id="L-392"><a href="#L-392"><span class="linenos"> 392</span></a> <span class="s2">"{"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> +</span><span id="L-393"><a href="#L-393"><span class="linenos"> 393</span></a> <span class="s2">"}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">,</span> +</span><span id="L-394"><a href="#L-394"><span class="linenos"> 394</span></a> <span class="s2">"&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">,</span> +</span><span id="L-395"><a href="#L-395"><span class="linenos"> 395</span></a> <span class="s2">"^"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">,</span> +</span><span id="L-396"><a href="#L-396"><span class="linenos"> 396</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> +</span><span id="L-397"><a href="#L-397"><span class="linenos"> 397</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> +</span><span id="L-398"><a href="#L-398"><span class="linenos"> 398</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> +</span><span id="L-399"><a href="#L-399"><span class="linenos"> 399</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span> +</span><span id="L-400"><a href="#L-400"><span class="linenos"> 400</span></a> <span class="s2">"="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="L-401"><a href="#L-401"><span class="linenos"> 401</span></a> <span class="s2">">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> +</span><span id="L-402"><a href="#L-402"><span class="linenos"> 402</span></a> <span class="s2">"<"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> +</span><span id="L-403"><a href="#L-403"><span class="linenos"> 403</span></a> <span class="s2">"%"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">,</span> +</span><span id="L-404"><a href="#L-404"><span class="linenos"> 404</span></a> <span class="s2">"!"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> +</span><span id="L-405"><a href="#L-405"><span class="linenos"> 405</span></a> <span class="s2">"|"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> +</span><span id="L-406"><a href="#L-406"><span class="linenos"> 406</span></a> <span class="s2">"+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">,</span> +</span><span id="L-407"><a href="#L-407"><span class="linenos"> 407</span></a> <span class="s2">";"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> +</span><span id="L-408"><a href="#L-408"><span class="linenos"> 408</span></a> <span class="s2">"/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">,</span> +</span><span id="L-409"><a href="#L-409"><span class="linenos"> 409</span></a> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BACKSLASH</span><span class="p">,</span> +</span><span id="L-410"><a href="#L-410"><span class="linenos"> 410</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> +</span><span id="L-411"><a href="#L-411"><span class="linenos"> 411</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">,</span> +</span><span id="L-412"><a href="#L-412"><span class="linenos"> 412</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span> +</span><span id="L-413"><a href="#L-413"><span class="linenos"> 413</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> +</span><span id="L-414"><a href="#L-414"><span class="linenos"> 414</span></a> <span class="c1"># used for breaking a var like x'y' but nothing else</span> +</span><span id="L-415"><a href="#L-415"><span class="linenos"> 415</span></a> <span class="c1"># the token type doesn't matter</span> +</span><span id="L-416"><a href="#L-416"><span class="linenos"> 416</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span> +</span><span id="L-417"><a href="#L-417"><span class="linenos"> 417</span></a> <span class="s2">"`"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="L-418"><a href="#L-418"><span class="linenos"> 418</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="L-419"><a href="#L-419"><span class="linenos"> 419</span></a> <span class="s2">"#"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">,</span> +</span><span id="L-420"><a href="#L-420"><span class="linenos"> 420</span></a> <span class="p">}</span> +</span><span id="L-421"><a href="#L-421"><span class="linenos"> 421</span></a> +</span><span id="L-422"><a href="#L-422"><span class="linenos"> 422</span></a> <span class="n">QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="L-423"><a href="#L-423"><span class="linenos"> 423</span></a> +</span><span id="L-424"><a href="#L-424"><span class="linenos"> 424</span></a> <span class="n">BIT_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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-425"><a href="#L-425"><span class="linenos"> 425</span></a> +</span><span id="L-426"><a href="#L-426"><span class="linenos"> 426</span></a> <span class="n">HEX_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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-427"><a href="#L-427"><span class="linenos"> 427</span></a> +</span><span id="L-428"><a href="#L-428"><span class="linenos"> 428</span></a> <span class="n">BYTE_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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-429"><a href="#L-429"><span class="linenos"> 429</span></a> +</span><span id="L-430"><a href="#L-430"><span class="linenos"> 430</span></a> <span class="n">IDENTIFIERS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> +</span><span id="L-431"><a href="#L-431"><span class="linenos"> 431</span></a> +</span><span id="L-432"><a href="#L-432"><span class="linenos"> 432</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="L-433"><a href="#L-433"><span class="linenos"> 433</span></a> +</span><span id="L-434"><a href="#L-434"><span class="linenos"> 434</span></a> <span class="n">_STRING_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="L-435"><a href="#L-435"><span class="linenos"> 435</span></a> +</span><span id="L-436"><a href="#L-436"><span class="linenos"> 436</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> +</span><span id="L-437"><a href="#L-437"><span class="linenos"> 437</span></a> +</span><span id="L-438"><a href="#L-438"><span class="linenos"> 438</span></a> <span class="n">_IDENTIFIER_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="L-439"><a href="#L-439"><span class="linenos"> 439</span></a> +</span><span id="L-440"><a href="#L-440"><span class="linenos"> 440</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-441"><a href="#L-441"><span class="linenos"> 441</span></a> <span class="o">**</span><span class="p">{</span> +</span><span id="L-442"><a href="#L-442"><span class="linenos"> 442</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> +</span><span id="L-443"><a href="#L-443"><span class="linenos"> 443</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"{%"</span><span class="p">,</span> <span class="s2">"{#"</span><span class="p">)</span> +</span><span id="L-444"><a href="#L-444"><span class="linenos"> 444</span></a> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> +</span><span id="L-445"><a href="#L-445"><span class="linenos"> 445</span></a> <span class="p">},</span> +</span><span id="L-446"><a href="#L-446"><span class="linenos"> 446</span></a> <span class="o">**</span><span class="p">{</span> +</span><span id="L-447"><a href="#L-447"><span class="linenos"> 447</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> +</span><span id="L-448"><a href="#L-448"><span class="linenos"> 448</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"%}"</span><span class="p">,</span> <span class="s2">"#}"</span><span class="p">)</span> +</span><span id="L-449"><a href="#L-449"><span class="linenos"> 449</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> +</span><span id="L-450"><a href="#L-450"><span class="linenos"> 450</span></a> <span class="p">},</span> +</span><span id="L-451"><a href="#L-451"><span class="linenos"> 451</span></a> <span class="s2">"{{+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span><span class="p">,</span> +</span><span id="L-452"><a href="#L-452"><span class="linenos"> 452</span></a> <span class="s2">"{{-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span><span class="p">,</span> +</span><span id="L-453"><a href="#L-453"><span class="linenos"> 453</span></a> <span class="s2">"+}}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span><span class="p">,</span> +</span><span id="L-454"><a href="#L-454"><span class="linenos"> 454</span></a> <span class="s2">"-}}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span><span class="p">,</span> +</span><span id="L-455"><a href="#L-455"><span class="linenos"> 455</span></a> <span class="s2">"/*+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">,</span> +</span><span id="L-456"><a href="#L-456"><span class="linenos"> 456</span></a> <span class="s2">"=="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="L-457"><a href="#L-457"><span class="linenos"> 457</span></a> <span class="s2">"::"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> +</span><span id="L-458"><a href="#L-458"><span class="linenos"> 458</span></a> <span class="s2">"||"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">,</span> +</span><span id="L-459"><a href="#L-459"><span class="linenos"> 459</span></a> <span class="s2">">="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> +</span><span id="L-460"><a href="#L-460"><span class="linenos"> 460</span></a> <span class="s2">"<="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> +</span><span id="L-461"><a href="#L-461"><span class="linenos"> 461</span></a> <span class="s2">"<>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="L-462"><a href="#L-462"><span class="linenos"> 462</span></a> <span class="s2">"!="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="L-463"><a href="#L-463"><span class="linenos"> 463</span></a> <span class="s2">"<=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">,</span> +</span><span id="L-464"><a href="#L-464"><span class="linenos"> 464</span></a> <span class="s2">"->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">,</span> +</span><span id="L-465"><a href="#L-465"><span class="linenos"> 465</span></a> <span class="s2">"->>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">,</span> +</span><span id="L-466"><a href="#L-466"><span class="linenos"> 466</span></a> <span class="s2">"=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">,</span> +</span><span id="L-467"><a href="#L-467"><span class="linenos"> 467</span></a> <span class="s2">"#>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">,</span> +</span><span id="L-468"><a href="#L-468"><span class="linenos"> 468</span></a> <span class="s2">"#>>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">,</span> +</span><span id="L-469"><a href="#L-469"><span class="linenos"> 469</span></a> <span class="s2">"<->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">,</span> +</span><span id="L-470"><a href="#L-470"><span class="linenos"> 470</span></a> <span class="s2">"ALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> +</span><span id="L-471"><a href="#L-471"><span class="linenos"> 471</span></a> <span class="s2">"ALWAYS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALWAYS</span><span class="p">,</span> +</span><span id="L-472"><a href="#L-472"><span class="linenos"> 472</span></a> <span class="s2">"AND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span> +</span><span id="L-473"><a href="#L-473"><span class="linenos"> 473</span></a> <span class="s2">"ANTI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="L-474"><a href="#L-474"><span class="linenos"> 474</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> +</span><span id="L-475"><a href="#L-475"><span class="linenos"> 475</span></a> <span class="s2">"ASC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> +</span><span id="L-476"><a href="#L-476"><span class="linenos"> 476</span></a> <span class="s2">"AS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> +</span><span id="L-477"><a href="#L-477"><span class="linenos"> 477</span></a> <span class="s2">"AT TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_TIME_ZONE</span><span class="p">,</span> +</span><span id="L-478"><a href="#L-478"><span class="linenos"> 478</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="L-479"><a href="#L-479"><span class="linenos"> 479</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="L-480"><a href="#L-480"><span class="linenos"> 480</span></a> <span class="s2">"BEGIN"</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-481"><a href="#L-481"><span class="linenos"> 481</span></a> <span class="s2">"BETWEEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">,</span> +</span><span id="L-482"><a href="#L-482"><span class="linenos"> 482</span></a> <span class="s2">"BOTH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> +</span><span id="L-483"><a href="#L-483"><span class="linenos"> 483</span></a> <span class="s2">"BUCKET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">,</span> +</span><span id="L-484"><a href="#L-484"><span class="linenos"> 484</span></a> <span class="s2">"BY DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BY_DEFAULT</span><span class="p">,</span> +</span><span id="L-485"><a href="#L-485"><span class="linenos"> 485</span></a> <span class="s2">"CACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> +</span><span id="L-486"><a href="#L-486"><span class="linenos"> 486</span></a> <span class="s2">"UNCACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">,</span> +</span><span id="L-487"><a href="#L-487"><span class="linenos"> 487</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> +</span><span id="L-488"><a href="#L-488"><span class="linenos"> 488</span></a> <span class="s2">"CASCADE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> +</span><span id="L-489"><a href="#L-489"><span class="linenos"> 489</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">,</span> +</span><span id="L-490"><a href="#L-490"><span class="linenos"> 490</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> +</span><span id="L-491"><a href="#L-491"><span class="linenos"> 491</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="L-492"><a href="#L-492"><span class="linenos"> 492</span></a> <span class="s2">"COLUMN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="L-493"><a href="#L-493"><span class="linenos"> 493</span></a> <span class="s2">"COMMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> +</span><span id="L-494"><a href="#L-494"><span class="linenos"> 494</span></a> <span class="s2">"COMPOUND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> +</span><span id="L-495"><a href="#L-495"><span class="linenos"> 495</span></a> <span class="s2">"CONSTRAINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="L-496"><a href="#L-496"><span class="linenos"> 496</span></a> <span class="s2">"CREATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> +</span><span id="L-497"><a href="#L-497"><span class="linenos"> 497</span></a> <span class="s2">"CROSS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> +</span><span id="L-498"><a href="#L-498"><span class="linenos"> 498</span></a> <span class="s2">"CUBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">,</span> +</span><span id="L-499"><a href="#L-499"><span class="linenos"> 499</span></a> <span class="s2">"CURRENT_DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> +</span><span id="L-500"><a href="#L-500"><span class="linenos"> 500</span></a> <span class="s2">"CURRENT ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_ROW</span><span class="p">,</span> +</span><span id="L-501"><a href="#L-501"><span class="linenos"> 501</span></a> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> +</span><span id="L-502"><a href="#L-502"><span class="linenos"> 502</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> +</span><span id="L-503"><a href="#L-503"><span class="linenos"> 503</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> +</span><span id="L-504"><a href="#L-504"><span class="linenos"> 504</span></a> <span class="s2">"DESC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> +</span><span id="L-505"><a href="#L-505"><span class="linenos"> 505</span></a> <span class="s2">"DESCRIBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> +</span><span id="L-506"><a href="#L-506"><span class="linenos"> 506</span></a> <span class="s2">"DISTINCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">,</span> +</span><span id="L-507"><a href="#L-507"><span class="linenos"> 507</span></a> <span class="s2">"DISTINCT FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT_FROM</span><span class="p">,</span> +</span><span id="L-508"><a href="#L-508"><span class="linenos"> 508</span></a> <span class="s2">"DISTRIBUTE BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> +</span><span id="L-509"><a href="#L-509"><span class="linenos"> 509</span></a> <span class="s2">"DIV"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> +</span><span id="L-510"><a href="#L-510"><span class="linenos"> 510</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> +</span><span id="L-511"><a href="#L-511"><span class="linenos"> 511</span></a> <span class="s2">"ELSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">,</span> +</span><span id="L-512"><a href="#L-512"><span class="linenos"> 512</span></a> <span class="s2">"END"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> +</span><span id="L-513"><a href="#L-513"><span class="linenos"> 513</span></a> <span class="s2">"ESCAPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> +</span><span id="L-514"><a href="#L-514"><span class="linenos"> 514</span></a> <span class="s2">"EXCEPT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="L-515"><a href="#L-515"><span class="linenos"> 515</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="L-516"><a href="#L-516"><span class="linenos"> 516</span></a> <span class="s2">"EXISTS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">,</span> +</span><span id="L-517"><a href="#L-517"><span class="linenos"> 517</span></a> <span class="s2">"FALSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> +</span><span id="L-518"><a href="#L-518"><span class="linenos"> 518</span></a> <span class="s2">"FETCH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> +</span><span id="L-519"><a href="#L-519"><span class="linenos"> 519</span></a> <span class="s2">"FILTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="L-520"><a href="#L-520"><span class="linenos"> 520</span></a> <span class="s2">"FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="L-521"><a href="#L-521"><span class="linenos"> 521</span></a> <span class="s2">"FULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="L-522"><a href="#L-522"><span class="linenos"> 522</span></a> <span class="s2">"FUNCTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="L-523"><a href="#L-523"><span class="linenos"> 523</span></a> <span class="s2">"FOLLOWING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">,</span> +</span><span id="L-524"><a href="#L-524"><span class="linenos"> 524</span></a> <span class="s2">"FOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">,</span> +</span><span id="L-525"><a href="#L-525"><span class="linenos"> 525</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> +</span><span id="L-526"><a href="#L-526"><span class="linenos"> 526</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="L-527"><a href="#L-527"><span class="linenos"> 527</span></a> <span class="s2">"FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> +</span><span id="L-528"><a href="#L-528"><span class="linenos"> 528</span></a> <span class="s2">"GLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> +</span><span id="L-529"><a href="#L-529"><span class="linenos"> 529</span></a> <span class="s2">"GROUP BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">,</span> +</span><span id="L-530"><a href="#L-530"><span class="linenos"> 530</span></a> <span class="s2">"GROUPING SETS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">,</span> +</span><span id="L-531"><a href="#L-531"><span class="linenos"> 531</span></a> <span class="s2">"HAVING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">,</span> +</span><span id="L-532"><a href="#L-532"><span class="linenos"> 532</span></a> <span class="s2">"IF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">,</span> +</span><span id="L-533"><a href="#L-533"><span class="linenos"> 533</span></a> <span class="s2">"ILIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="L-534"><a href="#L-534"><span class="linenos"> 534</span></a> <span class="s2">"IGNORE NULLS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">,</span> +</span><span id="L-535"><a href="#L-535"><span class="linenos"> 535</span></a> <span class="s2">"IN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> +</span><span id="L-536"><a href="#L-536"><span class="linenos"> 536</span></a> <span class="s2">"INDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="L-537"><a href="#L-537"><span class="linenos"> 537</span></a> <span class="s2">"INET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> +</span><span id="L-538"><a href="#L-538"><span class="linenos"> 538</span></a> <span class="s2">"INNER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> +</span><span id="L-539"><a href="#L-539"><span class="linenos"> 539</span></a> <span class="s2">"INSERT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> +</span><span id="L-540"><a href="#L-540"><span class="linenos"> 540</span></a> <span class="s2">"INTERVAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="L-541"><a href="#L-541"><span class="linenos"> 541</span></a> <span class="s2">"INTERSECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> +</span><span id="L-542"><a href="#L-542"><span class="linenos"> 542</span></a> <span class="s2">"INTO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> +</span><span id="L-543"><a href="#L-543"><span class="linenos"> 543</span></a> <span class="s2">"IS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> +</span><span id="L-544"><a href="#L-544"><span class="linenos"> 544</span></a> <span class="s2">"ISNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="L-545"><a href="#L-545"><span class="linenos"> 545</span></a> <span class="s2">"JOIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">,</span> +</span><span id="L-546"><a href="#L-546"><span class="linenos"> 546</span></a> <span class="s2">"LATERAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">,</span> +</span><span id="L-547"><a href="#L-547"><span class="linenos"> 547</span></a> <span class="s2">"LAZY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">,</span> +</span><span id="L-548"><a href="#L-548"><span class="linenos"> 548</span></a> <span class="s2">"LEADING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> +</span><span id="L-549"><a href="#L-549"><span class="linenos"> 549</span></a> <span class="s2">"LEFT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="L-550"><a href="#L-550"><span class="linenos"> 550</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="L-551"><a href="#L-551"><span class="linenos"> 551</span></a> <span class="s2">"LIMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">,</span> +</span><span id="L-552"><a href="#L-552"><span class="linenos"> 552</span></a> <span class="s2">"LOAD DATA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD_DATA</span><span class="p">,</span> +</span><span id="L-553"><a href="#L-553"><span class="linenos"> 553</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">,</span> +</span><span id="L-554"><a href="#L-554"><span class="linenos"> 554</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">,</span> +</span><span id="L-555"><a href="#L-555"><span class="linenos"> 555</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="L-556"><a href="#L-556"><span class="linenos"> 556</span></a> <span class="s2">"NATURAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="L-557"><a href="#L-557"><span class="linenos"> 557</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> +</span><span id="L-558"><a href="#L-558"><span class="linenos"> 558</span></a> <span class="s2">"NO ACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">,</span> +</span><span id="L-559"><a href="#L-559"><span class="linenos"> 559</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> +</span><span id="L-560"><a href="#L-560"><span class="linenos"> 560</span></a> <span class="s2">"NOTNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">,</span> +</span><span id="L-561"><a href="#L-561"><span class="linenos"> 561</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> +</span><span id="L-562"><a href="#L-562"><span class="linenos"> 562</span></a> <span class="s2">"NULLS FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_FIRST</span><span class="p">,</span> +</span><span id="L-563"><a href="#L-563"><span class="linenos"> 563</span></a> <span class="s2">"NULLS LAST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_LAST</span><span class="p">,</span> +</span><span id="L-564"><a href="#L-564"><span class="linenos"> 564</span></a> <span class="s2">"OBJECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> +</span><span id="L-565"><a href="#L-565"><span class="linenos"> 565</span></a> <span class="s2">"OFFSET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="L-566"><a href="#L-566"><span class="linenos"> 566</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> +</span><span id="L-567"><a href="#L-567"><span class="linenos"> 567</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> +</span><span id="L-568"><a href="#L-568"><span class="linenos"> 568</span></a> <span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">,</span> +</span><span id="L-569"><a href="#L-569"><span class="linenos"> 569</span></a> <span class="s2">"OR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> +</span><span id="L-570"><a href="#L-570"><span class="linenos"> 570</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">,</span> +</span><span id="L-571"><a href="#L-571"><span class="linenos"> 571</span></a> <span class="s2">"ORDINALITY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> +</span><span id="L-572"><a href="#L-572"><span class="linenos"> 572</span></a> <span class="s2">"OUTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> +</span><span id="L-573"><a href="#L-573"><span class="linenos"> 573</span></a> <span class="s2">"OUT OF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUT_OF</span><span class="p">,</span> +</span><span id="L-574"><a href="#L-574"><span class="linenos"> 574</span></a> <span class="s2">"OVER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">,</span> +</span><span id="L-575"><a href="#L-575"><span class="linenos"> 575</span></a> <span class="s2">"OVERWRITE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> +</span><span id="L-576"><a href="#L-576"><span class="linenos"> 576</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> +</span><span id="L-577"><a href="#L-577"><span class="linenos"> 577</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="L-578"><a href="#L-578"><span class="linenos"> 578</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="L-579"><a href="#L-579"><span class="linenos"> 579</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="L-580"><a href="#L-580"><span class="linenos"> 580</span></a> <span class="s2">"PERCENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> +</span><span id="L-581"><a href="#L-581"><span class="linenos"> 581</span></a> <span class="s2">"PIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> +</span><span id="L-582"><a href="#L-582"><span class="linenos"> 582</span></a> <span class="s2">"PRECEDING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> +</span><span id="L-583"><a href="#L-583"><span class="linenos"> 583</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> +</span><span id="L-584"><a href="#L-584"><span class="linenos"> 584</span></a> <span class="s2">"PROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="L-585"><a href="#L-585"><span class="linenos"> 585</span></a> <span class="s2">"QUALIFY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">,</span> +</span><span id="L-586"><a href="#L-586"><span class="linenos"> 586</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="L-587"><a href="#L-587"><span class="linenos"> 587</span></a> <span class="s2">"RECURSIVE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> +</span><span id="L-588"><a href="#L-588"><span class="linenos"> 588</span></a> <span class="s2">"REGEXP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="L-589"><a href="#L-589"><span class="linenos"> 589</span></a> <span class="s2">"REPLACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="L-590"><a href="#L-590"><span class="linenos"> 590</span></a> <span class="s2">"RESPECT NULLS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">,</span> +</span><span id="L-591"><a href="#L-591"><span class="linenos"> 591</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> +</span><span id="L-592"><a href="#L-592"><span class="linenos"> 592</span></a> <span class="s2">"RIGHT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="L-593"><a href="#L-593"><span class="linenos"> 593</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="L-594"><a href="#L-594"><span class="linenos"> 594</span></a> <span class="s2">"ROLLBACK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">,</span> +</span><span id="L-595"><a href="#L-595"><span class="linenos"> 595</span></a> <span class="s2">"ROLLUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> +</span><span id="L-596"><a href="#L-596"><span class="linenos"> 596</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="L-597"><a href="#L-597"><span class="linenos"> 597</span></a> <span class="s2">"ROWS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> +</span><span id="L-598"><a href="#L-598"><span class="linenos"> 598</span></a> <span class="s2">"SCHEMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="L-599"><a href="#L-599"><span class="linenos"> 599</span></a> <span class="s2">"SEED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">,</span> +</span><span id="L-600"><a href="#L-600"><span class="linenos"> 600</span></a> <span class="s2">"SELECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> +</span><span id="L-601"><a href="#L-601"><span class="linenos"> 601</span></a> <span class="s2">"SEMI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="L-602"><a href="#L-602"><span class="linenos"> 602</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="L-603"><a href="#L-603"><span class="linenos"> 603</span></a> <span class="s2">"SHOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="L-604"><a href="#L-604"><span class="linenos"> 604</span></a> <span class="s2">"SIMILAR TO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">,</span> +</span><span id="L-605"><a href="#L-605"><span class="linenos"> 605</span></a> <span class="s2">"SOME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">,</span> +</span><span id="L-606"><a href="#L-606"><span class="linenos"> 606</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">,</span> +</span><span id="L-607"><a href="#L-607"><span class="linenos"> 607</span></a> <span class="s2">"SORT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> +</span><span id="L-608"><a href="#L-608"><span class="linenos"> 608</span></a> <span class="s2">"TABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="L-609"><a href="#L-609"><span class="linenos"> 609</span></a> <span class="s2">"TABLESAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> +</span><span id="L-610"><a href="#L-610"><span class="linenos"> 610</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="L-611"><a href="#L-611"><span class="linenos"> 611</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="L-612"><a href="#L-612"><span class="linenos"> 612</span></a> <span class="s2">"THEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">,</span> +</span><span id="L-613"><a href="#L-613"><span class="linenos"> 613</span></a> <span class="s2">"TRUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> +</span><span id="L-614"><a href="#L-614"><span class="linenos"> 614</span></a> <span class="s2">"TRAILING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> +</span><span id="L-615"><a href="#L-615"><span class="linenos"> 615</span></a> <span class="s2">"UNBOUNDED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> +</span><span id="L-616"><a href="#L-616"><span class="linenos"> 616</span></a> <span class="s2">"UNION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> +</span><span id="L-617"><a href="#L-617"><span class="linenos"> 617</span></a> <span class="s2">"UNLOGGED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">,</span> +</span><span id="L-618"><a href="#L-618"><span class="linenos"> 618</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="L-619"><a href="#L-619"><span class="linenos"> 619</span></a> <span class="s2">"UNPIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> +</span><span id="L-620"><a href="#L-620"><span class="linenos"> 620</span></a> <span class="s2">"UPDATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> +</span><span id="L-621"><a href="#L-621"><span class="linenos"> 621</span></a> <span class="s2">"USE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> +</span><span id="L-622"><a href="#L-622"><span class="linenos"> 622</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">,</span> +</span><span id="L-623"><a href="#L-623"><span class="linenos"> 623</span></a> <span class="s2">"VALUES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> +</span><span id="L-624"><a href="#L-624"><span class="linenos"> 624</span></a> <span class="s2">"VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="L-625"><a href="#L-625"><span class="linenos"> 625</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="L-626"><a href="#L-626"><span class="linenos"> 626</span></a> <span class="s2">"WHEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">,</span> +</span><span id="L-627"><a href="#L-627"><span class="linenos"> 627</span></a> <span class="s2">"WHERE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">,</span> +</span><span id="L-628"><a href="#L-628"><span class="linenos"> 628</span></a> <span class="s2">"WINDOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="L-629"><a href="#L-629"><span class="linenos"> 629</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> +</span><span id="L-630"><a href="#L-630"><span class="linenos"> 630</span></a> <span class="s2">"WITH TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_TIME_ZONE</span><span class="p">,</span> +</span><span id="L-631"><a href="#L-631"><span class="linenos"> 631</span></a> <span class="s2">"WITH LOCAL TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_LOCAL_TIME_ZONE</span><span class="p">,</span> +</span><span id="L-632"><a href="#L-632"><span class="linenos"> 632</span></a> <span class="s2">"WITHIN GROUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">,</span> +</span><span id="L-633"><a href="#L-633"><span class="linenos"> 633</span></a> <span class="s2">"WITHOUT TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITHOUT_TIME_ZONE</span><span class="p">,</span> +</span><span id="L-634"><a href="#L-634"><span class="linenos"> 634</span></a> <span class="s2">"APPLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="L-635"><a href="#L-635"><span class="linenos"> 635</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> +</span><span id="L-636"><a href="#L-636"><span class="linenos"> 636</span></a> <span class="s2">"BOOL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> +</span><span id="L-637"><a href="#L-637"><span class="linenos"> 637</span></a> <span class="s2">"BOOLEAN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> +</span><span id="L-638"><a href="#L-638"><span class="linenos"> 638</span></a> <span class="s2">"BYTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="L-639"><a href="#L-639"><span class="linenos"> 639</span></a> <span class="s2">"TINYINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="L-640"><a href="#L-640"><span class="linenos"> 640</span></a> <span class="s2">"SHORT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-641"><a href="#L-641"><span class="linenos"> 641</span></a> <span class="s2">"SMALLINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-642"><a href="#L-642"><span class="linenos"> 642</span></a> <span class="s2">"INT2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="L-643"><a href="#L-643"><span class="linenos"> 643</span></a> <span class="s2">"INTEGER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="L-644"><a href="#L-644"><span class="linenos"> 644</span></a> <span class="s2">"INT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="L-645"><a href="#L-645"><span class="linenos"> 645</span></a> <span class="s2">"INT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="L-646"><a href="#L-646"><span class="linenos"> 646</span></a> <span class="s2">"LONG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-647"><a href="#L-647"><span class="linenos"> 647</span></a> <span class="s2">"BIGINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-648"><a href="#L-648"><span class="linenos"> 648</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="L-649"><a href="#L-649"><span class="linenos"> 649</span></a> <span class="s2">"DECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-650"><a href="#L-650"><span class="linenos"> 650</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="L-651"><a href="#L-651"><span class="linenos"> 651</span></a> <span class="s2">"NULLABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> +</span><span id="L-652"><a href="#L-652"><span class="linenos"> 652</span></a> <span class="s2">"NUMBER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-653"><a href="#L-653"><span class="linenos"> 653</span></a> <span class="s2">"NUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-654"><a href="#L-654"><span class="linenos"> 654</span></a> <span class="s2">"FIXED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="L-655"><a href="#L-655"><span class="linenos"> 655</span></a> <span class="s2">"REAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="L-656"><a href="#L-656"><span class="linenos"> 656</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="L-657"><a href="#L-657"><span class="linenos"> 657</span></a> <span class="s2">"FLOAT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="L-658"><a href="#L-658"><span class="linenos"> 658</span></a> <span class="s2">"FLOAT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-659"><a href="#L-659"><span class="linenos"> 659</span></a> <span class="s2">"DOUBLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-660"><a href="#L-660"><span class="linenos"> 660</span></a> <span class="s2">"DOUBLE PRECISION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="L-661"><a href="#L-661"><span class="linenos"> 661</span></a> <span class="s2">"JSON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> +</span><span id="L-662"><a href="#L-662"><span class="linenos"> 662</span></a> <span class="s2">"CHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="L-663"><a href="#L-663"><span class="linenos"> 663</span></a> <span class="s2">"NCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="L-664"><a href="#L-664"><span class="linenos"> 664</span></a> <span class="s2">"VARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="L-665"><a href="#L-665"><span class="linenos"> 665</span></a> <span class="s2">"VARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="L-666"><a href="#L-666"><span class="linenos"> 666</span></a> <span class="s2">"NVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="L-667"><a href="#L-667"><span class="linenos"> 667</span></a> <span class="s2">"NVARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="L-668"><a href="#L-668"><span class="linenos"> 668</span></a> <span class="s2">"STR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="L-669"><a href="#L-669"><span class="linenos"> 669</span></a> <span class="s2">"STRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="L-670"><a href="#L-670"><span class="linenos"> 670</span></a> <span class="s2">"TEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="L-671"><a href="#L-671"><span class="linenos"> 671</span></a> <span class="s2">"CLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="L-672"><a href="#L-672"><span class="linenos"> 672</span></a> <span class="s2">"LONGVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="L-673"><a href="#L-673"><span class="linenos"> 673</span></a> <span class="s2">"BINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> +</span><span id="L-674"><a href="#L-674"><span class="linenos"> 674</span></a> <span class="s2">"BLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> +</span><span id="L-675"><a href="#L-675"><span class="linenos"> 675</span></a> <span class="s2">"BYTEA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> +</span><span id="L-676"><a href="#L-676"><span class="linenos"> 676</span></a> <span class="s2">"VARBINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> +</span><span id="L-677"><a href="#L-677"><span class="linenos"> 677</span></a> <span class="s2">"TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="L-678"><a href="#L-678"><span class="linenos"> 678</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="L-679"><a href="#L-679"><span class="linenos"> 679</span></a> <span class="s2">"TIMESTAMPTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="L-680"><a href="#L-680"><span class="linenos"> 680</span></a> <span class="s2">"TIMESTAMPLTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="L-681"><a href="#L-681"><span class="linenos"> 681</span></a> <span class="s2">"DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="L-682"><a href="#L-682"><span class="linenos"> 682</span></a> <span class="s2">"DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="L-683"><a href="#L-683"><span class="linenos"> 683</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> +</span><span id="L-684"><a href="#L-684"><span class="linenos"> 684</span></a> <span class="s2">"STRUCT"</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-685"><a href="#L-685"><span class="linenos"> 685</span></a> <span class="s2">"VARIANT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> +</span><span id="L-686"><a href="#L-686"><span class="linenos"> 686</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">,</span> +</span><span id="L-687"><a href="#L-687"><span class="linenos"> 687</span></a> <span class="s2">"ALTER AGGREGATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-688"><a href="#L-688"><span class="linenos"> 688</span></a> <span class="s2">"ALTER DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-689"><a href="#L-689"><span class="linenos"> 689</span></a> <span class="s2">"ALTER DOMAIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-690"><a href="#L-690"><span class="linenos"> 690</span></a> <span class="s2">"ALTER ROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-691"><a href="#L-691"><span class="linenos"> 691</span></a> <span class="s2">"ALTER RULE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-692"><a href="#L-692"><span class="linenos"> 692</span></a> <span class="s2">"ALTER SEQUENCE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-693"><a href="#L-693"><span class="linenos"> 693</span></a> <span class="s2">"ALTER TYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-694"><a href="#L-694"><span class="linenos"> 694</span></a> <span class="s2">"ALTER USER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-695"><a href="#L-695"><span class="linenos"> 695</span></a> <span class="s2">"ALTER VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-696"><a href="#L-696"><span class="linenos"> 696</span></a> <span class="s2">"ANALYZE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-697"><a href="#L-697"><span class="linenos"> 697</span></a> <span class="s2">"CALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-698"><a href="#L-698"><span class="linenos"> 698</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-699"><a href="#L-699"><span class="linenos"> 699</span></a> <span class="s2">"EXPLAIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-700"><a href="#L-700"><span class="linenos"> 700</span></a> <span class="s2">"OPTIMIZE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-701"><a href="#L-701"><span class="linenos"> 701</span></a> <span class="s2">"PREPARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-702"><a href="#L-702"><span class="linenos"> 702</span></a> <span class="s2">"TRUNCATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-703"><a href="#L-703"><span class="linenos"> 703</span></a> <span class="s2">"VACUUM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-704"><a href="#L-704"><span class="linenos"> 704</span></a> <span class="p">}</span> +</span><span id="L-705"><a href="#L-705"><span class="linenos"> 705</span></a> +</span><span id="L-706"><a href="#L-706"><span class="linenos"> 706</span></a> <span class="n">WHITE_SPACE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-707"><a href="#L-707"><span class="linenos"> 707</span></a> <span class="s2">" "</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> +</span><span id="L-708"><a href="#L-708"><span class="linenos"> 708</span></a> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> +</span><span id="L-709"><a href="#L-709"><span class="linenos"> 709</span></a> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="L-710"><a href="#L-710"><span class="linenos"> 710</span></a> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="L-711"><a href="#L-711"><span class="linenos"> 711</span></a> <span class="s2">"</span><span class="se">\r\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="L-712"><a href="#L-712"><span class="linenos"> 712</span></a> <span class="p">}</span> +</span><span id="L-713"><a href="#L-713"><span class="linenos"> 713</span></a> +</span><span id="L-714"><a href="#L-714"><span class="linenos"> 714</span></a> <span class="n">COMMANDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="L-715"><a href="#L-715"><span class="linenos"> 715</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="L-716"><a href="#L-716"><span class="linenos"> 716</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="L-717"><a href="#L-717"><span class="linenos"> 717</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> +</span><span id="L-718"><a href="#L-718"><span class="linenos"> 718</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="L-719"><a href="#L-719"><span class="linenos"> 719</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="L-720"><a href="#L-720"><span class="linenos"> 720</span></a> <span class="p">}</span> </span><span id="L-721"><a href="#L-721"><span class="linenos"> 721</span></a> -</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="c1"># handle numeric literals like in hive (3L = BIGINT)</span> -</span><span id="L-723"><a href="#L-723"><span class="linenos"> 723</span></a> <span class="n">NUMERIC_LITERALS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="n">ENCODE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> -</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> -</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> <span class="n">KEYWORD_TRIE</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># autofilled</span> -</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> -</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="n">IDENTIFIER_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-722"><a href="#L-722"><span class="linenos"> 722</span></a> <span class="n">COMMAND_PREFIX_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</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-723"><a href="#L-723"><span class="linenos"> 723</span></a> +</span><span id="L-724"><a href="#L-724"><span class="linenos"> 724</span></a> <span class="c1"># handle numeric literals like in hive (3L = BIGINT)</span> +</span><span id="L-725"><a href="#L-725"><span class="linenos"> 725</span></a> <span class="n">NUMERIC_LITERALS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="L-726"><a href="#L-726"><span class="linenos"> 726</span></a> <span class="n">ENCODE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-727"><a href="#L-727"><span class="linenos"> 727</span></a> +</span><span id="L-728"><a href="#L-728"><span class="linenos"> 728</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> +</span><span id="L-729"><a href="#L-729"><span class="linenos"> 729</span></a> <span class="n">KEYWORD_TRIE</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># autofilled</span> </span><span id="L-730"><a href="#L-730"><span class="linenos"> 730</span></a> -</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> <span class="s2">"sql"</span><span class="p">,</span> -</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="s2">"size"</span><span class="p">,</span> -</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="s2">"tokens"</span><span class="p">,</span> -</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="s2">"_start"</span><span class="p">,</span> -</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="s2">"_current"</span><span class="p">,</span> -</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="s2">"_line"</span><span class="p">,</span> -</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> <span class="s2">"_col"</span><span class="p">,</span> -</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="s2">"_comments"</span><span class="p">,</span> -</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> <span class="s2">"_char"</span><span class="p">,</span> -</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="s2">"_end"</span><span class="p">,</span> -</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> <span class="s2">"_peek"</span><span class="p">,</span> -</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="s2">"_prev_token_line"</span><span class="p">,</span> -</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="s2">"_prev_token_comments"</span><span class="p">,</span> -</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="s2">"_prev_token_type"</span><span class="p">,</span> -</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="p">)</span> -</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> -</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> -</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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-760"><a href="#L-760"><span class="linenos"> 760</span></a> -</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-762"><a href="#L-762"><span class="linenos"> 762</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> -</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</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-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> -</span><span id="L-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> -</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> -</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> -</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> -</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> -</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="k">def</span> <span class="nf">_scan</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">until</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> -</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> -</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> -</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">:</span> -</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> <span class="k">break</span> -</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> -</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="n">white_space</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> <span class="n">identifier_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> -</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="k">if</span> <span class="n">white_space</span><span class="p">:</span> -</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="k">if</span> <span class="n">white_space</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> -</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> <span class="c1"># type:ignore</span> -</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_number</span><span class="p">()</span> -</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> <span class="k">elif</span> <span class="n">identifier_end</span><span class="p">:</span> -</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_identifier</span><span class="p">(</span><span class="n">identifier_end</span><span class="p">)</span> -</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_keywords</span><span class="p">()</span> -</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> -</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="k">if</span> <span class="n">until</span> <span class="ow">and</span> <span class="n">until</span><span class="p">():</span> -</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="k">break</span> -</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> -</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="k">def</span> <span class="nf">_chars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="k">if</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> -</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">size</span> -</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> -</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">+=</span> <span class="n">i</span> -</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+=</span> <span class="n">i</span> -</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="c1"># type: ignore</span> -</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</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="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="c1"># type: ignore</span> -</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</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="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="k">else</span> <span class="s2">""</span> <span class="c1"># type: ignore</span> -</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> -</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="nd">@property</span> -</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> <span class="k">def</span> <span class="nf">_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</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="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> -</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> -</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="k">def</span> <span class="nf">_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> -</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="n">token_type</span> <span class="c1"># type: ignore</span> -</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> <span class="n">Token</span><span class="p">(</span> -</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="n">token_type</span><span class="p">,</span> -</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> <span class="k">if</span> <span class="n">text</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">text</span><span class="p">,</span> -</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span><span class="p">,</span> -</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span><span class="p">,</span> -</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">,</span> -</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="p">)</span> -</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="p">)</span> -</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> -</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="c1"># If we have either a semicolon or a begin token before the command's token, we'll parse</span> -</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="c1"># whatever follows the command's token as a string</span> -</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMANDS</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span> -</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="p">):</span> -</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> -</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> -</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">";"</span><span class="p">)</span> -</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[:</span><span class="n">tokens</span><span class="p">]</span> -</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="n">text</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">start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="k">if</span> <span class="n">text</span><span class="p">:</span> -</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> -</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="k">def</span> <span class="nf">_scan_keywords</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="n">word</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="n">chars</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="n">char</span> <span class="o">=</span> <span class="n">chars</span> -</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="n">trie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORD_TRIE</span> -</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> -</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="k">while</span> <span class="n">chars</span><span class="p">:</span> -</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="k">if</span> <span class="n">skip</span><span class="p">:</span> -</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="n">result</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">char</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="c1"># type: ignore</span> +</span><span id="L-731"><a href="#L-731"><span class="linenos"> 731</span></a> <span class="n">IDENTIFIER_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-732"><a href="#L-732"><span class="linenos"> 732</span></a> +</span><span id="L-733"><a href="#L-733"><span class="linenos"> 733</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="L-734"><a href="#L-734"><span class="linenos"> 734</span></a> <span class="s2">"sql"</span><span class="p">,</span> +</span><span id="L-735"><a href="#L-735"><span class="linenos"> 735</span></a> <span class="s2">"size"</span><span class="p">,</span> +</span><span id="L-736"><a href="#L-736"><span class="linenos"> 736</span></a> <span class="s2">"tokens"</span><span class="p">,</span> +</span><span id="L-737"><a href="#L-737"><span class="linenos"> 737</span></a> <span class="s2">"_start"</span><span class="p">,</span> +</span><span id="L-738"><a href="#L-738"><span class="linenos"> 738</span></a> <span class="s2">"_current"</span><span class="p">,</span> +</span><span id="L-739"><a href="#L-739"><span class="linenos"> 739</span></a> <span class="s2">"_line"</span><span class="p">,</span> +</span><span id="L-740"><a href="#L-740"><span class="linenos"> 740</span></a> <span class="s2">"_col"</span><span class="p">,</span> +</span><span id="L-741"><a href="#L-741"><span class="linenos"> 741</span></a> <span class="s2">"_comments"</span><span class="p">,</span> +</span><span id="L-742"><a href="#L-742"><span class="linenos"> 742</span></a> <span class="s2">"_char"</span><span class="p">,</span> +</span><span id="L-743"><a href="#L-743"><span class="linenos"> 743</span></a> <span class="s2">"_end"</span><span class="p">,</span> +</span><span id="L-744"><a href="#L-744"><span class="linenos"> 744</span></a> <span class="s2">"_peek"</span><span class="p">,</span> +</span><span id="L-745"><a href="#L-745"><span class="linenos"> 745</span></a> <span class="s2">"_prev_token_line"</span><span class="p">,</span> +</span><span id="L-746"><a href="#L-746"><span class="linenos"> 746</span></a> <span class="s2">"_prev_token_comments"</span><span class="p">,</span> +</span><span id="L-747"><a href="#L-747"><span class="linenos"> 747</span></a> <span class="s2">"_prev_token_type"</span><span class="p">,</span> +</span><span id="L-748"><a href="#L-748"><span class="linenos"> 748</span></a> <span class="p">)</span> +</span><span id="L-749"><a href="#L-749"><span class="linenos"> 749</span></a> +</span><span id="L-750"><a href="#L-750"><span class="linenos"> 750</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-751"><a href="#L-751"><span class="linenos"> 751</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-752"><a href="#L-752"><span class="linenos"> 752</span></a> +</span><span id="L-753"><a href="#L-753"><span class="linenos"> 753</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-754"><a href="#L-754"><span class="linenos"> 754</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-755"><a href="#L-755"><span class="linenos"> 755</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-756"><a href="#L-756"><span class="linenos"> 756</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-757"><a href="#L-757"><span class="linenos"> 757</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-758"><a href="#L-758"><span class="linenos"> 758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-759"><a href="#L-759"><span class="linenos"> 759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-760"><a href="#L-760"><span class="linenos"> 760</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-761"><a href="#L-761"><span class="linenos"> 761</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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-762"><a href="#L-762"><span class="linenos"> 762</span></a> +</span><span id="L-763"><a href="#L-763"><span class="linenos"> 763</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-764"><a href="#L-764"><span class="linenos"> 764</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-765"><a href="#L-765"><span class="linenos"> 765</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-766"><a href="#L-766"><span class="linenos"> 766</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> +</span><span id="L-767"><a href="#L-767"><span class="linenos"> 767</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</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-768"><a href="#L-768"><span class="linenos"> 768</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-769"><a href="#L-769"><span class="linenos"> 769</span></a> +</span><span id="L-770"><a href="#L-770"><span class="linenos"> 770</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="L-771"><a href="#L-771"><span class="linenos"> 771</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> +</span><span id="L-772"><a href="#L-772"><span class="linenos"> 772</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="L-773"><a href="#L-773"><span class="linenos"> 773</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> +</span><span id="L-774"><a href="#L-774"><span class="linenos"> 774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="L-775"><a href="#L-775"><span class="linenos"> 775</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> +</span><span id="L-776"><a href="#L-776"><span class="linenos"> 776</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> +</span><span id="L-777"><a href="#L-777"><span class="linenos"> 777</span></a> +</span><span id="L-778"><a href="#L-778"><span class="linenos"> 778</span></a> <span class="k">def</span> <span class="nf">_scan</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">until</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-779"><a href="#L-779"><span class="linenos"> 779</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> +</span><span id="L-780"><a href="#L-780"><span class="linenos"> 780</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> +</span><span id="L-781"><a href="#L-781"><span class="linenos"> 781</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-782"><a href="#L-782"><span class="linenos"> 782</span></a> +</span><span id="L-783"><a href="#L-783"><span class="linenos"> 783</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-784"><a href="#L-784"><span class="linenos"> 784</span></a> <span class="k">break</span> +</span><span id="L-785"><a href="#L-785"><span class="linenos"> 785</span></a> +</span><span id="L-786"><a href="#L-786"><span class="linenos"> 786</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="p">:</span> +</span><span id="L-787"><a href="#L-787"><span class="linenos"> 787</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> +</span><span id="L-788"><a href="#L-788"><span class="linenos"> 788</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_number</span><span class="p">()</span> +</span><span id="L-789"><a href="#L-789"><span class="linenos"> 789</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">:</span> +</span><span id="L-790"><a href="#L-790"><span class="linenos"> 790</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> +</span><span id="L-791"><a href="#L-791"><span class="linenos"> 791</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-792"><a href="#L-792"><span class="linenos"> 792</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_keywords</span><span class="p">()</span> +</span><span id="L-793"><a href="#L-793"><span class="linenos"> 793</span></a> +</span><span id="L-794"><a href="#L-794"><span class="linenos"> 794</span></a> <span class="k">if</span> <span class="n">until</span> <span class="ow">and</span> <span class="n">until</span><span class="p">():</span> +</span><span id="L-795"><a href="#L-795"><span class="linenos"> 795</span></a> <span class="k">break</span> +</span><span id="L-796"><a href="#L-796"><span class="linenos"> 796</span></a> +</span><span id="L-797"><a href="#L-797"><span class="linenos"> 797</span></a> <span class="k">def</span> <span class="nf">_chars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-798"><a href="#L-798"><span class="linenos"> 798</span></a> <span class="k">if</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-799"><a href="#L-799"><span class="linenos"> 799</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> +</span><span id="L-800"><a href="#L-800"><span class="linenos"> 800</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> +</span><span id="L-801"><a href="#L-801"><span class="linenos"> 801</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">size</span> +</span><span id="L-802"><a href="#L-802"><span class="linenos"> 802</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="L-803"><a href="#L-803"><span class="linenos"> 803</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="L-804"><a href="#L-804"><span class="linenos"> 804</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="L-805"><a href="#L-805"><span class="linenos"> 805</span></a> +</span><span id="L-806"><a href="#L-806"><span class="linenos"> 806</span></a> <span class="k">def</span> <span class="nf">_line_break</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">char</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-807"><a href="#L-807"><span class="linenos"> 807</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span> <span class="c1"># type: ignore</span> +</span><span id="L-808"><a href="#L-808"><span class="linenos"> 808</span></a> +</span><span id="L-809"><a href="#L-809"><span class="linenos"> 809</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-810"><a href="#L-810"><span class="linenos"> 810</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line_break</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">):</span> +</span><span id="L-811"><a href="#L-811"><span class="linenos"> 811</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_new_line</span><span class="p">()</span> +</span><span id="L-812"><a href="#L-812"><span class="linenos"> 812</span></a> +</span><span id="L-813"><a href="#L-813"><span class="linenos"> 813</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">+=</span> <span class="n">i</span> +</span><span id="L-814"><a href="#L-814"><span class="linenos"> 814</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+=</span> <span class="n">i</span> +</span><span id="L-815"><a href="#L-815"><span class="linenos"> 815</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="c1"># type: ignore</span> +</span><span id="L-816"><a href="#L-816"><span class="linenos"> 816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</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="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="c1"># type: ignore</span> +</span><span id="L-817"><a href="#L-817"><span class="linenos"> 817</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</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="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="k">else</span> <span class="s2">""</span> <span class="c1"># type: ignore</span> +</span><span id="L-818"><a href="#L-818"><span class="linenos"> 818</span></a> +</span><span id="L-819"><a href="#L-819"><span class="linenos"> 819</span></a> <span class="k">def</span> <span class="nf">_set_new_line</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-820"><a href="#L-820"><span class="linenos"> 820</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-821"><a href="#L-821"><span class="linenos"> 821</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-822"><a href="#L-822"><span class="linenos"> 822</span></a> +</span><span id="L-823"><a href="#L-823"><span class="linenos"> 823</span></a> <span class="nd">@property</span> +</span><span id="L-824"><a href="#L-824"><span class="linenos"> 824</span></a> <span class="k">def</span> <span class="nf">_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-825"><a href="#L-825"><span class="linenos"> 825</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> +</span><span id="L-826"><a href="#L-826"><span class="linenos"> 826</span></a> +</span><span id="L-827"><a href="#L-827"><span class="linenos"> 827</span></a> <span class="k">def</span> <span class="nf">_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-828"><a href="#L-828"><span class="linenos"> 828</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="L-829"><a href="#L-829"><span class="linenos"> 829</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> +</span><span id="L-830"><a href="#L-830"><span class="linenos"> 830</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="n">token_type</span> <span class="c1"># type: ignore</span> +</span><span id="L-831"><a href="#L-831"><span class="linenos"> 831</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="L-832"><a href="#L-832"><span class="linenos"> 832</span></a> <span class="n">Token</span><span class="p">(</span> +</span><span id="L-833"><a href="#L-833"><span class="linenos"> 833</span></a> <span class="n">token_type</span><span class="p">,</span> +</span><span id="L-834"><a href="#L-834"><span class="linenos"> 834</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> <span class="k">if</span> <span class="n">text</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">text</span><span class="p">,</span> +</span><span id="L-835"><a href="#L-835"><span class="linenos"> 835</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span><span class="p">,</span> +</span><span id="L-836"><a href="#L-836"><span class="linenos"> 836</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span><span class="p">,</span> +</span><span id="L-837"><a href="#L-837"><span class="linenos"> 837</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">,</span> +</span><span id="L-838"><a href="#L-838"><span class="linenos"> 838</span></a> <span class="p">)</span> +</span><span id="L-839"><a href="#L-839"><span class="linenos"> 839</span></a> <span class="p">)</span> +</span><span id="L-840"><a href="#L-840"><span class="linenos"> 840</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-841"><a href="#L-841"><span class="linenos"> 841</span></a> +</span><span id="L-842"><a href="#L-842"><span class="linenos"> 842</span></a> <span class="c1"># If we have either a semicolon or a begin token before the command's token, we'll parse</span> +</span><span id="L-843"><a href="#L-843"><span class="linenos"> 843</span></a> <span class="c1"># whatever follows the command's token as a string</span> +</span><span id="L-844"><a href="#L-844"><span class="linenos"> 844</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMANDS</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="L-845"><a href="#L-845"><span class="linenos"> 845</span></a> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span> +</span><span id="L-846"><a href="#L-846"><span class="linenos"> 846</span></a> <span class="p">):</span> +</span><span id="L-847"><a href="#L-847"><span class="linenos"> 847</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> +</span><span id="L-848"><a href="#L-848"><span class="linenos"> 848</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> +</span><span id="L-849"><a href="#L-849"><span class="linenos"> 849</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">";"</span><span class="p">)</span> +</span><span id="L-850"><a href="#L-850"><span class="linenos"> 850</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[:</span><span class="n">tokens</span><span class="p">]</span> +</span><span id="L-851"><a href="#L-851"><span class="linenos"> 851</span></a> <span class="n">text</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">start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="L-852"><a href="#L-852"><span class="linenos"> 852</span></a> <span class="k">if</span> <span class="n">text</span><span class="p">:</span> +</span><span id="L-853"><a href="#L-853"><span class="linenos"> 853</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="L-854"><a href="#L-854"><span class="linenos"> 854</span></a> +</span><span id="L-855"><a href="#L-855"><span class="linenos"> 855</span></a> <span class="k">def</span> <span class="nf">_scan_keywords</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-856"><a href="#L-856"><span class="linenos"> 856</span></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-857"><a href="#L-857"><span class="linenos"> 857</span></a> <span class="n">word</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-858"><a href="#L-858"><span class="linenos"> 858</span></a> <span class="n">chars</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="L-859"><a href="#L-859"><span class="linenos"> 859</span></a> <span class="n">char</span> <span class="o">=</span> <span class="n">chars</span> +</span><span id="L-860"><a href="#L-860"><span class="linenos"> 860</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-861"><a href="#L-861"><span class="linenos"> 861</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-862"><a href="#L-862"><span class="linenos"> 862</span></a> <span class="n">trie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORD_TRIE</span> </span><span id="L-863"><a href="#L-863"><span class="linenos"> 863</span></a> -</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="k">break</span> -</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">chars</span> -</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="n">size</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">+</span> <span class="n">size</span> -</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> -</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="n">char</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">end</span><span class="p">]</span> -</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="n">is_space</span> <span class="o">=</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span> -</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> -</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_space</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">prev_space</span><span class="p">:</span> -</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> <span class="k">if</span> <span class="n">is_space</span><span class="p">:</span> -</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">" "</span> -</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="n">chars</span> <span class="o">+=</span> <span class="n">char</span> -</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="n">is_space</span> -</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="n">chars</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> -</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">word</span><span class="p">:</span> -</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> <span class="c1"># type: ignore</span> -</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="k">return</span> -</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> -</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> <span class="k">return</span> -</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> -</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> -</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="k">return</span> -</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_formatted_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> -</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> <span class="k">return</span> -</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_comment</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> -</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> <span class="k">return</span> -</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> -</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">[</span><span class="n">word</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> -</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> -</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="k">def</span> <span class="nf">_scan_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="k">if</span> <span class="n">comment_start</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> -</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="n">comment_start_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> <span class="n">comment_start_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_start</span><span class="p">)</span> -</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="n">comment_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">[</span><span class="n">comment_start</span><span class="p">]</span> <span class="c1"># type: ignore</span> -</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> -</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="k">if</span> <span class="n">comment_end</span><span class="p">:</span> -</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> <span class="n">comment_end_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_end</span><span class="p">)</span> -</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> -</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">comment_end_size</span><span class="p">)</span> <span class="o">!=</span> <span class="n">comment_end</span><span class="p">:</span> -</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-864"><a href="#L-864"><span class="linenos"> 864</span></a> <span class="k">while</span> <span class="n">chars</span><span class="p">:</span> +</span><span id="L-865"><a href="#L-865"><span class="linenos"> 865</span></a> <span class="k">if</span> <span class="n">skip</span><span class="p">:</span> +</span><span id="L-866"><a href="#L-866"><span class="linenos"> 866</span></a> <span class="n">result</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="L-867"><a href="#L-867"><span class="linenos"> 867</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-868"><a href="#L-868"><span class="linenos"> 868</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">char</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="c1"># type: ignore</span> +</span><span id="L-869"><a href="#L-869"><span class="linenos"> 869</span></a> +</span><span id="L-870"><a href="#L-870"><span class="linenos"> 870</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="L-871"><a href="#L-871"><span class="linenos"> 871</span></a> <span class="k">break</span> +</span><span id="L-872"><a href="#L-872"><span class="linenos"> 872</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="L-873"><a href="#L-873"><span class="linenos"> 873</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">chars</span> +</span><span id="L-874"><a href="#L-874"><span class="linenos"> 874</span></a> <span class="n">size</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-875"><a href="#L-875"><span class="linenos"> 875</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">+</span> <span class="n">size</span> +</span><span id="L-876"><a href="#L-876"><span class="linenos"> 876</span></a> +</span><span id="L-877"><a href="#L-877"><span class="linenos"> 877</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="L-878"><a href="#L-878"><span class="linenos"> 878</span></a> <span class="n">char</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">end</span><span class="p">]</span> +</span><span id="L-879"><a href="#L-879"><span class="linenos"> 879</span></a> <span class="n">is_space</span> <span class="o">=</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span> +</span><span id="L-880"><a href="#L-880"><span class="linenos"> 880</span></a> +</span><span id="L-881"><a href="#L-881"><span class="linenos"> 881</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_space</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">prev_space</span><span class="p">:</span> +</span><span id="L-882"><a href="#L-882"><span class="linenos"> 882</span></a> <span class="k">if</span> <span class="n">is_space</span><span class="p">:</span> +</span><span id="L-883"><a href="#L-883"><span class="linenos"> 883</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">" "</span> +</span><span id="L-884"><a href="#L-884"><span class="linenos"> 884</span></a> <span class="n">chars</span> <span class="o">+=</span> <span class="n">char</span> +</span><span id="L-885"><a href="#L-885"><span class="linenos"> 885</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="n">is_space</span> +</span><span id="L-886"><a href="#L-886"><span class="linenos"> 886</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-887"><a href="#L-887"><span class="linenos"> 887</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-888"><a href="#L-888"><span class="linenos"> 888</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-889"><a href="#L-889"><span class="linenos"> 889</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-890"><a href="#L-890"><span class="linenos"> 890</span></a> <span class="n">chars</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-891"><a href="#L-891"><span class="linenos"> 891</span></a> +</span><span id="L-892"><a href="#L-892"><span class="linenos"> 892</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">word</span><span class="p">:</span> +</span><span id="L-893"><a href="#L-893"><span class="linenos"> 893</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="L-894"><a href="#L-894"><span class="linenos"> 894</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> <span class="c1"># type: ignore</span> +</span><span id="L-895"><a href="#L-895"><span class="linenos"> 895</span></a> <span class="k">return</span> +</span><span id="L-896"><a href="#L-896"><span class="linenos"> 896</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> +</span><span id="L-897"><a href="#L-897"><span class="linenos"> 897</span></a> <span class="k">return</span> +</span><span id="L-898"><a href="#L-898"><span class="linenos"> 898</span></a> +</span><span id="L-899"><a href="#L-899"><span class="linenos"> 899</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="L-900"><a href="#L-900"><span class="linenos"> 900</span></a> <span class="k">return</span> +</span><span id="L-901"><a href="#L-901"><span class="linenos"> 901</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_formatted_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="L-902"><a href="#L-902"><span class="linenos"> 902</span></a> <span class="k">return</span> +</span><span id="L-903"><a href="#L-903"><span class="linenos"> 903</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_comment</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="L-904"><a href="#L-904"><span class="linenos"> 904</span></a> <span class="k">return</span> +</span><span id="L-905"><a href="#L-905"><span class="linenos"> 905</span></a> +</span><span id="L-906"><a href="#L-906"><span class="linenos"> 906</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-907"><a href="#L-907"><span class="linenos"> 907</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">[</span><span class="n">word</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> +</span><span id="L-908"><a href="#L-908"><span class="linenos"> 908</span></a> +</span><span id="L-909"><a href="#L-909"><span class="linenos"> 909</span></a> <span class="k">def</span> <span class="nf">_scan_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-910"><a href="#L-910"><span class="linenos"> 910</span></a> <span class="k">if</span> <span class="n">comment_start</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="L-911"><a href="#L-911"><span class="linenos"> 911</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-912"><a href="#L-912"><span class="linenos"> 912</span></a> +</span><span id="L-913"><a href="#L-913"><span class="linenos"> 913</span></a> <span class="n">comment_start_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="L-914"><a href="#L-914"><span class="linenos"> 914</span></a> <span class="n">comment_start_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_start</span><span class="p">)</span> +</span><span id="L-915"><a href="#L-915"><span class="linenos"> 915</span></a> <span class="n">comment_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">[</span><span class="n">comment_start</span><span class="p">]</span> <span class="c1"># type: ignore</span> </span><span id="L-916"><a href="#L-916"><span class="linenos"> 916</span></a> -</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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">_text</span><span class="p">[</span><span class="n">comment_start_size</span> <span class="p">:</span> <span class="o">-</span><span class="n">comment_end_size</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># type: ignore</span> -</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_end_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">)</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="L-917"><a href="#L-917"><span class="linenos"> 917</span></a> <span class="k">if</span> <span class="n">comment_end</span><span class="p">:</span> +</span><span id="L-918"><a href="#L-918"><span class="linenos"> 918</span></a> <span class="n">comment_end_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_end</span><span class="p">)</span> +</span><span id="L-919"><a href="#L-919"><span class="linenos"> 919</span></a> +</span><span id="L-920"><a href="#L-920"><span class="linenos"> 920</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">comment_end_size</span><span class="p">)</span> <span class="o">!=</span> <span class="n">comment_end</span><span class="p">:</span> </span><span id="L-921"><a href="#L-921"><span class="linenos"> 921</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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">_text</span><span class="p">[</span><span class="n">comment_start_size</span><span class="p">:])</span> <span class="c1"># type: ignore</span> -</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> -</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="c1"># Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.</span> -</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="c1"># Multiple consecutive comments are preserved by appending them to the current comments list.</span> -</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="k">if</span> <span class="n">comment_start_line</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span><span class="p">:</span> -</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> -</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-922"><a href="#L-922"><span class="linenos"> 922</span></a> +</span><span id="L-923"><a href="#L-923"><span class="linenos"> 923</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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">_text</span><span class="p">[</span><span class="n">comment_start_size</span> <span class="p">:</span> <span class="o">-</span><span class="n">comment_end_size</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># type: ignore</span> +</span><span id="L-924"><a href="#L-924"><span class="linenos"> 924</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_end_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-925"><a href="#L-925"><span class="linenos"> 925</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-926"><a href="#L-926"><span class="linenos"> 926</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line_break</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">):</span> +</span><span id="L-927"><a href="#L-927"><span class="linenos"> 927</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-928"><a href="#L-928"><span class="linenos"> 928</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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">_text</span><span class="p">[</span><span class="n">comment_start_size</span><span class="p">:])</span> <span class="c1"># type: ignore</span> </span><span id="L-929"><a href="#L-929"><span class="linenos"> 929</span></a> -</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> -</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="k">def</span> <span class="nf">_scan_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> -</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="c1"># type: ignore</span> -</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="k">if</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"B"</span><span class="p">:</span> -</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_bits</span><span class="p">()</span> -</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="k">elif</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"X"</span><span class="p">:</span> -</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_hex</span><span class="p">()</span> -</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> -</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="n">scientific</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> -</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> <span class="c1"># type: ignore</span> -</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"."</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">decimal</span><span class="p">:</span> -</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">scientific</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"E"</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">scientific</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">():</span> <span class="c1"># type: ignore</span> -</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="n">number_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> -</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="n">literal</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">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="c1"># type: ignore</span> -</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> -</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">literal</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> <span class="c1"># type: ignore</span> +</span><span id="L-930"><a href="#L-930"><span class="linenos"> 930</span></a> <span class="c1"># Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.</span> +</span><span id="L-931"><a href="#L-931"><span class="linenos"> 931</span></a> <span class="c1"># Multiple consecutive comments are preserved by appending them to the current comments list.</span> +</span><span id="L-932"><a href="#L-932"><span class="linenos"> 932</span></a> <span class="k">if</span> <span class="n">comment_start_line</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span><span class="p">:</span> +</span><span id="L-933"><a href="#L-933"><span class="linenos"> 933</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> +</span><span id="L-934"><a href="#L-934"><span class="linenos"> 934</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="L-935"><a href="#L-935"><span class="linenos"> 935</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="L-936"><a href="#L-936"><span class="linenos"> 936</span></a> +</span><span id="L-937"><a href="#L-937"><span class="linenos"> 937</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-938"><a href="#L-938"><span class="linenos"> 938</span></a> +</span><span id="L-939"><a href="#L-939"><span class="linenos"> 939</span></a> <span class="k">def</span> <span class="nf">_scan_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-940"><a href="#L-940"><span class="linenos"> 940</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> +</span><span id="L-941"><a href="#L-941"><span class="linenos"> 941</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="c1"># type: ignore</span> +</span><span id="L-942"><a href="#L-942"><span class="linenos"> 942</span></a> <span class="k">if</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"B"</span><span class="p">:</span> +</span><span id="L-943"><a href="#L-943"><span class="linenos"> 943</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_bits</span><span class="p">()</span> +</span><span id="L-944"><a href="#L-944"><span class="linenos"> 944</span></a> <span class="k">elif</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"X"</span><span class="p">:</span> +</span><span id="L-945"><a href="#L-945"><span class="linenos"> 945</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_hex</span><span class="p">()</span> +</span><span id="L-946"><a href="#L-946"><span class="linenos"> 946</span></a> +</span><span id="L-947"><a href="#L-947"><span class="linenos"> 947</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="L-948"><a href="#L-948"><span class="linenos"> 948</span></a> <span class="n">scientific</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="L-949"><a href="#L-949"><span class="linenos"> 949</span></a> +</span><span id="L-950"><a href="#L-950"><span class="linenos"> 950</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-951"><a href="#L-951"><span class="linenos"> 951</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> <span class="c1"># type: ignore</span> +</span><span id="L-952"><a href="#L-952"><span class="linenos"> 952</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-953"><a href="#L-953"><span class="linenos"> 953</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"."</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">decimal</span><span class="p">:</span> +</span><span id="L-954"><a href="#L-954"><span class="linenos"> 954</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="L-955"><a href="#L-955"><span class="linenos"> 955</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-956"><a href="#L-956"><span class="linenos"> 956</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">scientific</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-957"><a href="#L-957"><span class="linenos"> 957</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-958"><a href="#L-958"><span class="linenos"> 958</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-959"><a href="#L-959"><span class="linenos"> 959</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"E"</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">scientific</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="L-960"><a href="#L-960"><span class="linenos"> 960</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="L-961"><a href="#L-961"><span class="linenos"> 961</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-962"><a href="#L-962"><span class="linenos"> 962</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">():</span> <span class="c1"># type: ignore</span> +</span><span id="L-963"><a href="#L-963"><span class="linenos"> 963</span></a> <span class="n">number_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="L-964"><a href="#L-964"><span class="linenos"> 964</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-965"><a href="#L-965"><span class="linenos"> 965</span></a> -</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="k">if</span> <span class="n">token_type</span><span class="p">:</span> -</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> -</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> <span class="s2">"::"</span><span class="p">)</span> -</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">literal</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">IDENTIFIER_CAN_START_WITH_DIGIT</span><span class="p">:</span> -</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="L-966"><a href="#L-966"><span class="linenos"> 966</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="L-967"><a href="#L-967"><span class="linenos"> 967</span></a> <span class="n">literal</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">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="c1"># type: ignore</span> +</span><span id="L-968"><a href="#L-968"><span class="linenos"> 968</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-969"><a href="#L-969"><span class="linenos"> 969</span></a> +</span><span id="L-970"><a href="#L-970"><span class="linenos"> 970</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">literal</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-971"><a href="#L-971"><span class="linenos"> 971</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> <span class="c1"># type: ignore</span> </span><span id="L-972"><a href="#L-972"><span class="linenos"> 972</span></a> -</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> -</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> -</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> -</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="k">def</span> <span class="nf">_scan_bits</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> -</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> -</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> -</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="k">def</span> <span class="nf">_scan_hex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> -</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">16</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> -</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> -</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="k">def</span> <span class="nf">_extract_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="n">char</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="c1"># type: ignore</span> -</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="n">char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> <span class="k">break</span> -</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> -</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> -</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="k">def</span> <span class="nf">_scan_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">quote</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="n">quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">quote</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="k">if</span> <span class="n">quote_end</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-973"><a href="#L-973"><span class="linenos"> 973</span></a> <span class="k">if</span> <span class="n">token_type</span><span class="p">:</span> +</span><span id="L-974"><a href="#L-974"><span class="linenos"> 974</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> +</span><span id="L-975"><a href="#L-975"><span class="linenos"> 975</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> <span class="s2">"::"</span><span class="p">)</span> +</span><span id="L-976"><a href="#L-976"><span class="linenos"> 976</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">literal</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-977"><a href="#L-977"><span class="linenos"> 977</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">IDENTIFIER_CAN_START_WITH_DIGIT</span><span class="p">:</span> +</span><span id="L-978"><a href="#L-978"><span class="linenos"> 978</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="L-979"><a href="#L-979"><span class="linenos"> 979</span></a> +</span><span id="L-980"><a href="#L-980"><span class="linenos"> 980</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> +</span><span id="L-981"><a href="#L-981"><span class="linenos"> 981</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> +</span><span id="L-982"><a href="#L-982"><span class="linenos"> 982</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-983"><a href="#L-983"><span class="linenos"> 983</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="L-984"><a href="#L-984"><span class="linenos"> 984</span></a> +</span><span id="L-985"><a href="#L-985"><span class="linenos"> 985</span></a> <span class="k">def</span> <span class="nf">_scan_bits</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-986"><a href="#L-986"><span class="linenos"> 986</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-987"><a href="#L-987"><span class="linenos"> 987</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> +</span><span id="L-988"><a href="#L-988"><span class="linenos"> 988</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-989"><a href="#L-989"><span class="linenos"> 989</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-990"><a href="#L-990"><span class="linenos"> 990</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="L-991"><a href="#L-991"><span class="linenos"> 991</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> +</span><span id="L-992"><a href="#L-992"><span class="linenos"> 992</span></a> +</span><span id="L-993"><a href="#L-993"><span class="linenos"> 993</span></a> <span class="k">def</span> <span class="nf">_scan_hex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-994"><a href="#L-994"><span class="linenos"> 994</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-995"><a href="#L-995"><span class="linenos"> 995</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> +</span><span id="L-996"><a href="#L-996"><span class="linenos"> 996</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-997"><a href="#L-997"><span class="linenos"> 997</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">16</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-998"><a href="#L-998"><span class="linenos"> 998</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="L-999"><a href="#L-999"><span class="linenos"> 999</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> +</span><span id="L-1000"><a href="#L-1000"><span class="linenos">1000</span></a> +</span><span id="L-1001"><a href="#L-1001"><span class="linenos">1001</span></a> <span class="k">def</span> <span class="nf">_extract_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1002"><a href="#L-1002"><span class="linenos">1002</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1003"><a href="#L-1003"><span class="linenos">1003</span></a> <span class="n">char</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="c1"># type: ignore</span> +</span><span id="L-1004"><a href="#L-1004"><span class="linenos">1004</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="n">char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="L-1005"><a href="#L-1005"><span class="linenos">1005</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1006"><a href="#L-1006"><span class="linenos">1006</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1007"><a href="#L-1007"><span class="linenos">1007</span></a> <span class="k">break</span> </span><span id="L-1008"><a href="#L-1008"><span class="linenos">1008</span></a> -</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">quote</span><span class="p">))</span> -</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">quote_end</span><span class="p">)</span> -</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span> <span class="k">else</span> <span class="n">text</span> <span class="c1"># type: ignore</span> -</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL</span> <span class="k">if</span> <span class="n">quote</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"N"</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> -</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> <span class="c1"># X'1234, b'0110', E'\\\\\' etc.</span> -</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="k">def</span> <span class="nf">_scan_formatted_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="k">if</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_HEX_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_HEX_STRINGS</span> <span class="c1"># type: ignore</span> -</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span> -</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">16</span> -</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> <span class="k">elif</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BIT_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BIT_STRINGS</span> <span class="c1"># type: ignore</span> -</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span> -</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">2</span> -</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="k">elif</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span> <span class="c1"># type: ignore</span> -</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span> -</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="n">base</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> -</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">string_start</span><span class="p">))</span> -</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="n">string_end</span> <span class="o">=</span> <span class="n">delimiters</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">string_start</span><span class="p">)</span> -</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">string_end</span><span class="p">)</span> -</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> -</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="k">if</span> <span class="n">base</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">,</span><span class="w"> </span><span class="n">base</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="k">except</span><span class="p">:</span> -</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> -</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="sa">f</span><span class="s2">"Numeric string contains invalid characters from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span> -</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="p">)</span> -</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> -</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> -</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="k">def</span> <span class="nf">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">identifier_end</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="n">identifier_end_is_escape</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span> -</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> -</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> -</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> -</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="n">identifier_end</span><span class="p">:</span> -</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> <span class="k">if</span> <span class="n">identifier_end_is_escape</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">identifier_end</span><span class="p">:</span> -</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">identifier_end</span> <span class="c1"># type: ignore</span> -</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="k">continue</span> +</span><span id="L-1009"><a href="#L-1009"><span class="linenos">1009</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="L-1010"><a href="#L-1010"><span class="linenos">1010</span></a> +</span><span id="L-1011"><a href="#L-1011"><span class="linenos">1011</span></a> <span class="k">def</span> <span class="nf">_scan_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">quote</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-1012"><a href="#L-1012"><span class="linenos">1012</span></a> <span class="n">quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">quote</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="L-1013"><a href="#L-1013"><span class="linenos">1013</span></a> <span class="k">if</span> <span class="n">quote_end</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1014"><a href="#L-1014"><span class="linenos">1014</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-1015"><a href="#L-1015"><span class="linenos">1015</span></a> +</span><span id="L-1016"><a href="#L-1016"><span class="linenos">1016</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">quote</span><span class="p">))</span> +</span><span id="L-1017"><a href="#L-1017"><span class="linenos">1017</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">quote_end</span><span class="p">)</span> +</span><span id="L-1018"><a href="#L-1018"><span class="linenos">1018</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span> <span class="k">else</span> <span class="n">text</span> <span class="c1"># type: ignore</span> +</span><span id="L-1019"><a href="#L-1019"><span class="linenos">1019</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL</span> <span class="k">if</span> <span class="n">quote</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"N"</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="L-1020"><a href="#L-1020"><span class="linenos">1020</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-1021"><a href="#L-1021"><span class="linenos">1021</span></a> +</span><span id="L-1022"><a href="#L-1022"><span class="linenos">1022</span></a> <span class="c1"># X'1234, b'0110', E'\\\\\' etc.</span> +</span><span id="L-1023"><a href="#L-1023"><span class="linenos">1023</span></a> <span class="k">def</span> <span class="nf">_scan_formatted_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="L-1024"><a href="#L-1024"><span class="linenos">1024</span></a> <span class="k">if</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_HEX_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="L-1025"><a href="#L-1025"><span class="linenos">1025</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_HEX_STRINGS</span> <span class="c1"># type: ignore</span> +</span><span id="L-1026"><a href="#L-1026"><span class="linenos">1026</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span> +</span><span id="L-1027"><a href="#L-1027"><span class="linenos">1027</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">16</span> +</span><span id="L-1028"><a href="#L-1028"><span class="linenos">1028</span></a> <span class="k">elif</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BIT_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="L-1029"><a href="#L-1029"><span class="linenos">1029</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BIT_STRINGS</span> <span class="c1"># type: ignore</span> +</span><span id="L-1030"><a href="#L-1030"><span class="linenos">1030</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span> +</span><span id="L-1031"><a href="#L-1031"><span class="linenos">1031</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">2</span> +</span><span id="L-1032"><a href="#L-1032"><span class="linenos">1032</span></a> <span class="k">elif</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="L-1033"><a href="#L-1033"><span class="linenos">1033</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span> <span class="c1"># type: ignore</span> +</span><span id="L-1034"><a href="#L-1034"><span class="linenos">1034</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span> +</span><span id="L-1035"><a href="#L-1035"><span class="linenos">1035</span></a> <span class="n">base</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="L-1036"><a href="#L-1036"><span class="linenos">1036</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1037"><a href="#L-1037"><span class="linenos">1037</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="L-1038"><a href="#L-1038"><span class="linenos">1038</span></a> +</span><span id="L-1039"><a href="#L-1039"><span class="linenos">1039</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">string_start</span><span class="p">))</span> +</span><span id="L-1040"><a href="#L-1040"><span class="linenos">1040</span></a> <span class="n">string_end</span> <span class="o">=</span> <span class="n">delimiters</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">string_start</span><span class="p">)</span> +</span><span id="L-1041"><a href="#L-1041"><span class="linenos">1041</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">string_end</span><span class="p">)</span> +</span><span id="L-1042"><a href="#L-1042"><span class="linenos">1042</span></a> +</span><span id="L-1043"><a href="#L-1043"><span class="linenos">1043</span></a> <span class="k">if</span> <span class="n">base</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1044"><a href="#L-1044"><span class="linenos">1044</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="L-1045"><a href="#L-1045"><span class="linenos">1045</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1046"><a href="#L-1046"><span class="linenos">1046</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="L-1047"><a href="#L-1047"><span class="linenos">1047</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">,</span><span class="w"> </span><span class="n">base</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1048"><a href="#L-1048"><span class="linenos">1048</span></a> <span class="k">except</span><span class="p">:</span> +</span><span id="L-1049"><a href="#L-1049"><span class="linenos">1049</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> +</span><span id="L-1050"><a href="#L-1050"><span class="linenos">1050</span></a> <span class="sa">f</span><span class="s2">"Numeric string contains invalid characters from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span> +</span><span id="L-1051"><a href="#L-1051"><span class="linenos">1051</span></a> <span class="p">)</span> +</span><span id="L-1052"><a href="#L-1052"><span class="linenos">1052</span></a> +</span><span id="L-1053"><a href="#L-1053"><span class="linenos">1053</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="L-1054"><a href="#L-1054"><span class="linenos">1054</span></a> +</span><span id="L-1055"><a href="#L-1055"><span class="linenos">1055</span></a> <span class="k">def</span> <span class="nf">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">identifier_end</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1056"><a href="#L-1056"><span class="linenos">1056</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1057"><a href="#L-1057"><span class="linenos">1057</span></a> <span class="n">identifier_end_is_escape</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span> +</span><span id="L-1058"><a href="#L-1058"><span class="linenos">1058</span></a> +</span><span id="L-1059"><a href="#L-1059"><span class="linenos">1059</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1060"><a href="#L-1060"><span class="linenos">1060</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> +</span><span id="L-1061"><a href="#L-1061"><span class="linenos">1061</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="L-1062"><a href="#L-1062"><span class="linenos">1062</span></a> -</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> <span class="k">break</span> -</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> -</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> -</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> -</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> -</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> <span class="k">def</span> <span class="nf">_scan_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> <span class="n">char</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="c1"># type: ignore</span> -</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="n">char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> <span class="k">break</span> -</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span> -</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> -</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> -</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> -</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="p">)</span> -</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> -</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="k">def</span> <span class="nf">_extract_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">delimiter</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="n">delim_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">delimiter</span><span class="p">)</span> -</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> -</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> -</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="p">):</span> -</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> -</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="c1"># type: ignore</span> -</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="c1"># type: ignore</span> -</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> -</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+</span> <span class="mi">1</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> -</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_current</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">delim_size</span><span class="p">)</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> -</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">delim_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="k">break</span> -</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> -</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> -</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> -</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> -</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="L-1063"><a href="#L-1063"><span class="linenos">1063</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1064"><a href="#L-1064"><span class="linenos">1064</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="n">identifier_end</span><span class="p">:</span> +</span><span id="L-1065"><a href="#L-1065"><span class="linenos">1065</span></a> <span class="k">if</span> <span class="n">identifier_end_is_escape</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">identifier_end</span><span class="p">:</span> +</span><span id="L-1066"><a href="#L-1066"><span class="linenos">1066</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">identifier_end</span> <span class="c1"># type: ignore</span> +</span><span id="L-1067"><a href="#L-1067"><span class="linenos">1067</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1068"><a href="#L-1068"><span class="linenos">1068</span></a> <span class="k">continue</span> +</span><span id="L-1069"><a href="#L-1069"><span class="linenos">1069</span></a> +</span><span id="L-1070"><a href="#L-1070"><span class="linenos">1070</span></a> <span class="k">break</span> +</span><span id="L-1071"><a href="#L-1071"><span class="linenos">1071</span></a> +</span><span id="L-1072"><a href="#L-1072"><span class="linenos">1072</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> +</span><span id="L-1073"><a href="#L-1073"><span class="linenos">1073</span></a> +</span><span id="L-1074"><a href="#L-1074"><span class="linenos">1074</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="L-1075"><a href="#L-1075"><span class="linenos">1075</span></a> +</span><span id="L-1076"><a href="#L-1076"><span class="linenos">1076</span></a> <span class="k">def</span> <span class="nf">_scan_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="L-1077"><a href="#L-1077"><span class="linenos">1077</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1078"><a href="#L-1078"><span class="linenos">1078</span></a> <span class="n">char</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="c1"># type: ignore</span> +</span><span id="L-1079"><a href="#L-1079"><span class="linenos">1079</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="n">char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="L-1080"><a href="#L-1080"><span class="linenos">1080</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1081"><a href="#L-1081"><span class="linenos">1081</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1082"><a href="#L-1082"><span class="linenos">1082</span></a> <span class="k">break</span> +</span><span id="L-1083"><a href="#L-1083"><span class="linenos">1083</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span> +</span><span id="L-1084"><a href="#L-1084"><span class="linenos">1084</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> +</span><span id="L-1085"><a href="#L-1085"><span class="linenos">1085</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> +</span><span id="L-1086"><a href="#L-1086"><span class="linenos">1086</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="L-1087"><a href="#L-1087"><span class="linenos">1087</span></a> <span class="p">)</span> +</span><span id="L-1088"><a href="#L-1088"><span class="linenos">1088</span></a> +</span><span id="L-1089"><a href="#L-1089"><span class="linenos">1089</span></a> <span class="k">def</span> <span class="nf">_extract_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">delimiter</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="L-1090"><a href="#L-1090"><span class="linenos">1090</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="L-1091"><a href="#L-1091"><span class="linenos">1091</span></a> <span class="n">delim_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">delimiter</span><span class="p">)</span> +</span><span id="L-1092"><a href="#L-1092"><span class="linenos">1092</span></a> +</span><span id="L-1093"><a href="#L-1093"><span class="linenos">1093</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="L-1094"><a href="#L-1094"><span class="linenos">1094</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="L-1095"><a href="#L-1095"><span class="linenos">1095</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> +</span><span id="L-1096"><a href="#L-1096"><span class="linenos">1096</span></a> <span class="p">):</span> +</span><span id="L-1097"><a href="#L-1097"><span class="linenos">1097</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> +</span><span id="L-1098"><a href="#L-1098"><span class="linenos">1098</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="c1"># type: ignore</span> +</span><span id="L-1099"><a href="#L-1099"><span class="linenos">1099</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1100"><a href="#L-1100"><span class="linenos">1100</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="c1"># type: ignore</span> +</span><span id="L-1101"><a href="#L-1101"><span class="linenos">1101</span></a> +</span><span id="L-1102"><a href="#L-1102"><span class="linenos">1102</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+</span> <span class="mi">1</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="L-1103"><a href="#L-1103"><span class="linenos">1103</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> +</span><span id="L-1104"><a href="#L-1104"><span class="linenos">1104</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1105"><a href="#L-1105"><span class="linenos">1105</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_current</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1106"><a href="#L-1106"><span class="linenos">1106</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="L-1107"><a href="#L-1107"><span class="linenos">1107</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">delim_size</span><span class="p">)</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> +</span><span id="L-1108"><a href="#L-1108"><span class="linenos">1108</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="L-1109"><a href="#L-1109"><span class="linenos">1109</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">delim_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="L-1110"><a href="#L-1110"><span class="linenos">1110</span></a> <span class="k">break</span> +</span><span id="L-1111"><a href="#L-1111"><span class="linenos">1111</span></a> +</span><span id="L-1112"><a href="#L-1112"><span class="linenos">1112</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> +</span><span id="L-1113"><a href="#L-1113"><span class="linenos">1113</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="L-1114"><a href="#L-1114"><span class="linenos">1114</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> +</span><span id="L-1115"><a href="#L-1115"><span class="linenos">1115</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="L-1116"><a href="#L-1116"><span class="linenos">1116</span></a> +</span><span id="L-1117"><a href="#L-1117"><span class="linenos">1117</span></a> <span class="k">return</span> <span class="n">text</span> </span></pre></div> @@ -2177,189 +2184,190 @@ </span><span id="TokenType-116"><a href="#TokenType-116"><span class="linenos">116</span></a> <span class="n">IMAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="TokenType-117"><a href="#TokenType-117"><span class="linenos">117</span></a> <span class="n">VARIANT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span><span id="TokenType-118"><a href="#TokenType-118"><span class="linenos">118</span></a> <span class="n">OBJECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-119"><a href="#TokenType-119"><span class="linenos">119</span></a> -</span><span id="TokenType-120"><a href="#TokenType-120"><span class="linenos">120</span></a> <span class="c1"># keywords</span> -</span><span id="TokenType-121"><a href="#TokenType-121"><span class="linenos">121</span></a> <span class="n">ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-122"><a href="#TokenType-122"><span class="linenos">122</span></a> <span class="n">ALTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-123"><a href="#TokenType-123"><span class="linenos">123</span></a> <span class="n">ALWAYS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-124"><a href="#TokenType-124"><span class="linenos">124</span></a> <span class="n">ALL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-125"><a href="#TokenType-125"><span class="linenos">125</span></a> <span class="n">ANTI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-126"><a href="#TokenType-126"><span class="linenos">126</span></a> <span class="n">ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-127"><a href="#TokenType-127"><span class="linenos">127</span></a> <span class="n">APPLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-128"><a href="#TokenType-128"><span class="linenos">128</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-129"><a href="#TokenType-129"><span class="linenos">129</span></a> <span class="n">ASC</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-130"><a href="#TokenType-130"><span class="linenos">130</span></a> <span class="n">ASOF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-131"><a href="#TokenType-131"><span class="linenos">131</span></a> <span class="n">AT_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-132"><a href="#TokenType-132"><span class="linenos">132</span></a> <span class="n">AUTO_INCREMENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-133"><a href="#TokenType-133"><span class="linenos">133</span></a> <span class="n">BEGIN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-134"><a href="#TokenType-134"><span class="linenos">134</span></a> <span class="n">BETWEEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-135"><a href="#TokenType-135"><span class="linenos">135</span></a> <span class="n">BOTH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-136"><a href="#TokenType-136"><span class="linenos">136</span></a> <span class="n">BUCKET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-137"><a href="#TokenType-137"><span class="linenos">137</span></a> <span class="n">BY_DEFAULT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-138"><a href="#TokenType-138"><span class="linenos">138</span></a> <span class="n">CACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-139"><a href="#TokenType-139"><span class="linenos">139</span></a> <span class="n">CASCADE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-140"><a href="#TokenType-140"><span class="linenos">140</span></a> <span class="n">CASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-141"><a href="#TokenType-141"><span class="linenos">141</span></a> <span class="n">CHARACTER_SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-142"><a href="#TokenType-142"><span class="linenos">142</span></a> <span class="n">CLUSTER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-143"><a href="#TokenType-143"><span class="linenos">143</span></a> <span class="n">COLLATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-144"><a href="#TokenType-144"><span class="linenos">144</span></a> <span class="n">COMMAND</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-145"><a href="#TokenType-145"><span class="linenos">145</span></a> <span class="n">COMMENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-146"><a href="#TokenType-146"><span class="linenos">146</span></a> <span class="n">COMMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-147"><a href="#TokenType-147"><span class="linenos">147</span></a> <span class="n">COMPOUND</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-148"><a href="#TokenType-148"><span class="linenos">148</span></a> <span class="n">CONSTRAINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-149"><a href="#TokenType-149"><span class="linenos">149</span></a> <span class="n">CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-150"><a href="#TokenType-150"><span class="linenos">150</span></a> <span class="n">CROSS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-151"><a href="#TokenType-151"><span class="linenos">151</span></a> <span class="n">CUBE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-152"><a href="#TokenType-152"><span class="linenos">152</span></a> <span class="n">CURRENT_DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-153"><a href="#TokenType-153"><span class="linenos">153</span></a> <span class="n">CURRENT_DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-154"><a href="#TokenType-154"><span class="linenos">154</span></a> <span class="n">CURRENT_ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-155"><a href="#TokenType-155"><span class="linenos">155</span></a> <span class="n">CURRENT_TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-156"><a href="#TokenType-156"><span class="linenos">156</span></a> <span class="n">CURRENT_TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-157"><a href="#TokenType-157"><span class="linenos">157</span></a> <span class="n">DEFAULT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-158"><a href="#TokenType-158"><span class="linenos">158</span></a> <span class="n">DELETE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-159"><a href="#TokenType-159"><span class="linenos">159</span></a> <span class="n">DESC</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-160"><a href="#TokenType-160"><span class="linenos">160</span></a> <span class="n">DESCRIBE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-161"><a href="#TokenType-161"><span class="linenos">161</span></a> <span class="n">DISTINCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-162"><a href="#TokenType-162"><span class="linenos">162</span></a> <span class="n">DISTINCT_FROM</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-163"><a href="#TokenType-163"><span class="linenos">163</span></a> <span class="n">DISTRIBUTE_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-164"><a href="#TokenType-164"><span class="linenos">164</span></a> <span class="n">DIV</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-165"><a href="#TokenType-165"><span class="linenos">165</span></a> <span class="n">DROP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-166"><a href="#TokenType-166"><span class="linenos">166</span></a> <span class="n">ELSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-167"><a href="#TokenType-167"><span class="linenos">167</span></a> <span class="n">END</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-168"><a href="#TokenType-168"><span class="linenos">168</span></a> <span class="n">ESCAPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-169"><a href="#TokenType-169"><span class="linenos">169</span></a> <span class="n">EXCEPT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-170"><a href="#TokenType-170"><span class="linenos">170</span></a> <span class="n">EXECUTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-171"><a href="#TokenType-171"><span class="linenos">171</span></a> <span class="n">EXISTS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-172"><a href="#TokenType-172"><span class="linenos">172</span></a> <span class="n">FALSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-173"><a href="#TokenType-173"><span class="linenos">173</span></a> <span class="n">FETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-174"><a href="#TokenType-174"><span class="linenos">174</span></a> <span class="n">FILTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-175"><a href="#TokenType-175"><span class="linenos">175</span></a> <span class="n">FINAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-176"><a href="#TokenType-176"><span class="linenos">176</span></a> <span class="n">FIRST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-177"><a href="#TokenType-177"><span class="linenos">177</span></a> <span class="n">FOLLOWING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-178"><a href="#TokenType-178"><span class="linenos">178</span></a> <span class="n">FOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-179"><a href="#TokenType-179"><span class="linenos">179</span></a> <span class="n">FOREIGN_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-180"><a href="#TokenType-180"><span class="linenos">180</span></a> <span class="n">FORMAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-181"><a href="#TokenType-181"><span class="linenos">181</span></a> <span class="n">FROM</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-182"><a href="#TokenType-182"><span class="linenos">182</span></a> <span class="n">FULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-183"><a href="#TokenType-183"><span class="linenos">183</span></a> <span class="n">FUNCTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-184"><a href="#TokenType-184"><span class="linenos">184</span></a> <span class="n">GLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-185"><a href="#TokenType-185"><span class="linenos">185</span></a> <span class="n">GLOBAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-186"><a href="#TokenType-186"><span class="linenos">186</span></a> <span class="n">GROUP_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-187"><a href="#TokenType-187"><span class="linenos">187</span></a> <span class="n">GROUPING_SETS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-188"><a href="#TokenType-188"><span class="linenos">188</span></a> <span class="n">HAVING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-189"><a href="#TokenType-189"><span class="linenos">189</span></a> <span class="n">HINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-190"><a href="#TokenType-190"><span class="linenos">190</span></a> <span class="n">IF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-191"><a href="#TokenType-191"><span class="linenos">191</span></a> <span class="n">IGNORE_NULLS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-192"><a href="#TokenType-192"><span class="linenos">192</span></a> <span class="n">ILIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-193"><a href="#TokenType-193"><span class="linenos">193</span></a> <span class="n">ILIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-194"><a href="#TokenType-194"><span class="linenos">194</span></a> <span class="n">IN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-195"><a href="#TokenType-195"><span class="linenos">195</span></a> <span class="n">INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-196"><a href="#TokenType-196"><span class="linenos">196</span></a> <span class="n">INNER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-197"><a href="#TokenType-197"><span class="linenos">197</span></a> <span class="n">INSERT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-198"><a href="#TokenType-198"><span class="linenos">198</span></a> <span class="n">INTERSECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-199"><a href="#TokenType-199"><span class="linenos">199</span></a> <span class="n">INTERVAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-200"><a href="#TokenType-200"><span class="linenos">200</span></a> <span class="n">INTO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-201"><a href="#TokenType-201"><span class="linenos">201</span></a> <span class="n">INTRODUCER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-202"><a href="#TokenType-202"><span class="linenos">202</span></a> <span class="n">IRLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-203"><a href="#TokenType-203"><span class="linenos">203</span></a> <span class="n">IS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-204"><a href="#TokenType-204"><span class="linenos">204</span></a> <span class="n">ISNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-205"><a href="#TokenType-205"><span class="linenos">205</span></a> <span class="n">JOIN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-206"><a href="#TokenType-206"><span class="linenos">206</span></a> <span class="n">LANGUAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-207"><a href="#TokenType-207"><span class="linenos">207</span></a> <span class="n">LATERAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-208"><a href="#TokenType-208"><span class="linenos">208</span></a> <span class="n">LAZY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-209"><a href="#TokenType-209"><span class="linenos">209</span></a> <span class="n">LEADING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-210"><a href="#TokenType-210"><span class="linenos">210</span></a> <span class="n">LEFT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-211"><a href="#TokenType-211"><span class="linenos">211</span></a> <span class="n">LIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-212"><a href="#TokenType-212"><span class="linenos">212</span></a> <span class="n">LIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-213"><a href="#TokenType-213"><span class="linenos">213</span></a> <span class="n">LIMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-214"><a href="#TokenType-214"><span class="linenos">214</span></a> <span class="n">LOAD_DATA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-215"><a href="#TokenType-215"><span class="linenos">215</span></a> <span class="n">LOCAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-216"><a href="#TokenType-216"><span class="linenos">216</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-217"><a href="#TokenType-217"><span class="linenos">217</span></a> <span class="n">MATCH_RECOGNIZE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-218"><a href="#TokenType-218"><span class="linenos">218</span></a> <span class="n">MATERIALIZED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-219"><a href="#TokenType-219"><span class="linenos">219</span></a> <span class="n">MERGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-220"><a href="#TokenType-220"><span class="linenos">220</span></a> <span class="n">MOD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-221"><a href="#TokenType-221"><span class="linenos">221</span></a> <span class="n">NATURAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-222"><a href="#TokenType-222"><span class="linenos">222</span></a> <span class="n">NEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-223"><a href="#TokenType-223"><span class="linenos">223</span></a> <span class="n">NO_ACTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-224"><a href="#TokenType-224"><span class="linenos">224</span></a> <span class="n">NOTNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-225"><a href="#TokenType-225"><span class="linenos">225</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-226"><a href="#TokenType-226"><span class="linenos">226</span></a> <span class="n">NULLS_FIRST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-227"><a href="#TokenType-227"><span class="linenos">227</span></a> <span class="n">NULLS_LAST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-228"><a href="#TokenType-228"><span class="linenos">228</span></a> <span class="n">OFFSET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-229"><a href="#TokenType-229"><span class="linenos">229</span></a> <span class="n">ON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-230"><a href="#TokenType-230"><span class="linenos">230</span></a> <span class="n">ONLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-231"><a href="#TokenType-231"><span class="linenos">231</span></a> <span class="n">OPTIONS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-232"><a href="#TokenType-232"><span class="linenos">232</span></a> <span class="n">ORDER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-233"><a href="#TokenType-233"><span class="linenos">233</span></a> <span class="n">ORDERED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-234"><a href="#TokenType-234"><span class="linenos">234</span></a> <span class="n">ORDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-235"><a href="#TokenType-235"><span class="linenos">235</span></a> <span class="n">OUTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-236"><a href="#TokenType-236"><span class="linenos">236</span></a> <span class="n">OUT_OF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-237"><a href="#TokenType-237"><span class="linenos">237</span></a> <span class="n">OVER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-238"><a href="#TokenType-238"><span class="linenos">238</span></a> <span class="n">OVERWRITE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-239"><a href="#TokenType-239"><span class="linenos">239</span></a> <span class="n">PARTITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-240"><a href="#TokenType-240"><span class="linenos">240</span></a> <span class="n">PARTITION_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-241"><a href="#TokenType-241"><span class="linenos">241</span></a> <span class="n">PERCENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-242"><a href="#TokenType-242"><span class="linenos">242</span></a> <span class="n">PIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-243"><a href="#TokenType-243"><span class="linenos">243</span></a> <span class="n">PLACEHOLDER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-244"><a href="#TokenType-244"><span class="linenos">244</span></a> <span class="n">PRECEDING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-245"><a href="#TokenType-245"><span class="linenos">245</span></a> <span class="n">PRIMARY_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-246"><a href="#TokenType-246"><span class="linenos">246</span></a> <span class="n">PROCEDURE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-247"><a href="#TokenType-247"><span class="linenos">247</span></a> <span class="n">PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-248"><a href="#TokenType-248"><span class="linenos">248</span></a> <span class="n">PSEUDO_TYPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-249"><a href="#TokenType-249"><span class="linenos">249</span></a> <span class="n">QUALIFY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-250"><a href="#TokenType-250"><span class="linenos">250</span></a> <span class="n">QUOTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-251"><a href="#TokenType-251"><span class="linenos">251</span></a> <span class="n">RANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-252"><a href="#TokenType-252"><span class="linenos">252</span></a> <span class="n">RECURSIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-253"><a href="#TokenType-253"><span class="linenos">253</span></a> <span class="n">REPLACE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-254"><a href="#TokenType-254"><span class="linenos">254</span></a> <span class="n">RESPECT_NULLS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-255"><a href="#TokenType-255"><span class="linenos">255</span></a> <span class="n">RETURNING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-256"><a href="#TokenType-256"><span class="linenos">256</span></a> <span class="n">REFERENCES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-257"><a href="#TokenType-257"><span class="linenos">257</span></a> <span class="n">RIGHT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-258"><a href="#TokenType-258"><span class="linenos">258</span></a> <span class="n">RLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-259"><a href="#TokenType-259"><span class="linenos">259</span></a> <span class="n">ROLLBACK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-260"><a href="#TokenType-260"><span class="linenos">260</span></a> <span class="n">ROLLUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-261"><a href="#TokenType-261"><span class="linenos">261</span></a> <span class="n">ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-262"><a href="#TokenType-262"><span class="linenos">262</span></a> <span class="n">ROWS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-263"><a href="#TokenType-263"><span class="linenos">263</span></a> <span class="n">SEED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-264"><a href="#TokenType-264"><span class="linenos">264</span></a> <span class="n">SELECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-265"><a href="#TokenType-265"><span class="linenos">265</span></a> <span class="n">SEMI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-266"><a href="#TokenType-266"><span class="linenos">266</span></a> <span class="n">SEPARATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-267"><a href="#TokenType-267"><span class="linenos">267</span></a> <span class="n">SERDE_PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-268"><a href="#TokenType-268"><span class="linenos">268</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-269"><a href="#TokenType-269"><span class="linenos">269</span></a> <span class="n">SHOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-270"><a href="#TokenType-270"><span class="linenos">270</span></a> <span class="n">SIMILAR_TO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-271"><a href="#TokenType-271"><span class="linenos">271</span></a> <span class="n">SOME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-272"><a href="#TokenType-272"><span class="linenos">272</span></a> <span class="n">SORTKEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-273"><a href="#TokenType-273"><span class="linenos">273</span></a> <span class="n">SORT_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-274"><a href="#TokenType-274"><span class="linenos">274</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-275"><a href="#TokenType-275"><span class="linenos">275</span></a> <span class="n">TABLE_SAMPLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-276"><a href="#TokenType-276"><span class="linenos">276</span></a> <span class="n">TEMPORARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-277"><a href="#TokenType-277"><span class="linenos">277</span></a> <span class="n">TOP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-278"><a href="#TokenType-278"><span class="linenos">278</span></a> <span class="n">THEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-279"><a href="#TokenType-279"><span class="linenos">279</span></a> <span class="n">TRAILING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-280"><a href="#TokenType-280"><span class="linenos">280</span></a> <span class="n">TRUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-281"><a href="#TokenType-281"><span class="linenos">281</span></a> <span class="n">UNBOUNDED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-282"><a href="#TokenType-282"><span class="linenos">282</span></a> <span class="n">UNCACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-283"><a href="#TokenType-283"><span class="linenos">283</span></a> <span class="n">UNION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-284"><a href="#TokenType-284"><span class="linenos">284</span></a> <span class="n">UNLOGGED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-285"><a href="#TokenType-285"><span class="linenos">285</span></a> <span class="n">UNNEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-286"><a href="#TokenType-286"><span class="linenos">286</span></a> <span class="n">UNPIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-287"><a href="#TokenType-287"><span class="linenos">287</span></a> <span class="n">UPDATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-288"><a href="#TokenType-288"><span class="linenos">288</span></a> <span class="n">USE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-289"><a href="#TokenType-289"><span class="linenos">289</span></a> <span class="n">USING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-290"><a href="#TokenType-290"><span class="linenos">290</span></a> <span class="n">VALUES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-291"><a href="#TokenType-291"><span class="linenos">291</span></a> <span class="n">VIEW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-292"><a href="#TokenType-292"><span class="linenos">292</span></a> <span class="n">VOLATILE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-293"><a href="#TokenType-293"><span class="linenos">293</span></a> <span class="n">WHEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-294"><a href="#TokenType-294"><span class="linenos">294</span></a> <span class="n">WHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-295"><a href="#TokenType-295"><span class="linenos">295</span></a> <span class="n">WINDOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-296"><a href="#TokenType-296"><span class="linenos">296</span></a> <span class="n">WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-297"><a href="#TokenType-297"><span class="linenos">297</span></a> <span class="n">WITH_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-298"><a href="#TokenType-298"><span class="linenos">298</span></a> <span class="n">WITH_LOCAL_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-299"><a href="#TokenType-299"><span class="linenos">299</span></a> <span class="n">WITHIN_GROUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-300"><a href="#TokenType-300"><span class="linenos">300</span></a> <span class="n">WITHOUT_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> -</span><span id="TokenType-301"><a href="#TokenType-301"><span class="linenos">301</span></a> <span class="n">UNIQUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-119"><a href="#TokenType-119"><span class="linenos">119</span></a> <span class="n">INET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-120"><a href="#TokenType-120"><span class="linenos">120</span></a> +</span><span id="TokenType-121"><a href="#TokenType-121"><span class="linenos">121</span></a> <span class="c1"># keywords</span> +</span><span id="TokenType-122"><a href="#TokenType-122"><span class="linenos">122</span></a> <span class="n">ALIAS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-123"><a href="#TokenType-123"><span class="linenos">123</span></a> <span class="n">ALTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-124"><a href="#TokenType-124"><span class="linenos">124</span></a> <span class="n">ALWAYS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-125"><a href="#TokenType-125"><span class="linenos">125</span></a> <span class="n">ALL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-126"><a href="#TokenType-126"><span class="linenos">126</span></a> <span class="n">ANTI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-127"><a href="#TokenType-127"><span class="linenos">127</span></a> <span class="n">ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-128"><a href="#TokenType-128"><span class="linenos">128</span></a> <span class="n">APPLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-129"><a href="#TokenType-129"><span class="linenos">129</span></a> <span class="n">ARRAY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-130"><a href="#TokenType-130"><span class="linenos">130</span></a> <span class="n">ASC</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-131"><a href="#TokenType-131"><span class="linenos">131</span></a> <span class="n">ASOF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-132"><a href="#TokenType-132"><span class="linenos">132</span></a> <span class="n">AT_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-133"><a href="#TokenType-133"><span class="linenos">133</span></a> <span class="n">AUTO_INCREMENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-134"><a href="#TokenType-134"><span class="linenos">134</span></a> <span class="n">BEGIN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-135"><a href="#TokenType-135"><span class="linenos">135</span></a> <span class="n">BETWEEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-136"><a href="#TokenType-136"><span class="linenos">136</span></a> <span class="n">BOTH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-137"><a href="#TokenType-137"><span class="linenos">137</span></a> <span class="n">BUCKET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-138"><a href="#TokenType-138"><span class="linenos">138</span></a> <span class="n">BY_DEFAULT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-139"><a href="#TokenType-139"><span class="linenos">139</span></a> <span class="n">CACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-140"><a href="#TokenType-140"><span class="linenos">140</span></a> <span class="n">CASCADE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-141"><a href="#TokenType-141"><span class="linenos">141</span></a> <span class="n">CASE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-142"><a href="#TokenType-142"><span class="linenos">142</span></a> <span class="n">CHARACTER_SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-143"><a href="#TokenType-143"><span class="linenos">143</span></a> <span class="n">CLUSTER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-144"><a href="#TokenType-144"><span class="linenos">144</span></a> <span class="n">COLLATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-145"><a href="#TokenType-145"><span class="linenos">145</span></a> <span class="n">COMMAND</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-146"><a href="#TokenType-146"><span class="linenos">146</span></a> <span class="n">COMMENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-147"><a href="#TokenType-147"><span class="linenos">147</span></a> <span class="n">COMMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-148"><a href="#TokenType-148"><span class="linenos">148</span></a> <span class="n">COMPOUND</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-149"><a href="#TokenType-149"><span class="linenos">149</span></a> <span class="n">CONSTRAINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-150"><a href="#TokenType-150"><span class="linenos">150</span></a> <span class="n">CREATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-151"><a href="#TokenType-151"><span class="linenos">151</span></a> <span class="n">CROSS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-152"><a href="#TokenType-152"><span class="linenos">152</span></a> <span class="n">CUBE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-153"><a href="#TokenType-153"><span class="linenos">153</span></a> <span class="n">CURRENT_DATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-154"><a href="#TokenType-154"><span class="linenos">154</span></a> <span class="n">CURRENT_DATETIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-155"><a href="#TokenType-155"><span class="linenos">155</span></a> <span class="n">CURRENT_ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-156"><a href="#TokenType-156"><span class="linenos">156</span></a> <span class="n">CURRENT_TIME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-157"><a href="#TokenType-157"><span class="linenos">157</span></a> <span class="n">CURRENT_TIMESTAMP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-158"><a href="#TokenType-158"><span class="linenos">158</span></a> <span class="n">DEFAULT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-159"><a href="#TokenType-159"><span class="linenos">159</span></a> <span class="n">DELETE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-160"><a href="#TokenType-160"><span class="linenos">160</span></a> <span class="n">DESC</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-161"><a href="#TokenType-161"><span class="linenos">161</span></a> <span class="n">DESCRIBE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-162"><a href="#TokenType-162"><span class="linenos">162</span></a> <span class="n">DISTINCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-163"><a href="#TokenType-163"><span class="linenos">163</span></a> <span class="n">DISTINCT_FROM</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-164"><a href="#TokenType-164"><span class="linenos">164</span></a> <span class="n">DISTRIBUTE_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-165"><a href="#TokenType-165"><span class="linenos">165</span></a> <span class="n">DIV</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-166"><a href="#TokenType-166"><span class="linenos">166</span></a> <span class="n">DROP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-167"><a href="#TokenType-167"><span class="linenos">167</span></a> <span class="n">ELSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-168"><a href="#TokenType-168"><span class="linenos">168</span></a> <span class="n">END</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-169"><a href="#TokenType-169"><span class="linenos">169</span></a> <span class="n">ESCAPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-170"><a href="#TokenType-170"><span class="linenos">170</span></a> <span class="n">EXCEPT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-171"><a href="#TokenType-171"><span class="linenos">171</span></a> <span class="n">EXECUTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-172"><a href="#TokenType-172"><span class="linenos">172</span></a> <span class="n">EXISTS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-173"><a href="#TokenType-173"><span class="linenos">173</span></a> <span class="n">FALSE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-174"><a href="#TokenType-174"><span class="linenos">174</span></a> <span class="n">FETCH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-175"><a href="#TokenType-175"><span class="linenos">175</span></a> <span class="n">FILTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-176"><a href="#TokenType-176"><span class="linenos">176</span></a> <span class="n">FINAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-177"><a href="#TokenType-177"><span class="linenos">177</span></a> <span class="n">FIRST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-178"><a href="#TokenType-178"><span class="linenos">178</span></a> <span class="n">FOLLOWING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-179"><a href="#TokenType-179"><span class="linenos">179</span></a> <span class="n">FOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-180"><a href="#TokenType-180"><span class="linenos">180</span></a> <span class="n">FOREIGN_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-181"><a href="#TokenType-181"><span class="linenos">181</span></a> <span class="n">FORMAT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-182"><a href="#TokenType-182"><span class="linenos">182</span></a> <span class="n">FROM</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-183"><a href="#TokenType-183"><span class="linenos">183</span></a> <span class="n">FULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-184"><a href="#TokenType-184"><span class="linenos">184</span></a> <span class="n">FUNCTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-185"><a href="#TokenType-185"><span class="linenos">185</span></a> <span class="n">GLOB</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-186"><a href="#TokenType-186"><span class="linenos">186</span></a> <span class="n">GLOBAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-187"><a href="#TokenType-187"><span class="linenos">187</span></a> <span class="n">GROUP_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-188"><a href="#TokenType-188"><span class="linenos">188</span></a> <span class="n">GROUPING_SETS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-189"><a href="#TokenType-189"><span class="linenos">189</span></a> <span class="n">HAVING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-190"><a href="#TokenType-190"><span class="linenos">190</span></a> <span class="n">HINT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-191"><a href="#TokenType-191"><span class="linenos">191</span></a> <span class="n">IF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-192"><a href="#TokenType-192"><span class="linenos">192</span></a> <span class="n">IGNORE_NULLS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-193"><a href="#TokenType-193"><span class="linenos">193</span></a> <span class="n">ILIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-194"><a href="#TokenType-194"><span class="linenos">194</span></a> <span class="n">ILIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-195"><a href="#TokenType-195"><span class="linenos">195</span></a> <span class="n">IN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-196"><a href="#TokenType-196"><span class="linenos">196</span></a> <span class="n">INDEX</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-197"><a href="#TokenType-197"><span class="linenos">197</span></a> <span class="n">INNER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-198"><a href="#TokenType-198"><span class="linenos">198</span></a> <span class="n">INSERT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-199"><a href="#TokenType-199"><span class="linenos">199</span></a> <span class="n">INTERSECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-200"><a href="#TokenType-200"><span class="linenos">200</span></a> <span class="n">INTERVAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-201"><a href="#TokenType-201"><span class="linenos">201</span></a> <span class="n">INTO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-202"><a href="#TokenType-202"><span class="linenos">202</span></a> <span class="n">INTRODUCER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-203"><a href="#TokenType-203"><span class="linenos">203</span></a> <span class="n">IRLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-204"><a href="#TokenType-204"><span class="linenos">204</span></a> <span class="n">IS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-205"><a href="#TokenType-205"><span class="linenos">205</span></a> <span class="n">ISNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-206"><a href="#TokenType-206"><span class="linenos">206</span></a> <span class="n">JOIN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-207"><a href="#TokenType-207"><span class="linenos">207</span></a> <span class="n">LANGUAGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-208"><a href="#TokenType-208"><span class="linenos">208</span></a> <span class="n">LATERAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-209"><a href="#TokenType-209"><span class="linenos">209</span></a> <span class="n">LAZY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-210"><a href="#TokenType-210"><span class="linenos">210</span></a> <span class="n">LEADING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-211"><a href="#TokenType-211"><span class="linenos">211</span></a> <span class="n">LEFT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-212"><a href="#TokenType-212"><span class="linenos">212</span></a> <span class="n">LIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-213"><a href="#TokenType-213"><span class="linenos">213</span></a> <span class="n">LIKE_ANY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-214"><a href="#TokenType-214"><span class="linenos">214</span></a> <span class="n">LIMIT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-215"><a href="#TokenType-215"><span class="linenos">215</span></a> <span class="n">LOAD_DATA</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-216"><a href="#TokenType-216"><span class="linenos">216</span></a> <span class="n">LOCAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-217"><a href="#TokenType-217"><span class="linenos">217</span></a> <span class="n">MAP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-218"><a href="#TokenType-218"><span class="linenos">218</span></a> <span class="n">MATCH_RECOGNIZE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-219"><a href="#TokenType-219"><span class="linenos">219</span></a> <span class="n">MATERIALIZED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-220"><a href="#TokenType-220"><span class="linenos">220</span></a> <span class="n">MERGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-221"><a href="#TokenType-221"><span class="linenos">221</span></a> <span class="n">MOD</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-222"><a href="#TokenType-222"><span class="linenos">222</span></a> <span class="n">NATURAL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-223"><a href="#TokenType-223"><span class="linenos">223</span></a> <span class="n">NEXT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-224"><a href="#TokenType-224"><span class="linenos">224</span></a> <span class="n">NO_ACTION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-225"><a href="#TokenType-225"><span class="linenos">225</span></a> <span class="n">NOTNULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-226"><a href="#TokenType-226"><span class="linenos">226</span></a> <span class="n">NULL</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-227"><a href="#TokenType-227"><span class="linenos">227</span></a> <span class="n">NULLS_FIRST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-228"><a href="#TokenType-228"><span class="linenos">228</span></a> <span class="n">NULLS_LAST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-229"><a href="#TokenType-229"><span class="linenos">229</span></a> <span class="n">OFFSET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-230"><a href="#TokenType-230"><span class="linenos">230</span></a> <span class="n">ON</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-231"><a href="#TokenType-231"><span class="linenos">231</span></a> <span class="n">ONLY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-232"><a href="#TokenType-232"><span class="linenos">232</span></a> <span class="n">OPTIONS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-233"><a href="#TokenType-233"><span class="linenos">233</span></a> <span class="n">ORDER_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-234"><a href="#TokenType-234"><span class="linenos">234</span></a> <span class="n">ORDERED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-235"><a href="#TokenType-235"><span class="linenos">235</span></a> <span class="n">ORDINALITY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-236"><a href="#TokenType-236"><span class="linenos">236</span></a> <span class="n">OUTER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-237"><a href="#TokenType-237"><span class="linenos">237</span></a> <span class="n">OUT_OF</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-238"><a href="#TokenType-238"><span class="linenos">238</span></a> <span class="n">OVER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-239"><a href="#TokenType-239"><span class="linenos">239</span></a> <span class="n">OVERWRITE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-240"><a href="#TokenType-240"><span class="linenos">240</span></a> <span class="n">PARTITION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-241"><a href="#TokenType-241"><span class="linenos">241</span></a> <span class="n">PARTITION_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-242"><a href="#TokenType-242"><span class="linenos">242</span></a> <span class="n">PERCENT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-243"><a href="#TokenType-243"><span class="linenos">243</span></a> <span class="n">PIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-244"><a href="#TokenType-244"><span class="linenos">244</span></a> <span class="n">PLACEHOLDER</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-245"><a href="#TokenType-245"><span class="linenos">245</span></a> <span class="n">PRECEDING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-246"><a href="#TokenType-246"><span class="linenos">246</span></a> <span class="n">PRIMARY_KEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-247"><a href="#TokenType-247"><span class="linenos">247</span></a> <span class="n">PROCEDURE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-248"><a href="#TokenType-248"><span class="linenos">248</span></a> <span class="n">PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-249"><a href="#TokenType-249"><span class="linenos">249</span></a> <span class="n">PSEUDO_TYPE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-250"><a href="#TokenType-250"><span class="linenos">250</span></a> <span class="n">QUALIFY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-251"><a href="#TokenType-251"><span class="linenos">251</span></a> <span class="n">QUOTE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-252"><a href="#TokenType-252"><span class="linenos">252</span></a> <span class="n">RANGE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-253"><a href="#TokenType-253"><span class="linenos">253</span></a> <span class="n">RECURSIVE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-254"><a href="#TokenType-254"><span class="linenos">254</span></a> <span class="n">REPLACE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-255"><a href="#TokenType-255"><span class="linenos">255</span></a> <span class="n">RESPECT_NULLS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-256"><a href="#TokenType-256"><span class="linenos">256</span></a> <span class="n">RETURNING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-257"><a href="#TokenType-257"><span class="linenos">257</span></a> <span class="n">REFERENCES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-258"><a href="#TokenType-258"><span class="linenos">258</span></a> <span class="n">RIGHT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-259"><a href="#TokenType-259"><span class="linenos">259</span></a> <span class="n">RLIKE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-260"><a href="#TokenType-260"><span class="linenos">260</span></a> <span class="n">ROLLBACK</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-261"><a href="#TokenType-261"><span class="linenos">261</span></a> <span class="n">ROLLUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-262"><a href="#TokenType-262"><span class="linenos">262</span></a> <span class="n">ROW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-263"><a href="#TokenType-263"><span class="linenos">263</span></a> <span class="n">ROWS</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-264"><a href="#TokenType-264"><span class="linenos">264</span></a> <span class="n">SEED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-265"><a href="#TokenType-265"><span class="linenos">265</span></a> <span class="n">SELECT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-266"><a href="#TokenType-266"><span class="linenos">266</span></a> <span class="n">SEMI</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-267"><a href="#TokenType-267"><span class="linenos">267</span></a> <span class="n">SEPARATOR</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-268"><a href="#TokenType-268"><span class="linenos">268</span></a> <span class="n">SERDE_PROPERTIES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-269"><a href="#TokenType-269"><span class="linenos">269</span></a> <span class="n">SET</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-270"><a href="#TokenType-270"><span class="linenos">270</span></a> <span class="n">SHOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-271"><a href="#TokenType-271"><span class="linenos">271</span></a> <span class="n">SIMILAR_TO</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-272"><a href="#TokenType-272"><span class="linenos">272</span></a> <span class="n">SOME</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-273"><a href="#TokenType-273"><span class="linenos">273</span></a> <span class="n">SORTKEY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-274"><a href="#TokenType-274"><span class="linenos">274</span></a> <span class="n">SORT_BY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-275"><a href="#TokenType-275"><span class="linenos">275</span></a> <span class="n">STRUCT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-276"><a href="#TokenType-276"><span class="linenos">276</span></a> <span class="n">TABLE_SAMPLE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-277"><a href="#TokenType-277"><span class="linenos">277</span></a> <span class="n">TEMPORARY</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-278"><a href="#TokenType-278"><span class="linenos">278</span></a> <span class="n">TOP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-279"><a href="#TokenType-279"><span class="linenos">279</span></a> <span class="n">THEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-280"><a href="#TokenType-280"><span class="linenos">280</span></a> <span class="n">TRAILING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-281"><a href="#TokenType-281"><span class="linenos">281</span></a> <span class="n">TRUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-282"><a href="#TokenType-282"><span class="linenos">282</span></a> <span class="n">UNBOUNDED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-283"><a href="#TokenType-283"><span class="linenos">283</span></a> <span class="n">UNCACHE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-284"><a href="#TokenType-284"><span class="linenos">284</span></a> <span class="n">UNION</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-285"><a href="#TokenType-285"><span class="linenos">285</span></a> <span class="n">UNLOGGED</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-286"><a href="#TokenType-286"><span class="linenos">286</span></a> <span class="n">UNNEST</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-287"><a href="#TokenType-287"><span class="linenos">287</span></a> <span class="n">UNPIVOT</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-288"><a href="#TokenType-288"><span class="linenos">288</span></a> <span class="n">UPDATE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-289"><a href="#TokenType-289"><span class="linenos">289</span></a> <span class="n">USE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-290"><a href="#TokenType-290"><span class="linenos">290</span></a> <span class="n">USING</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-291"><a href="#TokenType-291"><span class="linenos">291</span></a> <span class="n">VALUES</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-292"><a href="#TokenType-292"><span class="linenos">292</span></a> <span class="n">VIEW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-293"><a href="#TokenType-293"><span class="linenos">293</span></a> <span class="n">VOLATILE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-294"><a href="#TokenType-294"><span class="linenos">294</span></a> <span class="n">WHEN</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-295"><a href="#TokenType-295"><span class="linenos">295</span></a> <span class="n">WHERE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-296"><a href="#TokenType-296"><span class="linenos">296</span></a> <span class="n">WINDOW</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-297"><a href="#TokenType-297"><span class="linenos">297</span></a> <span class="n">WITH</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-298"><a href="#TokenType-298"><span class="linenos">298</span></a> <span class="n">WITH_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-299"><a href="#TokenType-299"><span class="linenos">299</span></a> <span class="n">WITH_LOCAL_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-300"><a href="#TokenType-300"><span class="linenos">300</span></a> <span class="n">WITHIN_GROUP</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-301"><a href="#TokenType-301"><span class="linenos">301</span></a> <span class="n">WITHOUT_TIME_ZONE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> +</span><span id="TokenType-302"><a href="#TokenType-302"><span class="linenos">302</span></a> <span class="n">UNIQUE</span> <span class="o">=</span> <span class="n">auto</span><span class="p">()</span> </span></pre></div> @@ -2369,7 +2377,8 @@ <div id="TokenType.L_PAREN" class="classattr"> <div class="attr variable"> - <span class="name">L_PAREN</span><span class="default_value"> = <<a href="#TokenType.L_PAREN">TokenType.L_PAREN</a>: 'L_PAREN'></span> + <span class="name">L_PAREN</span> = +<span class="default_value"><<a href="#TokenType.L_PAREN">TokenType.L_PAREN</a>: 'L_PAREN'></span> </div> @@ -2380,7 +2389,8 @@ </div> <div id="TokenType.R_PAREN" class="classattr"> <div class="attr variable"> - <span class="name">R_PAREN</span><span class="default_value"> = <<a href="#TokenType.R_PAREN">TokenType.R_PAREN</a>: 'R_PAREN'></span> + <span class="name">R_PAREN</span> = +<span class="default_value"><<a href="#TokenType.R_PAREN">TokenType.R_PAREN</a>: 'R_PAREN'></span> </div> @@ -2391,7 +2401,8 @@ </div> <div id="TokenType.L_BRACKET" class="classattr"> <div class="attr variable"> - <span class="name">L_BRACKET</span><span class="default_value"> = <<a href="#TokenType.L_BRACKET">TokenType.L_BRACKET</a>: 'L_BRACKET'></span> + <span class="name">L_BRACKET</span> = +<span class="default_value"><<a href="#TokenType.L_BRACKET">TokenType.L_BRACKET</a>: 'L_BRACKET'></span> </div> @@ -2402,7 +2413,8 @@ </div> <div id="TokenType.R_BRACKET" class="classattr"> <div class="attr variable"> - <span class="name">R_BRACKET</span><span class="default_value"> = <<a href="#TokenType.R_BRACKET">TokenType.R_BRACKET</a>: 'R_BRACKET'></span> + <span class="name">R_BRACKET</span> = +<span class="default_value"><<a href="#TokenType.R_BRACKET">TokenType.R_BRACKET</a>: 'R_BRACKET'></span> </div> @@ -2413,7 +2425,8 @@ </div> <div id="TokenType.L_BRACE" class="classattr"> <div class="attr variable"> - <span class="name">L_BRACE</span><span class="default_value"> = <<a href="#TokenType.L_BRACE">TokenType.L_BRACE</a>: 'L_BRACE'></span> + <span class="name">L_BRACE</span> = +<span class="default_value"><<a href="#TokenType.L_BRACE">TokenType.L_BRACE</a>: 'L_BRACE'></span> </div> @@ -2424,7 +2437,8 @@ </div> <div id="TokenType.R_BRACE" class="classattr"> <div class="attr variable"> - <span class="name">R_BRACE</span><span class="default_value"> = <<a href="#TokenType.R_BRACE">TokenType.R_BRACE</a>: 'R_BRACE'></span> + <span class="name">R_BRACE</span> = +<span class="default_value"><<a href="#TokenType.R_BRACE">TokenType.R_BRACE</a>: 'R_BRACE'></span> </div> @@ -2435,7 +2449,8 @@ </div> <div id="TokenType.COMMA" class="classattr"> <div class="attr variable"> - <span class="name">COMMA</span><span class="default_value"> = <<a href="#TokenType.COMMA">TokenType.COMMA</a>: 'COMMA'></span> + <span class="name">COMMA</span> = +<span class="default_value"><<a href="#TokenType.COMMA">TokenType.COMMA</a>: 'COMMA'></span> </div> @@ -2446,7 +2461,8 @@ </div> <div id="TokenType.DOT" class="classattr"> <div class="attr variable"> - <span class="name">DOT</span><span class="default_value"> = <<a href="#TokenType.DOT">TokenType.DOT</a>: 'DOT'></span> + <span class="name">DOT</span> = +<span class="default_value"><<a href="#TokenType.DOT">TokenType.DOT</a>: 'DOT'></span> </div> @@ -2457,7 +2473,8 @@ </div> <div id="TokenType.DASH" class="classattr"> <div class="attr variable"> - <span class="name">DASH</span><span class="default_value"> = <<a href="#TokenType.DASH">TokenType.DASH</a>: 'DASH'></span> + <span class="name">DASH</span> = +<span class="default_value"><<a href="#TokenType.DASH">TokenType.DASH</a>: 'DASH'></span> </div> @@ -2468,7 +2485,8 @@ </div> <div id="TokenType.PLUS" class="classattr"> <div class="attr variable"> - <span class="name">PLUS</span><span class="default_value"> = <<a href="#TokenType.PLUS">TokenType.PLUS</a>: 'PLUS'></span> + <span class="name">PLUS</span> = +<span class="default_value"><<a href="#TokenType.PLUS">TokenType.PLUS</a>: 'PLUS'></span> </div> @@ -2479,7 +2497,8 @@ </div> <div id="TokenType.COLON" class="classattr"> <div class="attr variable"> - <span class="name">COLON</span><span class="default_value"> = <<a href="#TokenType.COLON">TokenType.COLON</a>: 'COLON'></span> + <span class="name">COLON</span> = +<span class="default_value"><<a href="#TokenType.COLON">TokenType.COLON</a>: 'COLON'></span> </div> @@ -2490,7 +2509,8 @@ </div> <div id="TokenType.DCOLON" class="classattr"> <div class="attr variable"> - <span class="name">DCOLON</span><span class="default_value"> = <<a href="#TokenType.DCOLON">TokenType.DCOLON</a>: 'DCOLON'></span> + <span class="name">DCOLON</span> = +<span class="default_value"><<a href="#TokenType.DCOLON">TokenType.DCOLON</a>: 'DCOLON'></span> </div> @@ -2501,7 +2521,8 @@ </div> <div id="TokenType.SEMICOLON" class="classattr"> <div class="attr variable"> - <span class="name">SEMICOLON</span><span class="default_value"> = <<a href="#TokenType.SEMICOLON">TokenType.SEMICOLON</a>: 'SEMICOLON'></span> + <span class="name">SEMICOLON</span> = +<span class="default_value"><<a href="#TokenType.SEMICOLON">TokenType.SEMICOLON</a>: 'SEMICOLON'></span> </div> @@ -2512,7 +2533,8 @@ </div> <div id="TokenType.STAR" class="classattr"> <div class="attr variable"> - <span class="name">STAR</span><span class="default_value"> = <<a href="#TokenType.STAR">TokenType.STAR</a>: 'STAR'></span> + <span class="name">STAR</span> = +<span class="default_value"><<a href="#TokenType.STAR">TokenType.STAR</a>: 'STAR'></span> </div> @@ -2523,7 +2545,8 @@ </div> <div id="TokenType.BACKSLASH" class="classattr"> <div class="attr variable"> - <span class="name">BACKSLASH</span><span class="default_value"> = <<a href="#TokenType.BACKSLASH">TokenType.BACKSLASH</a>: 'BACKSLASH'></span> + <span class="name">BACKSLASH</span> = +<span class="default_value"><<a href="#TokenType.BACKSLASH">TokenType.BACKSLASH</a>: 'BACKSLASH'></span> </div> @@ -2534,7 +2557,8 @@ </div> <div id="TokenType.SLASH" class="classattr"> <div class="attr variable"> - <span class="name">SLASH</span><span class="default_value"> = <<a href="#TokenType.SLASH">TokenType.SLASH</a>: 'SLASH'></span> + <span class="name">SLASH</span> = +<span class="default_value"><<a href="#TokenType.SLASH">TokenType.SLASH</a>: 'SLASH'></span> </div> @@ -2545,7 +2569,8 @@ </div> <div id="TokenType.LT" class="classattr"> <div class="attr variable"> - <span class="name">LT</span><span class="default_value"> = <<a href="#TokenType.LT">TokenType.LT</a>: 'LT'></span> + <span class="name">LT</span> = +<span class="default_value"><<a href="#TokenType.LT">TokenType.LT</a>: 'LT'></span> </div> @@ -2556,7 +2581,8 @@ </div> <div id="TokenType.LTE" class="classattr"> <div class="attr variable"> - <span class="name">LTE</span><span class="default_value"> = <<a href="#TokenType.LTE">TokenType.LTE</a>: 'LTE'></span> + <span class="name">LTE</span> = +<span class="default_value"><<a href="#TokenType.LTE">TokenType.LTE</a>: 'LTE'></span> </div> @@ -2567,7 +2593,8 @@ </div> <div id="TokenType.GT" class="classattr"> <div class="attr variable"> - <span class="name">GT</span><span class="default_value"> = <<a href="#TokenType.GT">TokenType.GT</a>: 'GT'></span> + <span class="name">GT</span> = +<span class="default_value"><<a href="#TokenType.GT">TokenType.GT</a>: 'GT'></span> </div> @@ -2578,7 +2605,8 @@ </div> <div id="TokenType.GTE" class="classattr"> <div class="attr variable"> - <span class="name">GTE</span><span class="default_value"> = <<a href="#TokenType.GTE">TokenType.GTE</a>: 'GTE'></span> + <span class="name">GTE</span> = +<span class="default_value"><<a href="#TokenType.GTE">TokenType.GTE</a>: 'GTE'></span> </div> @@ -2589,7 +2617,8 @@ </div> <div id="TokenType.NOT" class="classattr"> <div class="attr variable"> - <span class="name">NOT</span><span class="default_value"> = <<a href="#TokenType.NOT">TokenType.NOT</a>: 'NOT'></span> + <span class="name">NOT</span> = +<span class="default_value"><<a href="#TokenType.NOT">TokenType.NOT</a>: 'NOT'></span> </div> @@ -2600,7 +2629,8 @@ </div> <div id="TokenType.EQ" class="classattr"> <div class="attr variable"> - <span class="name">EQ</span><span class="default_value"> = <<a href="#TokenType.EQ">TokenType.EQ</a>: 'EQ'></span> + <span class="name">EQ</span> = +<span class="default_value"><<a href="#TokenType.EQ">TokenType.EQ</a>: 'EQ'></span> </div> @@ -2611,7 +2641,8 @@ </div> <div id="TokenType.NEQ" class="classattr"> <div class="attr variable"> - <span class="name">NEQ</span><span class="default_value"> = <<a href="#TokenType.NEQ">TokenType.NEQ</a>: 'NEQ'></span> + <span class="name">NEQ</span> = +<span class="default_value"><<a href="#TokenType.NEQ">TokenType.NEQ</a>: 'NEQ'></span> </div> @@ -2622,7 +2653,8 @@ </div> <div id="TokenType.NULLSAFE_EQ" class="classattr"> <div class="attr variable"> - <span class="name">NULLSAFE_EQ</span><span class="default_value"> = <<a href="#TokenType.NULLSAFE_EQ">TokenType.NULLSAFE_EQ</a>: 'NULLSAFE_EQ'></span> + <span class="name">NULLSAFE_EQ</span> = +<span class="default_value"><<a href="#TokenType.NULLSAFE_EQ">TokenType.NULLSAFE_EQ</a>: 'NULLSAFE_EQ'></span> </div> @@ -2633,7 +2665,8 @@ </div> <div id="TokenType.AND" class="classattr"> <div class="attr variable"> - <span class="name">AND</span><span class="default_value"> = <<a href="#TokenType.AND">TokenType.AND</a>: 'AND'></span> + <span class="name">AND</span> = +<span class="default_value"><<a href="#TokenType.AND">TokenType.AND</a>: 'AND'></span> </div> @@ -2644,7 +2677,8 @@ </div> <div id="TokenType.OR" class="classattr"> <div class="attr variable"> - <span class="name">OR</span><span class="default_value"> = <<a href="#TokenType.OR">TokenType.OR</a>: 'OR'></span> + <span class="name">OR</span> = +<span class="default_value"><<a href="#TokenType.OR">TokenType.OR</a>: 'OR'></span> </div> @@ -2655,7 +2689,8 @@ </div> <div id="TokenType.AMP" class="classattr"> <div class="attr variable"> - <span class="name">AMP</span><span class="default_value"> = <<a href="#TokenType.AMP">TokenType.AMP</a>: 'AMP'></span> + <span class="name">AMP</span> = +<span class="default_value"><<a href="#TokenType.AMP">TokenType.AMP</a>: 'AMP'></span> </div> @@ -2666,7 +2701,8 @@ </div> <div id="TokenType.DPIPE" class="classattr"> <div class="attr variable"> - <span class="name">DPIPE</span><span class="default_value"> = <<a href="#TokenType.DPIPE">TokenType.DPIPE</a>: 'DPIPE'></span> + <span class="name">DPIPE</span> = +<span class="default_value"><<a href="#TokenType.DPIPE">TokenType.DPIPE</a>: 'DPIPE'></span> </div> @@ -2677,7 +2713,8 @@ </div> <div id="TokenType.PIPE" class="classattr"> <div class="attr variable"> - <span class="name">PIPE</span><span class="default_value"> = <<a href="#TokenType.PIPE">TokenType.PIPE</a>: 'PIPE'></span> + <span class="name">PIPE</span> = +<span class="default_value"><<a href="#TokenType.PIPE">TokenType.PIPE</a>: 'PIPE'></span> </div> @@ -2688,7 +2725,8 @@ </div> <div id="TokenType.CARET" class="classattr"> <div class="attr variable"> - <span class="name">CARET</span><span class="default_value"> = <<a href="#TokenType.CARET">TokenType.CARET</a>: 'CARET'></span> + <span class="name">CARET</span> = +<span class="default_value"><<a href="#TokenType.CARET">TokenType.CARET</a>: 'CARET'></span> </div> @@ -2699,7 +2737,8 @@ </div> <div id="TokenType.TILDA" class="classattr"> <div class="attr variable"> - <span class="name">TILDA</span><span class="default_value"> = <<a href="#TokenType.TILDA">TokenType.TILDA</a>: 'TILDA'></span> + <span class="name">TILDA</span> = +<span class="default_value"><<a href="#TokenType.TILDA">TokenType.TILDA</a>: 'TILDA'></span> </div> @@ -2710,7 +2749,8 @@ </div> <div id="TokenType.ARROW" class="classattr"> <div class="attr variable"> - <span class="name">ARROW</span><span class="default_value"> = <<a href="#TokenType.ARROW">TokenType.ARROW</a>: 'ARROW'></span> + <span class="name">ARROW</span> = +<span class="default_value"><<a href="#TokenType.ARROW">TokenType.ARROW</a>: 'ARROW'></span> </div> @@ -2721,7 +2761,8 @@ </div> <div id="TokenType.DARROW" class="classattr"> <div class="attr variable"> - <span class="name">DARROW</span><span class="default_value"> = <<a href="#TokenType.DARROW">TokenType.DARROW</a>: 'DARROW'></span> + <span class="name">DARROW</span> = +<span class="default_value"><<a href="#TokenType.DARROW">TokenType.DARROW</a>: 'DARROW'></span> </div> @@ -2732,7 +2773,8 @@ </div> <div id="TokenType.FARROW" class="classattr"> <div class="attr variable"> - <span class="name">FARROW</span><span class="default_value"> = <<a href="#TokenType.FARROW">TokenType.FARROW</a>: 'FARROW'></span> + <span class="name">FARROW</span> = +<span class="default_value"><<a href="#TokenType.FARROW">TokenType.FARROW</a>: 'FARROW'></span> </div> @@ -2743,7 +2785,8 @@ </div> <div id="TokenType.HASH" class="classattr"> <div class="attr variable"> - <span class="name">HASH</span><span class="default_value"> = <<a href="#TokenType.HASH">TokenType.HASH</a>: 'HASH'></span> + <span class="name">HASH</span> = +<span class="default_value"><<a href="#TokenType.HASH">TokenType.HASH</a>: 'HASH'></span> </div> @@ -2754,7 +2797,8 @@ </div> <div id="TokenType.HASH_ARROW" class="classattr"> <div class="attr variable"> - <span class="name">HASH_ARROW</span><span class="default_value"> = <<a href="#TokenType.HASH_ARROW">TokenType.HASH_ARROW</a>: 'HASH_ARROW'></span> + <span class="name">HASH_ARROW</span> = +<span class="default_value"><<a href="#TokenType.HASH_ARROW">TokenType.HASH_ARROW</a>: 'HASH_ARROW'></span> </div> @@ -2765,7 +2809,8 @@ </div> <div id="TokenType.DHASH_ARROW" class="classattr"> <div class="attr variable"> - <span class="name">DHASH_ARROW</span><span class="default_value"> = <<a href="#TokenType.DHASH_ARROW">TokenType.DHASH_ARROW</a>: 'DHASH_ARROW'></span> + <span class="name">DHASH_ARROW</span> = +<span class="default_value"><<a href="#TokenType.DHASH_ARROW">TokenType.DHASH_ARROW</a>: 'DHASH_ARROW'></span> </div> @@ -2776,7 +2821,8 @@ </div> <div id="TokenType.LR_ARROW" class="classattr"> <div class="attr variable"> - <span class="name">LR_ARROW</span><span class="default_value"> = <<a href="#TokenType.LR_ARROW">TokenType.LR_ARROW</a>: 'LR_ARROW'></span> + <span class="name">LR_ARROW</span> = +<span class="default_value"><<a href="#TokenType.LR_ARROW">TokenType.LR_ARROW</a>: 'LR_ARROW'></span> </div> @@ -2787,7 +2833,8 @@ </div> <div id="TokenType.DOLLAR" class="classattr"> <div class="attr variable"> - <span class="name">DOLLAR</span><span class="default_value"> = <<a href="#TokenType.DOLLAR">TokenType.DOLLAR</a>: 'DOLLAR'></span> + <span class="name">DOLLAR</span> = +<span class="default_value"><<a href="#TokenType.DOLLAR">TokenType.DOLLAR</a>: 'DOLLAR'></span> </div> @@ -2798,7 +2845,8 @@ </div> <div id="TokenType.PARAMETER" class="classattr"> <div class="attr variable"> - <span class="name">PARAMETER</span><span class="default_value"> = <<a href="#TokenType.PARAMETER">TokenType.PARAMETER</a>: 'PARAMETER'></span> + <span class="name">PARAMETER</span> = +<span class="default_value"><<a href="#TokenType.PARAMETER">TokenType.PARAMETER</a>: 'PARAMETER'></span> </div> @@ -2809,7 +2857,8 @@ </div> <div id="TokenType.SESSION_PARAMETER" class="classattr"> <div class="attr variable"> - <span class="name">SESSION_PARAMETER</span><span class="default_value"> = <<a href="#TokenType.SESSION_PARAMETER">TokenType.SESSION_PARAMETER</a>: 'SESSION_PARAMETER'></span> + <span class="name">SESSION_PARAMETER</span> = +<span class="default_value"><<a href="#TokenType.SESSION_PARAMETER">TokenType.SESSION_PARAMETER</a>: 'SESSION_PARAMETER'></span> </div> @@ -2820,7 +2869,8 @@ </div> <div id="TokenType.NATIONAL" class="classattr"> <div class="attr variable"> - <span class="name">NATIONAL</span><span class="default_value"> = <<a href="#TokenType.NATIONAL">TokenType.NATIONAL</a>: 'NATIONAL'></span> + <span class="name">NATIONAL</span> = +<span class="default_value"><<a href="#TokenType.NATIONAL">TokenType.NATIONAL</a>: 'NATIONAL'></span> </div> @@ -2831,7 +2881,8 @@ </div> <div id="TokenType.BLOCK_START" class="classattr"> <div class="attr variable"> - <span class="name">BLOCK_START</span><span class="default_value"> = <<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'></span> + <span class="name">BLOCK_START</span> = +<span class="default_value"><<a href="#TokenType.BLOCK_START">TokenType.BLOCK_START</a>: 'BLOCK_START'></span> </div> @@ -2842,7 +2893,8 @@ </div> <div id="TokenType.BLOCK_END" class="classattr"> <div class="attr variable"> - <span class="name">BLOCK_END</span><span class="default_value"> = <<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'></span> + <span class="name">BLOCK_END</span> = +<span class="default_value"><<a href="#TokenType.BLOCK_END">TokenType.BLOCK_END</a>: 'BLOCK_END'></span> </div> @@ -2853,7 +2905,8 @@ </div> <div id="TokenType.SPACE" class="classattr"> <div class="attr variable"> - <span class="name">SPACE</span><span class="default_value"> = <<a href="#TokenType.SPACE">TokenType.SPACE</a>: 'SPACE'></span> + <span class="name">SPACE</span> = +<span class="default_value"><<a href="#TokenType.SPACE">TokenType.SPACE</a>: 'SPACE'></span> </div> @@ -2864,7 +2917,8 @@ </div> <div id="TokenType.BREAK" class="classattr"> <div class="attr variable"> - <span class="name">BREAK</span><span class="default_value"> = <<a href="#TokenType.BREAK">TokenType.BREAK</a>: 'BREAK'></span> + <span class="name">BREAK</span> = +<span class="default_value"><<a href="#TokenType.BREAK">TokenType.BREAK</a>: 'BREAK'></span> </div> @@ -2875,7 +2929,8 @@ </div> <div id="TokenType.STRING" class="classattr"> <div class="attr variable"> - <span class="name">STRING</span><span class="default_value"> = <<a href="#TokenType.STRING">TokenType.STRING</a>: 'STRING'></span> + <span class="name">STRING</span> = +<span class="default_value"><<a href="#TokenType.STRING">TokenType.STRING</a>: 'STRING'></span> </div> @@ -2886,7 +2941,8 @@ </div> <div id="TokenType.NUMBER" class="classattr"> <div class="attr variable"> - <span class="name">NUMBER</span><span class="default_value"> = <<a href="#TokenType.NUMBER">TokenType.NUMBER</a>: 'NUMBER'></span> + <span class="name">NUMBER</span> = +<span class="default_value"><<a href="#TokenType.NUMBER">TokenType.NUMBER</a>: 'NUMBER'></span> </div> @@ -2897,7 +2953,8 @@ </div> <div id="TokenType.IDENTIFIER" class="classattr"> <div class="attr variable"> - <span class="name">IDENTIFIER</span><span class="default_value"> = <<a href="#TokenType.IDENTIFIER">TokenType.IDENTIFIER</a>: 'IDENTIFIER'></span> + <span class="name">IDENTIFIER</span> = +<span class="default_value"><<a href="#TokenType.IDENTIFIER">TokenType.IDENTIFIER</a>: 'IDENTIFIER'></span> </div> @@ -2908,7 +2965,8 @@ </div> <div id="TokenType.COLUMN" class="classattr"> <div class="attr variable"> - <span class="name">COLUMN</span><span class="default_value"> = <<a href="#TokenType.COLUMN">TokenType.COLUMN</a>: 'COLUMN'></span> + <span class="name">COLUMN</span> = +<span class="default_value"><<a href="#TokenType.COLUMN">TokenType.COLUMN</a>: 'COLUMN'></span> </div> @@ -2919,7 +2977,8 @@ </div> <div id="TokenType.COLUMN_DEF" class="classattr"> <div class="attr variable"> - <span class="name">COLUMN_DEF</span><span class="default_value"> = <<a href="#TokenType.COLUMN_DEF">TokenType.COLUMN_DEF</a>: 'COLUMN_DEF'></span> + <span class="name">COLUMN_DEF</span> = +<span class="default_value"><<a href="#TokenType.COLUMN_DEF">TokenType.COLUMN_DEF</a>: 'COLUMN_DEF'></span> </div> @@ -2930,7 +2989,8 @@ </div> <div id="TokenType.SCHEMA" class="classattr"> <div class="attr variable"> - <span class="name">SCHEMA</span><span class="default_value"> = <<a href="#TokenType.SCHEMA">TokenType.SCHEMA</a>: 'SCHEMA'></span> + <span class="name">SCHEMA</span> = +<span class="default_value"><<a href="#TokenType.SCHEMA">TokenType.SCHEMA</a>: 'SCHEMA'></span> </div> @@ -2941,7 +3001,8 @@ </div> <div id="TokenType.TABLE" class="classattr"> <div class="attr variable"> - <span class="name">TABLE</span><span class="default_value"> = <<a href="#TokenType.TABLE">TokenType.TABLE</a>: 'TABLE'></span> + <span class="name">TABLE</span> = +<span class="default_value"><<a href="#TokenType.TABLE">TokenType.TABLE</a>: 'TABLE'></span> </div> @@ -2952,7 +3013,8 @@ </div> <div id="TokenType.VAR" class="classattr"> <div class="attr variable"> - <span class="name">VAR</span><span class="default_value"> = <<a href="#TokenType.VAR">TokenType.VAR</a>: 'VAR'></span> + <span class="name">VAR</span> = +<span class="default_value"><<a href="#TokenType.VAR">TokenType.VAR</a>: 'VAR'></span> </div> @@ -2963,7 +3025,8 @@ </div> <div id="TokenType.BIT_STRING" class="classattr"> <div class="attr variable"> - <span class="name">BIT_STRING</span><span class="default_value"> = <<a href="#TokenType.BIT_STRING">TokenType.BIT_STRING</a>: 'BIT_STRING'></span> + <span class="name">BIT_STRING</span> = +<span class="default_value"><<a href="#TokenType.BIT_STRING">TokenType.BIT_STRING</a>: 'BIT_STRING'></span> </div> @@ -2974,7 +3037,8 @@ </div> <div id="TokenType.HEX_STRING" class="classattr"> <div class="attr variable"> - <span class="name">HEX_STRING</span><span class="default_value"> = <<a href="#TokenType.HEX_STRING">TokenType.HEX_STRING</a>: 'HEX_STRING'></span> + <span class="name">HEX_STRING</span> = +<span class="default_value"><<a href="#TokenType.HEX_STRING">TokenType.HEX_STRING</a>: 'HEX_STRING'></span> </div> @@ -2985,7 +3049,8 @@ </div> <div id="TokenType.BYTE_STRING" class="classattr"> <div class="attr variable"> - <span class="name">BYTE_STRING</span><span class="default_value"> = <<a href="#TokenType.BYTE_STRING">TokenType.BYTE_STRING</a>: 'BYTE_STRING'></span> + <span class="name">BYTE_STRING</span> = +<span class="default_value"><<a href="#TokenType.BYTE_STRING">TokenType.BYTE_STRING</a>: 'BYTE_STRING'></span> </div> @@ -2996,7 +3061,8 @@ </div> <div id="TokenType.BOOLEAN" class="classattr"> <div class="attr variable"> - <span class="name">BOOLEAN</span><span class="default_value"> = <<a href="#TokenType.BOOLEAN">TokenType.BOOLEAN</a>: 'BOOLEAN'></span> + <span class="name">BOOLEAN</span> = +<span class="default_value"><<a href="#TokenType.BOOLEAN">TokenType.BOOLEAN</a>: 'BOOLEAN'></span> </div> @@ -3007,7 +3073,8 @@ </div> <div id="TokenType.TINYINT" class="classattr"> <div class="attr variable"> - <span class="name">TINYINT</span><span class="default_value"> = <<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'></span> + <span class="name">TINYINT</span> = +<span class="default_value"><<a href="#TokenType.TINYINT">TokenType.TINYINT</a>: 'TINYINT'></span> </div> @@ -3018,7 +3085,8 @@ </div> <div id="TokenType.SMALLINT" class="classattr"> <div class="attr variable"> - <span class="name">SMALLINT</span><span class="default_value"> = <<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'></span> + <span class="name">SMALLINT</span> = +<span class="default_value"><<a href="#TokenType.SMALLINT">TokenType.SMALLINT</a>: 'SMALLINT'></span> </div> @@ -3029,7 +3097,8 @@ </div> <div id="TokenType.INT" class="classattr"> <div class="attr variable"> - <span class="name">INT</span><span class="default_value"> = <<a href="#TokenType.INT">TokenType.INT</a>: 'INT'></span> + <span class="name">INT</span> = +<span class="default_value"><<a href="#TokenType.INT">TokenType.INT</a>: 'INT'></span> </div> @@ -3040,7 +3109,8 @@ </div> <div id="TokenType.BIGINT" class="classattr"> <div class="attr variable"> - <span class="name">BIGINT</span><span class="default_value"> = <<a href="#TokenType.BIGINT">TokenType.BIGINT</a>: 'BIGINT'></span> + <span class="name">BIGINT</span> = +<span class="default_value"><<a href="#TokenType.BIGINT">TokenType.BIGINT</a>: 'BIGINT'></span> </div> @@ -3051,7 +3121,8 @@ </div> <div id="TokenType.FLOAT" class="classattr"> <div class="attr variable"> - <span class="name">FLOAT</span><span class="default_value"> = <<a href="#TokenType.FLOAT">TokenType.FLOAT</a>: 'FLOAT'></span> + <span class="name">FLOAT</span> = +<span class="default_value"><<a href="#TokenType.FLOAT">TokenType.FLOAT</a>: 'FLOAT'></span> </div> @@ -3062,7 +3133,8 @@ </div> <div id="TokenType.DOUBLE" class="classattr"> <div class="attr variable"> - <span class="name">DOUBLE</span><span class="default_value"> = <<a href="#TokenType.DOUBLE">TokenType.DOUBLE</a>: 'DOUBLE'></span> + <span class="name">DOUBLE</span> = +<span class="default_value"><<a href="#TokenType.DOUBLE">TokenType.DOUBLE</a>: 'DOUBLE'></span> </div> @@ -3073,7 +3145,8 @@ </div> <div id="TokenType.DECIMAL" class="classattr"> <div class="attr variable"> - <span class="name">DECIMAL</span><span class="default_value"> = <<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'></span> + <span class="name">DECIMAL</span> = +<span class="default_value"><<a href="#TokenType.DECIMAL">TokenType.DECIMAL</a>: 'DECIMAL'></span> </div> @@ -3084,7 +3157,8 @@ </div> <div id="TokenType.CHAR" class="classattr"> <div class="attr variable"> - <span class="name">CHAR</span><span class="default_value"> = <<a href="#TokenType.CHAR">TokenType.CHAR</a>: 'CHAR'></span> + <span class="name">CHAR</span> = +<span class="default_value"><<a href="#TokenType.CHAR">TokenType.CHAR</a>: 'CHAR'></span> </div> @@ -3095,7 +3169,8 @@ </div> <div id="TokenType.NCHAR" class="classattr"> <div class="attr variable"> - <span class="name">NCHAR</span><span class="default_value"> = <<a href="#TokenType.NCHAR">TokenType.NCHAR</a>: 'NCHAR'></span> + <span class="name">NCHAR</span> = +<span class="default_value"><<a href="#TokenType.NCHAR">TokenType.NCHAR</a>: 'NCHAR'></span> </div> @@ -3106,7 +3181,8 @@ </div> <div id="TokenType.VARCHAR" class="classattr"> <div class="attr variable"> - <span class="name">VARCHAR</span><span class="default_value"> = <<a href="#TokenType.VARCHAR">TokenType.VARCHAR</a>: 'VARCHAR'></span> + <span class="name">VARCHAR</span> = +<span class="default_value"><<a href="#TokenType.VARCHAR">TokenType.VARCHAR</a>: 'VARCHAR'></span> </div> @@ -3117,7 +3193,8 @@ </div> <div id="TokenType.NVARCHAR" class="classattr"> <div class="attr variable"> - <span class="name">NVARCHAR</span><span class="default_value"> = <<a href="#TokenType.NVARCHAR">TokenType.NVARCHAR</a>: 'NVARCHAR'></span> + <span class="name">NVARCHAR</span> = +<span class="default_value"><<a href="#TokenType.NVARCHAR">TokenType.NVARCHAR</a>: 'NVARCHAR'></span> </div> @@ -3128,7 +3205,8 @@ </div> <div id="TokenType.TEXT" class="classattr"> <div class="attr variable"> - <span class="name">TEXT</span><span class="default_value"> = <<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'></span> + <span class="name">TEXT</span> = +<span class="default_value"><<a href="#TokenType.TEXT">TokenType.TEXT</a>: 'TEXT'></span> </div> @@ -3139,7 +3217,8 @@ </div> <div id="TokenType.MEDIUMTEXT" class="classattr"> <div class="attr variable"> - <span class="name">MEDIUMTEXT</span><span class="default_value"> = <<a href="#TokenType.MEDIUMTEXT">TokenType.MEDIUMTEXT</a>: 'MEDIUMTEXT'></span> + <span class="name">MEDIUMTEXT</span> = +<span class="default_value"><<a href="#TokenType.MEDIUMTEXT">TokenType.MEDIUMTEXT</a>: 'MEDIUMTEXT'></span> </div> @@ -3150,7 +3229,8 @@ </div> <div id="TokenType.LONGTEXT" class="classattr"> <div class="attr variable"> - <span class="name">LONGTEXT</span><span class="default_value"> = <<a href="#TokenType.LONGTEXT">TokenType.LONGTEXT</a>: 'LONGTEXT'></span> + <span class="name">LONGTEXT</span> = +<span class="default_value"><<a href="#TokenType.LONGTEXT">TokenType.LONGTEXT</a>: 'LONGTEXT'></span> </div> @@ -3161,7 +3241,8 @@ </div> <div id="TokenType.MEDIUMBLOB" class="classattr"> <div class="attr variable"> - <span class="name">MEDIUMBLOB</span><span class="default_value"> = <<a href="#TokenType.MEDIUMBLOB">TokenType.MEDIUMBLOB</a>: 'MEDIUMBLOB'></span> + <span class="name">MEDIUMBLOB</span> = +<span class="default_value"><<a href="#TokenType.MEDIUMBLOB">TokenType.MEDIUMBLOB</a>: 'MEDIUMBLOB'></span> </div> @@ -3172,7 +3253,8 @@ </div> <div id="TokenType.LONGBLOB" class="classattr"> <div class="attr variable"> - <span class="name">LONGBLOB</span><span class="default_value"> = <<a href="#TokenType.LONGBLOB">TokenType.LONGBLOB</a>: 'LONGBLOB'></span> + <span class="name">LONGBLOB</span> = +<span class="default_value"><<a href="#TokenType.LONGBLOB">TokenType.LONGBLOB</a>: 'LONGBLOB'></span> </div> @@ -3183,7 +3265,8 @@ </div> <div id="TokenType.BINARY" class="classattr"> <div class="attr variable"> - <span class="name">BINARY</span><span class="default_value"> = <<a href="#TokenType.BINARY">TokenType.BINARY</a>: 'BINARY'></span> + <span class="name">BINARY</span> = +<span class="default_value"><<a href="#TokenType.BINARY">TokenType.BINARY</a>: 'BINARY'></span> </div> @@ -3194,7 +3277,8 @@ </div> <div id="TokenType.VARBINARY" class="classattr"> <div class="attr variable"> - <span class="name">VARBINARY</span><span class="default_value"> = <<a href="#TokenType.VARBINARY">TokenType.VARBINARY</a>: 'VARBINARY'></span> + <span class="name">VARBINARY</span> = +<span class="default_value"><<a href="#TokenType.VARBINARY">TokenType.VARBINARY</a>: 'VARBINARY'></span> </div> @@ -3205,7 +3289,8 @@ </div> <div id="TokenType.JSON" class="classattr"> <div class="attr variable"> - <span class="name">JSON</span><span class="default_value"> = <<a href="#TokenType.JSON">TokenType.JSON</a>: 'JSON'></span> + <span class="name">JSON</span> = +<span class="default_value"><<a href="#TokenType.JSON">TokenType.JSON</a>: 'JSON'></span> </div> @@ -3216,7 +3301,8 @@ </div> <div id="TokenType.JSONB" class="classattr"> <div class="attr variable"> - <span class="name">JSONB</span><span class="default_value"> = <<a href="#TokenType.JSONB">TokenType.JSONB</a>: 'JSONB'></span> + <span class="name">JSONB</span> = +<span class="default_value"><<a href="#TokenType.JSONB">TokenType.JSONB</a>: 'JSONB'></span> </div> @@ -3227,7 +3313,8 @@ </div> <div id="TokenType.TIME" class="classattr"> <div class="attr variable"> - <span class="name">TIME</span><span class="default_value"> = <<a href="#TokenType.TIME">TokenType.TIME</a>: 'TIME'></span> + <span class="name">TIME</span> = +<span class="default_value"><<a href="#TokenType.TIME">TokenType.TIME</a>: 'TIME'></span> </div> @@ -3238,7 +3325,8 @@ </div> <div id="TokenType.TIMESTAMP" class="classattr"> <div class="attr variable"> - <span class="name">TIMESTAMP</span><span class="default_value"> = <<a href="#TokenType.TIMESTAMP">TokenType.TIMESTAMP</a>: 'TIMESTAMP'></span> + <span class="name">TIMESTAMP</span> = +<span class="default_value"><<a href="#TokenType.TIMESTAMP">TokenType.TIMESTAMP</a>: 'TIMESTAMP'></span> </div> @@ -3249,7 +3337,8 @@ </div> <div id="TokenType.TIMESTAMPTZ" class="classattr"> <div class="attr variable"> - <span class="name">TIMESTAMPTZ</span><span class="default_value"> = <<a href="#TokenType.TIMESTAMPTZ">TokenType.TIMESTAMPTZ</a>: 'TIMESTAMPTZ'></span> + <span class="name">TIMESTAMPTZ</span> = +<span class="default_value"><<a href="#TokenType.TIMESTAMPTZ">TokenType.TIMESTAMPTZ</a>: 'TIMESTAMPTZ'></span> </div> @@ -3260,7 +3349,8 @@ </div> <div id="TokenType.TIMESTAMPLTZ" class="classattr"> <div class="attr variable"> - <span class="name">TIMESTAMPLTZ</span><span class="default_value"> = <<a href="#TokenType.TIMESTAMPLTZ">TokenType.TIMESTAMPLTZ</a>: 'TIMESTAMPLTZ'></span> + <span class="name">TIMESTAMPLTZ</span> = +<span class="default_value"><<a href="#TokenType.TIMESTAMPLTZ">TokenType.TIMESTAMPLTZ</a>: 'TIMESTAMPLTZ'></span> </div> @@ -3271,7 +3361,8 @@ </div> <div id="TokenType.DATETIME" class="classattr"> <div class="attr variable"> - <span class="name">DATETIME</span><span class="default_value"> = <<a href="#TokenType.DATETIME">TokenType.DATETIME</a>: 'DATETIME'></span> + <span class="name">DATETIME</span> = +<span class="default_value"><<a href="#TokenType.DATETIME">TokenType.DATETIME</a>: 'DATETIME'></span> </div> @@ -3282,7 +3373,8 @@ </div> <div id="TokenType.DATE" class="classattr"> <div class="attr variable"> - <span class="name">DATE</span><span class="default_value"> = <<a href="#TokenType.DATE">TokenType.DATE</a>: 'DATE'></span> + <span class="name">DATE</span> = +<span class="default_value"><<a href="#TokenType.DATE">TokenType.DATE</a>: 'DATE'></span> </div> @@ -3293,7 +3385,8 @@ </div> <div id="TokenType.UUID" class="classattr"> <div class="attr variable"> - <span class="name">UUID</span><span class="default_value"> = <<a href="#TokenType.UUID">TokenType.UUID</a>: 'UUID'></span> + <span class="name">UUID</span> = +<span class="default_value"><<a href="#TokenType.UUID">TokenType.UUID</a>: 'UUID'></span> </div> @@ -3304,7 +3397,8 @@ </div> <div id="TokenType.GEOGRAPHY" class="classattr"> <div class="attr variable"> - <span class="name">GEOGRAPHY</span><span class="default_value"> = <<a href="#TokenType.GEOGRAPHY">TokenType.GEOGRAPHY</a>: 'GEOGRAPHY'></span> + <span class="name">GEOGRAPHY</span> = +<span class="default_value"><<a href="#TokenType.GEOGRAPHY">TokenType.GEOGRAPHY</a>: 'GEOGRAPHY'></span> </div> @@ -3315,7 +3409,8 @@ </div> <div id="TokenType.NULLABLE" class="classattr"> <div class="attr variable"> - <span class="name">NULLABLE</span><span class="default_value"> = <<a href="#TokenType.NULLABLE">TokenType.NULLABLE</a>: 'NULLABLE'></span> + <span class="name">NULLABLE</span> = +<span class="default_value"><<a href="#TokenType.NULLABLE">TokenType.NULLABLE</a>: 'NULLABLE'></span> </div> @@ -3326,7 +3421,8 @@ </div> <div id="TokenType.GEOMETRY" class="classattr"> <div class="attr variable"> - <span class="name">GEOMETRY</span><span class="default_value"> = <<a href="#TokenType.GEOMETRY">TokenType.GEOMETRY</a>: 'GEOMETRY'></span> + <span class="name">GEOMETRY</span> = +<span class="default_value"><<a href="#TokenType.GEOMETRY">TokenType.GEOMETRY</a>: 'GEOMETRY'></span> </div> @@ -3337,7 +3433,8 @@ </div> <div id="TokenType.HLLSKETCH" class="classattr"> <div class="attr variable"> - <span class="name">HLLSKETCH</span><span class="default_value"> = <<a href="#TokenType.HLLSKETCH">TokenType.HLLSKETCH</a>: 'HLLSKETCH'></span> + <span class="name">HLLSKETCH</span> = +<span class="default_value"><<a href="#TokenType.HLLSKETCH">TokenType.HLLSKETCH</a>: 'HLLSKETCH'></span> </div> @@ -3348,7 +3445,8 @@ </div> <div id="TokenType.HSTORE" class="classattr"> <div class="attr variable"> - <span class="name">HSTORE</span><span class="default_value"> = <<a href="#TokenType.HSTORE">TokenType.HSTORE</a>: 'HSTORE'></span> + <span class="name">HSTORE</span> = +<span class="default_value"><<a href="#TokenType.HSTORE">TokenType.HSTORE</a>: 'HSTORE'></span> </div> @@ -3359,7 +3457,8 @@ </div> <div id="TokenType.SUPER" class="classattr"> <div class="attr variable"> - <span class="name">SUPER</span><span class="default_value"> = <<a href="#TokenType.SUPER">TokenType.SUPER</a>: 'SUPER'></span> + <span class="name">SUPER</span> = +<span class="default_value"><<a href="#TokenType.SUPER">TokenType.SUPER</a>: 'SUPER'></span> </div> @@ -3370,7 +3469,8 @@ </div> <div id="TokenType.SERIAL" class="classattr"> <div class="attr variable"> - <span class="name">SERIAL</span><span class="default_value"> = <<a href="#TokenType.SERIAL">TokenType.SERIAL</a>: 'SERIAL'></span> + <span class="name">SERIAL</span> = +<span class="default_value"><<a href="#TokenType.SERIAL">TokenType.SERIAL</a>: 'SERIAL'></span> </div> @@ -3381,7 +3481,8 @@ </div> <div id="TokenType.SMALLSERIAL" class="classattr"> <div class="attr variable"> - <span class="name">SMALLSERIAL</span><span class="default_value"> = <<a href="#TokenType.SMALLSERIAL">TokenType.SMALLSERIAL</a>: 'SMALLSERIAL'></span> + <span class="name">SMALLSERIAL</span> = +<span class="default_value"><<a href="#TokenType.SMALLSERIAL">TokenType.SMALLSERIAL</a>: 'SMALLSERIAL'></span> </div> @@ -3392,7 +3493,8 @@ </div> <div id="TokenType.BIGSERIAL" class="classattr"> <div class="attr variable"> - <span class="name">BIGSERIAL</span><span class="default_value"> = <<a href="#TokenType.BIGSERIAL">TokenType.BIGSERIAL</a>: 'BIGSERIAL'></span> + <span class="name">BIGSERIAL</span> = +<span class="default_value"><<a href="#TokenType.BIGSERIAL">TokenType.BIGSERIAL</a>: 'BIGSERIAL'></span> </div> @@ -3403,7 +3505,8 @@ </div> <div id="TokenType.XML" class="classattr"> <div class="attr variable"> - <span class="name">XML</span><span class="default_value"> = <<a href="#TokenType.XML">TokenType.XML</a>: 'XML'></span> + <span class="name">XML</span> = +<span class="default_value"><<a href="#TokenType.XML">TokenType.XML</a>: 'XML'></span> </div> @@ -3414,7 +3517,8 @@ </div> <div id="TokenType.UNIQUEIDENTIFIER" class="classattr"> <div class="attr variable"> - <span class="name">UNIQUEIDENTIFIER</span><span class="default_value"> = <<a href="#TokenType.UNIQUEIDENTIFIER">TokenType.UNIQUEIDENTIFIER</a>: 'UNIQUEIDENTIFIER'></span> + <span class="name">UNIQUEIDENTIFIER</span> = +<span class="default_value"><<a href="#TokenType.UNIQUEIDENTIFIER">TokenType.UNIQUEIDENTIFIER</a>: 'UNIQUEIDENTIFIER'></span> </div> @@ -3425,7 +3529,8 @@ </div> <div id="TokenType.MONEY" class="classattr"> <div class="attr variable"> - <span class="name">MONEY</span><span class="default_value"> = <<a href="#TokenType.MONEY">TokenType.MONEY</a>: 'MONEY'></span> + <span class="name">MONEY</span> = +<span class="default_value"><<a href="#TokenType.MONEY">TokenType.MONEY</a>: 'MONEY'></span> </div> @@ -3436,7 +3541,8 @@ </div> <div id="TokenType.SMALLMONEY" class="classattr"> <div class="attr variable"> - <span class="name">SMALLMONEY</span><span class="default_value"> = <<a href="#TokenType.SMALLMONEY">TokenType.SMALLMONEY</a>: 'SMALLMONEY'></span> + <span class="name">SMALLMONEY</span> = +<span class="default_value"><<a href="#TokenType.SMALLMONEY">TokenType.SMALLMONEY</a>: 'SMALLMONEY'></span> </div> @@ -3447,7 +3553,8 @@ </div> <div id="TokenType.ROWVERSION" class="classattr"> <div class="attr variable"> - <span class="name">ROWVERSION</span><span class="default_value"> = <<a href="#TokenType.ROWVERSION">TokenType.ROWVERSION</a>: 'ROWVERSION'></span> + <span class="name">ROWVERSION</span> = +<span class="default_value"><<a href="#TokenType.ROWVERSION">TokenType.ROWVERSION</a>: 'ROWVERSION'></span> </div> @@ -3458,7 +3565,8 @@ </div> <div id="TokenType.IMAGE" class="classattr"> <div class="attr variable"> - <span class="name">IMAGE</span><span class="default_value"> = <<a href="#TokenType.IMAGE">TokenType.IMAGE</a>: 'IMAGE'></span> + <span class="name">IMAGE</span> = +<span class="default_value"><<a href="#TokenType.IMAGE">TokenType.IMAGE</a>: 'IMAGE'></span> </div> @@ -3469,7 +3577,8 @@ </div> <div id="TokenType.VARIANT" class="classattr"> <div class="attr variable"> - <span class="name">VARIANT</span><span class="default_value"> = <<a href="#TokenType.VARIANT">TokenType.VARIANT</a>: 'VARIANT'></span> + <span class="name">VARIANT</span> = +<span class="default_value"><<a href="#TokenType.VARIANT">TokenType.VARIANT</a>: 'VARIANT'></span> </div> @@ -3480,7 +3589,8 @@ </div> <div id="TokenType.OBJECT" class="classattr"> <div class="attr variable"> - <span class="name">OBJECT</span><span class="default_value"> = <<a href="#TokenType.OBJECT">TokenType.OBJECT</a>: 'OBJECT'></span> + <span class="name">OBJECT</span> = +<span class="default_value"><<a href="#TokenType.OBJECT">TokenType.OBJECT</a>: 'OBJECT'></span> </div> @@ -3489,9 +3599,22 @@ </div> + <div id="TokenType.INET" class="classattr"> + <div class="attr variable"> + <span class="name">INET</span> = +<span class="default_value"><<a href="#TokenType.INET">TokenType.INET</a>: 'INET'></span> + + + </div> + <a class="headerlink" href="#TokenType.INET"></a> + + + + </div> <div id="TokenType.ALIAS" class="classattr"> <div class="attr variable"> - <span class="name">ALIAS</span><span class="default_value"> = <<a href="#TokenType.ALIAS">TokenType.ALIAS</a>: 'ALIAS'></span> + <span class="name">ALIAS</span> = +<span class="default_value"><<a href="#TokenType.ALIAS">TokenType.ALIAS</a>: 'ALIAS'></span> </div> @@ -3502,7 +3625,8 @@ </div> <div id="TokenType.ALTER" class="classattr"> <div class="attr variable"> - <span class="name">ALTER</span><span class="default_value"> = <<a href="#TokenType.ALTER">TokenType.ALTER</a>: 'ALTER'></span> + <span class="name">ALTER</span> = +<span class="default_value"><<a href="#TokenType.ALTER">TokenType.ALTER</a>: 'ALTER'></span> </div> @@ -3513,7 +3637,8 @@ </div> <div id="TokenType.ALWAYS" class="classattr"> <div class="attr variable"> - <span class="name">ALWAYS</span><span class="default_value"> = <<a href="#TokenType.ALWAYS">TokenType.ALWAYS</a>: 'ALWAYS'></span> + <span class="name">ALWAYS</span> = +<span class="default_value"><<a href="#TokenType.ALWAYS">TokenType.ALWAYS</a>: 'ALWAYS'></span> </div> @@ -3524,7 +3649,8 @@ </div> <div id="TokenType.ALL" class="classattr"> <div class="attr variable"> - <span class="name">ALL</span><span class="default_value"> = <<a href="#TokenType.ALL">TokenType.ALL</a>: 'ALL'></span> + <span class="name">ALL</span> = +<span class="default_value"><<a href="#TokenType.ALL">TokenType.ALL</a>: 'ALL'></span> </div> @@ -3535,7 +3661,8 @@ </div> <div id="TokenType.ANTI" class="classattr"> <div class="attr variable"> - <span class="name">ANTI</span><span class="default_value"> = <<a href="#TokenType.ANTI">TokenType.ANTI</a>: 'ANTI'></span> + <span class="name">ANTI</span> = +<span class="default_value"><<a href="#TokenType.ANTI">TokenType.ANTI</a>: 'ANTI'></span> </div> @@ -3546,7 +3673,8 @@ </div> <div id="TokenType.ANY" class="classattr"> <div class="attr variable"> - <span class="name">ANY</span><span class="default_value"> = <<a href="#TokenType.ANY">TokenType.ANY</a>: 'ANY'></span> + <span class="name">ANY</span> = +<span class="default_value"><<a href="#TokenType.ANY">TokenType.ANY</a>: 'ANY'></span> </div> @@ -3557,7 +3685,8 @@ </div> <div id="TokenType.APPLY" class="classattr"> <div class="attr variable"> - <span class="name">APPLY</span><span class="default_value"> = <<a href="#TokenType.APPLY">TokenType.APPLY</a>: 'APPLY'></span> + <span class="name">APPLY</span> = +<span class="default_value"><<a href="#TokenType.APPLY">TokenType.APPLY</a>: 'APPLY'></span> </div> @@ -3568,7 +3697,8 @@ </div> <div id="TokenType.ARRAY" class="classattr"> <div class="attr variable"> - <span class="name">ARRAY</span><span class="default_value"> = <<a href="#TokenType.ARRAY">TokenType.ARRAY</a>: 'ARRAY'></span> + <span class="name">ARRAY</span> = +<span class="default_value"><<a href="#TokenType.ARRAY">TokenType.ARRAY</a>: 'ARRAY'></span> </div> @@ -3579,7 +3709,8 @@ </div> <div id="TokenType.ASC" class="classattr"> <div class="attr variable"> - <span class="name">ASC</span><span class="default_value"> = <<a href="#TokenType.ASC">TokenType.ASC</a>: 'ASC'></span> + <span class="name">ASC</span> = +<span class="default_value"><<a href="#TokenType.ASC">TokenType.ASC</a>: 'ASC'></span> </div> @@ -3590,7 +3721,8 @@ </div> <div id="TokenType.ASOF" class="classattr"> <div class="attr variable"> - <span class="name">ASOF</span><span class="default_value"> = <<a href="#TokenType.ASOF">TokenType.ASOF</a>: 'ASOF'></span> + <span class="name">ASOF</span> = +<span class="default_value"><<a href="#TokenType.ASOF">TokenType.ASOF</a>: 'ASOF'></span> </div> @@ -3601,7 +3733,8 @@ </div> <div id="TokenType.AT_TIME_ZONE" class="classattr"> <div class="attr variable"> - <span class="name">AT_TIME_ZONE</span><span class="default_value"> = <<a href="#TokenType.AT_TIME_ZONE">TokenType.AT_TIME_ZONE</a>: 'AT_TIME_ZONE'></span> + <span class="name">AT_TIME_ZONE</span> = +<span class="default_value"><<a href="#TokenType.AT_TIME_ZONE">TokenType.AT_TIME_ZONE</a>: 'AT_TIME_ZONE'></span> </div> @@ -3612,7 +3745,8 @@ </div> <div id="TokenType.AUTO_INCREMENT" class="classattr"> <div class="attr variable"> - <span class="name">AUTO_INCREMENT</span><span class="default_value"> = <<a href="#TokenType.AUTO_INCREMENT">TokenType.AUTO_INCREMENT</a>: 'AUTO_INCREMENT'></span> + <span class="name">AUTO_INCREMENT</span> = +<span class="default_value"><<a href="#TokenType.AUTO_INCREMENT">TokenType.AUTO_INCREMENT</a>: 'AUTO_INCREMENT'></span> </div> @@ -3623,7 +3757,8 @@ </div> <div id="TokenType.BEGIN" class="classattr"> <div class="attr variable"> - <span class="name">BEGIN</span><span class="default_value"> = <<a href="#TokenType.BEGIN">TokenType.BEGIN</a>: 'BEGIN'></span> + <span class="name">BEGIN</span> = +<span class="default_value"><<a href="#TokenType.BEGIN">TokenType.BEGIN</a>: 'BEGIN'></span> </div> @@ -3634,7 +3769,8 @@ </div> <div id="TokenType.BETWEEN" class="classattr"> <div class="attr variable"> - <span class="name">BETWEEN</span><span class="default_value"> = <<a href="#TokenType.BETWEEN">TokenType.BETWEEN</a>: 'BETWEEN'></span> + <span class="name">BETWEEN</span> = +<span class="default_value"><<a href="#TokenType.BETWEEN">TokenType.BETWEEN</a>: 'BETWEEN'></span> </div> @@ -3645,7 +3781,8 @@ </div> <div id="TokenType.BOTH" class="classattr"> <div class="attr variable"> - <span class="name">BOTH</span><span class="default_value"> = <<a href="#TokenType.BOTH">TokenType.BOTH</a>: 'BOTH'></span> + <span class="name">BOTH</span> = +<span class="default_value"><<a href="#TokenType.BOTH">TokenType.BOTH</a>: 'BOTH'></span> </div> @@ -3656,7 +3793,8 @@ </div> <div id="TokenType.BUCKET" class="classattr"> <div class="attr variable"> - <span class="name">BUCKET</span><span class="default_value"> = <<a href="#TokenType.BUCKET">TokenType.BUCKET</a>: 'BUCKET'></span> + <span class="name">BUCKET</span> = +<span class="default_value"><<a href="#TokenType.BUCKET">TokenType.BUCKET</a>: 'BUCKET'></span> </div> @@ -3667,7 +3805,8 @@ </div> <div id="TokenType.BY_DEFAULT" class="classattr"> <div class="attr variable"> - <span class="name">BY_DEFAULT</span><span class="default_value"> = <<a href="#TokenType.BY_DEFAULT">TokenType.BY_DEFAULT</a>: 'BY_DEFAULT'></span> + <span class="name">BY_DEFAULT</span> = +<span class="default_value"><<a href="#TokenType.BY_DEFAULT">TokenType.BY_DEFAULT</a>: 'BY_DEFAULT'></span> </div> @@ -3678,7 +3817,8 @@ </div> <div id="TokenType.CACHE" class="classattr"> <div class="attr variable"> - <span class="name">CACHE</span><span class="default_value"> = <<a href="#TokenType.CACHE">TokenType.CACHE</a>: 'CACHE'></span> + <span class="name">CACHE</span> = +<span class="default_value"><<a href="#TokenType.CACHE">TokenType.CACHE</a>: 'CACHE'></span> </div> @@ -3689,7 +3829,8 @@ </div> <div id="TokenType.CASCADE" class="classattr"> <div class="attr variable"> - <span class="name">CASCADE</span><span class="default_value"> = <<a href="#TokenType.CASCADE">TokenType.CASCADE</a>: 'CASCADE'></span> + <span class="name">CASCADE</span> = +<span class="default_value"><<a href="#TokenType.CASCADE">TokenType.CASCADE</a>: 'CASCADE'></span> </div> @@ -3700,7 +3841,8 @@ </div> <div id="TokenType.CASE" class="classattr"> <div class="attr variable"> - <span class="name">CASE</span><span class="default_value"> = <<a href="#TokenType.CASE">TokenType.CASE</a>: 'CASE'></span> + <span class="name">CASE</span> = +<span class="default_value"><<a href="#TokenType.CASE">TokenType.CASE</a>: 'CASE'></span> </div> @@ -3711,7 +3853,8 @@ </div> <div id="TokenType.CHARACTER_SET" class="classattr"> <div class="attr variable"> - <span class="name">CHARACTER_SET</span><span class="default_value"> = <<a href="#TokenType.CHARACTER_SET">TokenType.CHARACTER_SET</a>: 'CHARACTER_SET'></span> + <span class="name">CHARACTER_SET</span> = +<span class="default_value"><<a href="#TokenType.CHARACTER_SET">TokenType.CHARACTER_SET</a>: 'CHARACTER_SET'></span> </div> @@ -3722,7 +3865,8 @@ </div> <div id="TokenType.CLUSTER_BY" class="classattr"> <div class="attr variable"> - <span class="name">CLUSTER_BY</span><span class="default_value"> = <<a href="#TokenType.CLUSTER_BY">TokenType.CLUSTER_BY</a>: 'CLUSTER_BY'></span> + <span class="name">CLUSTER_BY</span> = +<span class="default_value"><<a href="#TokenType.CLUSTER_BY">TokenType.CLUSTER_BY</a>: 'CLUSTER_BY'></span> </div> @@ -3733,7 +3877,8 @@ </div> <div id="TokenType.COLLATE" class="classattr"> <div class="attr variable"> - <span class="name">COLLATE</span><span class="default_value"> = <<a href="#TokenType.COLLATE">TokenType.COLLATE</a>: 'COLLATE'></span> + <span class="name">COLLATE</span> = +<span class="default_value"><<a href="#TokenType.COLLATE">TokenType.COLLATE</a>: 'COLLATE'></span> </div> @@ -3744,7 +3889,8 @@ </div> <div id="TokenType.COMMAND" class="classattr"> <div class="attr variable"> - <span class="name">COMMAND</span><span class="default_value"> = <<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'></span> + <span class="name">COMMAND</span> = +<span class="default_value"><<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: 'COMMAND'></span> </div> @@ -3755,7 +3901,8 @@ </div> <div id="TokenType.COMMENT" class="classattr"> <div class="attr variable"> - <span class="name">COMMENT</span><span class="default_value"> = <<a href="#TokenType.COMMENT">TokenType.COMMENT</a>: 'COMMENT'></span> + <span class="name">COMMENT</span> = +<span class="default_value"><<a href="#TokenType.COMMENT">TokenType.COMMENT</a>: 'COMMENT'></span> </div> @@ -3766,7 +3913,8 @@ </div> <div id="TokenType.COMMIT" class="classattr"> <div class="attr variable"> - <span class="name">COMMIT</span><span class="default_value"> = <<a href="#TokenType.COMMIT">TokenType.COMMIT</a>: 'COMMIT'></span> + <span class="name">COMMIT</span> = +<span class="default_value"><<a href="#TokenType.COMMIT">TokenType.COMMIT</a>: 'COMMIT'></span> </div> @@ -3777,7 +3925,8 @@ </div> <div id="TokenType.COMPOUND" class="classattr"> <div class="attr variable"> - <span class="name">COMPOUND</span><span class="default_value"> = <<a href="#TokenType.COMPOUND">TokenType.COMPOUND</a>: 'COMPOUND'></span> + <span class="name">COMPOUND</span> = +<span class="default_value"><<a href="#TokenType.COMPOUND">TokenType.COMPOUND</a>: 'COMPOUND'></span> </div> @@ -3788,7 +3937,8 @@ </div> <div id="TokenType.CONSTRAINT" class="classattr"> <div class="attr variable"> - <span class="name">CONSTRAINT</span><span class="default_value"> = <<a href="#TokenType.CONSTRAINT">TokenType.CONSTRAINT</a>: 'CONSTRAINT'></span> + <span class="name">CONSTRAINT</span> = +<span class="default_value"><<a href="#TokenType.CONSTRAINT">TokenType.CONSTRAINT</a>: 'CONSTRAINT'></span> </div> @@ -3799,7 +3949,8 @@ </div> <div id="TokenType.CREATE" class="classattr"> <div class="attr variable"> - <span class="name">CREATE</span><span class="default_value"> = <<a href="#TokenType.CREATE">TokenType.CREATE</a>: 'CREATE'></span> + <span class="name">CREATE</span> = +<span class="default_value"><<a href="#TokenType.CREATE">TokenType.CREATE</a>: 'CREATE'></span> </div> @@ -3810,7 +3961,8 @@ </div> <div id="TokenType.CROSS" class="classattr"> <div class="attr variable"> - <span class="name">CROSS</span><span class="default_value"> = <<a href="#TokenType.CROSS">TokenType.CROSS</a>: 'CROSS'></span> + <span class="name">CROSS</span> = +<span class="default_value"><<a href="#TokenType.CROSS">TokenType.CROSS</a>: 'CROSS'></span> </div> @@ -3821,7 +3973,8 @@ </div> <div id="TokenType.CUBE" class="classattr"> <div class="attr variable"> - <span class="name">CUBE</span><span class="default_value"> = <<a href="#TokenType.CUBE">TokenType.CUBE</a>: 'CUBE'></span> + <span class="name">CUBE</span> = +<span class="default_value"><<a href="#TokenType.CUBE">TokenType.CUBE</a>: 'CUBE'></span> </div> @@ -3832,7 +3985,8 @@ </div> <div id="TokenType.CURRENT_DATE" class="classattr"> <div class="attr variable"> - <span class="name">CURRENT_DATE</span><span class="default_value"> = <<a href="#TokenType.CURRENT_DATE">TokenType.CURRENT_DATE</a>: 'CURRENT_DATE'></span> + <span class="name">CURRENT_DATE</span> = +<span class="default_value"><<a href="#TokenType.CURRENT_DATE">TokenType.CURRENT_DATE</a>: 'CURRENT_DATE'></span> </div> @@ -3843,7 +3997,8 @@ </div> <div id="TokenType.CURRENT_DATETIME" class="classattr"> <div class="attr variable"> - <span class="name">CURRENT_DATETIME</span><span class="default_value"> = <<a href="#TokenType.CURRENT_DATETIME">TokenType.CURRENT_DATETIME</a>: 'CURRENT_DATETIME'></span> + <span class="name">CURRENT_DATETIME</span> = +<span class="default_value"><<a href="#TokenType.CURRENT_DATETIME">TokenType.CURRENT_DATETIME</a>: 'CURRENT_DATETIME'></span> </div> @@ -3854,7 +4009,8 @@ </div> <div id="TokenType.CURRENT_ROW" class="classattr"> <div class="attr variable"> - <span class="name">CURRENT_ROW</span><span class="default_value"> = <<a href="#TokenType.CURRENT_ROW">TokenType.CURRENT_ROW</a>: 'CURRENT_ROW'></span> + <span class="name">CURRENT_ROW</span> = +<span class="default_value"><<a href="#TokenType.CURRENT_ROW">TokenType.CURRENT_ROW</a>: 'CURRENT_ROW'></span> </div> @@ -3865,7 +4021,8 @@ </div> <div id="TokenType.CURRENT_TIME" class="classattr"> <div class="attr variable"> - <span class="name">CURRENT_TIME</span><span class="default_value"> = <<a href="#TokenType.CURRENT_TIME">TokenType.CURRENT_TIME</a>: 'CURRENT_TIME'></span> + <span class="name">CURRENT_TIME</span> = +<span class="default_value"><<a href="#TokenType.CURRENT_TIME">TokenType.CURRENT_TIME</a>: 'CURRENT_TIME'></span> </div> @@ -3876,7 +4033,8 @@ </div> <div id="TokenType.CURRENT_TIMESTAMP" class="classattr"> <div class="attr variable"> - <span class="name">CURRENT_TIMESTAMP</span><span class="default_value"> = <<a href="#TokenType.CURRENT_TIMESTAMP">TokenType.CURRENT_TIMESTAMP</a>: 'CURRENT_TIMESTAMP'></span> + <span class="name">CURRENT_TIMESTAMP</span> = +<span class="default_value"><<a href="#TokenType.CURRENT_TIMESTAMP">TokenType.CURRENT_TIMESTAMP</a>: 'CURRENT_TIMESTAMP'></span> </div> @@ -3887,7 +4045,8 @@ </div> <div id="TokenType.DEFAULT" class="classattr"> <div class="attr variable"> - <span class="name">DEFAULT</span><span class="default_value"> = <<a href="#TokenType.DEFAULT">TokenType.DEFAULT</a>: 'DEFAULT'></span> + <span class="name">DEFAULT</span> = +<span class="default_value"><<a href="#TokenType.DEFAULT">TokenType.DEFAULT</a>: 'DEFAULT'></span> </div> @@ -3898,7 +4057,8 @@ </div> <div id="TokenType.DELETE" class="classattr"> <div class="attr variable"> - <span class="name">DELETE</span><span class="default_value"> = <<a href="#TokenType.DELETE">TokenType.DELETE</a>: 'DELETE'></span> + <span class="name">DELETE</span> = +<span class="default_value"><<a href="#TokenType.DELETE">TokenType.DELETE</a>: 'DELETE'></span> </div> @@ -3909,7 +4069,8 @@ </div> <div id="TokenType.DESC" class="classattr"> <div class="attr variable"> - <span class="name">DESC</span><span class="default_value"> = <<a href="#TokenType.DESC">TokenType.DESC</a>: 'DESC'></span> + <span class="name">DESC</span> = +<span class="default_value"><<a href="#TokenType.DESC">TokenType.DESC</a>: 'DESC'></span> </div> @@ -3920,7 +4081,8 @@ </div> <div id="TokenType.DESCRIBE" class="classattr"> <div class="attr variable"> - <span class="name">DESCRIBE</span><span class="default_value"> = <<a href="#TokenType.DESCRIBE">TokenType.DESCRIBE</a>: 'DESCRIBE'></span> + <span class="name">DESCRIBE</span> = +<span class="default_value"><<a href="#TokenType.DESCRIBE">TokenType.DESCRIBE</a>: 'DESCRIBE'></span> </div> @@ -3931,7 +4093,8 @@ </div> <div id="TokenType.DISTINCT" class="classattr"> <div class="attr variable"> - <span class="name">DISTINCT</span><span class="default_value"> = <<a href="#TokenType.DISTINCT">TokenType.DISTINCT</a>: 'DISTINCT'></span> + <span class="name">DISTINCT</span> = +<span class="default_value"><<a href="#TokenType.DISTINCT">TokenType.DISTINCT</a>: 'DISTINCT'></span> </div> @@ -3942,7 +4105,8 @@ </div> <div id="TokenType.DISTINCT_FROM" class="classattr"> <div class="attr variable"> - <span class="name">DISTINCT_FROM</span><span class="default_value"> = <<a href="#TokenType.DISTINCT_FROM">TokenType.DISTINCT_FROM</a>: 'DISTINCT_FROM'></span> + <span class="name">DISTINCT_FROM</span> = +<span class="default_value"><<a href="#TokenType.DISTINCT_FROM">TokenType.DISTINCT_FROM</a>: 'DISTINCT_FROM'></span> </div> @@ -3953,7 +4117,8 @@ </div> <div id="TokenType.DISTRIBUTE_BY" class="classattr"> <div class="attr variable"> - <span class="name">DISTRIBUTE_BY</span><span class="default_value"> = <<a href="#TokenType.DISTRIBUTE_BY">TokenType.DISTRIBUTE_BY</a>: 'DISTRIBUTE_BY'></span> + <span class="name">DISTRIBUTE_BY</span> = +<span class="default_value"><<a href="#TokenType.DISTRIBUTE_BY">TokenType.DISTRIBUTE_BY</a>: 'DISTRIBUTE_BY'></span> </div> @@ -3964,7 +4129,8 @@ </div> <div id="TokenType.DIV" class="classattr"> <div class="attr variable"> - <span class="name">DIV</span><span class="default_value"> = <<a href="#TokenType.DIV">TokenType.DIV</a>: 'DIV'></span> + <span class="name">DIV</span> = +<span class="default_value"><<a href="#TokenType.DIV">TokenType.DIV</a>: 'DIV'></span> </div> @@ -3975,7 +4141,8 @@ </div> <div id="TokenType.DROP" class="classattr"> <div class="attr variable"> - <span class="name">DROP</span><span class="default_value"> = <<a href="#TokenType.DROP">TokenType.DROP</a>: 'DROP'></span> + <span class="name">DROP</span> = +<span class="default_value"><<a href="#TokenType.DROP">TokenType.DROP</a>: 'DROP'></span> </div> @@ -3986,7 +4153,8 @@ </div> <div id="TokenType.ELSE" class="classattr"> <div class="attr variable"> - <span class="name">ELSE</span><span class="default_value"> = <<a href="#TokenType.ELSE">TokenType.ELSE</a>: 'ELSE'></span> + <span class="name">ELSE</span> = +<span class="default_value"><<a href="#TokenType.ELSE">TokenType.ELSE</a>: 'ELSE'></span> </div> @@ -3997,7 +4165,8 @@ </div> <div id="TokenType.END" class="classattr"> <div class="attr variable"> - <span class="name">END</span><span class="default_value"> = <<a href="#TokenType.END">TokenType.END</a>: 'END'></span> + <span class="name">END</span> = +<span class="default_value"><<a href="#TokenType.END">TokenType.END</a>: 'END'></span> </div> @@ -4008,7 +4177,8 @@ </div> <div id="TokenType.ESCAPE" class="classattr"> <div class="attr variable"> - <span class="name">ESCAPE</span><span class="default_value"> = <<a href="#TokenType.ESCAPE">TokenType.ESCAPE</a>: 'ESCAPE'></span> + <span class="name">ESCAPE</span> = +<span class="default_value"><<a href="#TokenType.ESCAPE">TokenType.ESCAPE</a>: 'ESCAPE'></span> </div> @@ -4019,7 +4189,8 @@ </div> <div id="TokenType.EXCEPT" class="classattr"> <div class="attr variable"> - <span class="name">EXCEPT</span><span class="default_value"> = <<a href="#TokenType.EXCEPT">TokenType.EXCEPT</a>: 'EXCEPT'></span> + <span class="name">EXCEPT</span> = +<span class="default_value"><<a href="#TokenType.EXCEPT">TokenType.EXCEPT</a>: 'EXCEPT'></span> </div> @@ -4030,7 +4201,8 @@ </div> <div id="TokenType.EXECUTE" class="classattr"> <div class="attr variable"> - <span class="name">EXECUTE</span><span class="default_value"> = <<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: 'EXECUTE'></span> + <span class="name">EXECUTE</span> = +<span class="default_value"><<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: 'EXECUTE'></span> </div> @@ -4041,7 +4213,8 @@ </div> <div id="TokenType.EXISTS" class="classattr"> <div class="attr variable"> - <span class="name">EXISTS</span><span class="default_value"> = <<a href="#TokenType.EXISTS">TokenType.EXISTS</a>: 'EXISTS'></span> + <span class="name">EXISTS</span> = +<span class="default_value"><<a href="#TokenType.EXISTS">TokenType.EXISTS</a>: 'EXISTS'></span> </div> @@ -4052,7 +4225,8 @@ </div> <div id="TokenType.FALSE" class="classattr"> <div class="attr variable"> - <span class="name">FALSE</span><span class="default_value"> = <<a href="#TokenType.FALSE">TokenType.FALSE</a>: 'FALSE'></span> + <span class="name">FALSE</span> = +<span class="default_value"><<a href="#TokenType.FALSE">TokenType.FALSE</a>: 'FALSE'></span> </div> @@ -4063,7 +4237,8 @@ </div> <div id="TokenType.FETCH" class="classattr"> <div class="attr variable"> - <span class="name">FETCH</span><span class="default_value"> = <<a href="#TokenType.FETCH">TokenType.FETCH</a>: 'FETCH'></span> + <span class="name">FETCH</span> = +<span class="default_value"><<a href="#TokenType.FETCH">TokenType.FETCH</a>: 'FETCH'></span> </div> @@ -4074,7 +4249,8 @@ </div> <div id="TokenType.FILTER" class="classattr"> <div class="attr variable"> - <span class="name">FILTER</span><span class="default_value"> = <<a href="#TokenType.FILTER">TokenType.FILTER</a>: 'FILTER'></span> + <span class="name">FILTER</span> = +<span class="default_value"><<a href="#TokenType.FILTER">TokenType.FILTER</a>: 'FILTER'></span> </div> @@ -4085,7 +4261,8 @@ </div> <div id="TokenType.FINAL" class="classattr"> <div class="attr variable"> - <span class="name">FINAL</span><span class="default_value"> = <<a href="#TokenType.FINAL">TokenType.FINAL</a>: 'FINAL'></span> + <span class="name">FINAL</span> = +<span class="default_value"><<a href="#TokenType.FINAL">TokenType.FINAL</a>: 'FINAL'></span> </div> @@ -4096,7 +4273,8 @@ </div> <div id="TokenType.FIRST" class="classattr"> <div class="attr variable"> - <span class="name">FIRST</span><span class="default_value"> = <<a href="#TokenType.FIRST">TokenType.FIRST</a>: 'FIRST'></span> + <span class="name">FIRST</span> = +<span class="default_value"><<a href="#TokenType.FIRST">TokenType.FIRST</a>: 'FIRST'></span> </div> @@ -4107,7 +4285,8 @@ </div> <div id="TokenType.FOLLOWING" class="classattr"> <div class="attr variable"> - <span class="name">FOLLOWING</span><span class="default_value"> = <<a href="#TokenType.FOLLOWING">TokenType.FOLLOWING</a>: 'FOLLOWING'></span> + <span class="name">FOLLOWING</span> = +<span class="default_value"><<a href="#TokenType.FOLLOWING">TokenType.FOLLOWING</a>: 'FOLLOWING'></span> </div> @@ -4118,7 +4297,8 @@ </div> <div id="TokenType.FOR" class="classattr"> <div class="attr variable"> - <span class="name">FOR</span><span class="default_value"> = <<a href="#TokenType.FOR">TokenType.FOR</a>: 'FOR'></span> + <span class="name">FOR</span> = +<span class="default_value"><<a href="#TokenType.FOR">TokenType.FOR</a>: 'FOR'></span> </div> @@ -4129,7 +4309,8 @@ </div> <div id="TokenType.FOREIGN_KEY" class="classattr"> <div class="attr variable"> - <span class="name">FOREIGN_KEY</span><span class="default_value"> = <<a href="#TokenType.FOREIGN_KEY">TokenType.FOREIGN_KEY</a>: 'FOREIGN_KEY'></span> + <span class="name">FOREIGN_KEY</span> = +<span class="default_value"><<a href="#TokenType.FOREIGN_KEY">TokenType.FOREIGN_KEY</a>: 'FOREIGN_KEY'></span> </div> @@ -4140,7 +4321,8 @@ </div> <div id="TokenType.FORMAT" class="classattr"> <div class="attr variable"> - <span class="name">FORMAT</span><span class="default_value"> = <<a href="#TokenType.FORMAT">TokenType.FORMAT</a>: 'FORMAT'></span> + <span class="name">FORMAT</span> = +<span class="default_value"><<a href="#TokenType.FORMAT">TokenType.FORMAT</a>: 'FORMAT'></span> </div> @@ -4151,7 +4333,8 @@ </div> <div id="TokenType.FROM" class="classattr"> <div class="attr variable"> - <span class="name">FROM</span><span class="default_value"> = <<a href="#TokenType.FROM">TokenType.FROM</a>: 'FROM'></span> + <span class="name">FROM</span> = +<span class="default_value"><<a href="#TokenType.FROM">TokenType.FROM</a>: 'FROM'></span> </div> @@ -4162,7 +4345,8 @@ </div> <div id="TokenType.FULL" class="classattr"> <div class="attr variable"> - <span class="name">FULL</span><span class="default_value"> = <<a href="#TokenType.FULL">TokenType.FULL</a>: 'FULL'></span> + <span class="name">FULL</span> = +<span class="default_value"><<a href="#TokenType.FULL">TokenType.FULL</a>: 'FULL'></span> </div> @@ -4173,7 +4357,8 @@ </div> <div id="TokenType.FUNCTION" class="classattr"> <div class="attr variable"> - <span class="name">FUNCTION</span><span class="default_value"> = <<a href="#TokenType.FUNCTION">TokenType.FUNCTION</a>: 'FUNCTION'></span> + <span class="name">FUNCTION</span> = +<span class="default_value"><<a href="#TokenType.FUNCTION">TokenType.FUNCTION</a>: 'FUNCTION'></span> </div> @@ -4184,7 +4369,8 @@ </div> <div id="TokenType.GLOB" class="classattr"> <div class="attr variable"> - <span class="name">GLOB</span><span class="default_value"> = <<a href="#TokenType.GLOB">TokenType.GLOB</a>: 'GLOB'></span> + <span class="name">GLOB</span> = +<span class="default_value"><<a href="#TokenType.GLOB">TokenType.GLOB</a>: 'GLOB'></span> </div> @@ -4195,7 +4381,8 @@ </div> <div id="TokenType.GLOBAL" class="classattr"> <div class="attr variable"> - <span class="name">GLOBAL</span><span class="default_value"> = <<a href="#TokenType.GLOBAL">TokenType.GLOBAL</a>: 'GLOBAL'></span> + <span class="name">GLOBAL</span> = +<span class="default_value"><<a href="#TokenType.GLOBAL">TokenType.GLOBAL</a>: 'GLOBAL'></span> </div> @@ -4206,7 +4393,8 @@ </div> <div id="TokenType.GROUP_BY" class="classattr"> <div class="attr variable"> - <span class="name">GROUP_BY</span><span class="default_value"> = <<a href="#TokenType.GROUP_BY">TokenType.GROUP_BY</a>: 'GROUP_BY'></span> + <span class="name">GROUP_BY</span> = +<span class="default_value"><<a href="#TokenType.GROUP_BY">TokenType.GROUP_BY</a>: 'GROUP_BY'></span> </div> @@ -4217,7 +4405,8 @@ </div> <div id="TokenType.GROUPING_SETS" class="classattr"> <div class="attr variable"> - <span class="name">GROUPING_SETS</span><span class="default_value"> = <<a href="#TokenType.GROUPING_SETS">TokenType.GROUPING_SETS</a>: 'GROUPING_SETS'></span> + <span class="name">GROUPING_SETS</span> = +<span class="default_value"><<a href="#TokenType.GROUPING_SETS">TokenType.GROUPING_SETS</a>: 'GROUPING_SETS'></span> </div> @@ -4228,7 +4417,8 @@ </div> <div id="TokenType.HAVING" class="classattr"> <div class="attr variable"> - <span class="name">HAVING</span><span class="default_value"> = <<a href="#TokenType.HAVING">TokenType.HAVING</a>: 'HAVING'></span> + <span class="name">HAVING</span> = +<span class="default_value"><<a href="#TokenType.HAVING">TokenType.HAVING</a>: 'HAVING'></span> </div> @@ -4239,7 +4429,8 @@ </div> <div id="TokenType.HINT" class="classattr"> <div class="attr variable"> - <span class="name">HINT</span><span class="default_value"> = <<a href="#TokenType.HINT">TokenType.HINT</a>: 'HINT'></span> + <span class="name">HINT</span> = +<span class="default_value"><<a href="#TokenType.HINT">TokenType.HINT</a>: 'HINT'></span> </div> @@ -4250,7 +4441,8 @@ </div> <div id="TokenType.IF" class="classattr"> <div class="attr variable"> - <span class="name">IF</span><span class="default_value"> = <<a href="#TokenType.IF">TokenType.IF</a>: 'IF'></span> + <span class="name">IF</span> = +<span class="default_value"><<a href="#TokenType.IF">TokenType.IF</a>: 'IF'></span> </div> @@ -4261,7 +4453,8 @@ </div> <div id="TokenType.IGNORE_NULLS" class="classattr"> <div class="attr variable"> - <span class="name">IGNORE_NULLS</span><span class="default_value"> = <<a href="#TokenType.IGNORE_NULLS">TokenType.IGNORE_NULLS</a>: 'IGNORE_NULLS'></span> + <span class="name">IGNORE_NULLS</span> = +<span class="default_value"><<a href="#TokenType.IGNORE_NULLS">TokenType.IGNORE_NULLS</a>: 'IGNORE_NULLS'></span> </div> @@ -4272,7 +4465,8 @@ </div> <div id="TokenType.ILIKE" class="classattr"> <div class="attr variable"> - <span class="name">ILIKE</span><span class="default_value"> = <<a href="#TokenType.ILIKE">TokenType.ILIKE</a>: 'ILIKE'></span> + <span class="name">ILIKE</span> = +<span class="default_value"><<a href="#TokenType.ILIKE">TokenType.ILIKE</a>: 'ILIKE'></span> </div> @@ -4283,7 +4477,8 @@ </div> <div id="TokenType.ILIKE_ANY" class="classattr"> <div class="attr variable"> - <span class="name">ILIKE_ANY</span><span class="default_value"> = <<a href="#TokenType.ILIKE_ANY">TokenType.ILIKE_ANY</a>: 'ILIKE_ANY'></span> + <span class="name">ILIKE_ANY</span> = +<span class="default_value"><<a href="#TokenType.ILIKE_ANY">TokenType.ILIKE_ANY</a>: 'ILIKE_ANY'></span> </div> @@ -4294,7 +4489,8 @@ </div> <div id="TokenType.IN" class="classattr"> <div class="attr variable"> - <span class="name">IN</span><span class="default_value"> = <<a href="#TokenType.IN">TokenType.IN</a>: 'IN'></span> + <span class="name">IN</span> = +<span class="default_value"><<a href="#TokenType.IN">TokenType.IN</a>: 'IN'></span> </div> @@ -4305,7 +4501,8 @@ </div> <div id="TokenType.INDEX" class="classattr"> <div class="attr variable"> - <span class="name">INDEX</span><span class="default_value"> = <<a href="#TokenType.INDEX">TokenType.INDEX</a>: 'INDEX'></span> + <span class="name">INDEX</span> = +<span class="default_value"><<a href="#TokenType.INDEX">TokenType.INDEX</a>: 'INDEX'></span> </div> @@ -4316,7 +4513,8 @@ </div> <div id="TokenType.INNER" class="classattr"> <div class="attr variable"> - <span class="name">INNER</span><span class="default_value"> = <<a href="#TokenType.INNER">TokenType.INNER</a>: 'INNER'></span> + <span class="name">INNER</span> = +<span class="default_value"><<a href="#TokenType.INNER">TokenType.INNER</a>: 'INNER'></span> </div> @@ -4327,7 +4525,8 @@ </div> <div id="TokenType.INSERT" class="classattr"> <div class="attr variable"> - <span class="name">INSERT</span><span class="default_value"> = <<a href="#TokenType.INSERT">TokenType.INSERT</a>: 'INSERT'></span> + <span class="name">INSERT</span> = +<span class="default_value"><<a href="#TokenType.INSERT">TokenType.INSERT</a>: 'INSERT'></span> </div> @@ -4338,7 +4537,8 @@ </div> <div id="TokenType.INTERSECT" class="classattr"> <div class="attr variable"> - <span class="name">INTERSECT</span><span class="default_value"> = <<a href="#TokenType.INTERSECT">TokenType.INTERSECT</a>: 'INTERSECT'></span> + <span class="name">INTERSECT</span> = +<span class="default_value"><<a href="#TokenType.INTERSECT">TokenType.INTERSECT</a>: 'INTERSECT'></span> </div> @@ -4349,7 +4549,8 @@ </div> <div id="TokenType.INTERVAL" class="classattr"> <div class="attr variable"> - <span class="name">INTERVAL</span><span class="default_value"> = <<a href="#TokenType.INTERVAL">TokenType.INTERVAL</a>: 'INTERVAL'></span> + <span class="name">INTERVAL</span> = +<span class="default_value"><<a href="#TokenType.INTERVAL">TokenType.INTERVAL</a>: 'INTERVAL'></span> </div> @@ -4360,7 +4561,8 @@ </div> <div id="TokenType.INTO" class="classattr"> <div class="attr variable"> - <span class="name">INTO</span><span class="default_value"> = <<a href="#TokenType.INTO">TokenType.INTO</a>: 'INTO'></span> + <span class="name">INTO</span> = +<span class="default_value"><<a href="#TokenType.INTO">TokenType.INTO</a>: 'INTO'></span> </div> @@ -4371,7 +4573,8 @@ </div> <div id="TokenType.INTRODUCER" class="classattr"> <div class="attr variable"> - <span class="name">INTRODUCER</span><span class="default_value"> = <<a href="#TokenType.INTRODUCER">TokenType.INTRODUCER</a>: 'INTRODUCER'></span> + <span class="name">INTRODUCER</span> = +<span class="default_value"><<a href="#TokenType.INTRODUCER">TokenType.INTRODUCER</a>: 'INTRODUCER'></span> </div> @@ -4382,7 +4585,8 @@ </div> <div id="TokenType.IRLIKE" class="classattr"> <div class="attr variable"> - <span class="name">IRLIKE</span><span class="default_value"> = <<a href="#TokenType.IRLIKE">TokenType.IRLIKE</a>: 'IRLIKE'></span> + <span class="name">IRLIKE</span> = +<span class="default_value"><<a href="#TokenType.IRLIKE">TokenType.IRLIKE</a>: 'IRLIKE'></span> </div> @@ -4393,7 +4597,8 @@ </div> <div id="TokenType.IS" class="classattr"> <div class="attr variable"> - <span class="name">IS</span><span class="default_value"> = <<a href="#TokenType.IS">TokenType.IS</a>: 'IS'></span> + <span class="name">IS</span> = +<span class="default_value"><<a href="#TokenType.IS">TokenType.IS</a>: 'IS'></span> </div> @@ -4404,7 +4609,8 @@ </div> <div id="TokenType.ISNULL" class="classattr"> <div class="attr variable"> - <span class="name">ISNULL</span><span class="default_value"> = <<a href="#TokenType.ISNULL">TokenType.ISNULL</a>: 'ISNULL'></span> + <span class="name">ISNULL</span> = +<span class="default_value"><<a href="#TokenType.ISNULL">TokenType.ISNULL</a>: 'ISNULL'></span> </div> @@ -4415,7 +4621,8 @@ </div> <div id="TokenType.JOIN" class="classattr"> <div class="attr variable"> - <span class="name">JOIN</span><span class="default_value"> = <<a href="#TokenType.JOIN">TokenType.JOIN</a>: 'JOIN'></span> + <span class="name">JOIN</span> = +<span class="default_value"><<a href="#TokenType.JOIN">TokenType.JOIN</a>: 'JOIN'></span> </div> @@ -4426,7 +4633,8 @@ </div> <div id="TokenType.LANGUAGE" class="classattr"> <div class="attr variable"> - <span class="name">LANGUAGE</span><span class="default_value"> = <<a href="#TokenType.LANGUAGE">TokenType.LANGUAGE</a>: 'LANGUAGE'></span> + <span class="name">LANGUAGE</span> = +<span class="default_value"><<a href="#TokenType.LANGUAGE">TokenType.LANGUAGE</a>: 'LANGUAGE'></span> </div> @@ -4437,7 +4645,8 @@ </div> <div id="TokenType.LATERAL" class="classattr"> <div class="attr variable"> - <span class="name">LATERAL</span><span class="default_value"> = <<a href="#TokenType.LATERAL">TokenType.LATERAL</a>: 'LATERAL'></span> + <span class="name">LATERAL</span> = +<span class="default_value"><<a href="#TokenType.LATERAL">TokenType.LATERAL</a>: 'LATERAL'></span> </div> @@ -4448,7 +4657,8 @@ </div> <div id="TokenType.LAZY" class="classattr"> <div class="attr variable"> - <span class="name">LAZY</span><span class="default_value"> = <<a href="#TokenType.LAZY">TokenType.LAZY</a>: 'LAZY'></span> + <span class="name">LAZY</span> = +<span class="default_value"><<a href="#TokenType.LAZY">TokenType.LAZY</a>: 'LAZY'></span> </div> @@ -4459,7 +4669,8 @@ </div> <div id="TokenType.LEADING" class="classattr"> <div class="attr variable"> - <span class="name">LEADING</span><span class="default_value"> = <<a href="#TokenType.LEADING">TokenType.LEADING</a>: 'LEADING'></span> + <span class="name">LEADING</span> = +<span class="default_value"><<a href="#TokenType.LEADING">TokenType.LEADING</a>: 'LEADING'></span> </div> @@ -4470,7 +4681,8 @@ </div> <div id="TokenType.LEFT" class="classattr"> <div class="attr variable"> - <span class="name">LEFT</span><span class="default_value"> = <<a href="#TokenType.LEFT">TokenType.LEFT</a>: 'LEFT'></span> + <span class="name">LEFT</span> = +<span class="default_value"><<a href="#TokenType.LEFT">TokenType.LEFT</a>: 'LEFT'></span> </div> @@ -4481,7 +4693,8 @@ </div> <div id="TokenType.LIKE" class="classattr"> <div class="attr variable"> - <span class="name">LIKE</span><span class="default_value"> = <<a href="#TokenType.LIKE">TokenType.LIKE</a>: 'LIKE'></span> + <span class="name">LIKE</span> = +<span class="default_value"><<a href="#TokenType.LIKE">TokenType.LIKE</a>: 'LIKE'></span> </div> @@ -4492,7 +4705,8 @@ </div> <div id="TokenType.LIKE_ANY" class="classattr"> <div class="attr variable"> - <span class="name">LIKE_ANY</span><span class="default_value"> = <<a href="#TokenType.LIKE_ANY">TokenType.LIKE_ANY</a>: 'LIKE_ANY'></span> + <span class="name">LIKE_ANY</span> = +<span class="default_value"><<a href="#TokenType.LIKE_ANY">TokenType.LIKE_ANY</a>: 'LIKE_ANY'></span> </div> @@ -4503,7 +4717,8 @@ </div> <div id="TokenType.LIMIT" class="classattr"> <div class="attr variable"> - <span class="name">LIMIT</span><span class="default_value"> = <<a href="#TokenType.LIMIT">TokenType.LIMIT</a>: 'LIMIT'></span> + <span class="name">LIMIT</span> = +<span class="default_value"><<a href="#TokenType.LIMIT">TokenType.LIMIT</a>: 'LIMIT'></span> </div> @@ -4514,7 +4729,8 @@ </div> <div id="TokenType.LOAD_DATA" class="classattr"> <div class="attr variable"> - <span class="name">LOAD_DATA</span><span class="default_value"> = <<a href="#TokenType.LOAD_DATA">TokenType.LOAD_DATA</a>: 'LOAD_DATA'></span> + <span class="name">LOAD_DATA</span> = +<span class="default_value"><<a href="#TokenType.LOAD_DATA">TokenType.LOAD_DATA</a>: 'LOAD_DATA'></span> </div> @@ -4525,7 +4741,8 @@ </div> <div id="TokenType.LOCAL" class="classattr"> <div class="attr variable"> - <span class="name">LOCAL</span><span class="default_value"> = <<a href="#TokenType.LOCAL">TokenType.LOCAL</a>: 'LOCAL'></span> + <span class="name">LOCAL</span> = +<span class="default_value"><<a href="#TokenType.LOCAL">TokenType.LOCAL</a>: 'LOCAL'></span> </div> @@ -4536,7 +4753,8 @@ </div> <div id="TokenType.MAP" class="classattr"> <div class="attr variable"> - <span class="name">MAP</span><span class="default_value"> = <<a href="#TokenType.MAP">TokenType.MAP</a>: 'MAP'></span> + <span class="name">MAP</span> = +<span class="default_value"><<a href="#TokenType.MAP">TokenType.MAP</a>: 'MAP'></span> </div> @@ -4547,7 +4765,8 @@ </div> <div id="TokenType.MATCH_RECOGNIZE" class="classattr"> <div class="attr variable"> - <span class="name">MATCH_RECOGNIZE</span><span class="default_value"> = <<a href="#TokenType.MATCH_RECOGNIZE">TokenType.MATCH_RECOGNIZE</a>: 'MATCH_RECOGNIZE'></span> + <span class="name">MATCH_RECOGNIZE</span> = +<span class="default_value"><<a href="#TokenType.MATCH_RECOGNIZE">TokenType.MATCH_RECOGNIZE</a>: 'MATCH_RECOGNIZE'></span> </div> @@ -4558,7 +4777,8 @@ </div> <div id="TokenType.MATERIALIZED" class="classattr"> <div class="attr variable"> - <span class="name">MATERIALIZED</span><span class="default_value"> = <<a href="#TokenType.MATERIALIZED">TokenType.MATERIALIZED</a>: 'MATERIALIZED'></span> + <span class="name">MATERIALIZED</span> = +<span class="default_value"><<a href="#TokenType.MATERIALIZED">TokenType.MATERIALIZED</a>: 'MATERIALIZED'></span> </div> @@ -4569,7 +4789,8 @@ </div> <div id="TokenType.MERGE" class="classattr"> <div class="attr variable"> - <span class="name">MERGE</span><span class="default_value"> = <<a href="#TokenType.MERGE">TokenType.MERGE</a>: 'MERGE'></span> + <span class="name">MERGE</span> = +<span class="default_value"><<a href="#TokenType.MERGE">TokenType.MERGE</a>: 'MERGE'></span> </div> @@ -4580,7 +4801,8 @@ </div> <div id="TokenType.MOD" class="classattr"> <div class="attr variable"> - <span class="name">MOD</span><span class="default_value"> = <<a href="#TokenType.MOD">TokenType.MOD</a>: 'MOD'></span> + <span class="name">MOD</span> = +<span class="default_value"><<a href="#TokenType.MOD">TokenType.MOD</a>: 'MOD'></span> </div> @@ -4591,7 +4813,8 @@ </div> <div id="TokenType.NATURAL" class="classattr"> <div class="attr variable"> - <span class="name">NATURAL</span><span class="default_value"> = <<a href="#TokenType.NATURAL">TokenType.NATURAL</a>: 'NATURAL'></span> + <span class="name">NATURAL</span> = +<span class="default_value"><<a href="#TokenType.NATURAL">TokenType.NATURAL</a>: 'NATURAL'></span> </div> @@ -4602,7 +4825,8 @@ </div> <div id="TokenType.NEXT" class="classattr"> <div class="attr variable"> - <span class="name">NEXT</span><span class="default_value"> = <<a href="#TokenType.NEXT">TokenType.NEXT</a>: 'NEXT'></span> + <span class="name">NEXT</span> = +<span class="default_value"><<a href="#TokenType.NEXT">TokenType.NEXT</a>: 'NEXT'></span> </div> @@ -4613,7 +4837,8 @@ </div> <div id="TokenType.NO_ACTION" class="classattr"> <div class="attr variable"> - <span class="name">NO_ACTION</span><span class="default_value"> = <<a href="#TokenType.NO_ACTION">TokenType.NO_ACTION</a>: 'NO_ACTION'></span> + <span class="name">NO_ACTION</span> = +<span class="default_value"><<a href="#TokenType.NO_ACTION">TokenType.NO_ACTION</a>: 'NO_ACTION'></span> </div> @@ -4624,7 +4849,8 @@ </div> <div id="TokenType.NOTNULL" class="classattr"> <div class="attr variable"> - <span class="name">NOTNULL</span><span class="default_value"> = <<a href="#TokenType.NOTNULL">TokenType.NOTNULL</a>: 'NOTNULL'></span> + <span class="name">NOTNULL</span> = +<span class="default_value"><<a href="#TokenType.NOTNULL">TokenType.NOTNULL</a>: 'NOTNULL'></span> </div> @@ -4635,7 +4861,8 @@ </div> <div id="TokenType.NULL" class="classattr"> <div class="attr variable"> - <span class="name">NULL</span><span class="default_value"> = <<a href="#TokenType.NULL">TokenType.NULL</a>: 'NULL'></span> + <span class="name">NULL</span> = +<span class="default_value"><<a href="#TokenType.NULL">TokenType.NULL</a>: 'NULL'></span> </div> @@ -4646,7 +4873,8 @@ </div> <div id="TokenType.NULLS_FIRST" class="classattr"> <div class="attr variable"> - <span class="name">NULLS_FIRST</span><span class="default_value"> = <<a href="#TokenType.NULLS_FIRST">TokenType.NULLS_FIRST</a>: 'NULLS_FIRST'></span> + <span class="name">NULLS_FIRST</span> = +<span class="default_value"><<a href="#TokenType.NULLS_FIRST">TokenType.NULLS_FIRST</a>: 'NULLS_FIRST'></span> </div> @@ -4657,7 +4885,8 @@ </div> <div id="TokenType.NULLS_LAST" class="classattr"> <div class="attr variable"> - <span class="name">NULLS_LAST</span><span class="default_value"> = <<a href="#TokenType.NULLS_LAST">TokenType.NULLS_LAST</a>: 'NULLS_LAST'></span> + <span class="name">NULLS_LAST</span> = +<span class="default_value"><<a href="#TokenType.NULLS_LAST">TokenType.NULLS_LAST</a>: 'NULLS_LAST'></span> </div> @@ -4668,7 +4897,8 @@ </div> <div id="TokenType.OFFSET" class="classattr"> <div class="attr variable"> - <span class="name">OFFSET</span><span class="default_value"> = <<a href="#TokenType.OFFSET">TokenType.OFFSET</a>: 'OFFSET'></span> + <span class="name">OFFSET</span> = +<span class="default_value"><<a href="#TokenType.OFFSET">TokenType.OFFSET</a>: 'OFFSET'></span> </div> @@ -4679,7 +4909,8 @@ </div> <div id="TokenType.ON" class="classattr"> <div class="attr variable"> - <span class="name">ON</span><span class="default_value"> = <<a href="#TokenType.ON">TokenType.ON</a>: 'ON'></span> + <span class="name">ON</span> = +<span class="default_value"><<a href="#TokenType.ON">TokenType.ON</a>: 'ON'></span> </div> @@ -4690,7 +4921,8 @@ </div> <div id="TokenType.ONLY" class="classattr"> <div class="attr variable"> - <span class="name">ONLY</span><span class="default_value"> = <<a href="#TokenType.ONLY">TokenType.ONLY</a>: 'ONLY'></span> + <span class="name">ONLY</span> = +<span class="default_value"><<a href="#TokenType.ONLY">TokenType.ONLY</a>: 'ONLY'></span> </div> @@ -4701,7 +4933,8 @@ </div> <div id="TokenType.OPTIONS" class="classattr"> <div class="attr variable"> - <span class="name">OPTIONS</span><span class="default_value"> = <<a href="#TokenType.OPTIONS">TokenType.OPTIONS</a>: 'OPTIONS'></span> + <span class="name">OPTIONS</span> = +<span class="default_value"><<a href="#TokenType.OPTIONS">TokenType.OPTIONS</a>: 'OPTIONS'></span> </div> @@ -4712,7 +4945,8 @@ </div> <div id="TokenType.ORDER_BY" class="classattr"> <div class="attr variable"> - <span class="name">ORDER_BY</span><span class="default_value"> = <<a href="#TokenType.ORDER_BY">TokenType.ORDER_BY</a>: 'ORDER_BY'></span> + <span class="name">ORDER_BY</span> = +<span class="default_value"><<a href="#TokenType.ORDER_BY">TokenType.ORDER_BY</a>: 'ORDER_BY'></span> </div> @@ -4723,7 +4957,8 @@ </div> <div id="TokenType.ORDERED" class="classattr"> <div class="attr variable"> - <span class="name">ORDERED</span><span class="default_value"> = <<a href="#TokenType.ORDERED">TokenType.ORDERED</a>: 'ORDERED'></span> + <span class="name">ORDERED</span> = +<span class="default_value"><<a href="#TokenType.ORDERED">TokenType.ORDERED</a>: 'ORDERED'></span> </div> @@ -4734,7 +4969,8 @@ </div> <div id="TokenType.ORDINALITY" class="classattr"> <div class="attr variable"> - <span class="name">ORDINALITY</span><span class="default_value"> = <<a href="#TokenType.ORDINALITY">TokenType.ORDINALITY</a>: 'ORDINALITY'></span> + <span class="name">ORDINALITY</span> = +<span class="default_value"><<a href="#TokenType.ORDINALITY">TokenType.ORDINALITY</a>: 'ORDINALITY'></span> </div> @@ -4745,7 +4981,8 @@ </div> <div id="TokenType.OUTER" class="classattr"> <div class="attr variable"> - <span class="name">OUTER</span><span class="default_value"> = <<a href="#TokenType.OUTER">TokenType.OUTER</a>: 'OUTER'></span> + <span class="name">OUTER</span> = +<span class="default_value"><<a href="#TokenType.OUTER">TokenType.OUTER</a>: 'OUTER'></span> </div> @@ -4756,7 +4993,8 @@ </div> <div id="TokenType.OUT_OF" class="classattr"> <div class="attr variable"> - <span class="name">OUT_OF</span><span class="default_value"> = <<a href="#TokenType.OUT_OF">TokenType.OUT_OF</a>: 'OUT_OF'></span> + <span class="name">OUT_OF</span> = +<span class="default_value"><<a href="#TokenType.OUT_OF">TokenType.OUT_OF</a>: 'OUT_OF'></span> </div> @@ -4767,7 +5005,8 @@ </div> <div id="TokenType.OVER" class="classattr"> <div class="attr variable"> - <span class="name">OVER</span><span class="default_value"> = <<a href="#TokenType.OVER">TokenType.OVER</a>: 'OVER'></span> + <span class="name">OVER</span> = +<span class="default_value"><<a href="#TokenType.OVER">TokenType.OVER</a>: 'OVER'></span> </div> @@ -4778,7 +5017,8 @@ </div> <div id="TokenType.OVERWRITE" class="classattr"> <div class="attr variable"> - <span class="name">OVERWRITE</span><span class="default_value"> = <<a href="#TokenType.OVERWRITE">TokenType.OVERWRITE</a>: 'OVERWRITE'></span> + <span class="name">OVERWRITE</span> = +<span class="default_value"><<a href="#TokenType.OVERWRITE">TokenType.OVERWRITE</a>: 'OVERWRITE'></span> </div> @@ -4789,7 +5029,8 @@ </div> <div id="TokenType.PARTITION" class="classattr"> <div class="attr variable"> - <span class="name">PARTITION</span><span class="default_value"> = <<a href="#TokenType.PARTITION">TokenType.PARTITION</a>: 'PARTITION'></span> + <span class="name">PARTITION</span> = +<span class="default_value"><<a href="#TokenType.PARTITION">TokenType.PARTITION</a>: 'PARTITION'></span> </div> @@ -4800,7 +5041,8 @@ </div> <div id="TokenType.PARTITION_BY" class="classattr"> <div class="attr variable"> - <span class="name">PARTITION_BY</span><span class="default_value"> = <<a href="#TokenType.PARTITION_BY">TokenType.PARTITION_BY</a>: 'PARTITION_BY'></span> + <span class="name">PARTITION_BY</span> = +<span class="default_value"><<a href="#TokenType.PARTITION_BY">TokenType.PARTITION_BY</a>: 'PARTITION_BY'></span> </div> @@ -4811,7 +5053,8 @@ </div> <div id="TokenType.PERCENT" class="classattr"> <div class="attr variable"> - <span class="name">PERCENT</span><span class="default_value"> = <<a href="#TokenType.PERCENT">TokenType.PERCENT</a>: 'PERCENT'></span> + <span class="name">PERCENT</span> = +<span class="default_value"><<a href="#TokenType.PERCENT">TokenType.PERCENT</a>: 'PERCENT'></span> </div> @@ -4822,7 +5065,8 @@ </div> <div id="TokenType.PIVOT" class="classattr"> <div class="attr variable"> - <span class="name">PIVOT</span><span class="default_value"> = <<a href="#TokenType.PIVOT">TokenType.PIVOT</a>: 'PIVOT'></span> + <span class="name">PIVOT</span> = +<span class="default_value"><<a href="#TokenType.PIVOT">TokenType.PIVOT</a>: 'PIVOT'></span> </div> @@ -4833,7 +5077,8 @@ </div> <div id="TokenType.PLACEHOLDER" class="classattr"> <div class="attr variable"> - <span class="name">PLACEHOLDER</span><span class="default_value"> = <<a href="#TokenType.PLACEHOLDER">TokenType.PLACEHOLDER</a>: 'PLACEHOLDER'></span> + <span class="name">PLACEHOLDER</span> = +<span class="default_value"><<a href="#TokenType.PLACEHOLDER">TokenType.PLACEHOLDER</a>: 'PLACEHOLDER'></span> </div> @@ -4844,7 +5089,8 @@ </div> <div id="TokenType.PRECEDING" class="classattr"> <div class="attr variable"> - <span class="name">PRECEDING</span><span class="default_value"> = <<a href="#TokenType.PRECEDING">TokenType.PRECEDING</a>: 'PRECEDING'></span> + <span class="name">PRECEDING</span> = +<span class="default_value"><<a href="#TokenType.PRECEDING">TokenType.PRECEDING</a>: 'PRECEDING'></span> </div> @@ -4855,7 +5101,8 @@ </div> <div id="TokenType.PRIMARY_KEY" class="classattr"> <div class="attr variable"> - <span class="name">PRIMARY_KEY</span><span class="default_value"> = <<a href="#TokenType.PRIMARY_KEY">TokenType.PRIMARY_KEY</a>: 'PRIMARY_KEY'></span> + <span class="name">PRIMARY_KEY</span> = +<span class="default_value"><<a href="#TokenType.PRIMARY_KEY">TokenType.PRIMARY_KEY</a>: 'PRIMARY_KEY'></span> </div> @@ -4866,7 +5113,8 @@ </div> <div id="TokenType.PROCEDURE" class="classattr"> <div class="attr variable"> - <span class="name">PROCEDURE</span><span class="default_value"> = <<a href="#TokenType.PROCEDURE">TokenType.PROCEDURE</a>: 'PROCEDURE'></span> + <span class="name">PROCEDURE</span> = +<span class="default_value"><<a href="#TokenType.PROCEDURE">TokenType.PROCEDURE</a>: 'PROCEDURE'></span> </div> @@ -4877,7 +5125,8 @@ </div> <div id="TokenType.PROPERTIES" class="classattr"> <div class="attr variable"> - <span class="name">PROPERTIES</span><span class="default_value"> = <<a href="#TokenType.PROPERTIES">TokenType.PROPERTIES</a>: 'PROPERTIES'></span> + <span class="name">PROPERTIES</span> = +<span class="default_value"><<a href="#TokenType.PROPERTIES">TokenType.PROPERTIES</a>: 'PROPERTIES'></span> </div> @@ -4888,7 +5137,8 @@ </div> <div id="TokenType.PSEUDO_TYPE" class="classattr"> <div class="attr variable"> - <span class="name">PSEUDO_TYPE</span><span class="default_value"> = <<a href="#TokenType.PSEUDO_TYPE">TokenType.PSEUDO_TYPE</a>: 'PSEUDO_TYPE'></span> + <span class="name">PSEUDO_TYPE</span> = +<span class="default_value"><<a href="#TokenType.PSEUDO_TYPE">TokenType.PSEUDO_TYPE</a>: 'PSEUDO_TYPE'></span> </div> @@ -4899,7 +5149,8 @@ </div> <div id="TokenType.QUALIFY" class="classattr"> <div class="attr variable"> - <span class="name">QUALIFY</span><span class="default_value"> = <<a href="#TokenType.QUALIFY">TokenType.QUALIFY</a>: 'QUALIFY'></span> + <span class="name">QUALIFY</span> = +<span class="default_value"><<a href="#TokenType.QUALIFY">TokenType.QUALIFY</a>: 'QUALIFY'></span> </div> @@ -4910,7 +5161,8 @@ </div> <div id="TokenType.QUOTE" class="classattr"> <div class="attr variable"> - <span class="name">QUOTE</span><span class="default_value"> = <<a href="#TokenType.QUOTE">TokenType.QUOTE</a>: 'QUOTE'></span> + <span class="name">QUOTE</span> = +<span class="default_value"><<a href="#TokenType.QUOTE">TokenType.QUOTE</a>: 'QUOTE'></span> </div> @@ -4921,7 +5173,8 @@ </div> <div id="TokenType.RANGE" class="classattr"> <div class="attr variable"> - <span class="name">RANGE</span><span class="default_value"> = <<a href="#TokenType.RANGE">TokenType.RANGE</a>: 'RANGE'></span> + <span class="name">RANGE</span> = +<span class="default_value"><<a href="#TokenType.RANGE">TokenType.RANGE</a>: 'RANGE'></span> </div> @@ -4932,7 +5185,8 @@ </div> <div id="TokenType.RECURSIVE" class="classattr"> <div class="attr variable"> - <span class="name">RECURSIVE</span><span class="default_value"> = <<a href="#TokenType.RECURSIVE">TokenType.RECURSIVE</a>: 'RECURSIVE'></span> + <span class="name">RECURSIVE</span> = +<span class="default_value"><<a href="#TokenType.RECURSIVE">TokenType.RECURSIVE</a>: 'RECURSIVE'></span> </div> @@ -4943,7 +5197,8 @@ </div> <div id="TokenType.REPLACE" class="classattr"> <div class="attr variable"> - <span class="name">REPLACE</span><span class="default_value"> = <<a href="#TokenType.REPLACE">TokenType.REPLACE</a>: 'REPLACE'></span> + <span class="name">REPLACE</span> = +<span class="default_value"><<a href="#TokenType.REPLACE">TokenType.REPLACE</a>: 'REPLACE'></span> </div> @@ -4954,7 +5209,8 @@ </div> <div id="TokenType.RESPECT_NULLS" class="classattr"> <div class="attr variable"> - <span class="name">RESPECT_NULLS</span><span class="default_value"> = <<a href="#TokenType.RESPECT_NULLS">TokenType.RESPECT_NULLS</a>: 'RESPECT_NULLS'></span> + <span class="name">RESPECT_NULLS</span> = +<span class="default_value"><<a href="#TokenType.RESPECT_NULLS">TokenType.RESPECT_NULLS</a>: 'RESPECT_NULLS'></span> </div> @@ -4965,7 +5221,8 @@ </div> <div id="TokenType.RETURNING" class="classattr"> <div class="attr variable"> - <span class="name">RETURNING</span><span class="default_value"> = <<a href="#TokenType.RETURNING">TokenType.RETURNING</a>: 'RETURNING'></span> + <span class="name">RETURNING</span> = +<span class="default_value"><<a href="#TokenType.RETURNING">TokenType.RETURNING</a>: 'RETURNING'></span> </div> @@ -4976,7 +5233,8 @@ </div> <div id="TokenType.REFERENCES" class="classattr"> <div class="attr variable"> - <span class="name">REFERENCES</span><span class="default_value"> = <<a href="#TokenType.REFERENCES">TokenType.REFERENCES</a>: 'REFERENCES'></span> + <span class="name">REFERENCES</span> = +<span class="default_value"><<a href="#TokenType.REFERENCES">TokenType.REFERENCES</a>: 'REFERENCES'></span> </div> @@ -4987,7 +5245,8 @@ </div> <div id="TokenType.RIGHT" class="classattr"> <div class="attr variable"> - <span class="name">RIGHT</span><span class="default_value"> = <<a href="#TokenType.RIGHT">TokenType.RIGHT</a>: 'RIGHT'></span> + <span class="name">RIGHT</span> = +<span class="default_value"><<a href="#TokenType.RIGHT">TokenType.RIGHT</a>: 'RIGHT'></span> </div> @@ -4998,7 +5257,8 @@ </div> <div id="TokenType.RLIKE" class="classattr"> <div class="attr variable"> - <span class="name">RLIKE</span><span class="default_value"> = <<a href="#TokenType.RLIKE">TokenType.RLIKE</a>: 'RLIKE'></span> + <span class="name">RLIKE</span> = +<span class="default_value"><<a href="#TokenType.RLIKE">TokenType.RLIKE</a>: 'RLIKE'></span> </div> @@ -5009,7 +5269,8 @@ </div> <div id="TokenType.ROLLBACK" class="classattr"> <div class="attr variable"> - <span class="name">ROLLBACK</span><span class="default_value"> = <<a href="#TokenType.ROLLBACK">TokenType.ROLLBACK</a>: 'ROLLBACK'></span> + <span class="name">ROLLBACK</span> = +<span class="default_value"><<a href="#TokenType.ROLLBACK">TokenType.ROLLBACK</a>: 'ROLLBACK'></span> </div> @@ -5020,7 +5281,8 @@ </div> <div id="TokenType.ROLLUP" class="classattr"> <div class="attr variable"> - <span class="name">ROLLUP</span><span class="default_value"> = <<a href="#TokenType.ROLLUP">TokenType.ROLLUP</a>: 'ROLLUP'></span> + <span class="name">ROLLUP</span> = +<span class="default_value"><<a href="#TokenType.ROLLUP">TokenType.ROLLUP</a>: 'ROLLUP'></span> </div> @@ -5031,7 +5293,8 @@ </div> <div id="TokenType.ROW" class="classattr"> <div class="attr variable"> - <span class="name">ROW</span><span class="default_value"> = <<a href="#TokenType.ROW">TokenType.ROW</a>: 'ROW'></span> + <span class="name">ROW</span> = +<span class="default_value"><<a href="#TokenType.ROW">TokenType.ROW</a>: 'ROW'></span> </div> @@ -5042,7 +5305,8 @@ </div> <div id="TokenType.ROWS" class="classattr"> <div class="attr variable"> - <span class="name">ROWS</span><span class="default_value"> = <<a href="#TokenType.ROWS">TokenType.ROWS</a>: 'ROWS'></span> + <span class="name">ROWS</span> = +<span class="default_value"><<a href="#TokenType.ROWS">TokenType.ROWS</a>: 'ROWS'></span> </div> @@ -5053,7 +5317,8 @@ </div> <div id="TokenType.SEED" class="classattr"> <div class="attr variable"> - <span class="name">SEED</span><span class="default_value"> = <<a href="#TokenType.SEED">TokenType.SEED</a>: 'SEED'></span> + <span class="name">SEED</span> = +<span class="default_value"><<a href="#TokenType.SEED">TokenType.SEED</a>: 'SEED'></span> </div> @@ -5064,7 +5329,8 @@ </div> <div id="TokenType.SELECT" class="classattr"> <div class="attr variable"> - <span class="name">SELECT</span><span class="default_value"> = <<a href="#TokenType.SELECT">TokenType.SELECT</a>: 'SELECT'></span> + <span class="name">SELECT</span> = +<span class="default_value"><<a href="#TokenType.SELECT">TokenType.SELECT</a>: 'SELECT'></span> </div> @@ -5075,7 +5341,8 @@ </div> <div id="TokenType.SEMI" class="classattr"> <div class="attr variable"> - <span class="name">SEMI</span><span class="default_value"> = <<a href="#TokenType.SEMI">TokenType.SEMI</a>: 'SEMI'></span> + <span class="name">SEMI</span> = +<span class="default_value"><<a href="#TokenType.SEMI">TokenType.SEMI</a>: 'SEMI'></span> </div> @@ -5086,7 +5353,8 @@ </div> <div id="TokenType.SEPARATOR" class="classattr"> <div class="attr variable"> - <span class="name">SEPARATOR</span><span class="default_value"> = <<a href="#TokenType.SEPARATOR">TokenType.SEPARATOR</a>: 'SEPARATOR'></span> + <span class="name">SEPARATOR</span> = +<span class="default_value"><<a href="#TokenType.SEPARATOR">TokenType.SEPARATOR</a>: 'SEPARATOR'></span> </div> @@ -5097,7 +5365,8 @@ </div> <div id="TokenType.SERDE_PROPERTIES" class="classattr"> <div class="attr variable"> - <span class="name">SERDE_PROPERTIES</span><span class="default_value"> = <<a href="#TokenType.SERDE_PROPERTIES">TokenType.SERDE_PROPERTIES</a>: 'SERDE_PROPERTIES'></span> + <span class="name">SERDE_PROPERTIES</span> = +<span class="default_value"><<a href="#TokenType.SERDE_PROPERTIES">TokenType.SERDE_PROPERTIES</a>: 'SERDE_PROPERTIES'></span> </div> @@ -5108,7 +5377,8 @@ </div> <div id="TokenType.SET" class="classattr"> <div class="attr variable"> - <span class="name">SET</span><span class="default_value"> = <<a href="#TokenType.SET">TokenType.SET</a>: 'SET'></span> + <span class="name">SET</span> = +<span class="default_value"><<a href="#TokenType.SET">TokenType.SET</a>: 'SET'></span> </div> @@ -5119,7 +5389,8 @@ </div> <div id="TokenType.SHOW" class="classattr"> <div class="attr variable"> - <span class="name">SHOW</span><span class="default_value"> = <<a href="#TokenType.SHOW">TokenType.SHOW</a>: 'SHOW'></span> + <span class="name">SHOW</span> = +<span class="default_value"><<a href="#TokenType.SHOW">TokenType.SHOW</a>: 'SHOW'></span> </div> @@ -5130,7 +5401,8 @@ </div> <div id="TokenType.SIMILAR_TO" class="classattr"> <div class="attr variable"> - <span class="name">SIMILAR_TO</span><span class="default_value"> = <<a href="#TokenType.SIMILAR_TO">TokenType.SIMILAR_TO</a>: 'SIMILAR_TO'></span> + <span class="name">SIMILAR_TO</span> = +<span class="default_value"><<a href="#TokenType.SIMILAR_TO">TokenType.SIMILAR_TO</a>: 'SIMILAR_TO'></span> </div> @@ -5141,7 +5413,8 @@ </div> <div id="TokenType.SOME" class="classattr"> <div class="attr variable"> - <span class="name">SOME</span><span class="default_value"> = <<a href="#TokenType.SOME">TokenType.SOME</a>: 'SOME'></span> + <span class="name">SOME</span> = +<span class="default_value"><<a href="#TokenType.SOME">TokenType.SOME</a>: 'SOME'></span> </div> @@ -5152,7 +5425,8 @@ </div> <div id="TokenType.SORTKEY" class="classattr"> <div class="attr variable"> - <span class="name">SORTKEY</span><span class="default_value"> = <<a href="#TokenType.SORTKEY">TokenType.SORTKEY</a>: 'SORTKEY'></span> + <span class="name">SORTKEY</span> = +<span class="default_value"><<a href="#TokenType.SORTKEY">TokenType.SORTKEY</a>: 'SORTKEY'></span> </div> @@ -5163,7 +5437,8 @@ </div> <div id="TokenType.SORT_BY" class="classattr"> <div class="attr variable"> - <span class="name">SORT_BY</span><span class="default_value"> = <<a href="#TokenType.SORT_BY">TokenType.SORT_BY</a>: 'SORT_BY'></span> + <span class="name">SORT_BY</span> = +<span class="default_value"><<a href="#TokenType.SORT_BY">TokenType.SORT_BY</a>: 'SORT_BY'></span> </div> @@ -5174,7 +5449,8 @@ </div> <div id="TokenType.STRUCT" class="classattr"> <div class="attr variable"> - <span class="name">STRUCT</span><span class="default_value"> = <<a href="#TokenType.STRUCT">TokenType.STRUCT</a>: 'STRUCT'></span> + <span class="name">STRUCT</span> = +<span class="default_value"><<a href="#TokenType.STRUCT">TokenType.STRUCT</a>: 'STRUCT'></span> </div> @@ -5185,7 +5461,8 @@ </div> <div id="TokenType.TABLE_SAMPLE" class="classattr"> <div class="attr variable"> - <span class="name">TABLE_SAMPLE</span><span class="default_value"> = <<a href="#TokenType.TABLE_SAMPLE">TokenType.TABLE_SAMPLE</a>: 'TABLE_SAMPLE'></span> + <span class="name">TABLE_SAMPLE</span> = +<span class="default_value"><<a href="#TokenType.TABLE_SAMPLE">TokenType.TABLE_SAMPLE</a>: 'TABLE_SAMPLE'></span> </div> @@ -5196,7 +5473,8 @@ </div> <div id="TokenType.TEMPORARY" class="classattr"> <div class="attr variable"> - <span class="name">TEMPORARY</span><span class="default_value"> = <<a href="#TokenType.TEMPORARY">TokenType.TEMPORARY</a>: 'TEMPORARY'></span> + <span class="name">TEMPORARY</span> = +<span class="default_value"><<a href="#TokenType.TEMPORARY">TokenType.TEMPORARY</a>: 'TEMPORARY'></span> </div> @@ -5207,7 +5485,8 @@ </div> <div id="TokenType.TOP" class="classattr"> <div class="attr variable"> - <span class="name">TOP</span><span class="default_value"> = <<a href="#TokenType.TOP">TokenType.TOP</a>: 'TOP'></span> + <span class="name">TOP</span> = +<span class="default_value"><<a href="#TokenType.TOP">TokenType.TOP</a>: 'TOP'></span> </div> @@ -5218,7 +5497,8 @@ </div> <div id="TokenType.THEN" class="classattr"> <div class="attr variable"> - <span class="name">THEN</span><span class="default_value"> = <<a href="#TokenType.THEN">TokenType.THEN</a>: 'THEN'></span> + <span class="name">THEN</span> = +<span class="default_value"><<a href="#TokenType.THEN">TokenType.THEN</a>: 'THEN'></span> </div> @@ -5229,7 +5509,8 @@ </div> <div id="TokenType.TRAILING" class="classattr"> <div class="attr variable"> - <span class="name">TRAILING</span><span class="default_value"> = <<a href="#TokenType.TRAILING">TokenType.TRAILING</a>: 'TRAILING'></span> + <span class="name">TRAILING</span> = +<span class="default_value"><<a href="#TokenType.TRAILING">TokenType.TRAILING</a>: 'TRAILING'></span> </div> @@ -5240,7 +5521,8 @@ </div> <div id="TokenType.TRUE" class="classattr"> <div class="attr variable"> - <span class="name">TRUE</span><span class="default_value"> = <<a href="#TokenType.TRUE">TokenType.TRUE</a>: 'TRUE'></span> + <span class="name">TRUE</span> = +<span class="default_value"><<a href="#TokenType.TRUE">TokenType.TRUE</a>: 'TRUE'></span> </div> @@ -5251,7 +5533,8 @@ </div> <div id="TokenType.UNBOUNDED" class="classattr"> <div class="attr variable"> - <span class="name">UNBOUNDED</span><span class="default_value"> = <<a href="#TokenType.UNBOUNDED">TokenType.UNBOUNDED</a>: 'UNBOUNDED'></span> + <span class="name">UNBOUNDED</span> = +<span class="default_value"><<a href="#TokenType.UNBOUNDED">TokenType.UNBOUNDED</a>: 'UNBOUNDED'></span> </div> @@ -5262,7 +5545,8 @@ </div> <div id="TokenType.UNCACHE" class="classattr"> <div class="attr variable"> - <span class="name">UNCACHE</span><span class="default_value"> = <<a href="#TokenType.UNCACHE">TokenType.UNCACHE</a>: 'UNCACHE'></span> + <span class="name">UNCACHE</span> = +<span class="default_value"><<a href="#TokenType.UNCACHE">TokenType.UNCACHE</a>: 'UNCACHE'></span> </div> @@ -5273,7 +5557,8 @@ </div> <div id="TokenType.UNION" class="classattr"> <div class="attr variable"> - <span class="name">UNION</span><span class="default_value"> = <<a href="#TokenType.UNION">TokenType.UNION</a>: 'UNION'></span> + <span class="name">UNION</span> = +<span class="default_value"><<a href="#TokenType.UNION">TokenType.UNION</a>: 'UNION'></span> </div> @@ -5284,7 +5569,8 @@ </div> <div id="TokenType.UNLOGGED" class="classattr"> <div class="attr variable"> - <span class="name">UNLOGGED</span><span class="default_value"> = <<a href="#TokenType.UNLOGGED">TokenType.UNLOGGED</a>: 'UNLOGGED'></span> + <span class="name">UNLOGGED</span> = +<span class="default_value"><<a href="#TokenType.UNLOGGED">TokenType.UNLOGGED</a>: 'UNLOGGED'></span> </div> @@ -5295,7 +5581,8 @@ </div> <div id="TokenType.UNNEST" class="classattr"> <div class="attr variable"> - <span class="name">UNNEST</span><span class="default_value"> = <<a href="#TokenType.UNNEST">TokenType.UNNEST</a>: 'UNNEST'></span> + <span class="name">UNNEST</span> = +<span class="default_value"><<a href="#TokenType.UNNEST">TokenType.UNNEST</a>: 'UNNEST'></span> </div> @@ -5306,7 +5593,8 @@ </div> <div id="TokenType.UNPIVOT" class="classattr"> <div class="attr variable"> - <span class="name">UNPIVOT</span><span class="default_value"> = <<a href="#TokenType.UNPIVOT">TokenType.UNPIVOT</a>: 'UNPIVOT'></span> + <span class="name">UNPIVOT</span> = +<span class="default_value"><<a href="#TokenType.UNPIVOT">TokenType.UNPIVOT</a>: 'UNPIVOT'></span> </div> @@ -5317,7 +5605,8 @@ </div> <div id="TokenType.UPDATE" class="classattr"> <div class="attr variable"> - <span class="name">UPDATE</span><span class="default_value"> = <<a href="#TokenType.UPDATE">TokenType.UPDATE</a>: 'UPDATE'></span> + <span class="name">UPDATE</span> = +<span class="default_value"><<a href="#TokenType.UPDATE">TokenType.UPDATE</a>: 'UPDATE'></span> </div> @@ -5328,7 +5617,8 @@ </div> <div id="TokenType.USE" class="classattr"> <div class="attr variable"> - <span class="name">USE</span><span class="default_value"> = <<a href="#TokenType.USE">TokenType.USE</a>: 'USE'></span> + <span class="name">USE</span> = +<span class="default_value"><<a href="#TokenType.USE">TokenType.USE</a>: 'USE'></span> </div> @@ -5339,7 +5629,8 @@ </div> <div id="TokenType.USING" class="classattr"> <div class="attr variable"> - <span class="name">USING</span><span class="default_value"> = <<a href="#TokenType.USING">TokenType.USING</a>: 'USING'></span> + <span class="name">USING</span> = +<span class="default_value"><<a href="#TokenType.USING">TokenType.USING</a>: 'USING'></span> </div> @@ -5350,7 +5641,8 @@ </div> <div id="TokenType.VALUES" class="classattr"> <div class="attr variable"> - <span class="name">VALUES</span><span class="default_value"> = <<a href="#TokenType.VALUES">TokenType.VALUES</a>: 'VALUES'></span> + <span class="name">VALUES</span> = +<span class="default_value"><<a href="#TokenType.VALUES">TokenType.VALUES</a>: 'VALUES'></span> </div> @@ -5361,7 +5653,8 @@ </div> <div id="TokenType.VIEW" class="classattr"> <div class="attr variable"> - <span class="name">VIEW</span><span class="default_value"> = <<a href="#TokenType.VIEW">TokenType.VIEW</a>: 'VIEW'></span> + <span class="name">VIEW</span> = +<span class="default_value"><<a href="#TokenType.VIEW">TokenType.VIEW</a>: 'VIEW'></span> </div> @@ -5372,7 +5665,8 @@ </div> <div id="TokenType.VOLATILE" class="classattr"> <div class="attr variable"> - <span class="name">VOLATILE</span><span class="default_value"> = <<a href="#TokenType.VOLATILE">TokenType.VOLATILE</a>: 'VOLATILE'></span> + <span class="name">VOLATILE</span> = +<span class="default_value"><<a href="#TokenType.VOLATILE">TokenType.VOLATILE</a>: 'VOLATILE'></span> </div> @@ -5383,7 +5677,8 @@ </div> <div id="TokenType.WHEN" class="classattr"> <div class="attr variable"> - <span class="name">WHEN</span><span class="default_value"> = <<a href="#TokenType.WHEN">TokenType.WHEN</a>: 'WHEN'></span> + <span class="name">WHEN</span> = +<span class="default_value"><<a href="#TokenType.WHEN">TokenType.WHEN</a>: 'WHEN'></span> </div> @@ -5394,7 +5689,8 @@ </div> <div id="TokenType.WHERE" class="classattr"> <div class="attr variable"> - <span class="name">WHERE</span><span class="default_value"> = <<a href="#TokenType.WHERE">TokenType.WHERE</a>: 'WHERE'></span> + <span class="name">WHERE</span> = +<span class="default_value"><<a href="#TokenType.WHERE">TokenType.WHERE</a>: 'WHERE'></span> </div> @@ -5405,7 +5701,8 @@ </div> <div id="TokenType.WINDOW" class="classattr"> <div class="attr variable"> - <span class="name">WINDOW</span><span class="default_value"> = <<a href="#TokenType.WINDOW">TokenType.WINDOW</a>: 'WINDOW'></span> + <span class="name">WINDOW</span> = +<span class="default_value"><<a href="#TokenType.WINDOW">TokenType.WINDOW</a>: 'WINDOW'></span> </div> @@ -5416,7 +5713,8 @@ </div> <div id="TokenType.WITH" class="classattr"> <div class="attr variable"> - <span class="name">WITH</span><span class="default_value"> = <<a href="#TokenType.WITH">TokenType.WITH</a>: 'WITH'></span> + <span class="name">WITH</span> = +<span class="default_value"><<a href="#TokenType.WITH">TokenType.WITH</a>: 'WITH'></span> </div> @@ -5427,7 +5725,8 @@ </div> <div id="TokenType.WITH_TIME_ZONE" class="classattr"> <div class="attr variable"> - <span class="name">WITH_TIME_ZONE</span><span class="default_value"> = <<a href="#TokenType.WITH_TIME_ZONE">TokenType.WITH_TIME_ZONE</a>: 'WITH_TIME_ZONE'></span> + <span class="name">WITH_TIME_ZONE</span> = +<span class="default_value"><<a href="#TokenType.WITH_TIME_ZONE">TokenType.WITH_TIME_ZONE</a>: 'WITH_TIME_ZONE'></span> </div> @@ -5438,7 +5737,8 @@ </div> <div id="TokenType.WITH_LOCAL_TIME_ZONE" class="classattr"> <div class="attr variable"> - <span class="name">WITH_LOCAL_TIME_ZONE</span><span class="default_value"> = <<a href="#TokenType.WITH_LOCAL_TIME_ZONE">TokenType.WITH_LOCAL_TIME_ZONE</a>: 'WITH_LOCAL_TIME_ZONE'></span> + <span class="name">WITH_LOCAL_TIME_ZONE</span> = +<span class="default_value"><<a href="#TokenType.WITH_LOCAL_TIME_ZONE">TokenType.WITH_LOCAL_TIME_ZONE</a>: 'WITH_LOCAL_TIME_ZONE'></span> </div> @@ -5449,7 +5749,8 @@ </div> <div id="TokenType.WITHIN_GROUP" class="classattr"> <div class="attr variable"> - <span class="name">WITHIN_GROUP</span><span class="default_value"> = <<a href="#TokenType.WITHIN_GROUP">TokenType.WITHIN_GROUP</a>: 'WITHIN_GROUP'></span> + <span class="name">WITHIN_GROUP</span> = +<span class="default_value"><<a href="#TokenType.WITHIN_GROUP">TokenType.WITHIN_GROUP</a>: 'WITHIN_GROUP'></span> </div> @@ -5460,7 +5761,8 @@ </div> <div id="TokenType.WITHOUT_TIME_ZONE" class="classattr"> <div class="attr variable"> - <span class="name">WITHOUT_TIME_ZONE</span><span class="default_value"> = <<a href="#TokenType.WITHOUT_TIME_ZONE">TokenType.WITHOUT_TIME_ZONE</a>: 'WITHOUT_TIME_ZONE'></span> + <span class="name">WITHOUT_TIME_ZONE</span> = +<span class="default_value"><<a href="#TokenType.WITHOUT_TIME_ZONE">TokenType.WITHOUT_TIME_ZONE</a>: 'WITHOUT_TIME_ZONE'></span> </div> @@ -5471,7 +5773,8 @@ </div> <div id="TokenType.UNIQUE" class="classattr"> <div class="attr variable"> - <span class="name">UNIQUE</span><span class="default_value"> = <<a href="#TokenType.UNIQUE">TokenType.UNIQUE</a>: 'UNIQUE'></span> + <span class="name">UNIQUE</span> = +<span class="default_value"><<a href="#TokenType.UNIQUE">TokenType.UNIQUE</a>: 'UNIQUE'></span> </div> @@ -5502,46 +5805,46 @@ </div> <a class="headerlink" href="#Token"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token-304"><a href="#Token-304"><span class="linenos">304</span></a><span class="k">class</span> <span class="nc">Token</span><span class="p">:</span> -</span><span id="Token-305"><a href="#Token-305"><span class="linenos">305</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"token_type"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"line"</span><span class="p">,</span> <span class="s2">"col"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">)</span> -</span><span id="Token-306"><a href="#Token-306"><span class="linenos">306</span></a> -</span><span id="Token-307"><a href="#Token-307"><span class="linenos">307</span></a> <span class="nd">@classmethod</span> -</span><span id="Token-308"><a href="#Token-308"><span class="linenos">308</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token-309"><a href="#Token-309"><span class="linenos">309</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> -</span><span id="Token-310"><a href="#Token-310"><span class="linenos">310</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> -</span><span id="Token-311"><a href="#Token-311"><span class="linenos">311</span></a> -</span><span id="Token-312"><a href="#Token-312"><span class="linenos">312</span></a> <span class="nd">@classmethod</span> -</span><span id="Token-313"><a href="#Token-313"><span class="linenos">313</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token-314"><a href="#Token-314"><span class="linenos">314</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> -</span><span id="Token-315"><a href="#Token-315"><span class="linenos">315</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> -</span><span id="Token-316"><a href="#Token-316"><span class="linenos">316</span></a> -</span><span id="Token-317"><a href="#Token-317"><span class="linenos">317</span></a> <span class="nd">@classmethod</span> -</span><span id="Token-318"><a href="#Token-318"><span class="linenos">318</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token-319"><a href="#Token-319"><span class="linenos">319</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> -</span><span id="Token-320"><a href="#Token-320"><span class="linenos">320</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> -</span><span id="Token-321"><a href="#Token-321"><span class="linenos">321</span></a> -</span><span id="Token-322"><a href="#Token-322"><span class="linenos">322</span></a> <span class="nd">@classmethod</span> -</span><span id="Token-323"><a href="#Token-323"><span class="linenos">323</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token-324"><a href="#Token-324"><span class="linenos">324</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> -</span><span id="Token-325"><a href="#Token-325"><span class="linenos">325</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> -</span><span id="Token-326"><a href="#Token-326"><span class="linenos">326</span></a> -</span><span id="Token-327"><a href="#Token-327"><span class="linenos">327</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Token-328"><a href="#Token-328"><span class="linenos">328</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Token-329"><a href="#Token-329"><span class="linenos">329</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> -</span><span id="Token-330"><a href="#Token-330"><span class="linenos">330</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="Token-331"><a href="#Token-331"><span class="linenos">331</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="Token-332"><a href="#Token-332"><span class="linenos">332</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="Token-333"><a href="#Token-333"><span class="linenos">333</span></a> <span class="n">comments</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="Token-334"><a href="#Token-334"><span class="linenos">334</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Token-335"><a href="#Token-335"><span class="linenos">335</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> -</span><span id="Token-336"><a href="#Token-336"><span class="linenos">336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> -</span><span id="Token-337"><a href="#Token-337"><span class="linenos">337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> -</span><span id="Token-338"><a href="#Token-338"><span class="linenos">338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">col</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Token-339"><a href="#Token-339"><span class="linenos">339</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> -</span><span id="Token-340"><a href="#Token-340"><span class="linenos">340</span></a> -</span><span id="Token-341"><a href="#Token-341"><span class="linenos">341</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Token-342"><a href="#Token-342"><span class="linenos">342</span></a> <span class="n">attributes</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__slots__</span><span class="p">)</span> -</span><span id="Token-343"><a href="#Token-343"><span class="linenos">343</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"<Token </span><span class="si">{</span><span class="n">attributes</span><span class="si">}</span><span class="s2">>"</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token-305"><a href="#Token-305"><span class="linenos">305</span></a><span class="k">class</span> <span class="nc">Token</span><span class="p">:</span> +</span><span id="Token-306"><a href="#Token-306"><span class="linenos">306</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"token_type"</span><span class="p">,</span> <span class="s2">"text"</span><span class="p">,</span> <span class="s2">"line"</span><span class="p">,</span> <span class="s2">"col"</span><span class="p">,</span> <span class="s2">"comments"</span><span class="p">)</span> +</span><span id="Token-307"><a href="#Token-307"><span class="linenos">307</span></a> +</span><span id="Token-308"><a href="#Token-308"><span class="linenos">308</span></a> <span class="nd">@classmethod</span> +</span><span id="Token-309"><a href="#Token-309"><span class="linenos">309</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token-310"><a href="#Token-310"><span class="linenos">310</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> +</span><span id="Token-311"><a href="#Token-311"><span class="linenos">311</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> +</span><span id="Token-312"><a href="#Token-312"><span class="linenos">312</span></a> +</span><span id="Token-313"><a href="#Token-313"><span class="linenos">313</span></a> <span class="nd">@classmethod</span> +</span><span id="Token-314"><a href="#Token-314"><span class="linenos">314</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token-315"><a href="#Token-315"><span class="linenos">315</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> +</span><span id="Token-316"><a href="#Token-316"><span class="linenos">316</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> +</span><span id="Token-317"><a href="#Token-317"><span class="linenos">317</span></a> +</span><span id="Token-318"><a href="#Token-318"><span class="linenos">318</span></a> <span class="nd">@classmethod</span> +</span><span id="Token-319"><a href="#Token-319"><span class="linenos">319</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token-320"><a href="#Token-320"><span class="linenos">320</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> +</span><span id="Token-321"><a href="#Token-321"><span class="linenos">321</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> +</span><span id="Token-322"><a href="#Token-322"><span class="linenos">322</span></a> +</span><span id="Token-323"><a href="#Token-323"><span class="linenos">323</span></a> <span class="nd">@classmethod</span> +</span><span id="Token-324"><a href="#Token-324"><span class="linenos">324</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token-325"><a href="#Token-325"><span class="linenos">325</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> +</span><span id="Token-326"><a href="#Token-326"><span class="linenos">326</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> +</span><span id="Token-327"><a href="#Token-327"><span class="linenos">327</span></a> +</span><span id="Token-328"><a href="#Token-328"><span class="linenos">328</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Token-329"><a href="#Token-329"><span class="linenos">329</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Token-330"><a href="#Token-330"><span class="linenos">330</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> +</span><span id="Token-331"><a href="#Token-331"><span class="linenos">331</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="Token-332"><a href="#Token-332"><span class="linenos">332</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="Token-333"><a href="#Token-333"><span class="linenos">333</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="Token-334"><a href="#Token-334"><span class="linenos">334</span></a> <span class="n">comments</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="Token-335"><a href="#Token-335"><span class="linenos">335</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Token-336"><a href="#Token-336"><span class="linenos">336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> +</span><span id="Token-337"><a href="#Token-337"><span class="linenos">337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> +</span><span id="Token-338"><a href="#Token-338"><span class="linenos">338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> +</span><span id="Token-339"><a href="#Token-339"><span class="linenos">339</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">col</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Token-340"><a href="#Token-340"><span class="linenos">340</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> +</span><span id="Token-341"><a href="#Token-341"><span class="linenos">341</span></a> +</span><span id="Token-342"><a href="#Token-342"><span class="linenos">342</span></a> <span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Token-343"><a href="#Token-343"><span class="linenos">343</span></a> <span class="n">attributes</span> <span class="o">=</span> <span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">k</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">k</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span> <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__slots__</span><span class="p">)</span> +</span><span id="Token-344"><a href="#Token-344"><span class="linenos">344</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"<Token </span><span class="si">{</span><span class="n">attributes</span><span class="si">}</span><span class="s2">>"</span> </span></pre></div> @@ -5557,19 +5860,19 @@ </div> <a class="headerlink" href="#Token.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.__init__-327"><a href="#Token.__init__-327"><span class="linenos">327</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> -</span><span id="Token.__init__-328"><a href="#Token.__init__-328"><span class="linenos">328</span></a> <span class="bp">self</span><span class="p">,</span> -</span><span id="Token.__init__-329"><a href="#Token.__init__-329"><span class="linenos">329</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> -</span><span id="Token.__init__-330"><a href="#Token.__init__-330"><span class="linenos">330</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> -</span><span id="Token.__init__-331"><a href="#Token.__init__-331"><span class="linenos">331</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="Token.__init__-332"><a href="#Token.__init__-332"><span class="linenos">332</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> -</span><span id="Token.__init__-333"><a href="#Token.__init__-333"><span class="linenos">333</span></a> <span class="n">comments</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="Token.__init__-334"><a href="#Token.__init__-334"><span class="linenos">334</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Token.__init__-335"><a href="#Token.__init__-335"><span class="linenos">335</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> -</span><span id="Token.__init__-336"><a href="#Token.__init__-336"><span class="linenos">336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> -</span><span id="Token.__init__-337"><a href="#Token.__init__-337"><span class="linenos">337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> -</span><span id="Token.__init__-338"><a href="#Token.__init__-338"><span class="linenos">338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">col</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Token.__init__-339"><a href="#Token.__init__-339"><span class="linenos">339</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.__init__-328"><a href="#Token.__init__-328"><span class="linenos">328</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> +</span><span id="Token.__init__-329"><a href="#Token.__init__-329"><span class="linenos">329</span></a> <span class="bp">self</span><span class="p">,</span> +</span><span id="Token.__init__-330"><a href="#Token.__init__-330"><span class="linenos">330</span></a> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> +</span><span id="Token.__init__-331"><a href="#Token.__init__-331"><span class="linenos">331</span></a> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> +</span><span id="Token.__init__-332"><a href="#Token.__init__-332"><span class="linenos">332</span></a> <span class="n">line</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="Token.__init__-333"><a href="#Token.__init__-333"><span class="linenos">333</span></a> <span class="n">col</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span> +</span><span id="Token.__init__-334"><a href="#Token.__init__-334"><span class="linenos">334</span></a> <span class="n">comments</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="Token.__init__-335"><a href="#Token.__init__-335"><span class="linenos">335</span></a> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Token.__init__-336"><a href="#Token.__init__-336"><span class="linenos">336</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">token_type</span> <span class="o">=</span> <span class="n">token_type</span> +</span><span id="Token.__init__-337"><a href="#Token.__init__-337"><span class="linenos">337</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</span> +</span><span id="Token.__init__-338"><a href="#Token.__init__-338"><span class="linenos">338</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">line</span> <span class="o">=</span> <span class="n">line</span> +</span><span id="Token.__init__-339"><a href="#Token.__init__-339"><span class="linenos">339</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">col</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">col</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="p">),</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Token.__init__-340"><a href="#Token.__init__-340"><span class="linenos">340</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="n">comments</span> </span></pre></div> @@ -5588,10 +5891,10 @@ </div> <a class="headerlink" href="#Token.number"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.number-307"><a href="#Token.number-307"><span class="linenos">307</span></a> <span class="nd">@classmethod</span> -</span><span id="Token.number-308"><a href="#Token.number-308"><span class="linenos">308</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token.number-309"><a href="#Token.number-309"><span class="linenos">309</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> -</span><span id="Token.number-310"><a href="#Token.number-310"><span class="linenos">310</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.number-308"><a href="#Token.number-308"><span class="linenos">308</span></a> <span class="nd">@classmethod</span> +</span><span id="Token.number-309"><a href="#Token.number-309"><span class="linenos">309</span></a> <span class="k">def</span> <span class="nf">number</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">number</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token.number-310"><a href="#Token.number-310"><span class="linenos">310</span></a><span class="w"> </span><span class="sd">"""Returns a NUMBER token with `number` as its text."""</span> +</span><span id="Token.number-311"><a href="#Token.number-311"><span class="linenos">311</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">number</span><span class="p">))</span> </span></pre></div> @@ -5612,10 +5915,10 @@ </div> <a class="headerlink" href="#Token.string"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.string-312"><a href="#Token.string-312"><span class="linenos">312</span></a> <span class="nd">@classmethod</span> -</span><span id="Token.string-313"><a href="#Token.string-313"><span class="linenos">313</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token.string-314"><a href="#Token.string-314"><span class="linenos">314</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> -</span><span id="Token.string-315"><a href="#Token.string-315"><span class="linenos">315</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.string-313"><a href="#Token.string-313"><span class="linenos">313</span></a> <span class="nd">@classmethod</span> +</span><span id="Token.string-314"><a href="#Token.string-314"><span class="linenos">314</span></a> <span class="k">def</span> <span class="nf">string</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">string</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token.string-315"><a href="#Token.string-315"><span class="linenos">315</span></a><span class="w"> </span><span class="sd">"""Returns a STRING token with `string` as its text."""</span> +</span><span id="Token.string-316"><a href="#Token.string-316"><span class="linenos">316</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">string</span><span class="p">)</span> </span></pre></div> @@ -5636,10 +5939,10 @@ </div> <a class="headerlink" href="#Token.identifier"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.identifier-317"><a href="#Token.identifier-317"><span class="linenos">317</span></a> <span class="nd">@classmethod</span> -</span><span id="Token.identifier-318"><a href="#Token.identifier-318"><span class="linenos">318</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token.identifier-319"><a href="#Token.identifier-319"><span class="linenos">319</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> -</span><span id="Token.identifier-320"><a href="#Token.identifier-320"><span class="linenos">320</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.identifier-318"><a href="#Token.identifier-318"><span class="linenos">318</span></a> <span class="nd">@classmethod</span> +</span><span id="Token.identifier-319"><a href="#Token.identifier-319"><span class="linenos">319</span></a> <span class="k">def</span> <span class="nf">identifier</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">identifier</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token.identifier-320"><a href="#Token.identifier-320"><span class="linenos">320</span></a><span class="w"> </span><span class="sd">"""Returns an IDENTIFIER token with `identifier` as its text."""</span> +</span><span id="Token.identifier-321"><a href="#Token.identifier-321"><span class="linenos">321</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">identifier</span><span class="p">)</span> </span></pre></div> @@ -5660,10 +5963,10 @@ </div> <a class="headerlink" href="#Token.var"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Token.var-322"><a href="#Token.var-322"><span class="linenos">322</span></a> <span class="nd">@classmethod</span> -</span><span id="Token.var-323"><a href="#Token.var-323"><span class="linenos">323</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> -</span><span id="Token.var-324"><a href="#Token.var-324"><span class="linenos">324</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> -</span><span id="Token.var-325"><a href="#Token.var-325"><span class="linenos">325</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Token.var-323"><a href="#Token.var-323"><span class="linenos">323</span></a> <span class="nd">@classmethod</span> +</span><span id="Token.var-324"><a href="#Token.var-324"><span class="linenos">324</span></a> <span class="k">def</span> <span class="nf">var</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">var</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Token</span><span class="p">:</span> +</span><span id="Token.var-325"><a href="#Token.var-325"><span class="linenos">325</span></a><span class="w"> </span><span class="sd">"""Returns an VAR token with `var` as its text."""</span> +</span><span id="Token.var-326"><a href="#Token.var-326"><span class="linenos">326</span></a> <span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">,</span> <span class="n">var</span><span class="p">)</span> </span></pre></div> @@ -5684,755 +5987,743 @@ </div> <a class="headerlink" href="#Tokenizer"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer-386"><a href="#Tokenizer-386"><span class="linenos"> 386</span></a><span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Tokenizer</span><span class="p">):</span> -</span><span id="Tokenizer-387"><a href="#Tokenizer-387"><span class="linenos"> 387</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Tokenizer-388"><a href="#Tokenizer-388"><span class="linenos"> 388</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> -</span><span id="Tokenizer-389"><a href="#Tokenizer-389"><span class="linenos"> 389</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> -</span><span id="Tokenizer-390"><a href="#Tokenizer-390"><span class="linenos"> 390</span></a> <span class="s2">"["</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> -</span><span id="Tokenizer-391"><a href="#Tokenizer-391"><span class="linenos"> 391</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> -</span><span id="Tokenizer-392"><a href="#Tokenizer-392"><span class="linenos"> 392</span></a> <span class="s2">"{"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> -</span><span id="Tokenizer-393"><a href="#Tokenizer-393"><span class="linenos"> 393</span></a> <span class="s2">"}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">,</span> -</span><span id="Tokenizer-394"><a href="#Tokenizer-394"><span class="linenos"> 394</span></a> <span class="s2">"&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">,</span> -</span><span id="Tokenizer-395"><a href="#Tokenizer-395"><span class="linenos"> 395</span></a> <span class="s2">"^"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">,</span> -</span><span id="Tokenizer-396"><a href="#Tokenizer-396"><span class="linenos"> 396</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> -</span><span id="Tokenizer-397"><a href="#Tokenizer-397"><span class="linenos"> 397</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> -</span><span id="Tokenizer-398"><a href="#Tokenizer-398"><span class="linenos"> 398</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> -</span><span id="Tokenizer-399"><a href="#Tokenizer-399"><span class="linenos"> 399</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span> -</span><span id="Tokenizer-400"><a href="#Tokenizer-400"><span class="linenos"> 400</span></a> <span class="s2">"="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="Tokenizer-401"><a href="#Tokenizer-401"><span class="linenos"> 401</span></a> <span class="s2">">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> -</span><span id="Tokenizer-402"><a href="#Tokenizer-402"><span class="linenos"> 402</span></a> <span class="s2">"<"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> -</span><span id="Tokenizer-403"><a href="#Tokenizer-403"><span class="linenos"> 403</span></a> <span class="s2">"%"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">,</span> -</span><span id="Tokenizer-404"><a href="#Tokenizer-404"><span class="linenos"> 404</span></a> <span class="s2">"!"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> -</span><span id="Tokenizer-405"><a href="#Tokenizer-405"><span class="linenos"> 405</span></a> <span class="s2">"|"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> -</span><span id="Tokenizer-406"><a href="#Tokenizer-406"><span class="linenos"> 406</span></a> <span class="s2">"+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">,</span> -</span><span id="Tokenizer-407"><a href="#Tokenizer-407"><span class="linenos"> 407</span></a> <span class="s2">";"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> -</span><span id="Tokenizer-408"><a href="#Tokenizer-408"><span class="linenos"> 408</span></a> <span class="s2">"/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">,</span> -</span><span id="Tokenizer-409"><a href="#Tokenizer-409"><span class="linenos"> 409</span></a> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BACKSLASH</span><span class="p">,</span> -</span><span id="Tokenizer-410"><a href="#Tokenizer-410"><span class="linenos"> 410</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> -</span><span id="Tokenizer-411"><a href="#Tokenizer-411"><span class="linenos"> 411</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">,</span> -</span><span id="Tokenizer-412"><a href="#Tokenizer-412"><span class="linenos"> 412</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span> -</span><span id="Tokenizer-413"><a href="#Tokenizer-413"><span class="linenos"> 413</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> -</span><span id="Tokenizer-414"><a href="#Tokenizer-414"><span class="linenos"> 414</span></a> <span class="c1"># used for breaking a var like x'y' but nothing else</span> -</span><span id="Tokenizer-415"><a href="#Tokenizer-415"><span class="linenos"> 415</span></a> <span class="c1"># the token type doesn't matter</span> -</span><span id="Tokenizer-416"><a href="#Tokenizer-416"><span class="linenos"> 416</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span> -</span><span id="Tokenizer-417"><a href="#Tokenizer-417"><span class="linenos"> 417</span></a> <span class="s2">"`"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="Tokenizer-418"><a href="#Tokenizer-418"><span class="linenos"> 418</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> -</span><span id="Tokenizer-419"><a href="#Tokenizer-419"><span class="linenos"> 419</span></a> <span class="s2">"#"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">,</span> -</span><span id="Tokenizer-420"><a href="#Tokenizer-420"><span class="linenos"> 420</span></a> <span class="p">}</span> -</span><span id="Tokenizer-421"><a href="#Tokenizer-421"><span class="linenos"> 421</span></a> -</span><span id="Tokenizer-422"><a href="#Tokenizer-422"><span class="linenos"> 422</span></a> <span class="n">QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="Tokenizer-423"><a href="#Tokenizer-423"><span class="linenos"> 423</span></a> -</span><span id="Tokenizer-424"><a href="#Tokenizer-424"><span class="linenos"> 424</span></a> <span class="n">BIT_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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="Tokenizer-425"><a href="#Tokenizer-425"><span class="linenos"> 425</span></a> -</span><span id="Tokenizer-426"><a href="#Tokenizer-426"><span class="linenos"> 426</span></a> <span class="n">HEX_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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="Tokenizer-427"><a href="#Tokenizer-427"><span class="linenos"> 427</span></a> -</span><span id="Tokenizer-428"><a href="#Tokenizer-428"><span class="linenos"> 428</span></a> <span class="n">BYTE_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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="Tokenizer-429"><a href="#Tokenizer-429"><span class="linenos"> 429</span></a> -</span><span id="Tokenizer-430"><a href="#Tokenizer-430"><span class="linenos"> 430</span></a> <span class="n">IDENTIFIERS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> -</span><span id="Tokenizer-431"><a href="#Tokenizer-431"><span class="linenos"> 431</span></a> -</span><span id="Tokenizer-432"><a href="#Tokenizer-432"><span class="linenos"> 432</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> -</span><span id="Tokenizer-433"><a href="#Tokenizer-433"><span class="linenos"> 433</span></a> -</span><span id="Tokenizer-434"><a href="#Tokenizer-434"><span class="linenos"> 434</span></a> <span class="n">_STRING_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="Tokenizer-435"><a href="#Tokenizer-435"><span class="linenos"> 435</span></a> -</span><span id="Tokenizer-436"><a href="#Tokenizer-436"><span class="linenos"> 436</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> -</span><span id="Tokenizer-437"><a href="#Tokenizer-437"><span class="linenos"> 437</span></a> -</span><span id="Tokenizer-438"><a href="#Tokenizer-438"><span class="linenos"> 438</span></a> <span class="n">_IDENTIFIER_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> -</span><span id="Tokenizer-439"><a href="#Tokenizer-439"><span class="linenos"> 439</span></a> -</span><span id="Tokenizer-440"><a href="#Tokenizer-440"><span class="linenos"> 440</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Tokenizer-441"><a href="#Tokenizer-441"><span class="linenos"> 441</span></a> <span class="o">**</span><span class="p">{</span> -</span><span id="Tokenizer-442"><a href="#Tokenizer-442"><span class="linenos"> 442</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> -</span><span id="Tokenizer-443"><a href="#Tokenizer-443"><span class="linenos"> 443</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"{%"</span><span class="p">,</span> <span class="s2">"{#"</span><span class="p">)</span> -</span><span id="Tokenizer-444"><a href="#Tokenizer-444"><span class="linenos"> 444</span></a> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> -</span><span id="Tokenizer-445"><a href="#Tokenizer-445"><span class="linenos"> 445</span></a> <span class="p">},</span> -</span><span id="Tokenizer-446"><a href="#Tokenizer-446"><span class="linenos"> 446</span></a> <span class="o">**</span><span class="p">{</span> -</span><span id="Tokenizer-447"><a href="#Tokenizer-447"><span class="linenos"> 447</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> -</span><span id="Tokenizer-448"><a href="#Tokenizer-448"><span class="linenos"> 448</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"%}"</span><span class="p">,</span> <span class="s2">"#}"</span><span class="p">)</span> -</span><span id="Tokenizer-449"><a href="#Tokenizer-449"><span class="linenos"> 449</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> -</span><span id="Tokenizer-450"><a href="#Tokenizer-450"><span class="linenos"> 450</span></a> <span class="p">},</span> -</span><span id="Tokenizer-451"><a href="#Tokenizer-451"><span class="linenos"> 451</span></a> <span class="s2">"{{+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span><span class="p">,</span> -</span><span id="Tokenizer-452"><a href="#Tokenizer-452"><span class="linenos"> 452</span></a> <span class="s2">"{{-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span><span class="p">,</span> -</span><span id="Tokenizer-453"><a href="#Tokenizer-453"><span class="linenos"> 453</span></a> <span class="s2">"+}}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span><span class="p">,</span> -</span><span id="Tokenizer-454"><a href="#Tokenizer-454"><span class="linenos"> 454</span></a> <span class="s2">"-}}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span><span class="p">,</span> -</span><span id="Tokenizer-455"><a href="#Tokenizer-455"><span class="linenos"> 455</span></a> <span class="s2">"/*+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">,</span> -</span><span id="Tokenizer-456"><a href="#Tokenizer-456"><span class="linenos"> 456</span></a> <span class="s2">"=="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> -</span><span id="Tokenizer-457"><a href="#Tokenizer-457"><span class="linenos"> 457</span></a> <span class="s2">"::"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> -</span><span id="Tokenizer-458"><a href="#Tokenizer-458"><span class="linenos"> 458</span></a> <span class="s2">"||"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">,</span> -</span><span id="Tokenizer-459"><a href="#Tokenizer-459"><span class="linenos"> 459</span></a> <span class="s2">">="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> -</span><span id="Tokenizer-460"><a href="#Tokenizer-460"><span class="linenos"> 460</span></a> <span class="s2">"<="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> -</span><span id="Tokenizer-461"><a href="#Tokenizer-461"><span class="linenos"> 461</span></a> <span class="s2">"<>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="Tokenizer-462"><a href="#Tokenizer-462"><span class="linenos"> 462</span></a> <span class="s2">"!="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> -</span><span id="Tokenizer-463"><a href="#Tokenizer-463"><span class="linenos"> 463</span></a> <span class="s2">"<=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">,</span> -</span><span id="Tokenizer-464"><a href="#Tokenizer-464"><span class="linenos"> 464</span></a> <span class="s2">"->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">,</span> -</span><span id="Tokenizer-465"><a href="#Tokenizer-465"><span class="linenos"> 465</span></a> <span class="s2">"->>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">,</span> -</span><span id="Tokenizer-466"><a href="#Tokenizer-466"><span class="linenos"> 466</span></a> <span class="s2">"=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">,</span> -</span><span id="Tokenizer-467"><a href="#Tokenizer-467"><span class="linenos"> 467</span></a> <span class="s2">"#>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">,</span> -</span><span id="Tokenizer-468"><a href="#Tokenizer-468"><span class="linenos"> 468</span></a> <span class="s2">"#>>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">,</span> -</span><span id="Tokenizer-469"><a href="#Tokenizer-469"><span class="linenos"> 469</span></a> <span class="s2">"<->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">,</span> -</span><span id="Tokenizer-470"><a href="#Tokenizer-470"><span class="linenos"> 470</span></a> <span class="s2">"ALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> -</span><span id="Tokenizer-471"><a href="#Tokenizer-471"><span class="linenos"> 471</span></a> <span class="s2">"ALWAYS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALWAYS</span><span class="p">,</span> -</span><span id="Tokenizer-472"><a href="#Tokenizer-472"><span class="linenos"> 472</span></a> <span class="s2">"AND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span> -</span><span id="Tokenizer-473"><a href="#Tokenizer-473"><span class="linenos"> 473</span></a> <span class="s2">"ANTI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> -</span><span id="Tokenizer-474"><a href="#Tokenizer-474"><span class="linenos"> 474</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> -</span><span id="Tokenizer-475"><a href="#Tokenizer-475"><span class="linenos"> 475</span></a> <span class="s2">"ASC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> -</span><span id="Tokenizer-476"><a href="#Tokenizer-476"><span class="linenos"> 476</span></a> <span class="s2">"AS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> -</span><span id="Tokenizer-477"><a href="#Tokenizer-477"><span class="linenos"> 477</span></a> <span class="s2">"AT TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_TIME_ZONE</span><span class="p">,</span> -</span><span id="Tokenizer-478"><a href="#Tokenizer-478"><span class="linenos"> 478</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="Tokenizer-479"><a href="#Tokenizer-479"><span class="linenos"> 479</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> -</span><span id="Tokenizer-480"><a href="#Tokenizer-480"><span class="linenos"> 480</span></a> <span class="s2">"BEGIN"</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="Tokenizer-481"><a href="#Tokenizer-481"><span class="linenos"> 481</span></a> <span class="s2">"BETWEEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">,</span> -</span><span id="Tokenizer-482"><a href="#Tokenizer-482"><span class="linenos"> 482</span></a> <span class="s2">"BOTH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> -</span><span id="Tokenizer-483"><a href="#Tokenizer-483"><span class="linenos"> 483</span></a> <span class="s2">"BUCKET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">,</span> -</span><span id="Tokenizer-484"><a href="#Tokenizer-484"><span class="linenos"> 484</span></a> <span class="s2">"BY DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BY_DEFAULT</span><span class="p">,</span> -</span><span id="Tokenizer-485"><a href="#Tokenizer-485"><span class="linenos"> 485</span></a> <span class="s2">"CACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> -</span><span id="Tokenizer-486"><a href="#Tokenizer-486"><span class="linenos"> 486</span></a> <span class="s2">"UNCACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">,</span> -</span><span id="Tokenizer-487"><a href="#Tokenizer-487"><span class="linenos"> 487</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> -</span><span id="Tokenizer-488"><a href="#Tokenizer-488"><span class="linenos"> 488</span></a> <span class="s2">"CASCADE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> -</span><span id="Tokenizer-489"><a href="#Tokenizer-489"><span class="linenos"> 489</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">,</span> -</span><span id="Tokenizer-490"><a href="#Tokenizer-490"><span class="linenos"> 490</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> -</span><span id="Tokenizer-491"><a href="#Tokenizer-491"><span class="linenos"> 491</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> -</span><span id="Tokenizer-492"><a href="#Tokenizer-492"><span class="linenos"> 492</span></a> <span class="s2">"COLUMN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> -</span><span id="Tokenizer-493"><a href="#Tokenizer-493"><span class="linenos"> 493</span></a> <span class="s2">"COMMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> -</span><span id="Tokenizer-494"><a href="#Tokenizer-494"><span class="linenos"> 494</span></a> <span class="s2">"COMPOUND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> -</span><span id="Tokenizer-495"><a href="#Tokenizer-495"><span class="linenos"> 495</span></a> <span class="s2">"CONSTRAINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> -</span><span id="Tokenizer-496"><a href="#Tokenizer-496"><span class="linenos"> 496</span></a> <span class="s2">"CREATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> -</span><span id="Tokenizer-497"><a href="#Tokenizer-497"><span class="linenos"> 497</span></a> <span class="s2">"CROSS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> -</span><span id="Tokenizer-498"><a href="#Tokenizer-498"><span class="linenos"> 498</span></a> <span class="s2">"CUBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">,</span> -</span><span id="Tokenizer-499"><a href="#Tokenizer-499"><span class="linenos"> 499</span></a> <span class="s2">"CURRENT_DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> -</span><span id="Tokenizer-500"><a href="#Tokenizer-500"><span class="linenos"> 500</span></a> <span class="s2">"CURRENT ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_ROW</span><span class="p">,</span> -</span><span id="Tokenizer-501"><a href="#Tokenizer-501"><span class="linenos"> 501</span></a> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> -</span><span id="Tokenizer-502"><a href="#Tokenizer-502"><span class="linenos"> 502</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> -</span><span id="Tokenizer-503"><a href="#Tokenizer-503"><span class="linenos"> 503</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> -</span><span id="Tokenizer-504"><a href="#Tokenizer-504"><span class="linenos"> 504</span></a> <span class="s2">"DESC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> -</span><span id="Tokenizer-505"><a href="#Tokenizer-505"><span class="linenos"> 505</span></a> <span class="s2">"DESCRIBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> -</span><span id="Tokenizer-506"><a href="#Tokenizer-506"><span class="linenos"> 506</span></a> <span class="s2">"DISTINCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">,</span> -</span><span id="Tokenizer-507"><a href="#Tokenizer-507"><span class="linenos"> 507</span></a> <span class="s2">"DISTINCT FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT_FROM</span><span class="p">,</span> -</span><span id="Tokenizer-508"><a href="#Tokenizer-508"><span class="linenos"> 508</span></a> <span class="s2">"DISTRIBUTE BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> -</span><span id="Tokenizer-509"><a href="#Tokenizer-509"><span class="linenos"> 509</span></a> <span class="s2">"DIV"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> -</span><span id="Tokenizer-510"><a href="#Tokenizer-510"><span class="linenos"> 510</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> -</span><span id="Tokenizer-511"><a href="#Tokenizer-511"><span class="linenos"> 511</span></a> <span class="s2">"ELSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">,</span> -</span><span id="Tokenizer-512"><a href="#Tokenizer-512"><span class="linenos"> 512</span></a> <span class="s2">"END"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> -</span><span id="Tokenizer-513"><a href="#Tokenizer-513"><span class="linenos"> 513</span></a> <span class="s2">"ESCAPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> -</span><span id="Tokenizer-514"><a href="#Tokenizer-514"><span class="linenos"> 514</span></a> <span class="s2">"EXCEPT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> -</span><span id="Tokenizer-515"><a href="#Tokenizer-515"><span class="linenos"> 515</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="Tokenizer-516"><a href="#Tokenizer-516"><span class="linenos"> 516</span></a> <span class="s2">"EXISTS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">,</span> -</span><span id="Tokenizer-517"><a href="#Tokenizer-517"><span class="linenos"> 517</span></a> <span class="s2">"FALSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> -</span><span id="Tokenizer-518"><a href="#Tokenizer-518"><span class="linenos"> 518</span></a> <span class="s2">"FETCH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> -</span><span id="Tokenizer-519"><a href="#Tokenizer-519"><span class="linenos"> 519</span></a> <span class="s2">"FILTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> -</span><span id="Tokenizer-520"><a href="#Tokenizer-520"><span class="linenos"> 520</span></a> <span class="s2">"FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> -</span><span id="Tokenizer-521"><a href="#Tokenizer-521"><span class="linenos"> 521</span></a> <span class="s2">"FULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> -</span><span id="Tokenizer-522"><a href="#Tokenizer-522"><span class="linenos"> 522</span></a> <span class="s2">"FUNCTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> -</span><span id="Tokenizer-523"><a href="#Tokenizer-523"><span class="linenos"> 523</span></a> <span class="s2">"FOLLOWING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">,</span> -</span><span id="Tokenizer-524"><a href="#Tokenizer-524"><span class="linenos"> 524</span></a> <span class="s2">"FOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">,</span> -</span><span id="Tokenizer-525"><a href="#Tokenizer-525"><span class="linenos"> 525</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> -</span><span id="Tokenizer-526"><a href="#Tokenizer-526"><span class="linenos"> 526</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> -</span><span id="Tokenizer-527"><a href="#Tokenizer-527"><span class="linenos"> 527</span></a> <span class="s2">"FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> -</span><span id="Tokenizer-528"><a href="#Tokenizer-528"><span class="linenos"> 528</span></a> <span class="s2">"GLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> -</span><span id="Tokenizer-529"><a href="#Tokenizer-529"><span class="linenos"> 529</span></a> <span class="s2">"GROUP BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">,</span> -</span><span id="Tokenizer-530"><a href="#Tokenizer-530"><span class="linenos"> 530</span></a> <span class="s2">"GROUPING SETS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">,</span> -</span><span id="Tokenizer-531"><a href="#Tokenizer-531"><span class="linenos"> 531</span></a> <span class="s2">"HAVING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">,</span> -</span><span id="Tokenizer-532"><a href="#Tokenizer-532"><span class="linenos"> 532</span></a> <span class="s2">"IF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">,</span> -</span><span id="Tokenizer-533"><a href="#Tokenizer-533"><span class="linenos"> 533</span></a> <span class="s2">"ILIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> -</span><span id="Tokenizer-534"><a href="#Tokenizer-534"><span class="linenos"> 534</span></a> <span class="s2">"IGNORE NULLS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">,</span> -</span><span id="Tokenizer-535"><a href="#Tokenizer-535"><span class="linenos"> 535</span></a> <span class="s2">"IN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> -</span><span id="Tokenizer-536"><a href="#Tokenizer-536"><span class="linenos"> 536</span></a> <span class="s2">"INDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> -</span><span id="Tokenizer-537"><a href="#Tokenizer-537"><span class="linenos"> 537</span></a> <span class="s2">"INNER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> -</span><span id="Tokenizer-538"><a href="#Tokenizer-538"><span class="linenos"> 538</span></a> <span class="s2">"INSERT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> -</span><span id="Tokenizer-539"><a href="#Tokenizer-539"><span class="linenos"> 539</span></a> <span class="s2">"INTERVAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> -</span><span id="Tokenizer-540"><a href="#Tokenizer-540"><span class="linenos"> 540</span></a> <span class="s2">"INTERSECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> -</span><span id="Tokenizer-541"><a href="#Tokenizer-541"><span class="linenos"> 541</span></a> <span class="s2">"INTO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> -</span><span id="Tokenizer-542"><a href="#Tokenizer-542"><span class="linenos"> 542</span></a> <span class="s2">"IS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> -</span><span id="Tokenizer-543"><a href="#Tokenizer-543"><span class="linenos"> 543</span></a> <span class="s2">"ISNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> -</span><span id="Tokenizer-544"><a href="#Tokenizer-544"><span class="linenos"> 544</span></a> <span class="s2">"JOIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">,</span> -</span><span id="Tokenizer-545"><a href="#Tokenizer-545"><span class="linenos"> 545</span></a> <span class="s2">"LATERAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">,</span> -</span><span id="Tokenizer-546"><a href="#Tokenizer-546"><span class="linenos"> 546</span></a> <span class="s2">"LAZY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">,</span> -</span><span id="Tokenizer-547"><a href="#Tokenizer-547"><span class="linenos"> 547</span></a> <span class="s2">"LEADING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> -</span><span id="Tokenizer-548"><a href="#Tokenizer-548"><span class="linenos"> 548</span></a> <span class="s2">"LEFT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> -</span><span id="Tokenizer-549"><a href="#Tokenizer-549"><span class="linenos"> 549</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> -</span><span id="Tokenizer-550"><a href="#Tokenizer-550"><span class="linenos"> 550</span></a> <span class="s2">"LIMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">,</span> -</span><span id="Tokenizer-551"><a href="#Tokenizer-551"><span class="linenos"> 551</span></a> <span class="s2">"LOAD DATA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD_DATA</span><span class="p">,</span> -</span><span id="Tokenizer-552"><a href="#Tokenizer-552"><span class="linenos"> 552</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">,</span> -</span><span id="Tokenizer-553"><a href="#Tokenizer-553"><span class="linenos"> 553</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">,</span> -</span><span id="Tokenizer-554"><a href="#Tokenizer-554"><span class="linenos"> 554</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> -</span><span id="Tokenizer-555"><a href="#Tokenizer-555"><span class="linenos"> 555</span></a> <span class="s2">"NATURAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> -</span><span id="Tokenizer-556"><a href="#Tokenizer-556"><span class="linenos"> 556</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> -</span><span id="Tokenizer-557"><a href="#Tokenizer-557"><span class="linenos"> 557</span></a> <span class="s2">"NO ACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">,</span> -</span><span id="Tokenizer-558"><a href="#Tokenizer-558"><span class="linenos"> 558</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> -</span><span id="Tokenizer-559"><a href="#Tokenizer-559"><span class="linenos"> 559</span></a> <span class="s2">"NOTNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">,</span> -</span><span id="Tokenizer-560"><a href="#Tokenizer-560"><span class="linenos"> 560</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> -</span><span id="Tokenizer-561"><a href="#Tokenizer-561"><span class="linenos"> 561</span></a> <span class="s2">"NULLS FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_FIRST</span><span class="p">,</span> -</span><span id="Tokenizer-562"><a href="#Tokenizer-562"><span class="linenos"> 562</span></a> <span class="s2">"NULLS LAST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_LAST</span><span class="p">,</span> -</span><span id="Tokenizer-563"><a href="#Tokenizer-563"><span class="linenos"> 563</span></a> <span class="s2">"OBJECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> -</span><span id="Tokenizer-564"><a href="#Tokenizer-564"><span class="linenos"> 564</span></a> <span class="s2">"OFFSET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> -</span><span id="Tokenizer-565"><a href="#Tokenizer-565"><span class="linenos"> 565</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> -</span><span id="Tokenizer-566"><a href="#Tokenizer-566"><span class="linenos"> 566</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> -</span><span id="Tokenizer-567"><a href="#Tokenizer-567"><span class="linenos"> 567</span></a> <span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">,</span> -</span><span id="Tokenizer-568"><a href="#Tokenizer-568"><span class="linenos"> 568</span></a> <span class="s2">"OR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> -</span><span id="Tokenizer-569"><a href="#Tokenizer-569"><span class="linenos"> 569</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">,</span> -</span><span id="Tokenizer-570"><a href="#Tokenizer-570"><span class="linenos"> 570</span></a> <span class="s2">"ORDINALITY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> -</span><span id="Tokenizer-571"><a href="#Tokenizer-571"><span class="linenos"> 571</span></a> <span class="s2">"OUTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> -</span><span id="Tokenizer-572"><a href="#Tokenizer-572"><span class="linenos"> 572</span></a> <span class="s2">"OUT OF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUT_OF</span><span class="p">,</span> -</span><span id="Tokenizer-573"><a href="#Tokenizer-573"><span class="linenos"> 573</span></a> <span class="s2">"OVER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">,</span> -</span><span id="Tokenizer-574"><a href="#Tokenizer-574"><span class="linenos"> 574</span></a> <span class="s2">"OVERWRITE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> -</span><span id="Tokenizer-575"><a href="#Tokenizer-575"><span class="linenos"> 575</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> -</span><span id="Tokenizer-576"><a href="#Tokenizer-576"><span class="linenos"> 576</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="Tokenizer-577"><a href="#Tokenizer-577"><span class="linenos"> 577</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="Tokenizer-578"><a href="#Tokenizer-578"><span class="linenos"> 578</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> -</span><span id="Tokenizer-579"><a href="#Tokenizer-579"><span class="linenos"> 579</span></a> <span class="s2">"PERCENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> -</span><span id="Tokenizer-580"><a href="#Tokenizer-580"><span class="linenos"> 580</span></a> <span class="s2">"PIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> -</span><span id="Tokenizer-581"><a href="#Tokenizer-581"><span class="linenos"> 581</span></a> <span class="s2">"PRECEDING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> -</span><span id="Tokenizer-582"><a href="#Tokenizer-582"><span class="linenos"> 582</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> -</span><span id="Tokenizer-583"><a href="#Tokenizer-583"><span class="linenos"> 583</span></a> <span class="s2">"PROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> -</span><span id="Tokenizer-584"><a href="#Tokenizer-584"><span class="linenos"> 584</span></a> <span class="s2">"QUALIFY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">,</span> -</span><span id="Tokenizer-585"><a href="#Tokenizer-585"><span class="linenos"> 585</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> -</span><span id="Tokenizer-586"><a href="#Tokenizer-586"><span class="linenos"> 586</span></a> <span class="s2">"RECURSIVE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> -</span><span id="Tokenizer-587"><a href="#Tokenizer-587"><span class="linenos"> 587</span></a> <span class="s2">"REGEXP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="Tokenizer-588"><a href="#Tokenizer-588"><span class="linenos"> 588</span></a> <span class="s2">"REPLACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> -</span><span id="Tokenizer-589"><a href="#Tokenizer-589"><span class="linenos"> 589</span></a> <span class="s2">"RESPECT NULLS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">,</span> -</span><span id="Tokenizer-590"><a href="#Tokenizer-590"><span class="linenos"> 590</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> -</span><span id="Tokenizer-591"><a href="#Tokenizer-591"><span class="linenos"> 591</span></a> <span class="s2">"RIGHT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> -</span><span id="Tokenizer-592"><a href="#Tokenizer-592"><span class="linenos"> 592</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> -</span><span id="Tokenizer-593"><a href="#Tokenizer-593"><span class="linenos"> 593</span></a> <span class="s2">"ROLLBACK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">,</span> -</span><span id="Tokenizer-594"><a href="#Tokenizer-594"><span class="linenos"> 594</span></a> <span class="s2">"ROLLUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> -</span><span id="Tokenizer-595"><a href="#Tokenizer-595"><span class="linenos"> 595</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> -</span><span id="Tokenizer-596"><a href="#Tokenizer-596"><span class="linenos"> 596</span></a> <span class="s2">"ROWS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> -</span><span id="Tokenizer-597"><a href="#Tokenizer-597"><span class="linenos"> 597</span></a> <span class="s2">"SCHEMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> -</span><span id="Tokenizer-598"><a href="#Tokenizer-598"><span class="linenos"> 598</span></a> <span class="s2">"SEED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">,</span> -</span><span id="Tokenizer-599"><a href="#Tokenizer-599"><span class="linenos"> 599</span></a> <span class="s2">"SELECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> -</span><span id="Tokenizer-600"><a href="#Tokenizer-600"><span class="linenos"> 600</span></a> <span class="s2">"SEMI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> -</span><span id="Tokenizer-601"><a href="#Tokenizer-601"><span class="linenos"> 601</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="Tokenizer-602"><a href="#Tokenizer-602"><span class="linenos"> 602</span></a> <span class="s2">"SHOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="Tokenizer-603"><a href="#Tokenizer-603"><span class="linenos"> 603</span></a> <span class="s2">"SIMILAR TO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">,</span> -</span><span id="Tokenizer-604"><a href="#Tokenizer-604"><span class="linenos"> 604</span></a> <span class="s2">"SOME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">,</span> -</span><span id="Tokenizer-605"><a href="#Tokenizer-605"><span class="linenos"> 605</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">,</span> -</span><span id="Tokenizer-606"><a href="#Tokenizer-606"><span class="linenos"> 606</span></a> <span class="s2">"SORT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> -</span><span id="Tokenizer-607"><a href="#Tokenizer-607"><span class="linenos"> 607</span></a> <span class="s2">"TABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> -</span><span id="Tokenizer-608"><a href="#Tokenizer-608"><span class="linenos"> 608</span></a> <span class="s2">"TABLESAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> -</span><span id="Tokenizer-609"><a href="#Tokenizer-609"><span class="linenos"> 609</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="Tokenizer-610"><a href="#Tokenizer-610"><span class="linenos"> 610</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> -</span><span id="Tokenizer-611"><a href="#Tokenizer-611"><span class="linenos"> 611</span></a> <span class="s2">"THEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">,</span> -</span><span id="Tokenizer-612"><a href="#Tokenizer-612"><span class="linenos"> 612</span></a> <span class="s2">"TRUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> -</span><span id="Tokenizer-613"><a href="#Tokenizer-613"><span class="linenos"> 613</span></a> <span class="s2">"TRAILING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> -</span><span id="Tokenizer-614"><a href="#Tokenizer-614"><span class="linenos"> 614</span></a> <span class="s2">"UNBOUNDED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> -</span><span id="Tokenizer-615"><a href="#Tokenizer-615"><span class="linenos"> 615</span></a> <span class="s2">"UNION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> -</span><span id="Tokenizer-616"><a href="#Tokenizer-616"><span class="linenos"> 616</span></a> <span class="s2">"UNLOGGED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">,</span> -</span><span id="Tokenizer-617"><a href="#Tokenizer-617"><span class="linenos"> 617</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> -</span><span id="Tokenizer-618"><a href="#Tokenizer-618"><span class="linenos"> 618</span></a> <span class="s2">"UNPIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> -</span><span id="Tokenizer-619"><a href="#Tokenizer-619"><span class="linenos"> 619</span></a> <span class="s2">"UPDATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> -</span><span id="Tokenizer-620"><a href="#Tokenizer-620"><span class="linenos"> 620</span></a> <span class="s2">"USE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> -</span><span id="Tokenizer-621"><a href="#Tokenizer-621"><span class="linenos"> 621</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">,</span> -</span><span id="Tokenizer-622"><a href="#Tokenizer-622"><span class="linenos"> 622</span></a> <span class="s2">"VALUES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> -</span><span id="Tokenizer-623"><a href="#Tokenizer-623"><span class="linenos"> 623</span></a> <span class="s2">"VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> -</span><span id="Tokenizer-624"><a href="#Tokenizer-624"><span class="linenos"> 624</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> -</span><span id="Tokenizer-625"><a href="#Tokenizer-625"><span class="linenos"> 625</span></a> <span class="s2">"WHEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">,</span> -</span><span id="Tokenizer-626"><a href="#Tokenizer-626"><span class="linenos"> 626</span></a> <span class="s2">"WHERE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">,</span> -</span><span id="Tokenizer-627"><a href="#Tokenizer-627"><span class="linenos"> 627</span></a> <span class="s2">"WINDOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> -</span><span id="Tokenizer-628"><a href="#Tokenizer-628"><span class="linenos"> 628</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> -</span><span id="Tokenizer-629"><a href="#Tokenizer-629"><span class="linenos"> 629</span></a> <span class="s2">"WITH TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_TIME_ZONE</span><span class="p">,</span> -</span><span id="Tokenizer-630"><a href="#Tokenizer-630"><span class="linenos"> 630</span></a> <span class="s2">"WITH LOCAL TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_LOCAL_TIME_ZONE</span><span class="p">,</span> -</span><span id="Tokenizer-631"><a href="#Tokenizer-631"><span class="linenos"> 631</span></a> <span class="s2">"WITHIN GROUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">,</span> -</span><span id="Tokenizer-632"><a href="#Tokenizer-632"><span class="linenos"> 632</span></a> <span class="s2">"WITHOUT TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITHOUT_TIME_ZONE</span><span class="p">,</span> -</span><span id="Tokenizer-633"><a href="#Tokenizer-633"><span class="linenos"> 633</span></a> <span class="s2">"APPLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> -</span><span id="Tokenizer-634"><a href="#Tokenizer-634"><span class="linenos"> 634</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> -</span><span id="Tokenizer-635"><a href="#Tokenizer-635"><span class="linenos"> 635</span></a> <span class="s2">"BOOL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> -</span><span id="Tokenizer-636"><a href="#Tokenizer-636"><span class="linenos"> 636</span></a> <span class="s2">"BOOLEAN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> -</span><span id="Tokenizer-637"><a href="#Tokenizer-637"><span class="linenos"> 637</span></a> <span class="s2">"BYTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="Tokenizer-638"><a href="#Tokenizer-638"><span class="linenos"> 638</span></a> <span class="s2">"TINYINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> -</span><span id="Tokenizer-639"><a href="#Tokenizer-639"><span class="linenos"> 639</span></a> <span class="s2">"SHORT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="Tokenizer-640"><a href="#Tokenizer-640"><span class="linenos"> 640</span></a> <span class="s2">"SMALLINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="Tokenizer-641"><a href="#Tokenizer-641"><span class="linenos"> 641</span></a> <span class="s2">"INT2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> -</span><span id="Tokenizer-642"><a href="#Tokenizer-642"><span class="linenos"> 642</span></a> <span class="s2">"INTEGER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="Tokenizer-643"><a href="#Tokenizer-643"><span class="linenos"> 643</span></a> <span class="s2">"INT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="Tokenizer-644"><a href="#Tokenizer-644"><span class="linenos"> 644</span></a> <span class="s2">"INT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> -</span><span id="Tokenizer-645"><a href="#Tokenizer-645"><span class="linenos"> 645</span></a> <span class="s2">"LONG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="Tokenizer-646"><a href="#Tokenizer-646"><span class="linenos"> 646</span></a> <span class="s2">"BIGINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="Tokenizer-647"><a href="#Tokenizer-647"><span class="linenos"> 647</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> -</span><span id="Tokenizer-648"><a href="#Tokenizer-648"><span class="linenos"> 648</span></a> <span class="s2">"DECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-649"><a href="#Tokenizer-649"><span class="linenos"> 649</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> -</span><span id="Tokenizer-650"><a href="#Tokenizer-650"><span class="linenos"> 650</span></a> <span class="s2">"NULLABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> -</span><span id="Tokenizer-651"><a href="#Tokenizer-651"><span class="linenos"> 651</span></a> <span class="s2">"NUMBER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-652"><a href="#Tokenizer-652"><span class="linenos"> 652</span></a> <span class="s2">"NUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-653"><a href="#Tokenizer-653"><span class="linenos"> 653</span></a> <span class="s2">"FIXED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> -</span><span id="Tokenizer-654"><a href="#Tokenizer-654"><span class="linenos"> 654</span></a> <span class="s2">"REAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="Tokenizer-655"><a href="#Tokenizer-655"><span class="linenos"> 655</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="Tokenizer-656"><a href="#Tokenizer-656"><span class="linenos"> 656</span></a> <span class="s2">"FLOAT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> -</span><span id="Tokenizer-657"><a href="#Tokenizer-657"><span class="linenos"> 657</span></a> <span class="s2">"FLOAT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="Tokenizer-658"><a href="#Tokenizer-658"><span class="linenos"> 658</span></a> <span class="s2">"DOUBLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="Tokenizer-659"><a href="#Tokenizer-659"><span class="linenos"> 659</span></a> <span class="s2">"DOUBLE PRECISION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> -</span><span id="Tokenizer-660"><a href="#Tokenizer-660"><span class="linenos"> 660</span></a> <span class="s2">"JSON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> -</span><span id="Tokenizer-661"><a href="#Tokenizer-661"><span class="linenos"> 661</span></a> <span class="s2">"CHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> -</span><span id="Tokenizer-662"><a href="#Tokenizer-662"><span class="linenos"> 662</span></a> <span class="s2">"NCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> -</span><span id="Tokenizer-663"><a href="#Tokenizer-663"><span class="linenos"> 663</span></a> <span class="s2">"VARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="Tokenizer-664"><a href="#Tokenizer-664"><span class="linenos"> 664</span></a> <span class="s2">"VARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> -</span><span id="Tokenizer-665"><a href="#Tokenizer-665"><span class="linenos"> 665</span></a> <span class="s2">"NVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="Tokenizer-666"><a href="#Tokenizer-666"><span class="linenos"> 666</span></a> <span class="s2">"NVARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> -</span><span id="Tokenizer-667"><a href="#Tokenizer-667"><span class="linenos"> 667</span></a> <span class="s2">"STR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="Tokenizer-668"><a href="#Tokenizer-668"><span class="linenos"> 668</span></a> <span class="s2">"STRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="Tokenizer-669"><a href="#Tokenizer-669"><span class="linenos"> 669</span></a> <span class="s2">"TEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="Tokenizer-670"><a href="#Tokenizer-670"><span class="linenos"> 670</span></a> <span class="s2">"CLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="Tokenizer-671"><a href="#Tokenizer-671"><span class="linenos"> 671</span></a> <span class="s2">"LONGVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> -</span><span id="Tokenizer-672"><a href="#Tokenizer-672"><span class="linenos"> 672</span></a> <span class="s2">"BINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> -</span><span id="Tokenizer-673"><a href="#Tokenizer-673"><span class="linenos"> 673</span></a> <span class="s2">"BLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> -</span><span id="Tokenizer-674"><a href="#Tokenizer-674"><span class="linenos"> 674</span></a> <span class="s2">"BYTEA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> -</span><span id="Tokenizer-675"><a href="#Tokenizer-675"><span class="linenos"> 675</span></a> <span class="s2">"VARBINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> -</span><span id="Tokenizer-676"><a href="#Tokenizer-676"><span class="linenos"> 676</span></a> <span class="s2">"TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> -</span><span id="Tokenizer-677"><a href="#Tokenizer-677"><span class="linenos"> 677</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> -</span><span id="Tokenizer-678"><a href="#Tokenizer-678"><span class="linenos"> 678</span></a> <span class="s2">"TIMESTAMPTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> -</span><span id="Tokenizer-679"><a href="#Tokenizer-679"><span class="linenos"> 679</span></a> <span class="s2">"TIMESTAMPLTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> -</span><span id="Tokenizer-680"><a href="#Tokenizer-680"><span class="linenos"> 680</span></a> <span class="s2">"DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> -</span><span id="Tokenizer-681"><a href="#Tokenizer-681"><span class="linenos"> 681</span></a> <span class="s2">"DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> -</span><span id="Tokenizer-682"><a href="#Tokenizer-682"><span class="linenos"> 682</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> -</span><span id="Tokenizer-683"><a href="#Tokenizer-683"><span class="linenos"> 683</span></a> <span class="s2">"STRUCT"</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="Tokenizer-684"><a href="#Tokenizer-684"><span class="linenos"> 684</span></a> <span class="s2">"VARIANT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> -</span><span id="Tokenizer-685"><a href="#Tokenizer-685"><span class="linenos"> 685</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">,</span> -</span><span id="Tokenizer-686"><a href="#Tokenizer-686"><span class="linenos"> 686</span></a> <span class="s2">"ALTER AGGREGATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-687"><a href="#Tokenizer-687"><span class="linenos"> 687</span></a> <span class="s2">"ALTER DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-688"><a href="#Tokenizer-688"><span class="linenos"> 688</span></a> <span class="s2">"ALTER DOMAIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-689"><a href="#Tokenizer-689"><span class="linenos"> 689</span></a> <span class="s2">"ALTER ROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-690"><a href="#Tokenizer-690"><span class="linenos"> 690</span></a> <span class="s2">"ALTER RULE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-691"><a href="#Tokenizer-691"><span class="linenos"> 691</span></a> <span class="s2">"ALTER SEQUENCE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-692"><a href="#Tokenizer-692"><span class="linenos"> 692</span></a> <span class="s2">"ALTER TYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-693"><a href="#Tokenizer-693"><span class="linenos"> 693</span></a> <span class="s2">"ALTER USER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-694"><a href="#Tokenizer-694"><span class="linenos"> 694</span></a> <span class="s2">"ALTER VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-695"><a href="#Tokenizer-695"><span class="linenos"> 695</span></a> <span class="s2">"ANALYZE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-696"><a href="#Tokenizer-696"><span class="linenos"> 696</span></a> <span class="s2">"CALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-697"><a href="#Tokenizer-697"><span class="linenos"> 697</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-698"><a href="#Tokenizer-698"><span class="linenos"> 698</span></a> <span class="s2">"EXPLAIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-699"><a href="#Tokenizer-699"><span class="linenos"> 699</span></a> <span class="s2">"OPTIMIZE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-700"><a href="#Tokenizer-700"><span class="linenos"> 700</span></a> <span class="s2">"PREPARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-701"><a href="#Tokenizer-701"><span class="linenos"> 701</span></a> <span class="s2">"TRUNCATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-702"><a href="#Tokenizer-702"><span class="linenos"> 702</span></a> <span class="s2">"VACUUM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-703"><a href="#Tokenizer-703"><span class="linenos"> 703</span></a> <span class="p">}</span> -</span><span id="Tokenizer-704"><a href="#Tokenizer-704"><span class="linenos"> 704</span></a> -</span><span id="Tokenizer-705"><a href="#Tokenizer-705"><span class="linenos"> 705</span></a> <span class="n">WHITE_SPACE</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Tokenizer-706"><a href="#Tokenizer-706"><span class="linenos"> 706</span></a> <span class="s2">" "</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> -</span><span id="Tokenizer-707"><a href="#Tokenizer-707"><span class="linenos"> 707</span></a> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> -</span><span id="Tokenizer-708"><a href="#Tokenizer-708"><span class="linenos"> 708</span></a> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="Tokenizer-709"><a href="#Tokenizer-709"><span class="linenos"> 709</span></a> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="Tokenizer-710"><a href="#Tokenizer-710"><span class="linenos"> 710</span></a> <span class="s2">"</span><span class="se">\r\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> -</span><span id="Tokenizer-711"><a href="#Tokenizer-711"><span class="linenos"> 711</span></a> <span class="p">}</span> -</span><span id="Tokenizer-712"><a href="#Tokenizer-712"><span class="linenos"> 712</span></a> -</span><span id="Tokenizer-713"><a href="#Tokenizer-713"><span class="linenos"> 713</span></a> <span class="n">COMMANDS</span> <span class="o">=</span> <span class="p">{</span> -</span><span id="Tokenizer-714"><a href="#Tokenizer-714"><span class="linenos"> 714</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> -</span><span id="Tokenizer-715"><a href="#Tokenizer-715"><span class="linenos"> 715</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> -</span><span id="Tokenizer-716"><a href="#Tokenizer-716"><span class="linenos"> 716</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> -</span><span id="Tokenizer-717"><a href="#Tokenizer-717"><span class="linenos"> 717</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> -</span><span id="Tokenizer-718"><a href="#Tokenizer-718"><span class="linenos"> 718</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> -</span><span id="Tokenizer-719"><a href="#Tokenizer-719"><span class="linenos"> 719</span></a> <span class="p">}</span> -</span><span id="Tokenizer-720"><a href="#Tokenizer-720"><span class="linenos"> 720</span></a> -</span><span id="Tokenizer-721"><a href="#Tokenizer-721"><span class="linenos"> 721</span></a> <span class="n">COMMAND_PREFIX_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">}</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer-387"><a href="#Tokenizer-387"><span class="linenos"> 387</span></a><span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">metaclass</span><span class="o">=</span><span class="n">_Tokenizer</span><span class="p">):</span> +</span><span id="Tokenizer-388"><a href="#Tokenizer-388"><span class="linenos"> 388</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Tokenizer-389"><a href="#Tokenizer-389"><span class="linenos"> 389</span></a> <span class="s2">"("</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_PAREN</span><span class="p">,</span> +</span><span id="Tokenizer-390"><a href="#Tokenizer-390"><span class="linenos"> 390</span></a> <span class="s2">")"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_PAREN</span><span class="p">,</span> +</span><span id="Tokenizer-391"><a href="#Tokenizer-391"><span class="linenos"> 391</span></a> <span class="s2">"["</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACKET</span><span class="p">,</span> +</span><span id="Tokenizer-392"><a href="#Tokenizer-392"><span class="linenos"> 392</span></a> <span class="s2">"]"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACKET</span><span class="p">,</span> +</span><span id="Tokenizer-393"><a href="#Tokenizer-393"><span class="linenos"> 393</span></a> <span class="s2">"{"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">L_BRACE</span><span class="p">,</span> +</span><span id="Tokenizer-394"><a href="#Tokenizer-394"><span class="linenos"> 394</span></a> <span class="s2">"}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">R_BRACE</span><span class="p">,</span> +</span><span id="Tokenizer-395"><a href="#Tokenizer-395"><span class="linenos"> 395</span></a> <span class="s2">"&"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AMP</span><span class="p">,</span> +</span><span id="Tokenizer-396"><a href="#Tokenizer-396"><span class="linenos"> 396</span></a> <span class="s2">"^"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">,</span> +</span><span id="Tokenizer-397"><a href="#Tokenizer-397"><span class="linenos"> 397</span></a> <span class="s2">":"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLON</span><span class="p">,</span> +</span><span id="Tokenizer-398"><a href="#Tokenizer-398"><span class="linenos"> 398</span></a> <span class="s2">","</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">,</span> +</span><span id="Tokenizer-399"><a href="#Tokenizer-399"><span class="linenos"> 399</span></a> <span class="s2">"."</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOT</span><span class="p">,</span> +</span><span id="Tokenizer-400"><a href="#Tokenizer-400"><span class="linenos"> 400</span></a> <span class="s2">"-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DASH</span><span class="p">,</span> +</span><span id="Tokenizer-401"><a href="#Tokenizer-401"><span class="linenos"> 401</span></a> <span class="s2">"="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="Tokenizer-402"><a href="#Tokenizer-402"><span class="linenos"> 402</span></a> <span class="s2">">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GT</span><span class="p">,</span> +</span><span id="Tokenizer-403"><a href="#Tokenizer-403"><span class="linenos"> 403</span></a> <span class="s2">"<"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT</span><span class="p">,</span> +</span><span id="Tokenizer-404"><a href="#Tokenizer-404"><span class="linenos"> 404</span></a> <span class="s2">"%"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MOD</span><span class="p">,</span> +</span><span id="Tokenizer-405"><a href="#Tokenizer-405"><span class="linenos"> 405</span></a> <span class="s2">"!"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> +</span><span id="Tokenizer-406"><a href="#Tokenizer-406"><span class="linenos"> 406</span></a> <span class="s2">"|"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> +</span><span id="Tokenizer-407"><a href="#Tokenizer-407"><span class="linenos"> 407</span></a> <span class="s2">"+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLUS</span><span class="p">,</span> +</span><span id="Tokenizer-408"><a href="#Tokenizer-408"><span class="linenos"> 408</span></a> <span class="s2">";"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</span><span class="p">,</span> +</span><span id="Tokenizer-409"><a href="#Tokenizer-409"><span class="linenos"> 409</span></a> <span class="s2">"/"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SLASH</span><span class="p">,</span> +</span><span id="Tokenizer-410"><a href="#Tokenizer-410"><span class="linenos"> 410</span></a> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BACKSLASH</span><span class="p">,</span> +</span><span id="Tokenizer-411"><a href="#Tokenizer-411"><span class="linenos"> 411</span></a> <span class="s2">"*"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STAR</span><span class="p">,</span> +</span><span id="Tokenizer-412"><a href="#Tokenizer-412"><span class="linenos"> 412</span></a> <span class="s2">"~"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TILDA</span><span class="p">,</span> +</span><span id="Tokenizer-413"><a href="#Tokenizer-413"><span class="linenos"> 413</span></a> <span class="s2">"?"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PLACEHOLDER</span><span class="p">,</span> +</span><span id="Tokenizer-414"><a href="#Tokenizer-414"><span class="linenos"> 414</span></a> <span class="s2">"@"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span> +</span><span id="Tokenizer-415"><a href="#Tokenizer-415"><span class="linenos"> 415</span></a> <span class="c1"># used for breaking a var like x'y' but nothing else</span> +</span><span id="Tokenizer-416"><a href="#Tokenizer-416"><span class="linenos"> 416</span></a> <span class="c1"># the token type doesn't matter</span> +</span><span id="Tokenizer-417"><a href="#Tokenizer-417"><span class="linenos"> 417</span></a> <span class="s2">"'"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUOTE</span><span class="p">,</span> +</span><span id="Tokenizer-418"><a href="#Tokenizer-418"><span class="linenos"> 418</span></a> <span class="s2">"`"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="Tokenizer-419"><a href="#Tokenizer-419"><span class="linenos"> 419</span></a> <span class="s1">'"'</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> +</span><span id="Tokenizer-420"><a href="#Tokenizer-420"><span class="linenos"> 420</span></a> <span class="s2">"#"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">,</span> +</span><span id="Tokenizer-421"><a href="#Tokenizer-421"><span class="linenos"> 421</span></a> <span class="p">}</span> +</span><span id="Tokenizer-422"><a href="#Tokenizer-422"><span class="linenos"> 422</span></a> +</span><span id="Tokenizer-423"><a href="#Tokenizer-423"><span class="linenos"> 423</span></a> <span class="n">QUOTES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">|</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="Tokenizer-424"><a href="#Tokenizer-424"><span class="linenos"> 424</span></a> +</span><span id="Tokenizer-425"><a href="#Tokenizer-425"><span class="linenos"> 425</span></a> <span class="n">BIT_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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="Tokenizer-426"><a href="#Tokenizer-426"><span class="linenos"> 426</span></a> +</span><span id="Tokenizer-427"><a href="#Tokenizer-427"><span class="linenos"> 427</span></a> <span class="n">HEX_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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="Tokenizer-428"><a href="#Tokenizer-428"><span class="linenos"> 428</span></a> +</span><span id="Tokenizer-429"><a href="#Tokenizer-429"><span class="linenos"> 429</span></a> <span class="n">BYTE_STRINGS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</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="Tokenizer-430"><a href="#Tokenizer-430"><span class="linenos"> 430</span></a> +</span><span id="Tokenizer-431"><a href="#Tokenizer-431"><span class="linenos"> 431</span></a> <span class="n">IDENTIFIERS</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="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> +</span><span id="Tokenizer-432"><a href="#Tokenizer-432"><span class="linenos"> 432</span></a> +</span><span id="Tokenizer-433"><a href="#Tokenizer-433"><span class="linenos"> 433</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"'"</span><span class="p">]</span> +</span><span id="Tokenizer-434"><a href="#Tokenizer-434"><span class="linenos"> 434</span></a> +</span><span id="Tokenizer-435"><a href="#Tokenizer-435"><span class="linenos"> 435</span></a> <span class="n">_STRING_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="Tokenizer-436"><a href="#Tokenizer-436"><span class="linenos"> 436</span></a> +</span><span id="Tokenizer-437"><a href="#Tokenizer-437"><span class="linenos"> 437</span></a> <span class="n">IDENTIFIER_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'"'</span><span class="p">]</span> +</span><span id="Tokenizer-438"><a href="#Tokenizer-438"><span class="linenos"> 438</span></a> +</span><span id="Tokenizer-439"><a href="#Tokenizer-439"><span class="linenos"> 439</span></a> <span class="n">_IDENTIFIER_ESCAPES</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="nb">set</span><span class="p">()</span> +</span><span id="Tokenizer-440"><a href="#Tokenizer-440"><span class="linenos"> 440</span></a> +</span><span id="Tokenizer-441"><a href="#Tokenizer-441"><span class="linenos"> 441</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Tokenizer-442"><a href="#Tokenizer-442"><span class="linenos"> 442</span></a> <span class="o">**</span><span class="p">{</span> +</span><span id="Tokenizer-443"><a href="#Tokenizer-443"><span class="linenos"> 443</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">key</span><span class="si">}{</span><span class="n">postfix</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span> +</span><span id="Tokenizer-444"><a href="#Tokenizer-444"><span class="linenos"> 444</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"{%"</span><span class="p">,</span> <span class="s2">"{#"</span><span class="p">)</span> +</span><span id="Tokenizer-445"><a href="#Tokenizer-445"><span class="linenos"> 445</span></a> <span class="k">for</span> <span class="n">postfix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> +</span><span id="Tokenizer-446"><a href="#Tokenizer-446"><span class="linenos"> 446</span></a> <span class="p">},</span> +</span><span id="Tokenizer-447"><a href="#Tokenizer-447"><span class="linenos"> 447</span></a> <span class="o">**</span><span class="p">{</span> +</span><span id="Tokenizer-448"><a href="#Tokenizer-448"><span class="linenos"> 448</span></a> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">prefix</span><span class="si">}{</span><span class="n">key</span><span class="si">}</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span> +</span><span id="Tokenizer-449"><a href="#Tokenizer-449"><span class="linenos"> 449</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"%}"</span><span class="p">,</span> <span class="s2">"#}"</span><span class="p">)</span> +</span><span id="Tokenizer-450"><a href="#Tokenizer-450"><span class="linenos"> 450</span></a> <span class="k">for</span> <span class="n">prefix</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">,</span> <span class="s2">"-"</span><span class="p">)</span> +</span><span id="Tokenizer-451"><a href="#Tokenizer-451"><span class="linenos"> 451</span></a> <span class="p">},</span> +</span><span id="Tokenizer-452"><a href="#Tokenizer-452"><span class="linenos"> 452</span></a> <span class="s2">"{{+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span><span class="p">,</span> +</span><span id="Tokenizer-453"><a href="#Tokenizer-453"><span class="linenos"> 453</span></a> <span class="s2">"{{-"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_START</span><span class="p">,</span> +</span><span id="Tokenizer-454"><a href="#Tokenizer-454"><span class="linenos"> 454</span></a> <span class="s2">"+}}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span><span class="p">,</span> +</span><span id="Tokenizer-455"><a href="#Tokenizer-455"><span class="linenos"> 455</span></a> <span class="s2">"-}}"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BLOCK_END</span><span class="p">,</span> +</span><span id="Tokenizer-456"><a href="#Tokenizer-456"><span class="linenos"> 456</span></a> <span class="s2">"/*+"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HINT</span><span class="p">,</span> +</span><span id="Tokenizer-457"><a href="#Tokenizer-457"><span class="linenos"> 457</span></a> <span class="s2">"=="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> +</span><span id="Tokenizer-458"><a href="#Tokenizer-458"><span class="linenos"> 458</span></a> <span class="s2">"::"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> +</span><span id="Tokenizer-459"><a href="#Tokenizer-459"><span class="linenos"> 459</span></a> <span class="s2">"||"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DPIPE</span><span class="p">,</span> +</span><span id="Tokenizer-460"><a href="#Tokenizer-460"><span class="linenos"> 460</span></a> <span class="s2">">="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GTE</span><span class="p">,</span> +</span><span id="Tokenizer-461"><a href="#Tokenizer-461"><span class="linenos"> 461</span></a> <span class="s2">"<="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LTE</span><span class="p">,</span> +</span><span id="Tokenizer-462"><a href="#Tokenizer-462"><span class="linenos"> 462</span></a> <span class="s2">"<>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="Tokenizer-463"><a href="#Tokenizer-463"><span class="linenos"> 463</span></a> <span class="s2">"!="</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEQ</span><span class="p">,</span> +</span><span id="Tokenizer-464"><a href="#Tokenizer-464"><span class="linenos"> 464</span></a> <span class="s2">"<=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLSAFE_EQ</span><span class="p">,</span> +</span><span id="Tokenizer-465"><a href="#Tokenizer-465"><span class="linenos"> 465</span></a> <span class="s2">"->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARROW</span><span class="p">,</span> +</span><span id="Tokenizer-466"><a href="#Tokenizer-466"><span class="linenos"> 466</span></a> <span class="s2">"->>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DARROW</span><span class="p">,</span> +</span><span id="Tokenizer-467"><a href="#Tokenizer-467"><span class="linenos"> 467</span></a> <span class="s2">"=>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FARROW</span><span class="p">,</span> +</span><span id="Tokenizer-468"><a href="#Tokenizer-468"><span class="linenos"> 468</span></a> <span class="s2">"#>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH_ARROW</span><span class="p">,</span> +</span><span id="Tokenizer-469"><a href="#Tokenizer-469"><span class="linenos"> 469</span></a> <span class="s2">"#>>"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DHASH_ARROW</span><span class="p">,</span> +</span><span id="Tokenizer-470"><a href="#Tokenizer-470"><span class="linenos"> 470</span></a> <span class="s2">"<->"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LR_ARROW</span><span class="p">,</span> +</span><span id="Tokenizer-471"><a href="#Tokenizer-471"><span class="linenos"> 471</span></a> <span class="s2">"ALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALL</span><span class="p">,</span> +</span><span id="Tokenizer-472"><a href="#Tokenizer-472"><span class="linenos"> 472</span></a> <span class="s2">"ALWAYS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALWAYS</span><span class="p">,</span> +</span><span id="Tokenizer-473"><a href="#Tokenizer-473"><span class="linenos"> 473</span></a> <span class="s2">"AND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AND</span><span class="p">,</span> +</span><span id="Tokenizer-474"><a href="#Tokenizer-474"><span class="linenos"> 474</span></a> <span class="s2">"ANTI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANTI</span><span class="p">,</span> +</span><span id="Tokenizer-475"><a href="#Tokenizer-475"><span class="linenos"> 475</span></a> <span class="s2">"ANY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ANY</span><span class="p">,</span> +</span><span id="Tokenizer-476"><a href="#Tokenizer-476"><span class="linenos"> 476</span></a> <span class="s2">"ASC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ASC</span><span class="p">,</span> +</span><span id="Tokenizer-477"><a href="#Tokenizer-477"><span class="linenos"> 477</span></a> <span class="s2">"AS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALIAS</span><span class="p">,</span> +</span><span id="Tokenizer-478"><a href="#Tokenizer-478"><span class="linenos"> 478</span></a> <span class="s2">"AT TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_TIME_ZONE</span><span class="p">,</span> +</span><span id="Tokenizer-479"><a href="#Tokenizer-479"><span class="linenos"> 479</span></a> <span class="s2">"AUTOINCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="Tokenizer-480"><a href="#Tokenizer-480"><span class="linenos"> 480</span></a> <span class="s2">"AUTO_INCREMENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AUTO_INCREMENT</span><span class="p">,</span> +</span><span id="Tokenizer-481"><a href="#Tokenizer-481"><span class="linenos"> 481</span></a> <span class="s2">"BEGIN"</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="Tokenizer-482"><a href="#Tokenizer-482"><span class="linenos"> 482</span></a> <span class="s2">"BETWEEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BETWEEN</span><span class="p">,</span> +</span><span id="Tokenizer-483"><a href="#Tokenizer-483"><span class="linenos"> 483</span></a> <span class="s2">"BOTH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOTH</span><span class="p">,</span> +</span><span id="Tokenizer-484"><a href="#Tokenizer-484"><span class="linenos"> 484</span></a> <span class="s2">"BUCKET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BUCKET</span><span class="p">,</span> +</span><span id="Tokenizer-485"><a href="#Tokenizer-485"><span class="linenos"> 485</span></a> <span class="s2">"BY DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BY_DEFAULT</span><span class="p">,</span> +</span><span id="Tokenizer-486"><a href="#Tokenizer-486"><span class="linenos"> 486</span></a> <span class="s2">"CACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CACHE</span><span class="p">,</span> +</span><span id="Tokenizer-487"><a href="#Tokenizer-487"><span class="linenos"> 487</span></a> <span class="s2">"UNCACHE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNCACHE</span><span class="p">,</span> +</span><span id="Tokenizer-488"><a href="#Tokenizer-488"><span class="linenos"> 488</span></a> <span class="s2">"CASE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASE</span><span class="p">,</span> +</span><span id="Tokenizer-489"><a href="#Tokenizer-489"><span class="linenos"> 489</span></a> <span class="s2">"CASCADE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CASCADE</span><span class="p">,</span> +</span><span id="Tokenizer-490"><a href="#Tokenizer-490"><span class="linenos"> 490</span></a> <span class="s2">"CHARACTER SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHARACTER_SET</span><span class="p">,</span> +</span><span id="Tokenizer-491"><a href="#Tokenizer-491"><span class="linenos"> 491</span></a> <span class="s2">"CLUSTER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CLUSTER_BY</span><span class="p">,</span> +</span><span id="Tokenizer-492"><a href="#Tokenizer-492"><span class="linenos"> 492</span></a> <span class="s2">"COLLATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLLATE</span><span class="p">,</span> +</span><span id="Tokenizer-493"><a href="#Tokenizer-493"><span class="linenos"> 493</span></a> <span class="s2">"COLUMN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COLUMN</span><span class="p">,</span> +</span><span id="Tokenizer-494"><a href="#Tokenizer-494"><span class="linenos"> 494</span></a> <span class="s2">"COMMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMIT</span><span class="p">,</span> +</span><span id="Tokenizer-495"><a href="#Tokenizer-495"><span class="linenos"> 495</span></a> <span class="s2">"COMPOUND"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMPOUND</span><span class="p">,</span> +</span><span id="Tokenizer-496"><a href="#Tokenizer-496"><span class="linenos"> 496</span></a> <span class="s2">"CONSTRAINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CONSTRAINT</span><span class="p">,</span> +</span><span id="Tokenizer-497"><a href="#Tokenizer-497"><span class="linenos"> 497</span></a> <span class="s2">"CREATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CREATE</span><span class="p">,</span> +</span><span id="Tokenizer-498"><a href="#Tokenizer-498"><span class="linenos"> 498</span></a> <span class="s2">"CROSS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CROSS</span><span class="p">,</span> +</span><span id="Tokenizer-499"><a href="#Tokenizer-499"><span class="linenos"> 499</span></a> <span class="s2">"CUBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CUBE</span><span class="p">,</span> +</span><span id="Tokenizer-500"><a href="#Tokenizer-500"><span class="linenos"> 500</span></a> <span class="s2">"CURRENT_DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_DATE</span><span class="p">,</span> +</span><span id="Tokenizer-501"><a href="#Tokenizer-501"><span class="linenos"> 501</span></a> <span class="s2">"CURRENT ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_ROW</span><span class="p">,</span> +</span><span id="Tokenizer-502"><a href="#Tokenizer-502"><span class="linenos"> 502</span></a> <span class="s2">"CURRENT_TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CURRENT_TIMESTAMP</span><span class="p">,</span> +</span><span id="Tokenizer-503"><a href="#Tokenizer-503"><span class="linenos"> 503</span></a> <span class="s2">"DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DEFAULT</span><span class="p">,</span> +</span><span id="Tokenizer-504"><a href="#Tokenizer-504"><span class="linenos"> 504</span></a> <span class="s2">"DELETE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DELETE</span><span class="p">,</span> +</span><span id="Tokenizer-505"><a href="#Tokenizer-505"><span class="linenos"> 505</span></a> <span class="s2">"DESC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESC</span><span class="p">,</span> +</span><span id="Tokenizer-506"><a href="#Tokenizer-506"><span class="linenos"> 506</span></a> <span class="s2">"DESCRIBE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DESCRIBE</span><span class="p">,</span> +</span><span id="Tokenizer-507"><a href="#Tokenizer-507"><span class="linenos"> 507</span></a> <span class="s2">"DISTINCT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT</span><span class="p">,</span> +</span><span id="Tokenizer-508"><a href="#Tokenizer-508"><span class="linenos"> 508</span></a> <span class="s2">"DISTINCT FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTINCT_FROM</span><span class="p">,</span> +</span><span id="Tokenizer-509"><a href="#Tokenizer-509"><span class="linenos"> 509</span></a> <span class="s2">"DISTRIBUTE BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DISTRIBUTE_BY</span><span class="p">,</span> +</span><span id="Tokenizer-510"><a href="#Tokenizer-510"><span class="linenos"> 510</span></a> <span class="s2">"DIV"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> +</span><span id="Tokenizer-511"><a href="#Tokenizer-511"><span class="linenos"> 511</span></a> <span class="s2">"DROP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DROP</span><span class="p">,</span> +</span><span id="Tokenizer-512"><a href="#Tokenizer-512"><span class="linenos"> 512</span></a> <span class="s2">"ELSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ELSE</span><span class="p">,</span> +</span><span id="Tokenizer-513"><a href="#Tokenizer-513"><span class="linenos"> 513</span></a> <span class="s2">"END"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">END</span><span class="p">,</span> +</span><span id="Tokenizer-514"><a href="#Tokenizer-514"><span class="linenos"> 514</span></a> <span class="s2">"ESCAPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ESCAPE</span><span class="p">,</span> +</span><span id="Tokenizer-515"><a href="#Tokenizer-515"><span class="linenos"> 515</span></a> <span class="s2">"EXCEPT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> +</span><span id="Tokenizer-516"><a href="#Tokenizer-516"><span class="linenos"> 516</span></a> <span class="s2">"EXECUTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="Tokenizer-517"><a href="#Tokenizer-517"><span class="linenos"> 517</span></a> <span class="s2">"EXISTS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXISTS</span><span class="p">,</span> +</span><span id="Tokenizer-518"><a href="#Tokenizer-518"><span class="linenos"> 518</span></a> <span class="s2">"FALSE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FALSE</span><span class="p">,</span> +</span><span id="Tokenizer-519"><a href="#Tokenizer-519"><span class="linenos"> 519</span></a> <span class="s2">"FETCH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> +</span><span id="Tokenizer-520"><a href="#Tokenizer-520"><span class="linenos"> 520</span></a> <span class="s2">"FILTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FILTER</span><span class="p">,</span> +</span><span id="Tokenizer-521"><a href="#Tokenizer-521"><span class="linenos"> 521</span></a> <span class="s2">"FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FIRST</span><span class="p">,</span> +</span><span id="Tokenizer-522"><a href="#Tokenizer-522"><span class="linenos"> 522</span></a> <span class="s2">"FULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FULL</span><span class="p">,</span> +</span><span id="Tokenizer-523"><a href="#Tokenizer-523"><span class="linenos"> 523</span></a> <span class="s2">"FUNCTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FUNCTION</span><span class="p">,</span> +</span><span id="Tokenizer-524"><a href="#Tokenizer-524"><span class="linenos"> 524</span></a> <span class="s2">"FOLLOWING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOLLOWING</span><span class="p">,</span> +</span><span id="Tokenizer-525"><a href="#Tokenizer-525"><span class="linenos"> 525</span></a> <span class="s2">"FOR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOR</span><span class="p">,</span> +</span><span id="Tokenizer-526"><a href="#Tokenizer-526"><span class="linenos"> 526</span></a> <span class="s2">"FOREIGN KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FOREIGN_KEY</span><span class="p">,</span> +</span><span id="Tokenizer-527"><a href="#Tokenizer-527"><span class="linenos"> 527</span></a> <span class="s2">"FORMAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FORMAT</span><span class="p">,</span> +</span><span id="Tokenizer-528"><a href="#Tokenizer-528"><span class="linenos"> 528</span></a> <span class="s2">"FROM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FROM</span><span class="p">,</span> +</span><span id="Tokenizer-529"><a href="#Tokenizer-529"><span class="linenos"> 529</span></a> <span class="s2">"GLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GLOB</span><span class="p">,</span> +</span><span id="Tokenizer-530"><a href="#Tokenizer-530"><span class="linenos"> 530</span></a> <span class="s2">"GROUP BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUP_BY</span><span class="p">,</span> +</span><span id="Tokenizer-531"><a href="#Tokenizer-531"><span class="linenos"> 531</span></a> <span class="s2">"GROUPING SETS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">GROUPING_SETS</span><span class="p">,</span> +</span><span id="Tokenizer-532"><a href="#Tokenizer-532"><span class="linenos"> 532</span></a> <span class="s2">"HAVING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HAVING</span><span class="p">,</span> +</span><span id="Tokenizer-533"><a href="#Tokenizer-533"><span class="linenos"> 533</span></a> <span class="s2">"IF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IF</span><span class="p">,</span> +</span><span id="Tokenizer-534"><a href="#Tokenizer-534"><span class="linenos"> 534</span></a> <span class="s2">"ILIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span> +</span><span id="Tokenizer-535"><a href="#Tokenizer-535"><span class="linenos"> 535</span></a> <span class="s2">"IGNORE NULLS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IGNORE_NULLS</span><span class="p">,</span> +</span><span id="Tokenizer-536"><a href="#Tokenizer-536"><span class="linenos"> 536</span></a> <span class="s2">"IN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IN</span><span class="p">,</span> +</span><span id="Tokenizer-537"><a href="#Tokenizer-537"><span class="linenos"> 537</span></a> <span class="s2">"INDEX"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INDEX</span><span class="p">,</span> +</span><span id="Tokenizer-538"><a href="#Tokenizer-538"><span class="linenos"> 538</span></a> <span class="s2">"INET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INET</span><span class="p">,</span> +</span><span id="Tokenizer-539"><a href="#Tokenizer-539"><span class="linenos"> 539</span></a> <span class="s2">"INNER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INNER</span><span class="p">,</span> +</span><span id="Tokenizer-540"><a href="#Tokenizer-540"><span class="linenos"> 540</span></a> <span class="s2">"INSERT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INSERT</span><span class="p">,</span> +</span><span id="Tokenizer-541"><a href="#Tokenizer-541"><span class="linenos"> 541</span></a> <span class="s2">"INTERVAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">,</span> +</span><span id="Tokenizer-542"><a href="#Tokenizer-542"><span class="linenos"> 542</span></a> <span class="s2">"INTERSECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTERSECT</span><span class="p">,</span> +</span><span id="Tokenizer-543"><a href="#Tokenizer-543"><span class="linenos"> 543</span></a> <span class="s2">"INTO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INTO</span><span class="p">,</span> +</span><span id="Tokenizer-544"><a href="#Tokenizer-544"><span class="linenos"> 544</span></a> <span class="s2">"IS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IS</span><span class="p">,</span> +</span><span id="Tokenizer-545"><a href="#Tokenizer-545"><span class="linenos"> 545</span></a> <span class="s2">"ISNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ISNULL</span><span class="p">,</span> +</span><span id="Tokenizer-546"><a href="#Tokenizer-546"><span class="linenos"> 546</span></a> <span class="s2">"JOIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JOIN</span><span class="p">,</span> +</span><span id="Tokenizer-547"><a href="#Tokenizer-547"><span class="linenos"> 547</span></a> <span class="s2">"LATERAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LATERAL</span><span class="p">,</span> +</span><span id="Tokenizer-548"><a href="#Tokenizer-548"><span class="linenos"> 548</span></a> <span class="s2">"LAZY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LAZY</span><span class="p">,</span> +</span><span id="Tokenizer-549"><a href="#Tokenizer-549"><span class="linenos"> 549</span></a> <span class="s2">"LEADING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEADING</span><span class="p">,</span> +</span><span id="Tokenizer-550"><a href="#Tokenizer-550"><span class="linenos"> 550</span></a> <span class="s2">"LEFT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LEFT</span><span class="p">,</span> +</span><span id="Tokenizer-551"><a href="#Tokenizer-551"><span class="linenos"> 551</span></a> <span class="s2">"LIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span> +</span><span id="Tokenizer-552"><a href="#Tokenizer-552"><span class="linenos"> 552</span></a> <span class="s2">"LIMIT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIMIT</span><span class="p">,</span> +</span><span id="Tokenizer-553"><a href="#Tokenizer-553"><span class="linenos"> 553</span></a> <span class="s2">"LOAD DATA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOAD_DATA</span><span class="p">,</span> +</span><span id="Tokenizer-554"><a href="#Tokenizer-554"><span class="linenos"> 554</span></a> <span class="s2">"LOCAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LOCAL</span><span class="p">,</span> +</span><span id="Tokenizer-555"><a href="#Tokenizer-555"><span class="linenos"> 555</span></a> <span class="s2">"MATERIALIZED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MATERIALIZED</span><span class="p">,</span> +</span><span id="Tokenizer-556"><a href="#Tokenizer-556"><span class="linenos"> 556</span></a> <span class="s2">"MERGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MERGE</span><span class="p">,</span> +</span><span id="Tokenizer-557"><a href="#Tokenizer-557"><span class="linenos"> 557</span></a> <span class="s2">"NATURAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NATURAL</span><span class="p">,</span> +</span><span id="Tokenizer-558"><a href="#Tokenizer-558"><span class="linenos"> 558</span></a> <span class="s2">"NEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NEXT</span><span class="p">,</span> +</span><span id="Tokenizer-559"><a href="#Tokenizer-559"><span class="linenos"> 559</span></a> <span class="s2">"NO ACTION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NO_ACTION</span><span class="p">,</span> +</span><span id="Tokenizer-560"><a href="#Tokenizer-560"><span class="linenos"> 560</span></a> <span class="s2">"NOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOT</span><span class="p">,</span> +</span><span id="Tokenizer-561"><a href="#Tokenizer-561"><span class="linenos"> 561</span></a> <span class="s2">"NOTNULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NOTNULL</span><span class="p">,</span> +</span><span id="Tokenizer-562"><a href="#Tokenizer-562"><span class="linenos"> 562</span></a> <span class="s2">"NULL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULL</span><span class="p">,</span> +</span><span id="Tokenizer-563"><a href="#Tokenizer-563"><span class="linenos"> 563</span></a> <span class="s2">"NULLS FIRST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_FIRST</span><span class="p">,</span> +</span><span id="Tokenizer-564"><a href="#Tokenizer-564"><span class="linenos"> 564</span></a> <span class="s2">"NULLS LAST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLS_LAST</span><span class="p">,</span> +</span><span id="Tokenizer-565"><a href="#Tokenizer-565"><span class="linenos"> 565</span></a> <span class="s2">"OBJECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OBJECT</span><span class="p">,</span> +</span><span id="Tokenizer-566"><a href="#Tokenizer-566"><span class="linenos"> 566</span></a> <span class="s2">"OFFSET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OFFSET</span><span class="p">,</span> +</span><span id="Tokenizer-567"><a href="#Tokenizer-567"><span class="linenos"> 567</span></a> <span class="s2">"ON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ON</span><span class="p">,</span> +</span><span id="Tokenizer-568"><a href="#Tokenizer-568"><span class="linenos"> 568</span></a> <span class="s2">"ONLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ONLY</span><span class="p">,</span> +</span><span id="Tokenizer-569"><a href="#Tokenizer-569"><span class="linenos"> 569</span></a> <span class="s2">"OPTIONS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OPTIONS</span><span class="p">,</span> +</span><span id="Tokenizer-570"><a href="#Tokenizer-570"><span class="linenos"> 570</span></a> <span class="s2">"OR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OR</span><span class="p">,</span> +</span><span id="Tokenizer-571"><a href="#Tokenizer-571"><span class="linenos"> 571</span></a> <span class="s2">"ORDER BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDER_BY</span><span class="p">,</span> +</span><span id="Tokenizer-572"><a href="#Tokenizer-572"><span class="linenos"> 572</span></a> <span class="s2">"ORDINALITY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ORDINALITY</span><span class="p">,</span> +</span><span id="Tokenizer-573"><a href="#Tokenizer-573"><span class="linenos"> 573</span></a> <span class="s2">"OUTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUTER</span><span class="p">,</span> +</span><span id="Tokenizer-574"><a href="#Tokenizer-574"><span class="linenos"> 574</span></a> <span class="s2">"OUT OF"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OUT_OF</span><span class="p">,</span> +</span><span id="Tokenizer-575"><a href="#Tokenizer-575"><span class="linenos"> 575</span></a> <span class="s2">"OVER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVER</span><span class="p">,</span> +</span><span id="Tokenizer-576"><a href="#Tokenizer-576"><span class="linenos"> 576</span></a> <span class="s2">"OVERWRITE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">OVERWRITE</span><span class="p">,</span> +</span><span id="Tokenizer-577"><a href="#Tokenizer-577"><span class="linenos"> 577</span></a> <span class="s2">"PARTITION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION</span><span class="p">,</span> +</span><span id="Tokenizer-578"><a href="#Tokenizer-578"><span class="linenos"> 578</span></a> <span class="s2">"PARTITION BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="Tokenizer-579"><a href="#Tokenizer-579"><span class="linenos"> 579</span></a> <span class="s2">"PARTITIONED BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="Tokenizer-580"><a href="#Tokenizer-580"><span class="linenos"> 580</span></a> <span class="s2">"PARTITIONED_BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARTITION_BY</span><span class="p">,</span> +</span><span id="Tokenizer-581"><a href="#Tokenizer-581"><span class="linenos"> 581</span></a> <span class="s2">"PERCENT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PERCENT</span><span class="p">,</span> +</span><span id="Tokenizer-582"><a href="#Tokenizer-582"><span class="linenos"> 582</span></a> <span class="s2">"PIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> +</span><span id="Tokenizer-583"><a href="#Tokenizer-583"><span class="linenos"> 583</span></a> <span class="s2">"PRECEDING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRECEDING</span><span class="p">,</span> +</span><span id="Tokenizer-584"><a href="#Tokenizer-584"><span class="linenos"> 584</span></a> <span class="s2">"PRIMARY KEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PRIMARY_KEY</span><span class="p">,</span> +</span><span id="Tokenizer-585"><a href="#Tokenizer-585"><span class="linenos"> 585</span></a> <span class="s2">"PROCEDURE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PROCEDURE</span><span class="p">,</span> +</span><span id="Tokenizer-586"><a href="#Tokenizer-586"><span class="linenos"> 586</span></a> <span class="s2">"QUALIFY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">QUALIFY</span><span class="p">,</span> +</span><span id="Tokenizer-587"><a href="#Tokenizer-587"><span class="linenos"> 587</span></a> <span class="s2">"RANGE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RANGE</span><span class="p">,</span> +</span><span id="Tokenizer-588"><a href="#Tokenizer-588"><span class="linenos"> 588</span></a> <span class="s2">"RECURSIVE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RECURSIVE</span><span class="p">,</span> +</span><span id="Tokenizer-589"><a href="#Tokenizer-589"><span class="linenos"> 589</span></a> <span class="s2">"REGEXP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="Tokenizer-590"><a href="#Tokenizer-590"><span class="linenos"> 590</span></a> <span class="s2">"REPLACE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REPLACE</span><span class="p">,</span> +</span><span id="Tokenizer-591"><a href="#Tokenizer-591"><span class="linenos"> 591</span></a> <span class="s2">"RESPECT NULLS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RESPECT_NULLS</span><span class="p">,</span> +</span><span id="Tokenizer-592"><a href="#Tokenizer-592"><span class="linenos"> 592</span></a> <span class="s2">"REFERENCES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">REFERENCES</span><span class="p">,</span> +</span><span id="Tokenizer-593"><a href="#Tokenizer-593"><span class="linenos"> 593</span></a> <span class="s2">"RIGHT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RIGHT</span><span class="p">,</span> +</span><span id="Tokenizer-594"><a href="#Tokenizer-594"><span class="linenos"> 594</span></a> <span class="s2">"RLIKE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span> +</span><span id="Tokenizer-595"><a href="#Tokenizer-595"><span class="linenos"> 595</span></a> <span class="s2">"ROLLBACK"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLBACK</span><span class="p">,</span> +</span><span id="Tokenizer-596"><a href="#Tokenizer-596"><span class="linenos"> 596</span></a> <span class="s2">"ROLLUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROLLUP</span><span class="p">,</span> +</span><span id="Tokenizer-597"><a href="#Tokenizer-597"><span class="linenos"> 597</span></a> <span class="s2">"ROW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROW</span><span class="p">,</span> +</span><span id="Tokenizer-598"><a href="#Tokenizer-598"><span class="linenos"> 598</span></a> <span class="s2">"ROWS"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ROWS</span><span class="p">,</span> +</span><span id="Tokenizer-599"><a href="#Tokenizer-599"><span class="linenos"> 599</span></a> <span class="s2">"SCHEMA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SCHEMA</span><span class="p">,</span> +</span><span id="Tokenizer-600"><a href="#Tokenizer-600"><span class="linenos"> 600</span></a> <span class="s2">"SEED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEED</span><span class="p">,</span> +</span><span id="Tokenizer-601"><a href="#Tokenizer-601"><span class="linenos"> 601</span></a> <span class="s2">"SELECT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SELECT</span><span class="p">,</span> +</span><span id="Tokenizer-602"><a href="#Tokenizer-602"><span class="linenos"> 602</span></a> <span class="s2">"SEMI"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SEMI</span><span class="p">,</span> +</span><span id="Tokenizer-603"><a href="#Tokenizer-603"><span class="linenos"> 603</span></a> <span class="s2">"SET"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="Tokenizer-604"><a href="#Tokenizer-604"><span class="linenos"> 604</span></a> <span class="s2">"SHOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="Tokenizer-605"><a href="#Tokenizer-605"><span class="linenos"> 605</span></a> <span class="s2">"SIMILAR TO"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SIMILAR_TO</span><span class="p">,</span> +</span><span id="Tokenizer-606"><a href="#Tokenizer-606"><span class="linenos"> 606</span></a> <span class="s2">"SOME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SOME</span><span class="p">,</span> +</span><span id="Tokenizer-607"><a href="#Tokenizer-607"><span class="linenos"> 607</span></a> <span class="s2">"SORTKEY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORTKEY</span><span class="p">,</span> +</span><span id="Tokenizer-608"><a href="#Tokenizer-608"><span class="linenos"> 608</span></a> <span class="s2">"SORT BY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SORT_BY</span><span class="p">,</span> +</span><span id="Tokenizer-609"><a href="#Tokenizer-609"><span class="linenos"> 609</span></a> <span class="s2">"TABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE</span><span class="p">,</span> +</span><span id="Tokenizer-610"><a href="#Tokenizer-610"><span class="linenos"> 610</span></a> <span class="s2">"TABLESAMPLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TABLE_SAMPLE</span><span class="p">,</span> +</span><span id="Tokenizer-611"><a href="#Tokenizer-611"><span class="linenos"> 611</span></a> <span class="s2">"TEMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="Tokenizer-612"><a href="#Tokenizer-612"><span class="linenos"> 612</span></a> <span class="s2">"TEMPORARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span> +</span><span id="Tokenizer-613"><a href="#Tokenizer-613"><span class="linenos"> 613</span></a> <span class="s2">"THEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">THEN</span><span class="p">,</span> +</span><span id="Tokenizer-614"><a href="#Tokenizer-614"><span class="linenos"> 614</span></a> <span class="s2">"TRUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRUE</span><span class="p">,</span> +</span><span id="Tokenizer-615"><a href="#Tokenizer-615"><span class="linenos"> 615</span></a> <span class="s2">"TRAILING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TRAILING</span><span class="p">,</span> +</span><span id="Tokenizer-616"><a href="#Tokenizer-616"><span class="linenos"> 616</span></a> <span class="s2">"UNBOUNDED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNBOUNDED</span><span class="p">,</span> +</span><span id="Tokenizer-617"><a href="#Tokenizer-617"><span class="linenos"> 617</span></a> <span class="s2">"UNION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNION</span><span class="p">,</span> +</span><span id="Tokenizer-618"><a href="#Tokenizer-618"><span class="linenos"> 618</span></a> <span class="s2">"UNLOGGED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNLOGGED</span><span class="p">,</span> +</span><span id="Tokenizer-619"><a href="#Tokenizer-619"><span class="linenos"> 619</span></a> <span class="s2">"UNNEST"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNNEST</span><span class="p">,</span> +</span><span id="Tokenizer-620"><a href="#Tokenizer-620"><span class="linenos"> 620</span></a> <span class="s2">"UNPIVOT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNPIVOT</span><span class="p">,</span> +</span><span id="Tokenizer-621"><a href="#Tokenizer-621"><span class="linenos"> 621</span></a> <span class="s2">"UPDATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UPDATE</span><span class="p">,</span> +</span><span id="Tokenizer-622"><a href="#Tokenizer-622"><span class="linenos"> 622</span></a> <span class="s2">"USE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USE</span><span class="p">,</span> +</span><span id="Tokenizer-623"><a href="#Tokenizer-623"><span class="linenos"> 623</span></a> <span class="s2">"USING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USING</span><span class="p">,</span> +</span><span id="Tokenizer-624"><a href="#Tokenizer-624"><span class="linenos"> 624</span></a> <span class="s2">"VALUES"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VALUES</span><span class="p">,</span> +</span><span id="Tokenizer-625"><a href="#Tokenizer-625"><span class="linenos"> 625</span></a> <span class="s2">"VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VIEW</span><span class="p">,</span> +</span><span id="Tokenizer-626"><a href="#Tokenizer-626"><span class="linenos"> 626</span></a> <span class="s2">"VOLATILE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VOLATILE</span><span class="p">,</span> +</span><span id="Tokenizer-627"><a href="#Tokenizer-627"><span class="linenos"> 627</span></a> <span class="s2">"WHEN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHEN</span><span class="p">,</span> +</span><span id="Tokenizer-628"><a href="#Tokenizer-628"><span class="linenos"> 628</span></a> <span class="s2">"WHERE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WHERE</span><span class="p">,</span> +</span><span id="Tokenizer-629"><a href="#Tokenizer-629"><span class="linenos"> 629</span></a> <span class="s2">"WINDOW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WINDOW</span><span class="p">,</span> +</span><span id="Tokenizer-630"><a href="#Tokenizer-630"><span class="linenos"> 630</span></a> <span class="s2">"WITH"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH</span><span class="p">,</span> +</span><span id="Tokenizer-631"><a href="#Tokenizer-631"><span class="linenos"> 631</span></a> <span class="s2">"WITH TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_TIME_ZONE</span><span class="p">,</span> +</span><span id="Tokenizer-632"><a href="#Tokenizer-632"><span class="linenos"> 632</span></a> <span class="s2">"WITH LOCAL TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITH_LOCAL_TIME_ZONE</span><span class="p">,</span> +</span><span id="Tokenizer-633"><a href="#Tokenizer-633"><span class="linenos"> 633</span></a> <span class="s2">"WITHIN GROUP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITHIN_GROUP</span><span class="p">,</span> +</span><span id="Tokenizer-634"><a href="#Tokenizer-634"><span class="linenos"> 634</span></a> <span class="s2">"WITHOUT TIME ZONE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">WITHOUT_TIME_ZONE</span><span class="p">,</span> +</span><span id="Tokenizer-635"><a href="#Tokenizer-635"><span class="linenos"> 635</span></a> <span class="s2">"APPLY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">APPLY</span><span class="p">,</span> +</span><span id="Tokenizer-636"><a href="#Tokenizer-636"><span class="linenos"> 636</span></a> <span class="s2">"ARRAY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ARRAY</span><span class="p">,</span> +</span><span id="Tokenizer-637"><a href="#Tokenizer-637"><span class="linenos"> 637</span></a> <span class="s2">"BOOL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> +</span><span id="Tokenizer-638"><a href="#Tokenizer-638"><span class="linenos"> 638</span></a> <span class="s2">"BOOLEAN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> +</span><span id="Tokenizer-639"><a href="#Tokenizer-639"><span class="linenos"> 639</span></a> <span class="s2">"BYTE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="Tokenizer-640"><a href="#Tokenizer-640"><span class="linenos"> 640</span></a> <span class="s2">"TINYINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> +</span><span id="Tokenizer-641"><a href="#Tokenizer-641"><span class="linenos"> 641</span></a> <span class="s2">"SHORT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="Tokenizer-642"><a href="#Tokenizer-642"><span class="linenos"> 642</span></a> <span class="s2">"SMALLINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="Tokenizer-643"><a href="#Tokenizer-643"><span class="linenos"> 643</span></a> <span class="s2">"INT2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLINT</span><span class="p">,</span> +</span><span id="Tokenizer-644"><a href="#Tokenizer-644"><span class="linenos"> 644</span></a> <span class="s2">"INTEGER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="Tokenizer-645"><a href="#Tokenizer-645"><span class="linenos"> 645</span></a> <span class="s2">"INT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="Tokenizer-646"><a href="#Tokenizer-646"><span class="linenos"> 646</span></a> <span class="s2">"INT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> +</span><span id="Tokenizer-647"><a href="#Tokenizer-647"><span class="linenos"> 647</span></a> <span class="s2">"LONG"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="Tokenizer-648"><a href="#Tokenizer-648"><span class="linenos"> 648</span></a> <span class="s2">"BIGINT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="Tokenizer-649"><a href="#Tokenizer-649"><span class="linenos"> 649</span></a> <span class="s2">"INT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGINT</span><span class="p">,</span> +</span><span id="Tokenizer-650"><a href="#Tokenizer-650"><span class="linenos"> 650</span></a> <span class="s2">"DECIMAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-651"><a href="#Tokenizer-651"><span class="linenos"> 651</span></a> <span class="s2">"MAP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">MAP</span><span class="p">,</span> +</span><span id="Tokenizer-652"><a href="#Tokenizer-652"><span class="linenos"> 652</span></a> <span class="s2">"NULLABLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NULLABLE</span><span class="p">,</span> +</span><span id="Tokenizer-653"><a href="#Tokenizer-653"><span class="linenos"> 653</span></a> <span class="s2">"NUMBER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-654"><a href="#Tokenizer-654"><span class="linenos"> 654</span></a> <span class="s2">"NUMERIC"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-655"><a href="#Tokenizer-655"><span class="linenos"> 655</span></a> <span class="s2">"FIXED"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DECIMAL</span><span class="p">,</span> +</span><span id="Tokenizer-656"><a href="#Tokenizer-656"><span class="linenos"> 656</span></a> <span class="s2">"REAL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="Tokenizer-657"><a href="#Tokenizer-657"><span class="linenos"> 657</span></a> <span class="s2">"FLOAT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="Tokenizer-658"><a href="#Tokenizer-658"><span class="linenos"> 658</span></a> <span class="s2">"FLOAT4"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">,</span> +</span><span id="Tokenizer-659"><a href="#Tokenizer-659"><span class="linenos"> 659</span></a> <span class="s2">"FLOAT8"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="Tokenizer-660"><a href="#Tokenizer-660"><span class="linenos"> 660</span></a> <span class="s2">"DOUBLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="Tokenizer-661"><a href="#Tokenizer-661"><span class="linenos"> 661</span></a> <span class="s2">"DOUBLE PRECISION"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DOUBLE</span><span class="p">,</span> +</span><span id="Tokenizer-662"><a href="#Tokenizer-662"><span class="linenos"> 662</span></a> <span class="s2">"JSON"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSON</span><span class="p">,</span> +</span><span id="Tokenizer-663"><a href="#Tokenizer-663"><span class="linenos"> 663</span></a> <span class="s2">"CHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">CHAR</span><span class="p">,</span> +</span><span id="Tokenizer-664"><a href="#Tokenizer-664"><span class="linenos"> 664</span></a> <span class="s2">"NCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">,</span> +</span><span id="Tokenizer-665"><a href="#Tokenizer-665"><span class="linenos"> 665</span></a> <span class="s2">"VARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="Tokenizer-666"><a href="#Tokenizer-666"><span class="linenos"> 666</span></a> <span class="s2">"VARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span> +</span><span id="Tokenizer-667"><a href="#Tokenizer-667"><span class="linenos"> 667</span></a> <span class="s2">"NVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="Tokenizer-668"><a href="#Tokenizer-668"><span class="linenos"> 668</span></a> <span class="s2">"NVARCHAR2"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">,</span> +</span><span id="Tokenizer-669"><a href="#Tokenizer-669"><span class="linenos"> 669</span></a> <span class="s2">"STR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="Tokenizer-670"><a href="#Tokenizer-670"><span class="linenos"> 670</span></a> <span class="s2">"STRING"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="Tokenizer-671"><a href="#Tokenizer-671"><span class="linenos"> 671</span></a> <span class="s2">"TEXT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="Tokenizer-672"><a href="#Tokenizer-672"><span class="linenos"> 672</span></a> <span class="s2">"CLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="Tokenizer-673"><a href="#Tokenizer-673"><span class="linenos"> 673</span></a> <span class="s2">"LONGVARCHAR"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> +</span><span id="Tokenizer-674"><a href="#Tokenizer-674"><span class="linenos"> 674</span></a> <span class="s2">"BINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BINARY</span><span class="p">,</span> +</span><span id="Tokenizer-675"><a href="#Tokenizer-675"><span class="linenos"> 675</span></a> <span class="s2">"BLOB"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> +</span><span id="Tokenizer-676"><a href="#Tokenizer-676"><span class="linenos"> 676</span></a> <span class="s2">"BYTEA"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> +</span><span id="Tokenizer-677"><a href="#Tokenizer-677"><span class="linenos"> 677</span></a> <span class="s2">"VARBINARY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> +</span><span id="Tokenizer-678"><a href="#Tokenizer-678"><span class="linenos"> 678</span></a> <span class="s2">"TIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIME</span><span class="p">,</span> +</span><span id="Tokenizer-679"><a href="#Tokenizer-679"><span class="linenos"> 679</span></a> <span class="s2">"TIMESTAMP"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span> +</span><span id="Tokenizer-680"><a href="#Tokenizer-680"><span class="linenos"> 680</span></a> <span class="s2">"TIMESTAMPTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPTZ</span><span class="p">,</span> +</span><span id="Tokenizer-681"><a href="#Tokenizer-681"><span class="linenos"> 681</span></a> <span class="s2">"TIMESTAMPLTZ"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMPLTZ</span><span class="p">,</span> +</span><span id="Tokenizer-682"><a href="#Tokenizer-682"><span class="linenos"> 682</span></a> <span class="s2">"DATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> +</span><span id="Tokenizer-683"><a href="#Tokenizer-683"><span class="linenos"> 683</span></a> <span class="s2">"DATETIME"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">,</span> +</span><span id="Tokenizer-684"><a href="#Tokenizer-684"><span class="linenos"> 684</span></a> <span class="s2">"UNIQUE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UNIQUE</span><span class="p">,</span> +</span><span id="Tokenizer-685"><a href="#Tokenizer-685"><span class="linenos"> 685</span></a> <span class="s2">"STRUCT"</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="Tokenizer-686"><a href="#Tokenizer-686"><span class="linenos"> 686</span></a> <span class="s2">"VARIANT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARIANT</span><span class="p">,</span> +</span><span id="Tokenizer-687"><a href="#Tokenizer-687"><span class="linenos"> 687</span></a> <span class="s2">"ALTER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ALTER</span><span class="p">,</span> +</span><span id="Tokenizer-688"><a href="#Tokenizer-688"><span class="linenos"> 688</span></a> <span class="s2">"ALTER AGGREGATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-689"><a href="#Tokenizer-689"><span class="linenos"> 689</span></a> <span class="s2">"ALTER DEFAULT"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-690"><a href="#Tokenizer-690"><span class="linenos"> 690</span></a> <span class="s2">"ALTER DOMAIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-691"><a href="#Tokenizer-691"><span class="linenos"> 691</span></a> <span class="s2">"ALTER ROLE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-692"><a href="#Tokenizer-692"><span class="linenos"> 692</span></a> <span class="s2">"ALTER RULE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-693"><a href="#Tokenizer-693"><span class="linenos"> 693</span></a> <span class="s2">"ALTER SEQUENCE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-694"><a href="#Tokenizer-694"><span class="linenos"> 694</span></a> <span class="s2">"ALTER TYPE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-695"><a href="#Tokenizer-695"><span class="linenos"> 695</span></a> <span class="s2">"ALTER USER"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-696"><a href="#Tokenizer-696"><span class="linenos"> 696</span></a> <span class="s2">"ALTER VIEW"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-697"><a href="#Tokenizer-697"><span class="linenos"> 697</span></a> <span class="s2">"ANALYZE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-698"><a href="#Tokenizer-698"><span class="linenos"> 698</span></a> <span class="s2">"CALL"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-699"><a href="#Tokenizer-699"><span class="linenos"> 699</span></a> <span class="s2">"COPY"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-700"><a href="#Tokenizer-700"><span class="linenos"> 700</span></a> <span class="s2">"EXPLAIN"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-701"><a href="#Tokenizer-701"><span class="linenos"> 701</span></a> <span class="s2">"OPTIMIZE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-702"><a href="#Tokenizer-702"><span class="linenos"> 702</span></a> <span class="s2">"PREPARE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-703"><a href="#Tokenizer-703"><span class="linenos"> 703</span></a> <span class="s2">"TRUNCATE"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-704"><a href="#Tokenizer-704"><span class="linenos"> 704</span></a> <span class="s2">"VACUUM"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-705"><a href="#Tokenizer-705"><span class="linenos"> 705</span></a> <span class="p">}</span> +</span><span id="Tokenizer-706"><a href="#Tokenizer-706"><span class="linenos"> 706</span></a> +</span><span id="Tokenizer-707"><a href="#Tokenizer-707"><span class="linenos"> 707</span></a> <span class="n">WHITE_SPACE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">TokenType</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Tokenizer-708"><a href="#Tokenizer-708"><span class="linenos"> 708</span></a> <span class="s2">" "</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> +</span><span id="Tokenizer-709"><a href="#Tokenizer-709"><span class="linenos"> 709</span></a> <span class="s2">"</span><span class="se">\t</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SPACE</span><span class="p">,</span> +</span><span id="Tokenizer-710"><a href="#Tokenizer-710"><span class="linenos"> 710</span></a> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="Tokenizer-711"><a href="#Tokenizer-711"><span class="linenos"> 711</span></a> <span class="s2">"</span><span class="se">\r</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="Tokenizer-712"><a href="#Tokenizer-712"><span class="linenos"> 712</span></a> <span class="s2">"</span><span class="se">\r\n</span><span class="s2">"</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">,</span> +</span><span id="Tokenizer-713"><a href="#Tokenizer-713"><span class="linenos"> 713</span></a> <span class="p">}</span> +</span><span id="Tokenizer-714"><a href="#Tokenizer-714"><span class="linenos"> 714</span></a> +</span><span id="Tokenizer-715"><a href="#Tokenizer-715"><span class="linenos"> 715</span></a> <span class="n">COMMANDS</span> <span class="o">=</span> <span class="p">{</span> +</span><span id="Tokenizer-716"><a href="#Tokenizer-716"><span class="linenos"> 716</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span> +</span><span id="Tokenizer-717"><a href="#Tokenizer-717"><span class="linenos"> 717</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXECUTE</span><span class="p">,</span> +</span><span id="Tokenizer-718"><a href="#Tokenizer-718"><span class="linenos"> 718</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">FETCH</span><span class="p">,</span> +</span><span id="Tokenizer-719"><a href="#Tokenizer-719"><span class="linenos"> 719</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SET</span><span class="p">,</span> +</span><span id="Tokenizer-720"><a href="#Tokenizer-720"><span class="linenos"> 720</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">SHOW</span><span class="p">,</span> +</span><span id="Tokenizer-721"><a href="#Tokenizer-721"><span class="linenos"> 721</span></a> <span class="p">}</span> </span><span id="Tokenizer-722"><a href="#Tokenizer-722"><span class="linenos"> 722</span></a> -</span><span id="Tokenizer-723"><a href="#Tokenizer-723"><span class="linenos"> 723</span></a> <span class="c1"># handle numeric literals like in hive (3L = BIGINT)</span> -</span><span id="Tokenizer-724"><a href="#Tokenizer-724"><span class="linenos"> 724</span></a> <span class="n">NUMERIC_LITERALS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> -</span><span id="Tokenizer-725"><a href="#Tokenizer-725"><span class="linenos"> 725</span></a> <span class="n">ENCODE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-726"><a href="#Tokenizer-726"><span class="linenos"> 726</span></a> -</span><span id="Tokenizer-727"><a href="#Tokenizer-727"><span class="linenos"> 727</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> -</span><span id="Tokenizer-728"><a href="#Tokenizer-728"><span class="linenos"> 728</span></a> <span class="n">KEYWORD_TRIE</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># autofilled</span> -</span><span id="Tokenizer-729"><a href="#Tokenizer-729"><span class="linenos"> 729</span></a> -</span><span id="Tokenizer-730"><a href="#Tokenizer-730"><span class="linenos"> 730</span></a> <span class="n">IDENTIFIER_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-723"><a href="#Tokenizer-723"><span class="linenos"> 723</span></a> <span class="n">COMMAND_PREFIX_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="n">TokenType</span><span class="o">.</span><span class="n">SEMICOLON</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="Tokenizer-724"><a href="#Tokenizer-724"><span class="linenos"> 724</span></a> +</span><span id="Tokenizer-725"><a href="#Tokenizer-725"><span class="linenos"> 725</span></a> <span class="c1"># handle numeric literals like in hive (3L = BIGINT)</span> +</span><span id="Tokenizer-726"><a href="#Tokenizer-726"><span class="linenos"> 726</span></a> <span class="n">NUMERIC_LITERALS</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span> +</span><span id="Tokenizer-727"><a href="#Tokenizer-727"><span class="linenos"> 727</span></a> <span class="n">ENCODE</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-728"><a href="#Tokenizer-728"><span class="linenos"> 728</span></a> +</span><span id="Tokenizer-729"><a href="#Tokenizer-729"><span class="linenos"> 729</span></a> <span class="n">COMMENTS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"--"</span><span class="p">,</span> <span class="p">(</span><span class="s2">"/*"</span><span class="p">,</span> <span class="s2">"*/"</span><span class="p">)]</span> +</span><span id="Tokenizer-730"><a href="#Tokenizer-730"><span class="linenos"> 730</span></a> <span class="n">KEYWORD_TRIE</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1"># autofilled</span> </span><span id="Tokenizer-731"><a href="#Tokenizer-731"><span class="linenos"> 731</span></a> -</span><span id="Tokenizer-732"><a href="#Tokenizer-732"><span class="linenos"> 732</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> -</span><span id="Tokenizer-733"><a href="#Tokenizer-733"><span class="linenos"> 733</span></a> <span class="s2">"sql"</span><span class="p">,</span> -</span><span id="Tokenizer-734"><a href="#Tokenizer-734"><span class="linenos"> 734</span></a> <span class="s2">"size"</span><span class="p">,</span> -</span><span id="Tokenizer-735"><a href="#Tokenizer-735"><span class="linenos"> 735</span></a> <span class="s2">"tokens"</span><span class="p">,</span> -</span><span id="Tokenizer-736"><a href="#Tokenizer-736"><span class="linenos"> 736</span></a> <span class="s2">"_start"</span><span class="p">,</span> -</span><span id="Tokenizer-737"><a href="#Tokenizer-737"><span class="linenos"> 737</span></a> <span class="s2">"_current"</span><span class="p">,</span> -</span><span id="Tokenizer-738"><a href="#Tokenizer-738"><span class="linenos"> 738</span></a> <span class="s2">"_line"</span><span class="p">,</span> -</span><span id="Tokenizer-739"><a href="#Tokenizer-739"><span class="linenos"> 739</span></a> <span class="s2">"_col"</span><span class="p">,</span> -</span><span id="Tokenizer-740"><a href="#Tokenizer-740"><span class="linenos"> 740</span></a> <span class="s2">"_comments"</span><span class="p">,</span> -</span><span id="Tokenizer-741"><a href="#Tokenizer-741"><span class="linenos"> 741</span></a> <span class="s2">"_char"</span><span class="p">,</span> -</span><span id="Tokenizer-742"><a href="#Tokenizer-742"><span class="linenos"> 742</span></a> <span class="s2">"_end"</span><span class="p">,</span> -</span><span id="Tokenizer-743"><a href="#Tokenizer-743"><span class="linenos"> 743</span></a> <span class="s2">"_peek"</span><span class="p">,</span> -</span><span id="Tokenizer-744"><a href="#Tokenizer-744"><span class="linenos"> 744</span></a> <span class="s2">"_prev_token_line"</span><span class="p">,</span> -</span><span id="Tokenizer-745"><a href="#Tokenizer-745"><span class="linenos"> 745</span></a> <span class="s2">"_prev_token_comments"</span><span class="p">,</span> -</span><span id="Tokenizer-746"><a href="#Tokenizer-746"><span class="linenos"> 746</span></a> <span class="s2">"_prev_token_type"</span><span class="p">,</span> -</span><span id="Tokenizer-747"><a href="#Tokenizer-747"><span class="linenos"> 747</span></a> <span class="p">)</span> -</span><span id="Tokenizer-748"><a href="#Tokenizer-748"><span class="linenos"> 748</span></a> -</span><span id="Tokenizer-749"><a href="#Tokenizer-749"><span class="linenos"> 749</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-750"><a href="#Tokenizer-750"><span class="linenos"> 750</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="Tokenizer-751"><a href="#Tokenizer-751"><span class="linenos"> 751</span></a> -</span><span id="Tokenizer-752"><a href="#Tokenizer-752"><span class="linenos"> 752</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-753"><a href="#Tokenizer-753"><span class="linenos"> 753</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-754"><a href="#Tokenizer-754"><span class="linenos"> 754</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-755"><a href="#Tokenizer-755"><span class="linenos"> 755</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-756"><a href="#Tokenizer-756"><span class="linenos"> 756</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-757"><a href="#Tokenizer-757"><span class="linenos"> 757</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-758"><a href="#Tokenizer-758"><span class="linenos"> 758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Tokenizer-759"><a href="#Tokenizer-759"><span class="linenos"> 759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Tokenizer-760"><a href="#Tokenizer-760"><span class="linenos"> 760</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="Tokenizer-761"><a href="#Tokenizer-761"><span class="linenos"> 761</span></a> -</span><span id="Tokenizer-762"><a href="#Tokenizer-762"><span class="linenos"> 762</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-763"><a href="#Tokenizer-763"><span class="linenos"> 763</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-764"><a href="#Tokenizer-764"><span class="linenos"> 764</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-765"><a href="#Tokenizer-765"><span class="linenos"> 765</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> -</span><span id="Tokenizer-766"><a href="#Tokenizer-766"><span class="linenos"> 766</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</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="Tokenizer-767"><a href="#Tokenizer-767"><span class="linenos"> 767</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-768"><a href="#Tokenizer-768"><span class="linenos"> 768</span></a> -</span><span id="Tokenizer-769"><a href="#Tokenizer-769"><span class="linenos"> 769</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="Tokenizer-770"><a href="#Tokenizer-770"><span class="linenos"> 770</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> -</span><span id="Tokenizer-771"><a href="#Tokenizer-771"><span class="linenos"> 771</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="Tokenizer-772"><a href="#Tokenizer-772"><span class="linenos"> 772</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> -</span><span id="Tokenizer-773"><a href="#Tokenizer-773"><span class="linenos"> 773</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="Tokenizer-774"><a href="#Tokenizer-774"><span class="linenos"> 774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> -</span><span id="Tokenizer-775"><a href="#Tokenizer-775"><span class="linenos"> 775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> -</span><span id="Tokenizer-776"><a href="#Tokenizer-776"><span class="linenos"> 776</span></a> -</span><span id="Tokenizer-777"><a href="#Tokenizer-777"><span class="linenos"> 777</span></a> <span class="k">def</span> <span class="nf">_scan</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">until</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-778"><a href="#Tokenizer-778"><span class="linenos"> 778</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> -</span><span id="Tokenizer-779"><a href="#Tokenizer-779"><span class="linenos"> 779</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> -</span><span id="Tokenizer-780"><a href="#Tokenizer-780"><span class="linenos"> 780</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-781"><a href="#Tokenizer-781"><span class="linenos"> 781</span></a> -</span><span id="Tokenizer-782"><a href="#Tokenizer-782"><span class="linenos"> 782</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">:</span> -</span><span id="Tokenizer-783"><a href="#Tokenizer-783"><span class="linenos"> 783</span></a> <span class="k">break</span> -</span><span id="Tokenizer-784"><a href="#Tokenizer-784"><span class="linenos"> 784</span></a> -</span><span id="Tokenizer-785"><a href="#Tokenizer-785"><span class="linenos"> 785</span></a> <span class="n">white_space</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-786"><a href="#Tokenizer-786"><span class="linenos"> 786</span></a> <span class="n">identifier_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-787"><a href="#Tokenizer-787"><span class="linenos"> 787</span></a> -</span><span id="Tokenizer-788"><a href="#Tokenizer-788"><span class="linenos"> 788</span></a> <span class="k">if</span> <span class="n">white_space</span><span class="p">:</span> -</span><span id="Tokenizer-789"><a href="#Tokenizer-789"><span class="linenos"> 789</span></a> <span class="k">if</span> <span class="n">white_space</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> -</span><span id="Tokenizer-790"><a href="#Tokenizer-790"><span class="linenos"> 790</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Tokenizer-791"><a href="#Tokenizer-791"><span class="linenos"> 791</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-792"><a href="#Tokenizer-792"><span class="linenos"> 792</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> <span class="c1"># type:ignore</span> -</span><span id="Tokenizer-793"><a href="#Tokenizer-793"><span class="linenos"> 793</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_number</span><span class="p">()</span> -</span><span id="Tokenizer-794"><a href="#Tokenizer-794"><span class="linenos"> 794</span></a> <span class="k">elif</span> <span class="n">identifier_end</span><span class="p">:</span> -</span><span id="Tokenizer-795"><a href="#Tokenizer-795"><span class="linenos"> 795</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_identifier</span><span class="p">(</span><span class="n">identifier_end</span><span class="p">)</span> -</span><span id="Tokenizer-796"><a href="#Tokenizer-796"><span class="linenos"> 796</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-797"><a href="#Tokenizer-797"><span class="linenos"> 797</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_keywords</span><span class="p">()</span> -</span><span id="Tokenizer-798"><a href="#Tokenizer-798"><span class="linenos"> 798</span></a> -</span><span id="Tokenizer-799"><a href="#Tokenizer-799"><span class="linenos"> 799</span></a> <span class="k">if</span> <span class="n">until</span> <span class="ow">and</span> <span class="n">until</span><span class="p">():</span> -</span><span id="Tokenizer-800"><a href="#Tokenizer-800"><span class="linenos"> 800</span></a> <span class="k">break</span> -</span><span id="Tokenizer-801"><a href="#Tokenizer-801"><span class="linenos"> 801</span></a> -</span><span id="Tokenizer-802"><a href="#Tokenizer-802"><span class="linenos"> 802</span></a> <span class="k">def</span> <span class="nf">_chars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Tokenizer-803"><a href="#Tokenizer-803"><span class="linenos"> 803</span></a> <span class="k">if</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Tokenizer-804"><a href="#Tokenizer-804"><span class="linenos"> 804</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-805"><a href="#Tokenizer-805"><span class="linenos"> 805</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> -</span><span id="Tokenizer-806"><a href="#Tokenizer-806"><span class="linenos"> 806</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">size</span> -</span><span id="Tokenizer-807"><a href="#Tokenizer-807"><span class="linenos"> 807</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="Tokenizer-808"><a href="#Tokenizer-808"><span class="linenos"> 808</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> -</span><span id="Tokenizer-809"><a href="#Tokenizer-809"><span class="linenos"> 809</span></a> <span class="k">return</span> <span class="s2">""</span> -</span><span id="Tokenizer-810"><a href="#Tokenizer-810"><span class="linenos"> 810</span></a> -</span><span id="Tokenizer-811"><a href="#Tokenizer-811"><span class="linenos"> 811</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-812"><a href="#Tokenizer-812"><span class="linenos"> 812</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">+=</span> <span class="n">i</span> -</span><span id="Tokenizer-813"><a href="#Tokenizer-813"><span class="linenos"> 813</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+=</span> <span class="n">i</span> -</span><span id="Tokenizer-814"><a href="#Tokenizer-814"><span class="linenos"> 814</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-815"><a href="#Tokenizer-815"><span class="linenos"> 815</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</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="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-816"><a href="#Tokenizer-816"><span class="linenos"> 816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</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="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="k">else</span> <span class="s2">""</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-817"><a href="#Tokenizer-817"><span class="linenos"> 817</span></a> -</span><span id="Tokenizer-818"><a href="#Tokenizer-818"><span class="linenos"> 818</span></a> <span class="nd">@property</span> -</span><span id="Tokenizer-819"><a href="#Tokenizer-819"><span class="linenos"> 819</span></a> <span class="k">def</span> <span class="nf">_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Tokenizer-820"><a href="#Tokenizer-820"><span class="linenos"> 820</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="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> -</span><span id="Tokenizer-821"><a href="#Tokenizer-821"><span class="linenos"> 821</span></a> -</span><span id="Tokenizer-822"><a href="#Tokenizer-822"><span class="linenos"> 822</span></a> <span class="k">def</span> <span class="nf">_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-823"><a href="#Tokenizer-823"><span class="linenos"> 823</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="Tokenizer-824"><a href="#Tokenizer-824"><span class="linenos"> 824</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> -</span><span id="Tokenizer-825"><a href="#Tokenizer-825"><span class="linenos"> 825</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="n">token_type</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-826"><a href="#Tokenizer-826"><span class="linenos"> 826</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> -</span><span id="Tokenizer-827"><a href="#Tokenizer-827"><span class="linenos"> 827</span></a> <span class="n">Token</span><span class="p">(</span> -</span><span id="Tokenizer-828"><a href="#Tokenizer-828"><span class="linenos"> 828</span></a> <span class="n">token_type</span><span class="p">,</span> -</span><span id="Tokenizer-829"><a href="#Tokenizer-829"><span class="linenos"> 829</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> <span class="k">if</span> <span class="n">text</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">text</span><span class="p">,</span> -</span><span id="Tokenizer-830"><a href="#Tokenizer-830"><span class="linenos"> 830</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span><span class="p">,</span> -</span><span id="Tokenizer-831"><a href="#Tokenizer-831"><span class="linenos"> 831</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span><span class="p">,</span> -</span><span id="Tokenizer-832"><a href="#Tokenizer-832"><span class="linenos"> 832</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">,</span> -</span><span id="Tokenizer-833"><a href="#Tokenizer-833"><span class="linenos"> 833</span></a> <span class="p">)</span> -</span><span id="Tokenizer-834"><a href="#Tokenizer-834"><span class="linenos"> 834</span></a> <span class="p">)</span> -</span><span id="Tokenizer-835"><a href="#Tokenizer-835"><span class="linenos"> 835</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-836"><a href="#Tokenizer-836"><span class="linenos"> 836</span></a> -</span><span id="Tokenizer-837"><a href="#Tokenizer-837"><span class="linenos"> 837</span></a> <span class="c1"># If we have either a semicolon or a begin token before the command's token, we'll parse</span> -</span><span id="Tokenizer-838"><a href="#Tokenizer-838"><span class="linenos"> 838</span></a> <span class="c1"># whatever follows the command's token as a string</span> -</span><span id="Tokenizer-839"><a href="#Tokenizer-839"><span class="linenos"> 839</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMANDS</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="Tokenizer-840"><a href="#Tokenizer-840"><span class="linenos"> 840</span></a> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span> -</span><span id="Tokenizer-841"><a href="#Tokenizer-841"><span class="linenos"> 841</span></a> <span class="p">):</span> -</span><span id="Tokenizer-842"><a href="#Tokenizer-842"><span class="linenos"> 842</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> -</span><span id="Tokenizer-843"><a href="#Tokenizer-843"><span class="linenos"> 843</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> -</span><span id="Tokenizer-844"><a href="#Tokenizer-844"><span class="linenos"> 844</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">";"</span><span class="p">)</span> -</span><span id="Tokenizer-845"><a href="#Tokenizer-845"><span class="linenos"> 845</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[:</span><span class="n">tokens</span><span class="p">]</span> -</span><span id="Tokenizer-846"><a href="#Tokenizer-846"><span class="linenos"> 846</span></a> <span class="n">text</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">start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> -</span><span id="Tokenizer-847"><a href="#Tokenizer-847"><span class="linenos"> 847</span></a> <span class="k">if</span> <span class="n">text</span><span class="p">:</span> -</span><span id="Tokenizer-848"><a href="#Tokenizer-848"><span class="linenos"> 848</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="Tokenizer-849"><a href="#Tokenizer-849"><span class="linenos"> 849</span></a> -</span><span id="Tokenizer-850"><a href="#Tokenizer-850"><span class="linenos"> 850</span></a> <span class="k">def</span> <span class="nf">_scan_keywords</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-851"><a href="#Tokenizer-851"><span class="linenos"> 851</span></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-852"><a href="#Tokenizer-852"><span class="linenos"> 852</span></a> <span class="n">word</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-853"><a href="#Tokenizer-853"><span class="linenos"> 853</span></a> <span class="n">chars</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="Tokenizer-854"><a href="#Tokenizer-854"><span class="linenos"> 854</span></a> <span class="n">char</span> <span class="o">=</span> <span class="n">chars</span> -</span><span id="Tokenizer-855"><a href="#Tokenizer-855"><span class="linenos"> 855</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-856"><a href="#Tokenizer-856"><span class="linenos"> 856</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-857"><a href="#Tokenizer-857"><span class="linenos"> 857</span></a> <span class="n">trie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORD_TRIE</span> -</span><span id="Tokenizer-858"><a href="#Tokenizer-858"><span class="linenos"> 858</span></a> -</span><span id="Tokenizer-859"><a href="#Tokenizer-859"><span class="linenos"> 859</span></a> <span class="k">while</span> <span class="n">chars</span><span class="p">:</span> -</span><span id="Tokenizer-860"><a href="#Tokenizer-860"><span class="linenos"> 860</span></a> <span class="k">if</span> <span class="n">skip</span><span class="p">:</span> -</span><span id="Tokenizer-861"><a href="#Tokenizer-861"><span class="linenos"> 861</span></a> <span class="n">result</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Tokenizer-862"><a href="#Tokenizer-862"><span class="linenos"> 862</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-863"><a href="#Tokenizer-863"><span class="linenos"> 863</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">char</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-732"><a href="#Tokenizer-732"><span class="linenos"> 732</span></a> <span class="n">IDENTIFIER_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-733"><a href="#Tokenizer-733"><span class="linenos"> 733</span></a> +</span><span id="Tokenizer-734"><a href="#Tokenizer-734"><span class="linenos"> 734</span></a> <span class="vm">__slots__</span> <span class="o">=</span> <span class="p">(</span> +</span><span id="Tokenizer-735"><a href="#Tokenizer-735"><span class="linenos"> 735</span></a> <span class="s2">"sql"</span><span class="p">,</span> +</span><span id="Tokenizer-736"><a href="#Tokenizer-736"><span class="linenos"> 736</span></a> <span class="s2">"size"</span><span class="p">,</span> +</span><span id="Tokenizer-737"><a href="#Tokenizer-737"><span class="linenos"> 737</span></a> <span class="s2">"tokens"</span><span class="p">,</span> +</span><span id="Tokenizer-738"><a href="#Tokenizer-738"><span class="linenos"> 738</span></a> <span class="s2">"_start"</span><span class="p">,</span> +</span><span id="Tokenizer-739"><a href="#Tokenizer-739"><span class="linenos"> 739</span></a> <span class="s2">"_current"</span><span class="p">,</span> +</span><span id="Tokenizer-740"><a href="#Tokenizer-740"><span class="linenos"> 740</span></a> <span class="s2">"_line"</span><span class="p">,</span> +</span><span id="Tokenizer-741"><a href="#Tokenizer-741"><span class="linenos"> 741</span></a> <span class="s2">"_col"</span><span class="p">,</span> +</span><span id="Tokenizer-742"><a href="#Tokenizer-742"><span class="linenos"> 742</span></a> <span class="s2">"_comments"</span><span class="p">,</span> +</span><span id="Tokenizer-743"><a href="#Tokenizer-743"><span class="linenos"> 743</span></a> <span class="s2">"_char"</span><span class="p">,</span> +</span><span id="Tokenizer-744"><a href="#Tokenizer-744"><span class="linenos"> 744</span></a> <span class="s2">"_end"</span><span class="p">,</span> +</span><span id="Tokenizer-745"><a href="#Tokenizer-745"><span class="linenos"> 745</span></a> <span class="s2">"_peek"</span><span class="p">,</span> +</span><span id="Tokenizer-746"><a href="#Tokenizer-746"><span class="linenos"> 746</span></a> <span class="s2">"_prev_token_line"</span><span class="p">,</span> +</span><span id="Tokenizer-747"><a href="#Tokenizer-747"><span class="linenos"> 747</span></a> <span class="s2">"_prev_token_comments"</span><span class="p">,</span> +</span><span id="Tokenizer-748"><a href="#Tokenizer-748"><span class="linenos"> 748</span></a> <span class="s2">"_prev_token_type"</span><span class="p">,</span> +</span><span id="Tokenizer-749"><a href="#Tokenizer-749"><span class="linenos"> 749</span></a> <span class="p">)</span> +</span><span id="Tokenizer-750"><a href="#Tokenizer-750"><span class="linenos"> 750</span></a> +</span><span id="Tokenizer-751"><a href="#Tokenizer-751"><span class="linenos"> 751</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-752"><a href="#Tokenizer-752"><span class="linenos"> 752</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Tokenizer-753"><a href="#Tokenizer-753"><span class="linenos"> 753</span></a> +</span><span id="Tokenizer-754"><a href="#Tokenizer-754"><span class="linenos"> 754</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-755"><a href="#Tokenizer-755"><span class="linenos"> 755</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-756"><a href="#Tokenizer-756"><span class="linenos"> 756</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-757"><a href="#Tokenizer-757"><span class="linenos"> 757</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-758"><a href="#Tokenizer-758"><span class="linenos"> 758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-759"><a href="#Tokenizer-759"><span class="linenos"> 759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-760"><a href="#Tokenizer-760"><span class="linenos"> 760</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Tokenizer-761"><a href="#Tokenizer-761"><span class="linenos"> 761</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Tokenizer-762"><a href="#Tokenizer-762"><span class="linenos"> 762</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="Tokenizer-763"><a href="#Tokenizer-763"><span class="linenos"> 763</span></a> +</span><span id="Tokenizer-764"><a href="#Tokenizer-764"><span class="linenos"> 764</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-765"><a href="#Tokenizer-765"><span class="linenos"> 765</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-766"><a href="#Tokenizer-766"><span class="linenos"> 766</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-767"><a href="#Tokenizer-767"><span class="linenos"> 767</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> +</span><span id="Tokenizer-768"><a href="#Tokenizer-768"><span class="linenos"> 768</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</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="Tokenizer-769"><a href="#Tokenizer-769"><span class="linenos"> 769</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-770"><a href="#Tokenizer-770"><span class="linenos"> 770</span></a> +</span><span id="Tokenizer-771"><a href="#Tokenizer-771"><span class="linenos"> 771</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="Tokenizer-772"><a href="#Tokenizer-772"><span class="linenos"> 772</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> +</span><span id="Tokenizer-773"><a href="#Tokenizer-773"><span class="linenos"> 773</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Tokenizer-774"><a href="#Tokenizer-774"><span class="linenos"> 774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> +</span><span id="Tokenizer-775"><a href="#Tokenizer-775"><span class="linenos"> 775</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="Tokenizer-776"><a href="#Tokenizer-776"><span class="linenos"> 776</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> +</span><span id="Tokenizer-777"><a href="#Tokenizer-777"><span class="linenos"> 777</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> +</span><span id="Tokenizer-778"><a href="#Tokenizer-778"><span class="linenos"> 778</span></a> +</span><span id="Tokenizer-779"><a href="#Tokenizer-779"><span class="linenos"> 779</span></a> <span class="k">def</span> <span class="nf">_scan</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">until</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-780"><a href="#Tokenizer-780"><span class="linenos"> 780</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> +</span><span id="Tokenizer-781"><a href="#Tokenizer-781"><span class="linenos"> 781</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> +</span><span id="Tokenizer-782"><a href="#Tokenizer-782"><span class="linenos"> 782</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-783"><a href="#Tokenizer-783"><span class="linenos"> 783</span></a> +</span><span id="Tokenizer-784"><a href="#Tokenizer-784"><span class="linenos"> 784</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-785"><a href="#Tokenizer-785"><span class="linenos"> 785</span></a> <span class="k">break</span> +</span><span id="Tokenizer-786"><a href="#Tokenizer-786"><span class="linenos"> 786</span></a> +</span><span id="Tokenizer-787"><a href="#Tokenizer-787"><span class="linenos"> 787</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="p">:</span> +</span><span id="Tokenizer-788"><a href="#Tokenizer-788"><span class="linenos"> 788</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> +</span><span id="Tokenizer-789"><a href="#Tokenizer-789"><span class="linenos"> 789</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_number</span><span class="p">()</span> +</span><span id="Tokenizer-790"><a href="#Tokenizer-790"><span class="linenos"> 790</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">:</span> +</span><span id="Tokenizer-791"><a href="#Tokenizer-791"><span class="linenos"> 791</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIERS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> +</span><span id="Tokenizer-792"><a href="#Tokenizer-792"><span class="linenos"> 792</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-793"><a href="#Tokenizer-793"><span class="linenos"> 793</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_keywords</span><span class="p">()</span> +</span><span id="Tokenizer-794"><a href="#Tokenizer-794"><span class="linenos"> 794</span></a> +</span><span id="Tokenizer-795"><a href="#Tokenizer-795"><span class="linenos"> 795</span></a> <span class="k">if</span> <span class="n">until</span> <span class="ow">and</span> <span class="n">until</span><span class="p">():</span> +</span><span id="Tokenizer-796"><a href="#Tokenizer-796"><span class="linenos"> 796</span></a> <span class="k">break</span> +</span><span id="Tokenizer-797"><a href="#Tokenizer-797"><span class="linenos"> 797</span></a> +</span><span id="Tokenizer-798"><a href="#Tokenizer-798"><span class="linenos"> 798</span></a> <span class="k">def</span> <span class="nf">_chars</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Tokenizer-799"><a href="#Tokenizer-799"><span class="linenos"> 799</span></a> <span class="k">if</span> <span class="n">size</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Tokenizer-800"><a href="#Tokenizer-800"><span class="linenos"> 800</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-801"><a href="#Tokenizer-801"><span class="linenos"> 801</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> +</span><span id="Tokenizer-802"><a href="#Tokenizer-802"><span class="linenos"> 802</span></a> <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">size</span> +</span><span id="Tokenizer-803"><a href="#Tokenizer-803"><span class="linenos"> 803</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="Tokenizer-804"><a href="#Tokenizer-804"><span class="linenos"> 804</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">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span> +</span><span id="Tokenizer-805"><a href="#Tokenizer-805"><span class="linenos"> 805</span></a> <span class="k">return</span> <span class="s2">""</span> +</span><span id="Tokenizer-806"><a href="#Tokenizer-806"><span class="linenos"> 806</span></a> +</span><span id="Tokenizer-807"><a href="#Tokenizer-807"><span class="linenos"> 807</span></a> <span class="k">def</span> <span class="nf">_line_break</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">char</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">])</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Tokenizer-808"><a href="#Tokenizer-808"><span class="linenos"> 808</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">char</span><span class="p">)</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-809"><a href="#Tokenizer-809"><span class="linenos"> 809</span></a> +</span><span id="Tokenizer-810"><a href="#Tokenizer-810"><span class="linenos"> 810</span></a> <span class="k">def</span> <span class="nf">_advance</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-811"><a href="#Tokenizer-811"><span class="linenos"> 811</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line_break</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">):</span> +</span><span id="Tokenizer-812"><a href="#Tokenizer-812"><span class="linenos"> 812</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_set_new_line</span><span class="p">()</span> +</span><span id="Tokenizer-813"><a href="#Tokenizer-813"><span class="linenos"> 813</span></a> +</span><span id="Tokenizer-814"><a href="#Tokenizer-814"><span class="linenos"> 814</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">+=</span> <span class="n">i</span> +</span><span id="Tokenizer-815"><a href="#Tokenizer-815"><span class="linenos"> 815</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+=</span> <span class="n">i</span> +</span><span id="Tokenizer-816"><a href="#Tokenizer-816"><span class="linenos"> 816</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">>=</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-817"><a href="#Tokenizer-817"><span class="linenos"> 817</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</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="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-818"><a href="#Tokenizer-818"><span class="linenos"> 818</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</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="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="k">else</span> <span class="s2">""</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-819"><a href="#Tokenizer-819"><span class="linenos"> 819</span></a> +</span><span id="Tokenizer-820"><a href="#Tokenizer-820"><span class="linenos"> 820</span></a> <span class="k">def</span> <span class="nf">_set_new_line</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-821"><a href="#Tokenizer-821"><span class="linenos"> 821</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Tokenizer-822"><a href="#Tokenizer-822"><span class="linenos"> 822</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-823"><a href="#Tokenizer-823"><span class="linenos"> 823</span></a> +</span><span id="Tokenizer-824"><a href="#Tokenizer-824"><span class="linenos"> 824</span></a> <span class="nd">@property</span> +</span><span id="Tokenizer-825"><a href="#Tokenizer-825"><span class="linenos"> 825</span></a> <span class="k">def</span> <span class="nf">_text</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Tokenizer-826"><a href="#Tokenizer-826"><span class="linenos"> 826</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="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span> +</span><span id="Tokenizer-827"><a href="#Tokenizer-827"><span class="linenos"> 827</span></a> +</span><span id="Tokenizer-828"><a href="#Tokenizer-828"><span class="linenos"> 828</span></a> <span class="k">def</span> <span class="nf">_add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">token_type</span><span class="p">:</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-829"><a href="#Tokenizer-829"><span class="linenos"> 829</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="Tokenizer-830"><a href="#Tokenizer-830"><span class="linenos"> 830</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> +</span><span id="Tokenizer-831"><a href="#Tokenizer-831"><span class="linenos"> 831</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="n">token_type</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-832"><a href="#Tokenizer-832"><span class="linenos"> 832</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="o">.</span><span class="n">append</span><span class="p">(</span> +</span><span id="Tokenizer-833"><a href="#Tokenizer-833"><span class="linenos"> 833</span></a> <span class="n">Token</span><span class="p">(</span> +</span><span id="Tokenizer-834"><a href="#Tokenizer-834"><span class="linenos"> 834</span></a> <span class="n">token_type</span><span class="p">,</span> +</span><span id="Tokenizer-835"><a href="#Tokenizer-835"><span class="linenos"> 835</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> <span class="k">if</span> <span class="n">text</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">text</span><span class="p">,</span> +</span><span id="Tokenizer-836"><a href="#Tokenizer-836"><span class="linenos"> 836</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span><span class="p">,</span> +</span><span id="Tokenizer-837"><a href="#Tokenizer-837"><span class="linenos"> 837</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span><span class="p">,</span> +</span><span id="Tokenizer-838"><a href="#Tokenizer-838"><span class="linenos"> 838</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">,</span> +</span><span id="Tokenizer-839"><a href="#Tokenizer-839"><span class="linenos"> 839</span></a> <span class="p">)</span> +</span><span id="Tokenizer-840"><a href="#Tokenizer-840"><span class="linenos"> 840</span></a> <span class="p">)</span> +</span><span id="Tokenizer-841"><a href="#Tokenizer-841"><span class="linenos"> 841</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-842"><a href="#Tokenizer-842"><span class="linenos"> 842</span></a> +</span><span id="Tokenizer-843"><a href="#Tokenizer-843"><span class="linenos"> 843</span></a> <span class="c1"># If we have either a semicolon or a begin token before the command's token, we'll parse</span> +</span><span id="Tokenizer-844"><a href="#Tokenizer-844"><span class="linenos"> 844</span></a> <span class="c1"># whatever follows the command's token as a string</span> +</span><span id="Tokenizer-845"><a href="#Tokenizer-845"><span class="linenos"> 845</span></a> <span class="k">if</span> <span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMANDS</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="Tokenizer-846"><a href="#Tokenizer-846"><span class="linenos"> 846</span></a> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">token_type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">COMMAND_PREFIX_TOKENS</span> +</span><span id="Tokenizer-847"><a href="#Tokenizer-847"><span class="linenos"> 847</span></a> <span class="p">):</span> +</span><span id="Tokenizer-848"><a href="#Tokenizer-848"><span class="linenos"> 848</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> +</span><span id="Tokenizer-849"><a href="#Tokenizer-849"><span class="linenos"> 849</span></a> <span class="n">tokens</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">)</span> +</span><span id="Tokenizer-850"><a href="#Tokenizer-850"><span class="linenos"> 850</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">";"</span><span class="p">)</span> +</span><span id="Tokenizer-851"><a href="#Tokenizer-851"><span class="linenos"> 851</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[:</span><span class="n">tokens</span><span class="p">]</span> +</span><span id="Tokenizer-852"><a href="#Tokenizer-852"><span class="linenos"> 852</span></a> <span class="n">text</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">start</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> +</span><span id="Tokenizer-853"><a href="#Tokenizer-853"><span class="linenos"> 853</span></a> <span class="k">if</span> <span class="n">text</span><span class="p">:</span> +</span><span id="Tokenizer-854"><a href="#Tokenizer-854"><span class="linenos"> 854</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="Tokenizer-855"><a href="#Tokenizer-855"><span class="linenos"> 855</span></a> +</span><span id="Tokenizer-856"><a href="#Tokenizer-856"><span class="linenos"> 856</span></a> <span class="k">def</span> <span class="nf">_scan_keywords</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-857"><a href="#Tokenizer-857"><span class="linenos"> 857</span></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-858"><a href="#Tokenizer-858"><span class="linenos"> 858</span></a> <span class="n">word</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-859"><a href="#Tokenizer-859"><span class="linenos"> 859</span></a> <span class="n">chars</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="Tokenizer-860"><a href="#Tokenizer-860"><span class="linenos"> 860</span></a> <span class="n">char</span> <span class="o">=</span> <span class="n">chars</span> +</span><span id="Tokenizer-861"><a href="#Tokenizer-861"><span class="linenos"> 861</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-862"><a href="#Tokenizer-862"><span class="linenos"> 862</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-863"><a href="#Tokenizer-863"><span class="linenos"> 863</span></a> <span class="n">trie</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORD_TRIE</span> </span><span id="Tokenizer-864"><a href="#Tokenizer-864"><span class="linenos"> 864</span></a> -</span><span id="Tokenizer-865"><a href="#Tokenizer-865"><span class="linenos"> 865</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> -</span><span id="Tokenizer-866"><a href="#Tokenizer-866"><span class="linenos"> 866</span></a> <span class="k">break</span> -</span><span id="Tokenizer-867"><a href="#Tokenizer-867"><span class="linenos"> 867</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> -</span><span id="Tokenizer-868"><a href="#Tokenizer-868"><span class="linenos"> 868</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">chars</span> -</span><span id="Tokenizer-869"><a href="#Tokenizer-869"><span class="linenos"> 869</span></a> <span class="n">size</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-870"><a href="#Tokenizer-870"><span class="linenos"> 870</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">+</span> <span class="n">size</span> -</span><span id="Tokenizer-871"><a href="#Tokenizer-871"><span class="linenos"> 871</span></a> -</span><span id="Tokenizer-872"><a href="#Tokenizer-872"><span class="linenos"> 872</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="Tokenizer-873"><a href="#Tokenizer-873"><span class="linenos"> 873</span></a> <span class="n">char</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">end</span><span class="p">]</span> -</span><span id="Tokenizer-874"><a href="#Tokenizer-874"><span class="linenos"> 874</span></a> <span class="n">is_space</span> <span class="o">=</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span> -</span><span id="Tokenizer-875"><a href="#Tokenizer-875"><span class="linenos"> 875</span></a> -</span><span id="Tokenizer-876"><a href="#Tokenizer-876"><span class="linenos"> 876</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_space</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">prev_space</span><span class="p">:</span> -</span><span id="Tokenizer-877"><a href="#Tokenizer-877"><span class="linenos"> 877</span></a> <span class="k">if</span> <span class="n">is_space</span><span class="p">:</span> -</span><span id="Tokenizer-878"><a href="#Tokenizer-878"><span class="linenos"> 878</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">" "</span> -</span><span id="Tokenizer-879"><a href="#Tokenizer-879"><span class="linenos"> 879</span></a> <span class="n">chars</span> <span class="o">+=</span> <span class="n">char</span> -</span><span id="Tokenizer-880"><a href="#Tokenizer-880"><span class="linenos"> 880</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="n">is_space</span> -</span><span id="Tokenizer-881"><a href="#Tokenizer-881"><span class="linenos"> 881</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-882"><a href="#Tokenizer-882"><span class="linenos"> 882</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-883"><a href="#Tokenizer-883"><span class="linenos"> 883</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Tokenizer-884"><a href="#Tokenizer-884"><span class="linenos"> 884</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-885"><a href="#Tokenizer-885"><span class="linenos"> 885</span></a> <span class="n">chars</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-886"><a href="#Tokenizer-886"><span class="linenos"> 886</span></a> -</span><span id="Tokenizer-887"><a href="#Tokenizer-887"><span class="linenos"> 887</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">word</span><span class="p">:</span> -</span><span id="Tokenizer-888"><a href="#Tokenizer-888"><span class="linenos"> 888</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="Tokenizer-889"><a href="#Tokenizer-889"><span class="linenos"> 889</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-890"><a href="#Tokenizer-890"><span class="linenos"> 890</span></a> <span class="k">return</span> -</span><span id="Tokenizer-891"><a href="#Tokenizer-891"><span class="linenos"> 891</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> -</span><span id="Tokenizer-892"><a href="#Tokenizer-892"><span class="linenos"> 892</span></a> <span class="k">return</span> -</span><span id="Tokenizer-893"><a href="#Tokenizer-893"><span class="linenos"> 893</span></a> -</span><span id="Tokenizer-894"><a href="#Tokenizer-894"><span class="linenos"> 894</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> -</span><span id="Tokenizer-895"><a href="#Tokenizer-895"><span class="linenos"> 895</span></a> <span class="k">return</span> -</span><span id="Tokenizer-896"><a href="#Tokenizer-896"><span class="linenos"> 896</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_formatted_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> -</span><span id="Tokenizer-897"><a href="#Tokenizer-897"><span class="linenos"> 897</span></a> <span class="k">return</span> -</span><span id="Tokenizer-898"><a href="#Tokenizer-898"><span class="linenos"> 898</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_comment</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> -</span><span id="Tokenizer-899"><a href="#Tokenizer-899"><span class="linenos"> 899</span></a> <span class="k">return</span> -</span><span id="Tokenizer-900"><a href="#Tokenizer-900"><span class="linenos"> 900</span></a> -</span><span id="Tokenizer-901"><a href="#Tokenizer-901"><span class="linenos"> 901</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Tokenizer-902"><a href="#Tokenizer-902"><span class="linenos"> 902</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">[</span><span class="n">word</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> -</span><span id="Tokenizer-903"><a href="#Tokenizer-903"><span class="linenos"> 903</span></a> -</span><span id="Tokenizer-904"><a href="#Tokenizer-904"><span class="linenos"> 904</span></a> <span class="k">def</span> <span class="nf">_scan_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Tokenizer-905"><a href="#Tokenizer-905"><span class="linenos"> 905</span></a> <span class="k">if</span> <span class="n">comment_start</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-906"><a href="#Tokenizer-906"><span class="linenos"> 906</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="Tokenizer-907"><a href="#Tokenizer-907"><span class="linenos"> 907</span></a> -</span><span id="Tokenizer-908"><a href="#Tokenizer-908"><span class="linenos"> 908</span></a> <span class="n">comment_start_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> -</span><span id="Tokenizer-909"><a href="#Tokenizer-909"><span class="linenos"> 909</span></a> <span class="n">comment_start_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_start</span><span class="p">)</span> -</span><span id="Tokenizer-910"><a href="#Tokenizer-910"><span class="linenos"> 910</span></a> <span class="n">comment_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">[</span><span class="n">comment_start</span><span class="p">]</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-911"><a href="#Tokenizer-911"><span class="linenos"> 911</span></a> -</span><span id="Tokenizer-912"><a href="#Tokenizer-912"><span class="linenos"> 912</span></a> <span class="k">if</span> <span class="n">comment_end</span><span class="p">:</span> -</span><span id="Tokenizer-913"><a href="#Tokenizer-913"><span class="linenos"> 913</span></a> <span class="n">comment_end_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_end</span><span class="p">)</span> -</span><span id="Tokenizer-914"><a href="#Tokenizer-914"><span class="linenos"> 914</span></a> -</span><span id="Tokenizer-915"><a href="#Tokenizer-915"><span class="linenos"> 915</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">comment_end_size</span><span class="p">)</span> <span class="o">!=</span> <span class="n">comment_end</span><span class="p">:</span> -</span><span id="Tokenizer-916"><a href="#Tokenizer-916"><span class="linenos"> 916</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-865"><a href="#Tokenizer-865"><span class="linenos"> 865</span></a> <span class="k">while</span> <span class="n">chars</span><span class="p">:</span> +</span><span id="Tokenizer-866"><a href="#Tokenizer-866"><span class="linenos"> 866</span></a> <span class="k">if</span> <span class="n">skip</span><span class="p">:</span> +</span><span id="Tokenizer-867"><a href="#Tokenizer-867"><span class="linenos"> 867</span></a> <span class="n">result</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Tokenizer-868"><a href="#Tokenizer-868"><span class="linenos"> 868</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-869"><a href="#Tokenizer-869"><span class="linenos"> 869</span></a> <span class="n">result</span><span class="p">,</span> <span class="n">trie</span> <span class="o">=</span> <span class="n">in_trie</span><span class="p">(</span><span class="n">trie</span><span class="p">,</span> <span class="n">char</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-870"><a href="#Tokenizer-870"><span class="linenos"> 870</span></a> +</span><span id="Tokenizer-871"><a href="#Tokenizer-871"><span class="linenos"> 871</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> +</span><span id="Tokenizer-872"><a href="#Tokenizer-872"><span class="linenos"> 872</span></a> <span class="k">break</span> +</span><span id="Tokenizer-873"><a href="#Tokenizer-873"><span class="linenos"> 873</span></a> <span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span> +</span><span id="Tokenizer-874"><a href="#Tokenizer-874"><span class="linenos"> 874</span></a> <span class="n">word</span> <span class="o">=</span> <span class="n">chars</span> +</span><span id="Tokenizer-875"><a href="#Tokenizer-875"><span class="linenos"> 875</span></a> <span class="n">size</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-876"><a href="#Tokenizer-876"><span class="linenos"> 876</span></a> <span class="n">end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">+</span> <span class="n">size</span> +</span><span id="Tokenizer-877"><a href="#Tokenizer-877"><span class="linenos"> 877</span></a> +</span><span id="Tokenizer-878"><a href="#Tokenizer-878"><span class="linenos"> 878</span></a> <span class="k">if</span> <span class="n">end</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="Tokenizer-879"><a href="#Tokenizer-879"><span class="linenos"> 879</span></a> <span class="n">char</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">end</span><span class="p">]</span> +</span><span id="Tokenizer-880"><a href="#Tokenizer-880"><span class="linenos"> 880</span></a> <span class="n">is_space</span> <span class="o">=</span> <span class="n">char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span> +</span><span id="Tokenizer-881"><a href="#Tokenizer-881"><span class="linenos"> 881</span></a> +</span><span id="Tokenizer-882"><a href="#Tokenizer-882"><span class="linenos"> 882</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">is_space</span> <span class="ow">or</span> <span class="ow">not</span> <span class="n">prev_space</span><span class="p">:</span> +</span><span id="Tokenizer-883"><a href="#Tokenizer-883"><span class="linenos"> 883</span></a> <span class="k">if</span> <span class="n">is_space</span><span class="p">:</span> +</span><span id="Tokenizer-884"><a href="#Tokenizer-884"><span class="linenos"> 884</span></a> <span class="n">char</span> <span class="o">=</span> <span class="s2">" "</span> +</span><span id="Tokenizer-885"><a href="#Tokenizer-885"><span class="linenos"> 885</span></a> <span class="n">chars</span> <span class="o">+=</span> <span class="n">char</span> +</span><span id="Tokenizer-886"><a href="#Tokenizer-886"><span class="linenos"> 886</span></a> <span class="n">prev_space</span> <span class="o">=</span> <span class="n">is_space</span> +</span><span id="Tokenizer-887"><a href="#Tokenizer-887"><span class="linenos"> 887</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-888"><a href="#Tokenizer-888"><span class="linenos"> 888</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-889"><a href="#Tokenizer-889"><span class="linenos"> 889</span></a> <span class="n">skip</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Tokenizer-890"><a href="#Tokenizer-890"><span class="linenos"> 890</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-891"><a href="#Tokenizer-891"><span class="linenos"> 891</span></a> <span class="n">chars</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-892"><a href="#Tokenizer-892"><span class="linenos"> 892</span></a> +</span><span id="Tokenizer-893"><a href="#Tokenizer-893"><span class="linenos"> 893</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">word</span><span class="p">:</span> +</span><span id="Tokenizer-894"><a href="#Tokenizer-894"><span class="linenos"> 894</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="Tokenizer-895"><a href="#Tokenizer-895"><span class="linenos"> 895</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span><span class="p">])</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-896"><a href="#Tokenizer-896"><span class="linenos"> 896</span></a> <span class="k">return</span> +</span><span id="Tokenizer-897"><a href="#Tokenizer-897"><span class="linenos"> 897</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_var</span><span class="p">()</span> +</span><span id="Tokenizer-898"><a href="#Tokenizer-898"><span class="linenos"> 898</span></a> <span class="k">return</span> +</span><span id="Tokenizer-899"><a href="#Tokenizer-899"><span class="linenos"> 899</span></a> +</span><span id="Tokenizer-900"><a href="#Tokenizer-900"><span class="linenos"> 900</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="Tokenizer-901"><a href="#Tokenizer-901"><span class="linenos"> 901</span></a> <span class="k">return</span> +</span><span id="Tokenizer-902"><a href="#Tokenizer-902"><span class="linenos"> 902</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_formatted_string</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="Tokenizer-903"><a href="#Tokenizer-903"><span class="linenos"> 903</span></a> <span class="k">return</span> +</span><span id="Tokenizer-904"><a href="#Tokenizer-904"><span class="linenos"> 904</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_comment</span><span class="p">(</span><span class="n">word</span><span class="p">):</span> +</span><span id="Tokenizer-905"><a href="#Tokenizer-905"><span class="linenos"> 905</span></a> <span class="k">return</span> +</span><span id="Tokenizer-906"><a href="#Tokenizer-906"><span class="linenos"> 906</span></a> +</span><span id="Tokenizer-907"><a href="#Tokenizer-907"><span class="linenos"> 907</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Tokenizer-908"><a href="#Tokenizer-908"><span class="linenos"> 908</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">[</span><span class="n">word</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span> +</span><span id="Tokenizer-909"><a href="#Tokenizer-909"><span class="linenos"> 909</span></a> +</span><span id="Tokenizer-910"><a href="#Tokenizer-910"><span class="linenos"> 910</span></a> <span class="k">def</span> <span class="nf">_scan_comment</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">comment_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Tokenizer-911"><a href="#Tokenizer-911"><span class="linenos"> 911</span></a> <span class="k">if</span> <span class="n">comment_start</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-912"><a href="#Tokenizer-912"><span class="linenos"> 912</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Tokenizer-913"><a href="#Tokenizer-913"><span class="linenos"> 913</span></a> +</span><span id="Tokenizer-914"><a href="#Tokenizer-914"><span class="linenos"> 914</span></a> <span class="n">comment_start_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="Tokenizer-915"><a href="#Tokenizer-915"><span class="linenos"> 915</span></a> <span class="n">comment_start_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_start</span><span class="p">)</span> +</span><span id="Tokenizer-916"><a href="#Tokenizer-916"><span class="linenos"> 916</span></a> <span class="n">comment_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_COMMENTS</span><span class="p">[</span><span class="n">comment_start</span><span class="p">]</span> <span class="c1"># type: ignore</span> </span><span id="Tokenizer-917"><a href="#Tokenizer-917"><span class="linenos"> 917</span></a> -</span><span id="Tokenizer-918"><a href="#Tokenizer-918"><span class="linenos"> 918</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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">_text</span><span class="p">[</span><span class="n">comment_start_size</span> <span class="p">:</span> <span class="o">-</span><span class="n">comment_end_size</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-919"><a href="#Tokenizer-919"><span class="linenos"> 919</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_end_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Tokenizer-920"><a href="#Tokenizer-920"><span class="linenos"> 920</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-921"><a href="#Tokenizer-921"><span class="linenos"> 921</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">WHITE_SPACE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">)</span> <span class="o">!=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BREAK</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-918"><a href="#Tokenizer-918"><span class="linenos"> 918</span></a> <span class="k">if</span> <span class="n">comment_end</span><span class="p">:</span> +</span><span id="Tokenizer-919"><a href="#Tokenizer-919"><span class="linenos"> 919</span></a> <span class="n">comment_end_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">comment_end</span><span class="p">)</span> +</span><span id="Tokenizer-920"><a href="#Tokenizer-920"><span class="linenos"> 920</span></a> +</span><span id="Tokenizer-921"><a href="#Tokenizer-921"><span class="linenos"> 921</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">comment_end_size</span><span class="p">)</span> <span class="o">!=</span> <span class="n">comment_end</span><span class="p">:</span> </span><span id="Tokenizer-922"><a href="#Tokenizer-922"><span class="linenos"> 922</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-923"><a href="#Tokenizer-923"><span class="linenos"> 923</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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">_text</span><span class="p">[</span><span class="n">comment_start_size</span><span class="p">:])</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-924"><a href="#Tokenizer-924"><span class="linenos"> 924</span></a> -</span><span id="Tokenizer-925"><a href="#Tokenizer-925"><span class="linenos"> 925</span></a> <span class="c1"># Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.</span> -</span><span id="Tokenizer-926"><a href="#Tokenizer-926"><span class="linenos"> 926</span></a> <span class="c1"># Multiple consecutive comments are preserved by appending them to the current comments list.</span> -</span><span id="Tokenizer-927"><a href="#Tokenizer-927"><span class="linenos"> 927</span></a> <span class="k">if</span> <span class="n">comment_start_line</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span><span class="p">:</span> -</span><span id="Tokenizer-928"><a href="#Tokenizer-928"><span class="linenos"> 928</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> -</span><span id="Tokenizer-929"><a href="#Tokenizer-929"><span class="linenos"> 929</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-923"><a href="#Tokenizer-923"><span class="linenos"> 923</span></a> +</span><span id="Tokenizer-924"><a href="#Tokenizer-924"><span class="linenos"> 924</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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">_text</span><span class="p">[</span><span class="n">comment_start_size</span> <span class="p">:</span> <span class="o">-</span><span class="n">comment_end_size</span> <span class="o">+</span> <span class="mi">1</span><span class="p">])</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-925"><a href="#Tokenizer-925"><span class="linenos"> 925</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">comment_end_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Tokenizer-926"><a href="#Tokenizer-926"><span class="linenos"> 926</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-927"><a href="#Tokenizer-927"><span class="linenos"> 927</span></a> <span class="k">while</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line_break</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">):</span> +</span><span id="Tokenizer-928"><a href="#Tokenizer-928"><span class="linenos"> 928</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-929"><a href="#Tokenizer-929"><span class="linenos"> 929</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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">_text</span><span class="p">[</span><span class="n">comment_start_size</span><span class="p">:])</span> <span class="c1"># type: ignore</span> </span><span id="Tokenizer-930"><a href="#Tokenizer-930"><span class="linenos"> 930</span></a> -</span><span id="Tokenizer-931"><a href="#Tokenizer-931"><span class="linenos"> 931</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Tokenizer-932"><a href="#Tokenizer-932"><span class="linenos"> 932</span></a> -</span><span id="Tokenizer-933"><a href="#Tokenizer-933"><span class="linenos"> 933</span></a> <span class="k">def</span> <span class="nf">_scan_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-934"><a href="#Tokenizer-934"><span class="linenos"> 934</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> -</span><span id="Tokenizer-935"><a href="#Tokenizer-935"><span class="linenos"> 935</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-936"><a href="#Tokenizer-936"><span class="linenos"> 936</span></a> <span class="k">if</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"B"</span><span class="p">:</span> -</span><span id="Tokenizer-937"><a href="#Tokenizer-937"><span class="linenos"> 937</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_bits</span><span class="p">()</span> -</span><span id="Tokenizer-938"><a href="#Tokenizer-938"><span class="linenos"> 938</span></a> <span class="k">elif</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"X"</span><span class="p">:</span> -</span><span id="Tokenizer-939"><a href="#Tokenizer-939"><span class="linenos"> 939</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_hex</span><span class="p">()</span> -</span><span id="Tokenizer-940"><a href="#Tokenizer-940"><span class="linenos"> 940</span></a> -</span><span id="Tokenizer-941"><a href="#Tokenizer-941"><span class="linenos"> 941</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">False</span> -</span><span id="Tokenizer-942"><a href="#Tokenizer-942"><span class="linenos"> 942</span></a> <span class="n">scientific</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer-943"><a href="#Tokenizer-943"><span class="linenos"> 943</span></a> -</span><span id="Tokenizer-944"><a href="#Tokenizer-944"><span class="linenos"> 944</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Tokenizer-945"><a href="#Tokenizer-945"><span class="linenos"> 945</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-946"><a href="#Tokenizer-946"><span class="linenos"> 946</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-947"><a href="#Tokenizer-947"><span class="linenos"> 947</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"."</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">decimal</span><span class="p">:</span> -</span><span id="Tokenizer-948"><a href="#Tokenizer-948"><span class="linenos"> 948</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">True</span> -</span><span id="Tokenizer-949"><a href="#Tokenizer-949"><span class="linenos"> 949</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-950"><a href="#Tokenizer-950"><span class="linenos"> 950</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">scientific</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Tokenizer-951"><a href="#Tokenizer-951"><span class="linenos"> 951</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-952"><a href="#Tokenizer-952"><span class="linenos"> 952</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-953"><a href="#Tokenizer-953"><span class="linenos"> 953</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"E"</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">scientific</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-954"><a href="#Tokenizer-954"><span class="linenos"> 954</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> -</span><span id="Tokenizer-955"><a href="#Tokenizer-955"><span class="linenos"> 955</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-956"><a href="#Tokenizer-956"><span class="linenos"> 956</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">():</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-957"><a href="#Tokenizer-957"><span class="linenos"> 957</span></a> <span class="n">number_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="Tokenizer-958"><a href="#Tokenizer-958"><span class="linenos"> 958</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer-959"><a href="#Tokenizer-959"><span class="linenos"> 959</span></a> -</span><span id="Tokenizer-960"><a href="#Tokenizer-960"><span class="linenos"> 960</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-961"><a href="#Tokenizer-961"><span class="linenos"> 961</span></a> <span class="n">literal</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">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-962"><a href="#Tokenizer-962"><span class="linenos"> 962</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-963"><a href="#Tokenizer-963"><span class="linenos"> 963</span></a> -</span><span id="Tokenizer-964"><a href="#Tokenizer-964"><span class="linenos"> 964</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">literal</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-965"><a href="#Tokenizer-965"><span class="linenos"> 965</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-931"><a href="#Tokenizer-931"><span class="linenos"> 931</span></a> <span class="c1"># Leading comment is attached to the succeeding token, whilst trailing comment to the preceding.</span> +</span><span id="Tokenizer-932"><a href="#Tokenizer-932"><span class="linenos"> 932</span></a> <span class="c1"># Multiple consecutive comments are preserved by appending them to the current comments list.</span> +</span><span id="Tokenizer-933"><a href="#Tokenizer-933"><span class="linenos"> 933</span></a> <span class="k">if</span> <span class="n">comment_start_line</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span><span class="p">:</span> +</span><span id="Tokenizer-934"><a href="#Tokenizer-934"><span class="linenos"> 934</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">comments</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_comments</span><span class="p">)</span> +</span><span id="Tokenizer-935"><a href="#Tokenizer-935"><span class="linenos"> 935</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer-936"><a href="#Tokenizer-936"><span class="linenos"> 936</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> +</span><span id="Tokenizer-937"><a href="#Tokenizer-937"><span class="linenos"> 937</span></a> +</span><span id="Tokenizer-938"><a href="#Tokenizer-938"><span class="linenos"> 938</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Tokenizer-939"><a href="#Tokenizer-939"><span class="linenos"> 939</span></a> +</span><span id="Tokenizer-940"><a href="#Tokenizer-940"><span class="linenos"> 940</span></a> <span class="k">def</span> <span class="nf">_scan_number</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-941"><a href="#Tokenizer-941"><span class="linenos"> 941</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="s2">"0"</span><span class="p">:</span> +</span><span id="Tokenizer-942"><a href="#Tokenizer-942"><span class="linenos"> 942</span></a> <span class="n">peek</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-943"><a href="#Tokenizer-943"><span class="linenos"> 943</span></a> <span class="k">if</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"B"</span><span class="p">:</span> +</span><span id="Tokenizer-944"><a href="#Tokenizer-944"><span class="linenos"> 944</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_bits</span><span class="p">()</span> +</span><span id="Tokenizer-945"><a href="#Tokenizer-945"><span class="linenos"> 945</span></a> <span class="k">elif</span> <span class="n">peek</span> <span class="o">==</span> <span class="s2">"X"</span><span class="p">:</span> +</span><span id="Tokenizer-946"><a href="#Tokenizer-946"><span class="linenos"> 946</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_scan_hex</span><span class="p">()</span> +</span><span id="Tokenizer-947"><a href="#Tokenizer-947"><span class="linenos"> 947</span></a> +</span><span id="Tokenizer-948"><a href="#Tokenizer-948"><span class="linenos"> 948</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">False</span> +</span><span id="Tokenizer-949"><a href="#Tokenizer-949"><span class="linenos"> 949</span></a> <span class="n">scientific</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer-950"><a href="#Tokenizer-950"><span class="linenos"> 950</span></a> +</span><span id="Tokenizer-951"><a href="#Tokenizer-951"><span class="linenos"> 951</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Tokenizer-952"><a href="#Tokenizer-952"><span class="linenos"> 952</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isdigit</span><span class="p">():</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-953"><a href="#Tokenizer-953"><span class="linenos"> 953</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-954"><a href="#Tokenizer-954"><span class="linenos"> 954</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="s2">"."</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">decimal</span><span class="p">:</span> +</span><span id="Tokenizer-955"><a href="#Tokenizer-955"><span class="linenos"> 955</span></a> <span class="n">decimal</span> <span class="o">=</span> <span class="kc">True</span> +</span><span id="Tokenizer-956"><a href="#Tokenizer-956"><span class="linenos"> 956</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-957"><a href="#Tokenizer-957"><span class="linenos"> 957</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"-"</span><span class="p">,</span> <span class="s2">"+"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">scientific</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Tokenizer-958"><a href="#Tokenizer-958"><span class="linenos"> 958</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-959"><a href="#Tokenizer-959"><span class="linenos"> 959</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-960"><a href="#Tokenizer-960"><span class="linenos"> 960</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"E"</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">scientific</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-961"><a href="#Tokenizer-961"><span class="linenos"> 961</span></a> <span class="n">scientific</span> <span class="o">+=</span> <span class="mi">1</span> +</span><span id="Tokenizer-962"><a href="#Tokenizer-962"><span class="linenos"> 962</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-963"><a href="#Tokenizer-963"><span class="linenos"> 963</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">isidentifier</span><span class="p">():</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-964"><a href="#Tokenizer-964"><span class="linenos"> 964</span></a> <span class="n">number_text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="Tokenizer-965"><a href="#Tokenizer-965"><span class="linenos"> 965</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="Tokenizer-966"><a href="#Tokenizer-966"><span class="linenos"> 966</span></a> -</span><span id="Tokenizer-967"><a href="#Tokenizer-967"><span class="linenos"> 967</span></a> <span class="k">if</span> <span class="n">token_type</span><span class="p">:</span> -</span><span id="Tokenizer-968"><a href="#Tokenizer-968"><span class="linenos"> 968</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> -</span><span id="Tokenizer-969"><a href="#Tokenizer-969"><span class="linenos"> 969</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> <span class="s2">"::"</span><span class="p">)</span> -</span><span id="Tokenizer-970"><a href="#Tokenizer-970"><span class="linenos"> 970</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">literal</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-971"><a href="#Tokenizer-971"><span class="linenos"> 971</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">IDENTIFIER_CAN_START_WITH_DIGIT</span><span class="p">:</span> -</span><span id="Tokenizer-972"><a href="#Tokenizer-972"><span class="linenos"> 972</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="Tokenizer-967"><a href="#Tokenizer-967"><span class="linenos"> 967</span></a> <span class="k">while</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-968"><a href="#Tokenizer-968"><span class="linenos"> 968</span></a> <span class="n">literal</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">_peek</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-969"><a href="#Tokenizer-969"><span class="linenos"> 969</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-970"><a href="#Tokenizer-970"><span class="linenos"> 970</span></a> +</span><span id="Tokenizer-971"><a href="#Tokenizer-971"><span class="linenos"> 971</span></a> <span class="n">literal</span> <span class="o">=</span> <span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">literal</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-972"><a href="#Tokenizer-972"><span class="linenos"> 972</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">NUMERIC_LITERALS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> <span class="c1"># type: ignore</span> </span><span id="Tokenizer-973"><a href="#Tokenizer-973"><span class="linenos"> 973</span></a> -</span><span id="Tokenizer-974"><a href="#Tokenizer-974"><span class="linenos"> 974</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> -</span><span id="Tokenizer-975"><a href="#Tokenizer-975"><span class="linenos"> 975</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> -</span><span id="Tokenizer-976"><a href="#Tokenizer-976"><span class="linenos"> 976</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-977"><a href="#Tokenizer-977"><span class="linenos"> 977</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> -</span><span id="Tokenizer-978"><a href="#Tokenizer-978"><span class="linenos"> 978</span></a> -</span><span id="Tokenizer-979"><a href="#Tokenizer-979"><span class="linenos"> 979</span></a> <span class="k">def</span> <span class="nf">_scan_bits</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-980"><a href="#Tokenizer-980"><span class="linenos"> 980</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-981"><a href="#Tokenizer-981"><span class="linenos"> 981</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> -</span><span id="Tokenizer-982"><a href="#Tokenizer-982"><span class="linenos"> 982</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer-983"><a href="#Tokenizer-983"><span class="linenos"> 983</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Tokenizer-984"><a href="#Tokenizer-984"><span class="linenos"> 984</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="Tokenizer-985"><a href="#Tokenizer-985"><span class="linenos"> 985</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> -</span><span id="Tokenizer-986"><a href="#Tokenizer-986"><span class="linenos"> 986</span></a> -</span><span id="Tokenizer-987"><a href="#Tokenizer-987"><span class="linenos"> 987</span></a> <span class="k">def</span> <span class="nf">_scan_hex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-988"><a href="#Tokenizer-988"><span class="linenos"> 988</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-989"><a href="#Tokenizer-989"><span class="linenos"> 989</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> -</span><span id="Tokenizer-990"><a href="#Tokenizer-990"><span class="linenos"> 990</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer-991"><a href="#Tokenizer-991"><span class="linenos"> 991</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">16</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Tokenizer-992"><a href="#Tokenizer-992"><span class="linenos"> 992</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> -</span><span id="Tokenizer-993"><a href="#Tokenizer-993"><span class="linenos"> 993</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> -</span><span id="Tokenizer-994"><a href="#Tokenizer-994"><span class="linenos"> 994</span></a> -</span><span id="Tokenizer-995"><a href="#Tokenizer-995"><span class="linenos"> 995</span></a> <span class="k">def</span> <span class="nf">_extract_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Tokenizer-996"><a href="#Tokenizer-996"><span class="linenos"> 996</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Tokenizer-997"><a href="#Tokenizer-997"><span class="linenos"> 997</span></a> <span class="n">char</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-998"><a href="#Tokenizer-998"><span class="linenos"> 998</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="n">char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="Tokenizer-999"><a href="#Tokenizer-999"><span class="linenos"> 999</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1000"><a href="#Tokenizer-1000"><span class="linenos">1000</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1001"><a href="#Tokenizer-1001"><span class="linenos">1001</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1002"><a href="#Tokenizer-1002"><span class="linenos">1002</span></a> -</span><span id="Tokenizer-1003"><a href="#Tokenizer-1003"><span class="linenos">1003</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> -</span><span id="Tokenizer-1004"><a href="#Tokenizer-1004"><span class="linenos">1004</span></a> -</span><span id="Tokenizer-1005"><a href="#Tokenizer-1005"><span class="linenos">1005</span></a> <span class="k">def</span> <span class="nf">_scan_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">quote</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Tokenizer-1006"><a href="#Tokenizer-1006"><span class="linenos">1006</span></a> <span class="n">quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">quote</span><span class="p">)</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1007"><a href="#Tokenizer-1007"><span class="linenos">1007</span></a> <span class="k">if</span> <span class="n">quote_end</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1008"><a href="#Tokenizer-1008"><span class="linenos">1008</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Tokenizer-974"><a href="#Tokenizer-974"><span class="linenos"> 974</span></a> <span class="k">if</span> <span class="n">token_type</span><span class="p">:</span> +</span><span id="Tokenizer-975"><a href="#Tokenizer-975"><span class="linenos"> 975</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> +</span><span id="Tokenizer-976"><a href="#Tokenizer-976"><span class="linenos"> 976</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">DCOLON</span><span class="p">,</span> <span class="s2">"::"</span><span class="p">)</span> +</span><span id="Tokenizer-977"><a href="#Tokenizer-977"><span class="linenos"> 977</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">literal</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-978"><a href="#Tokenizer-978"><span class="linenos"> 978</span></a> <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">IDENTIFIER_CAN_START_WITH_DIGIT</span><span class="p">:</span> +</span><span id="Tokenizer-979"><a href="#Tokenizer-979"><span class="linenos"> 979</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="Tokenizer-980"><a href="#Tokenizer-980"><span class="linenos"> 980</span></a> +</span><span id="Tokenizer-981"><a href="#Tokenizer-981"><span class="linenos"> 981</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">,</span> <span class="n">number_text</span><span class="p">)</span> +</span><span id="Tokenizer-982"><a href="#Tokenizer-982"><span class="linenos"> 982</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="o">-</span><span class="nb">len</span><span class="p">(</span><span class="n">literal</span><span class="p">))</span> +</span><span id="Tokenizer-983"><a href="#Tokenizer-983"><span class="linenos"> 983</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-984"><a href="#Tokenizer-984"><span class="linenos"> 984</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NUMBER</span><span class="p">)</span> +</span><span id="Tokenizer-985"><a href="#Tokenizer-985"><span class="linenos"> 985</span></a> +</span><span id="Tokenizer-986"><a href="#Tokenizer-986"><span class="linenos"> 986</span></a> <span class="k">def</span> <span class="nf">_scan_bits</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-987"><a href="#Tokenizer-987"><span class="linenos"> 987</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-988"><a href="#Tokenizer-988"><span class="linenos"> 988</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> +</span><span id="Tokenizer-989"><a href="#Tokenizer-989"><span class="linenos"> 989</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer-990"><a href="#Tokenizer-990"><span class="linenos"> 990</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Tokenizer-991"><a href="#Tokenizer-991"><span class="linenos"> 991</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="Tokenizer-992"><a href="#Tokenizer-992"><span class="linenos"> 992</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> +</span><span id="Tokenizer-993"><a href="#Tokenizer-993"><span class="linenos"> 993</span></a> +</span><span id="Tokenizer-994"><a href="#Tokenizer-994"><span class="linenos"> 994</span></a> <span class="k">def</span> <span class="nf">_scan_hex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-995"><a href="#Tokenizer-995"><span class="linenos"> 995</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-996"><a href="#Tokenizer-996"><span class="linenos"> 996</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_value</span><span class="p">()</span> +</span><span id="Tokenizer-997"><a href="#Tokenizer-997"><span class="linenos"> 997</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer-998"><a href="#Tokenizer-998"><span class="linenos"> 998</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="p">,</span><span class="w"> </span><span class="mi">16</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Tokenizer-999"><a href="#Tokenizer-999"><span class="linenos"> 999</span></a> <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span> +</span><span id="Tokenizer-1000"><a href="#Tokenizer-1000"><span class="linenos">1000</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">)</span> +</span><span id="Tokenizer-1001"><a href="#Tokenizer-1001"><span class="linenos">1001</span></a> +</span><span id="Tokenizer-1002"><a href="#Tokenizer-1002"><span class="linenos">1002</span></a> <span class="k">def</span> <span class="nf">_extract_value</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Tokenizer-1003"><a href="#Tokenizer-1003"><span class="linenos">1003</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Tokenizer-1004"><a href="#Tokenizer-1004"><span class="linenos">1004</span></a> <span class="n">char</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1005"><a href="#Tokenizer-1005"><span class="linenos">1005</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="n">char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="Tokenizer-1006"><a href="#Tokenizer-1006"><span class="linenos">1006</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1007"><a href="#Tokenizer-1007"><span class="linenos">1007</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1008"><a href="#Tokenizer-1008"><span class="linenos">1008</span></a> <span class="k">break</span> </span><span id="Tokenizer-1009"><a href="#Tokenizer-1009"><span class="linenos">1009</span></a> -</span><span id="Tokenizer-1010"><a href="#Tokenizer-1010"><span class="linenos">1010</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">quote</span><span class="p">))</span> -</span><span id="Tokenizer-1011"><a href="#Tokenizer-1011"><span class="linenos">1011</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">quote_end</span><span class="p">)</span> -</span><span id="Tokenizer-1012"><a href="#Tokenizer-1012"><span class="linenos">1012</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span> <span class="k">else</span> <span class="n">text</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1013"><a href="#Tokenizer-1013"><span class="linenos">1013</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL</span> <span class="k">if</span> <span class="n">quote</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"N"</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="Tokenizer-1014"><a href="#Tokenizer-1014"><span class="linenos">1014</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Tokenizer-1015"><a href="#Tokenizer-1015"><span class="linenos">1015</span></a> -</span><span id="Tokenizer-1016"><a href="#Tokenizer-1016"><span class="linenos">1016</span></a> <span class="c1"># X'1234, b'0110', E'\\\\\' etc.</span> -</span><span id="Tokenizer-1017"><a href="#Tokenizer-1017"><span class="linenos">1017</span></a> <span class="k">def</span> <span class="nf">_scan_formatted_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> -</span><span id="Tokenizer-1018"><a href="#Tokenizer-1018"><span class="linenos">1018</span></a> <span class="k">if</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_HEX_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1019"><a href="#Tokenizer-1019"><span class="linenos">1019</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_HEX_STRINGS</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1020"><a href="#Tokenizer-1020"><span class="linenos">1020</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span> -</span><span id="Tokenizer-1021"><a href="#Tokenizer-1021"><span class="linenos">1021</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">16</span> -</span><span id="Tokenizer-1022"><a href="#Tokenizer-1022"><span class="linenos">1022</span></a> <span class="k">elif</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BIT_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1023"><a href="#Tokenizer-1023"><span class="linenos">1023</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BIT_STRINGS</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1024"><a href="#Tokenizer-1024"><span class="linenos">1024</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span> -</span><span id="Tokenizer-1025"><a href="#Tokenizer-1025"><span class="linenos">1025</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">2</span> -</span><span id="Tokenizer-1026"><a href="#Tokenizer-1026"><span class="linenos">1026</span></a> <span class="k">elif</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1027"><a href="#Tokenizer-1027"><span class="linenos">1027</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1028"><a href="#Tokenizer-1028"><span class="linenos">1028</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span> -</span><span id="Tokenizer-1029"><a href="#Tokenizer-1029"><span class="linenos">1029</span></a> <span class="n">base</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer-1030"><a href="#Tokenizer-1030"><span class="linenos">1030</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1031"><a href="#Tokenizer-1031"><span class="linenos">1031</span></a> <span class="k">return</span> <span class="kc">False</span> -</span><span id="Tokenizer-1032"><a href="#Tokenizer-1032"><span class="linenos">1032</span></a> -</span><span id="Tokenizer-1033"><a href="#Tokenizer-1033"><span class="linenos">1033</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">string_start</span><span class="p">))</span> -</span><span id="Tokenizer-1034"><a href="#Tokenizer-1034"><span class="linenos">1034</span></a> <span class="n">string_end</span> <span class="o">=</span> <span class="n">delimiters</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">string_start</span><span class="p">)</span> -</span><span id="Tokenizer-1035"><a href="#Tokenizer-1035"><span class="linenos">1035</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">string_end</span><span class="p">)</span> -</span><span id="Tokenizer-1036"><a href="#Tokenizer-1036"><span class="linenos">1036</span></a> -</span><span id="Tokenizer-1037"><a href="#Tokenizer-1037"><span class="linenos">1037</span></a> <span class="k">if</span> <span class="n">base</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1038"><a href="#Tokenizer-1038"><span class="linenos">1038</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="Tokenizer-1039"><a href="#Tokenizer-1039"><span class="linenos">1039</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1040"><a href="#Tokenizer-1040"><span class="linenos">1040</span></a> <span class="k">try</span><span class="p">:</span> -</span><span id="Tokenizer-1041"><a href="#Tokenizer-1041"><span class="linenos">1041</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">,</span><span class="w"> </span><span class="n">base</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Tokenizer-1042"><a href="#Tokenizer-1042"><span class="linenos">1042</span></a> <span class="k">except</span><span class="p">:</span> -</span><span id="Tokenizer-1043"><a href="#Tokenizer-1043"><span class="linenos">1043</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> -</span><span id="Tokenizer-1044"><a href="#Tokenizer-1044"><span class="linenos">1044</span></a> <span class="sa">f</span><span class="s2">"Numeric string contains invalid characters from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span> -</span><span id="Tokenizer-1045"><a href="#Tokenizer-1045"><span class="linenos">1045</span></a> <span class="p">)</span> -</span><span id="Tokenizer-1046"><a href="#Tokenizer-1046"><span class="linenos">1046</span></a> -</span><span id="Tokenizer-1047"><a href="#Tokenizer-1047"><span class="linenos">1047</span></a> <span class="k">return</span> <span class="kc">True</span> -</span><span id="Tokenizer-1048"><a href="#Tokenizer-1048"><span class="linenos">1048</span></a> -</span><span id="Tokenizer-1049"><a href="#Tokenizer-1049"><span class="linenos">1049</span></a> <span class="k">def</span> <span class="nf">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">identifier_end</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1050"><a href="#Tokenizer-1050"><span class="linenos">1050</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-1051"><a href="#Tokenizer-1051"><span class="linenos">1051</span></a> <span class="n">identifier_end_is_escape</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span> -</span><span id="Tokenizer-1052"><a href="#Tokenizer-1052"><span class="linenos">1052</span></a> -</span><span id="Tokenizer-1053"><a href="#Tokenizer-1053"><span class="linenos">1053</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Tokenizer-1054"><a href="#Tokenizer-1054"><span class="linenos">1054</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> -</span><span id="Tokenizer-1055"><a href="#Tokenizer-1055"><span class="linenos">1055</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Tokenizer-1056"><a href="#Tokenizer-1056"><span class="linenos">1056</span></a> -</span><span id="Tokenizer-1057"><a href="#Tokenizer-1057"><span class="linenos">1057</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1058"><a href="#Tokenizer-1058"><span class="linenos">1058</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="n">identifier_end</span><span class="p">:</span> -</span><span id="Tokenizer-1059"><a href="#Tokenizer-1059"><span class="linenos">1059</span></a> <span class="k">if</span> <span class="n">identifier_end_is_escape</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">identifier_end</span><span class="p">:</span> -</span><span id="Tokenizer-1060"><a href="#Tokenizer-1060"><span class="linenos">1060</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">identifier_end</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1061"><a href="#Tokenizer-1061"><span class="linenos">1061</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1062"><a href="#Tokenizer-1062"><span class="linenos">1062</span></a> <span class="k">continue</span> +</span><span id="Tokenizer-1010"><a href="#Tokenizer-1010"><span class="linenos">1010</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_text</span> +</span><span id="Tokenizer-1011"><a href="#Tokenizer-1011"><span class="linenos">1011</span></a> +</span><span id="Tokenizer-1012"><a href="#Tokenizer-1012"><span class="linenos">1012</span></a> <span class="k">def</span> <span class="nf">_scan_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">quote</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Tokenizer-1013"><a href="#Tokenizer-1013"><span class="linenos">1013</span></a> <span class="n">quote_end</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">quote</span><span class="p">)</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1014"><a href="#Tokenizer-1014"><span class="linenos">1014</span></a> <span class="k">if</span> <span class="n">quote_end</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1015"><a href="#Tokenizer-1015"><span class="linenos">1015</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Tokenizer-1016"><a href="#Tokenizer-1016"><span class="linenos">1016</span></a> +</span><span id="Tokenizer-1017"><a href="#Tokenizer-1017"><span class="linenos">1017</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">quote</span><span class="p">))</span> +</span><span id="Tokenizer-1018"><a href="#Tokenizer-1018"><span class="linenos">1018</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">quote_end</span><span class="p">)</span> +</span><span id="Tokenizer-1019"><a href="#Tokenizer-1019"><span class="linenos">1019</span></a> <span class="n">text</span> <span class="o">=</span> <span class="n">text</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span><span class="p">)</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ENCODE</span> <span class="k">else</span> <span class="n">text</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1020"><a href="#Tokenizer-1020"><span class="linenos">1020</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">NATIONAL</span> <span class="k">if</span> <span class="n">quote</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span> <span class="o">==</span> <span class="s2">"N"</span> <span class="k">else</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">STRING</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="Tokenizer-1021"><a href="#Tokenizer-1021"><span class="linenos">1021</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Tokenizer-1022"><a href="#Tokenizer-1022"><span class="linenos">1022</span></a> +</span><span id="Tokenizer-1023"><a href="#Tokenizer-1023"><span class="linenos">1023</span></a> <span class="c1"># X'1234, b'0110', E'\\\\\' etc.</span> +</span><span id="Tokenizer-1024"><a href="#Tokenizer-1024"><span class="linenos">1024</span></a> <span class="k">def</span> <span class="nf">_scan_formatted_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">string_start</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">bool</span><span class="p">:</span> +</span><span id="Tokenizer-1025"><a href="#Tokenizer-1025"><span class="linenos">1025</span></a> <span class="k">if</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_HEX_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1026"><a href="#Tokenizer-1026"><span class="linenos">1026</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_HEX_STRINGS</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1027"><a href="#Tokenizer-1027"><span class="linenos">1027</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HEX_STRING</span> +</span><span id="Tokenizer-1028"><a href="#Tokenizer-1028"><span class="linenos">1028</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">16</span> +</span><span id="Tokenizer-1029"><a href="#Tokenizer-1029"><span class="linenos">1029</span></a> <span class="k">elif</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BIT_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1030"><a href="#Tokenizer-1030"><span class="linenos">1030</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BIT_STRINGS</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1031"><a href="#Tokenizer-1031"><span class="linenos">1031</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT_STRING</span> +</span><span id="Tokenizer-1032"><a href="#Tokenizer-1032"><span class="linenos">1032</span></a> <span class="n">base</span> <span class="o">=</span> <span class="mi">2</span> +</span><span id="Tokenizer-1033"><a href="#Tokenizer-1033"><span class="linenos">1033</span></a> <span class="k">elif</span> <span class="n">string_start</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span><span class="p">:</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1034"><a href="#Tokenizer-1034"><span class="linenos">1034</span></a> <span class="n">delimiters</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_BYTE_STRINGS</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1035"><a href="#Tokenizer-1035"><span class="linenos">1035</span></a> <span class="n">token_type</span> <span class="o">=</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BYTE_STRING</span> +</span><span id="Tokenizer-1036"><a href="#Tokenizer-1036"><span class="linenos">1036</span></a> <span class="n">base</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer-1037"><a href="#Tokenizer-1037"><span class="linenos">1037</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1038"><a href="#Tokenizer-1038"><span class="linenos">1038</span></a> <span class="k">return</span> <span class="kc">False</span> +</span><span id="Tokenizer-1039"><a href="#Tokenizer-1039"><span class="linenos">1039</span></a> +</span><span id="Tokenizer-1040"><a href="#Tokenizer-1040"><span class="linenos">1040</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">string_start</span><span class="p">))</span> +</span><span id="Tokenizer-1041"><a href="#Tokenizer-1041"><span class="linenos">1041</span></a> <span class="n">string_end</span> <span class="o">=</span> <span class="n">delimiters</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">string_start</span><span class="p">)</span> +</span><span id="Tokenizer-1042"><a href="#Tokenizer-1042"><span class="linenos">1042</span></a> <span class="n">text</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_extract_string</span><span class="p">(</span><span class="n">string_end</span><span class="p">)</span> +</span><span id="Tokenizer-1043"><a href="#Tokenizer-1043"><span class="linenos">1043</span></a> +</span><span id="Tokenizer-1044"><a href="#Tokenizer-1044"><span class="linenos">1044</span></a> <span class="k">if</span> <span class="n">base</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1045"><a href="#Tokenizer-1045"><span class="linenos">1045</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="Tokenizer-1046"><a href="#Tokenizer-1046"><span class="linenos">1046</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1047"><a href="#Tokenizer-1047"><span class="linenos">1047</span></a> <span class="k">try</span><span class="p">:</span> +</span><span id="Tokenizer-1048"><a href="#Tokenizer-1048"><span class="linenos">1048</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">token_type</span><span class="p">,</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="nb">int</span><span class="p">(</span><span class="n">text</span><span class="p">,</span><span class="w"> </span><span class="n">base</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Tokenizer-1049"><a href="#Tokenizer-1049"><span class="linenos">1049</span></a> <span class="k">except</span><span class="p">:</span> +</span><span id="Tokenizer-1050"><a href="#Tokenizer-1050"><span class="linenos">1050</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span> +</span><span id="Tokenizer-1051"><a href="#Tokenizer-1051"><span class="linenos">1051</span></a> <span class="sa">f</span><span class="s2">"Numeric string contains invalid characters from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span> +</span><span id="Tokenizer-1052"><a href="#Tokenizer-1052"><span class="linenos">1052</span></a> <span class="p">)</span> +</span><span id="Tokenizer-1053"><a href="#Tokenizer-1053"><span class="linenos">1053</span></a> +</span><span id="Tokenizer-1054"><a href="#Tokenizer-1054"><span class="linenos">1054</span></a> <span class="k">return</span> <span class="kc">True</span> +</span><span id="Tokenizer-1055"><a href="#Tokenizer-1055"><span class="linenos">1055</span></a> +</span><span id="Tokenizer-1056"><a href="#Tokenizer-1056"><span class="linenos">1056</span></a> <span class="k">def</span> <span class="nf">_scan_identifier</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">identifier_end</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1057"><a href="#Tokenizer-1057"><span class="linenos">1057</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-1058"><a href="#Tokenizer-1058"><span class="linenos">1058</span></a> <span class="n">identifier_end_is_escape</span> <span class="o">=</span> <span class="n">identifier_end</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_IDENTIFIER_ESCAPES</span> +</span><span id="Tokenizer-1059"><a href="#Tokenizer-1059"><span class="linenos">1059</span></a> +</span><span id="Tokenizer-1060"><a href="#Tokenizer-1060"><span class="linenos">1060</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Tokenizer-1061"><a href="#Tokenizer-1061"><span class="linenos">1061</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> +</span><span id="Tokenizer-1062"><a href="#Tokenizer-1062"><span class="linenos">1062</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">identifier_end</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> </span><span id="Tokenizer-1063"><a href="#Tokenizer-1063"><span class="linenos">1063</span></a> -</span><span id="Tokenizer-1064"><a href="#Tokenizer-1064"><span class="linenos">1064</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1065"><a href="#Tokenizer-1065"><span class="linenos">1065</span></a> -</span><span id="Tokenizer-1066"><a href="#Tokenizer-1066"><span class="linenos">1066</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1067"><a href="#Tokenizer-1067"><span class="linenos">1067</span></a> -</span><span id="Tokenizer-1068"><a href="#Tokenizer-1068"><span class="linenos">1068</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> -</span><span id="Tokenizer-1069"><a href="#Tokenizer-1069"><span class="linenos">1069</span></a> -</span><span id="Tokenizer-1070"><a href="#Tokenizer-1070"><span class="linenos">1070</span></a> <span class="k">def</span> <span class="nf">_scan_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer-1071"><a href="#Tokenizer-1071"><span class="linenos">1071</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Tokenizer-1072"><a href="#Tokenizer-1072"><span class="linenos">1072</span></a> <span class="n">char</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1073"><a href="#Tokenizer-1073"><span class="linenos">1073</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="n">char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> -</span><span id="Tokenizer-1074"><a href="#Tokenizer-1074"><span class="linenos">1074</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1075"><a href="#Tokenizer-1075"><span class="linenos">1075</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1076"><a href="#Tokenizer-1076"><span class="linenos">1076</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1077"><a href="#Tokenizer-1077"><span class="linenos">1077</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span> -</span><span id="Tokenizer-1078"><a href="#Tokenizer-1078"><span class="linenos">1078</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> -</span><span id="Tokenizer-1079"><a href="#Tokenizer-1079"><span class="linenos">1079</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> -</span><span id="Tokenizer-1080"><a href="#Tokenizer-1080"><span class="linenos">1080</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> -</span><span id="Tokenizer-1081"><a href="#Tokenizer-1081"><span class="linenos">1081</span></a> <span class="p">)</span> -</span><span id="Tokenizer-1082"><a href="#Tokenizer-1082"><span class="linenos">1082</span></a> -</span><span id="Tokenizer-1083"><a href="#Tokenizer-1083"><span class="linenos">1083</span></a> <span class="k">def</span> <span class="nf">_extract_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">delimiter</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> -</span><span id="Tokenizer-1084"><a href="#Tokenizer-1084"><span class="linenos">1084</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer-1085"><a href="#Tokenizer-1085"><span class="linenos">1085</span></a> <span class="n">delim_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">delimiter</span><span class="p">)</span> -</span><span id="Tokenizer-1086"><a href="#Tokenizer-1086"><span class="linenos">1086</span></a> -</span><span id="Tokenizer-1087"><a href="#Tokenizer-1087"><span class="linenos">1087</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> -</span><span id="Tokenizer-1088"><a href="#Tokenizer-1088"><span class="linenos">1088</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="ow">and</span> <span class="p">(</span> -</span><span id="Tokenizer-1089"><a href="#Tokenizer-1089"><span class="linenos">1089</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> -</span><span id="Tokenizer-1090"><a href="#Tokenizer-1090"><span class="linenos">1090</span></a> <span class="p">):</span> -</span><span id="Tokenizer-1091"><a href="#Tokenizer-1091"><span class="linenos">1091</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> -</span><span id="Tokenizer-1092"><a href="#Tokenizer-1092"><span class="linenos">1092</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1093"><a href="#Tokenizer-1093"><span class="linenos">1093</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1094"><a href="#Tokenizer-1094"><span class="linenos">1094</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1095"><a href="#Tokenizer-1095"><span class="linenos">1095</span></a> -</span><span id="Tokenizer-1096"><a href="#Tokenizer-1096"><span class="linenos">1096</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+</span> <span class="mi">1</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> -</span><span id="Tokenizer-1097"><a href="#Tokenizer-1097"><span class="linenos">1097</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> -</span><span id="Tokenizer-1098"><a href="#Tokenizer-1098"><span class="linenos">1098</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1099"><a href="#Tokenizer-1099"><span class="linenos">1099</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_current</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Tokenizer-1100"><a href="#Tokenizer-1100"><span class="linenos">1100</span></a> <span class="k">else</span><span class="p">:</span> -</span><span id="Tokenizer-1101"><a href="#Tokenizer-1101"><span class="linenos">1101</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">delim_size</span><span class="p">)</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> -</span><span id="Tokenizer-1102"><a href="#Tokenizer-1102"><span class="linenos">1102</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> -</span><span id="Tokenizer-1103"><a href="#Tokenizer-1103"><span class="linenos">1103</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">delim_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> -</span><span id="Tokenizer-1104"><a href="#Tokenizer-1104"><span class="linenos">1104</span></a> <span class="k">break</span> -</span><span id="Tokenizer-1105"><a href="#Tokenizer-1105"><span class="linenos">1105</span></a> -</span><span id="Tokenizer-1106"><a href="#Tokenizer-1106"><span class="linenos">1106</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> -</span><span id="Tokenizer-1107"><a href="#Tokenizer-1107"><span class="linenos">1107</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> -</span><span id="Tokenizer-1108"><a href="#Tokenizer-1108"><span class="linenos">1108</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> -</span><span id="Tokenizer-1109"><a href="#Tokenizer-1109"><span class="linenos">1109</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> -</span><span id="Tokenizer-1110"><a href="#Tokenizer-1110"><span class="linenos">1110</span></a> -</span><span id="Tokenizer-1111"><a href="#Tokenizer-1111"><span class="linenos">1111</span></a> <span class="k">return</span> <span class="n">text</span> +</span><span id="Tokenizer-1064"><a href="#Tokenizer-1064"><span class="linenos">1064</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1065"><a href="#Tokenizer-1065"><span class="linenos">1065</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="n">identifier_end</span><span class="p">:</span> +</span><span id="Tokenizer-1066"><a href="#Tokenizer-1066"><span class="linenos">1066</span></a> <span class="k">if</span> <span class="n">identifier_end_is_escape</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">identifier_end</span><span class="p">:</span> +</span><span id="Tokenizer-1067"><a href="#Tokenizer-1067"><span class="linenos">1067</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="n">identifier_end</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1068"><a href="#Tokenizer-1068"><span class="linenos">1068</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1069"><a href="#Tokenizer-1069"><span class="linenos">1069</span></a> <span class="k">continue</span> +</span><span id="Tokenizer-1070"><a href="#Tokenizer-1070"><span class="linenos">1070</span></a> +</span><span id="Tokenizer-1071"><a href="#Tokenizer-1071"><span class="linenos">1071</span></a> <span class="k">break</span> +</span><span id="Tokenizer-1072"><a href="#Tokenizer-1072"><span class="linenos">1072</span></a> +</span><span id="Tokenizer-1073"><a href="#Tokenizer-1073"><span class="linenos">1073</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1074"><a href="#Tokenizer-1074"><span class="linenos">1074</span></a> +</span><span id="Tokenizer-1075"><a href="#Tokenizer-1075"><span class="linenos">1075</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">IDENTIFIER</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> +</span><span id="Tokenizer-1076"><a href="#Tokenizer-1076"><span class="linenos">1076</span></a> +</span><span id="Tokenizer-1077"><a href="#Tokenizer-1077"><span class="linenos">1077</span></a> <span class="k">def</span> <span class="nf">_scan_var</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer-1078"><a href="#Tokenizer-1078"><span class="linenos">1078</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Tokenizer-1079"><a href="#Tokenizer-1079"><span class="linenos">1079</span></a> <span class="n">char</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1080"><a href="#Tokenizer-1080"><span class="linenos">1080</span></a> <span class="k">if</span> <span class="n">char</span> <span class="ow">and</span> <span class="n">char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">:</span> +</span><span id="Tokenizer-1081"><a href="#Tokenizer-1081"><span class="linenos">1081</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1082"><a href="#Tokenizer-1082"><span class="linenos">1082</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1083"><a href="#Tokenizer-1083"><span class="linenos">1083</span></a> <span class="k">break</span> +</span><span id="Tokenizer-1084"><a href="#Tokenizer-1084"><span class="linenos">1084</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_add</span><span class="p">(</span> +</span><span id="Tokenizer-1085"><a href="#Tokenizer-1085"><span class="linenos">1085</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span> +</span><span id="Tokenizer-1086"><a href="#Tokenizer-1086"><span class="linenos">1086</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">==</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span> +</span><span id="Tokenizer-1087"><a href="#Tokenizer-1087"><span class="linenos">1087</span></a> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_text</span><span class="o">.</span><span class="n">upper</span><span class="p">(),</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VAR</span><span class="p">)</span> +</span><span id="Tokenizer-1088"><a href="#Tokenizer-1088"><span class="linenos">1088</span></a> <span class="p">)</span> +</span><span id="Tokenizer-1089"><a href="#Tokenizer-1089"><span class="linenos">1089</span></a> +</span><span id="Tokenizer-1090"><a href="#Tokenizer-1090"><span class="linenos">1090</span></a> <span class="k">def</span> <span class="nf">_extract_string</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">delimiter</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> +</span><span id="Tokenizer-1091"><a href="#Tokenizer-1091"><span class="linenos">1091</span></a> <span class="n">text</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer-1092"><a href="#Tokenizer-1092"><span class="linenos">1092</span></a> <span class="n">delim_size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">delimiter</span><span class="p">)</span> +</span><span id="Tokenizer-1093"><a href="#Tokenizer-1093"><span class="linenos">1093</span></a> +</span><span id="Tokenizer-1094"><a href="#Tokenizer-1094"><span class="linenos">1094</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> +</span><span id="Tokenizer-1095"><a href="#Tokenizer-1095"><span class="linenos">1095</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="ow">and</span> <span class="p">(</span> +</span><span id="Tokenizer-1096"><a href="#Tokenizer-1096"><span class="linenos">1096</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> +</span><span id="Tokenizer-1097"><a href="#Tokenizer-1097"><span class="linenos">1097</span></a> <span class="p">):</span> +</span><span id="Tokenizer-1098"><a href="#Tokenizer-1098"><span class="linenos">1098</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> +</span><span id="Tokenizer-1099"><a href="#Tokenizer-1099"><span class="linenos">1099</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1100"><a href="#Tokenizer-1100"><span class="linenos">1100</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1101"><a href="#Tokenizer-1101"><span class="linenos">1101</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1102"><a href="#Tokenizer-1102"><span class="linenos">1102</span></a> +</span><span id="Tokenizer-1103"><a href="#Tokenizer-1103"><span class="linenos">1103</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+</span> <span class="mi">1</span> <span class="o"><</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> +</span><span id="Tokenizer-1104"><a href="#Tokenizer-1104"><span class="linenos">1104</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> +</span><span id="Tokenizer-1105"><a href="#Tokenizer-1105"><span class="linenos">1105</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1106"><a href="#Tokenizer-1106"><span class="linenos">1106</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_current</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Tokenizer-1107"><a href="#Tokenizer-1107"><span class="linenos">1107</span></a> <span class="k">else</span><span class="p">:</span> +</span><span id="Tokenizer-1108"><a href="#Tokenizer-1108"><span class="linenos">1108</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">delim_size</span><span class="p">)</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> +</span><span id="Tokenizer-1109"><a href="#Tokenizer-1109"><span class="linenos">1109</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">></span> <span class="mi">1</span><span class="p">:</span> +</span><span id="Tokenizer-1110"><a href="#Tokenizer-1110"><span class="linenos">1110</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">delim_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> +</span><span id="Tokenizer-1111"><a href="#Tokenizer-1111"><span class="linenos">1111</span></a> <span class="k">break</span> +</span><span id="Tokenizer-1112"><a href="#Tokenizer-1112"><span class="linenos">1112</span></a> +</span><span id="Tokenizer-1113"><a href="#Tokenizer-1113"><span class="linenos">1113</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> +</span><span id="Tokenizer-1114"><a href="#Tokenizer-1114"><span class="linenos">1114</span></a> <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</span><span id="Tokenizer-1115"><a href="#Tokenizer-1115"><span class="linenos">1115</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="c1"># type: ignore</span> +</span><span id="Tokenizer-1116"><a href="#Tokenizer-1116"><span class="linenos">1116</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">()</span> +</span><span id="Tokenizer-1117"><a href="#Tokenizer-1117"><span class="linenos">1117</span></a> +</span><span id="Tokenizer-1118"><a href="#Tokenizer-1118"><span class="linenos">1118</span></a> <span class="k">return</span> <span class="n">text</span> </span></pre></div> - <div id="Tokenizer.__init__" class="classattr"> - <input id="Tokenizer.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> -<div class="attr function"> - - <span class="name">Tokenizer</span><span class="signature pdoc-code condensed">()</span> - - <label class="view-source-button" for="Tokenizer.__init__-view-source"><span>View Source</span></label> - - </div> - <a class="headerlink" href="#Tokenizer.__init__"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.__init__-749"><a href="#Tokenizer.__init__-749"><span class="linenos">749</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer.__init__-750"><a href="#Tokenizer.__init__-750"><span class="linenos">750</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span></pre></div> - - - - - </div> <div id="Tokenizer.reset" class="classattr"> <input id="Tokenizer.reset-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <div class="attr function"> @@ -6444,22 +6735,22 @@ </div> <a class="headerlink" href="#Tokenizer.reset"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.reset-752"><a href="#Tokenizer.reset-752"><span class="linenos">752</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -</span><span id="Tokenizer.reset-753"><a href="#Tokenizer.reset-753"><span class="linenos">753</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> -</span><span id="Tokenizer.reset-754"><a href="#Tokenizer.reset-754"><span class="linenos">754</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer.reset-755"><a href="#Tokenizer.reset-755"><span class="linenos">755</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> -</span><span id="Tokenizer.reset-756"><a href="#Tokenizer.reset-756"><span class="linenos">756</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer.reset-757"><a href="#Tokenizer.reset-757"><span class="linenos">757</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> -</span><span id="Tokenizer.reset-758"><a href="#Tokenizer.reset-758"><span class="linenos">758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Tokenizer.reset-759"><a href="#Tokenizer.reset-759"><span class="linenos">759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> -</span><span id="Tokenizer.reset-760"><a href="#Tokenizer.reset-760"><span class="linenos">760</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="Tokenizer.reset-761"><a href="#Tokenizer.reset-761"><span class="linenos">761</span></a> -</span><span id="Tokenizer.reset-762"><a href="#Tokenizer.reset-762"><span class="linenos">762</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer.reset-763"><a href="#Tokenizer.reset-763"><span class="linenos">763</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer.reset-764"><a href="#Tokenizer.reset-764"><span class="linenos">764</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="kc">None</span> -</span><span id="Tokenizer.reset-765"><a href="#Tokenizer.reset-765"><span class="linenos">765</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> -</span><span id="Tokenizer.reset-766"><a href="#Tokenizer.reset-766"><span class="linenos">766</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</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="Tokenizer.reset-767"><a href="#Tokenizer.reset-767"><span class="linenos">767</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="kc">None</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.reset-754"><a href="#Tokenizer.reset-754"><span class="linenos">754</span></a> <span class="k">def</span> <span class="nf">reset</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +</span><span id="Tokenizer.reset-755"><a href="#Tokenizer.reset-755"><span class="linenos">755</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="s2">""</span> +</span><span id="Tokenizer.reset-756"><a href="#Tokenizer.reset-756"><span class="linenos">756</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer.reset-757"><a href="#Tokenizer.reset-757"><span class="linenos">757</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span> +</span><span id="Tokenizer.reset-758"><a href="#Tokenizer.reset-758"><span class="linenos">758</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_start</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer.reset-759"><a href="#Tokenizer.reset-759"><span class="linenos">759</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">=</span> <span class="mi">0</span> +</span><span id="Tokenizer.reset-760"><a href="#Tokenizer.reset-760"><span class="linenos">760</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_line</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Tokenizer.reset-761"><a href="#Tokenizer.reset-761"><span class="linenos">761</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_col</span> <span class="o">=</span> <span class="mi">1</span> +</span><span id="Tokenizer.reset-762"><a href="#Tokenizer.reset-762"><span class="linenos">762</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_comments</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="Tokenizer.reset-763"><a href="#Tokenizer.reset-763"><span class="linenos">763</span></a> +</span><span id="Tokenizer.reset-764"><a href="#Tokenizer.reset-764"><span class="linenos">764</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer.reset-765"><a href="#Tokenizer.reset-765"><span class="linenos">765</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer.reset-766"><a href="#Tokenizer.reset-766"><span class="linenos">766</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">=</span> <span class="kc">None</span> +</span><span id="Tokenizer.reset-767"><a href="#Tokenizer.reset-767"><span class="linenos">767</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_line</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span> +</span><span id="Tokenizer.reset-768"><a href="#Tokenizer.reset-768"><span class="linenos">768</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_comments</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="Tokenizer.reset-769"><a href="#Tokenizer.reset-769"><span class="linenos">769</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_prev_token_type</span> <span class="o">=</span> <span class="kc">None</span> </span></pre></div> @@ -6477,13 +6768,13 @@ </div> <a class="headerlink" href="#Tokenizer.tokenize"></a> - <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.tokenize-769"><a href="#Tokenizer.tokenize-769"><span class="linenos">769</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> -</span><span id="Tokenizer.tokenize-770"><a href="#Tokenizer.tokenize-770"><span class="linenos">770</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> -</span><span id="Tokenizer.tokenize-771"><a href="#Tokenizer.tokenize-771"><span class="linenos">771</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> -</span><span id="Tokenizer.tokenize-772"><a href="#Tokenizer.tokenize-772"><span class="linenos">772</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> -</span><span id="Tokenizer.tokenize-773"><a href="#Tokenizer.tokenize-773"><span class="linenos">773</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> -</span><span id="Tokenizer.tokenize-774"><a href="#Tokenizer.tokenize-774"><span class="linenos">774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> -</span><span id="Tokenizer.tokenize-775"><a href="#Tokenizer.tokenize-775"><span class="linenos">775</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> + <div class="pdoc-code codehilite"><pre><span></span><span id="Tokenizer.tokenize-771"><a href="#Tokenizer.tokenize-771"><span class="linenos">771</span></a> <span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sql</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">Token</span><span class="p">]:</span> +</span><span id="Tokenizer.tokenize-772"><a href="#Tokenizer.tokenize-772"><span class="linenos">772</span></a><span class="w"> </span><span class="sd">"""Returns a list of tokens corresponding to the SQL string `sql`."""</span> +</span><span id="Tokenizer.tokenize-773"><a href="#Tokenizer.tokenize-773"><span class="linenos">773</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">reset</span><span class="p">()</span> +</span><span id="Tokenizer.tokenize-774"><a href="#Tokenizer.tokenize-774"><span class="linenos">774</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> +</span><span id="Tokenizer.tokenize-775"><a href="#Tokenizer.tokenize-775"><span class="linenos">775</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">sql</span><span class="p">)</span> +</span><span id="Tokenizer.tokenize-776"><a href="#Tokenizer.tokenize-776"><span class="linenos">776</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_scan</span><span class="p">()</span> +</span><span id="Tokenizer.tokenize-777"><a href="#Tokenizer.tokenize-777"><span class="linenos">777</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">tokens</span> </span></pre></div> @@ -6613,7 +6904,7 @@ if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/transforms.html b/docs/sqlglot/transforms.html index 77a2307..04b2bbf 100644 --- a/docs/sqlglot/transforms.html +++ b/docs/sqlglot/transforms.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.transforms 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -601,7 +601,7 @@ functions that delegate to existing generator methods.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; diff --git a/docs/sqlglot/trie.html b/docs/sqlglot/trie.html index 29dfb54..6552853 100644 --- a/docs/sqlglot/trie.html +++ b/docs/sqlglot/trie.html @@ -3,14 +3,14 @@ <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="generator" content="pdoc 12.3.1"/> + <meta name="generator" content="pdoc 13.0.0"/> <title>sqlglot.trie 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;}#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 }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{display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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 .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>/*! 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 }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 .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .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 .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 .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(--code);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"> @@ -413,7 +413,7 @@ strings, or by 0, which is used to designate that a keyword is in the trie.</p> if (doc.annotation) heading += `<span class="annotation">${doc.annotation}</span>`; if (doc.default_value) - heading += `<span class="default_value">${doc.default_value}</span>`; + heading += `<span class="default_value"> = ${doc.default_value}</span>`; break; default: heading = `<span class="name">${doc.fullname}</span>`; |